All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shuah Khan <shuahkhan@gmail.com>
To: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>,
	Mauro Carvalho Chehab <mchehab@infradead.org>,
	shuahkh@osg.samsung.com
Subject: Re: [PATCH v7 04/44] [media] media: add a common struct to be embed on media graph objects
Date: Mon, 24 Aug 2015 14:07:07 -0600	[thread overview]
Message-ID: <CAKocOOPNoMRWyx1KbDO-vh2Wh7fGtPBSN8uYw+34qzpCTaAHLw@mail.gmail.com> (raw)
In-Reply-To: <7ec9c268c9a0faa0f79cc3ce2c2fb04be05d3c0f.1440359643.git.mchehab@osg.samsung.com>

On Sun, Aug 23, 2015 at 2:17 PM, Mauro Carvalho Chehab
<mchehab@osg.samsung.com> wrote:
> Due to the MC API proposed changes, we'll need to have an unique
> object ID for all graph objects, and have some shared fields
> that will be common on all media graph objects.
>
> Right now, the only common object is the object ID, but other
> fields will be added later on.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
> Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
>
> diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c
> index cb0ac4e0dfa5..4834172bf6f8 100644
> --- a/drivers/media/media-entity.c
> +++ b/drivers/media/media-entity.c
> @@ -27,6 +27,38 @@
>  #include <media/media-device.h>
>
>  /**
> + *  media_gobj_init - Initialize a graph object
> + *
> + * @mdev:      Pointer to the media_device that contains the object
> + * @type:      Type of the object
> + * @gobj:      Pointer to the object
> + *
> + * This routine initializes the embedded struct media_gobj inside a
> + * media graph object. It is called automatically if media_*_create()
> + * calls are used. However, if the object (entity, link, pad, interface)
> + * is embedded on some other object, this function should be called before
> + * registering the object at the media controller.
> + */
> +void media_gobj_init(struct media_device *mdev,
> +                          enum media_gobj_type type,
> +                          struct media_gobj *gobj)
> +{
> +       /* For now, nothing to do */
> +}
> +

This patch is mainly adding skeleton framework. Does this patch series
implement the media_gobj_init() and media_gobj_remove()?

If so, would it make sense to combine the implementation and the stubs?

thanks,
-- Shuah

> +/**
> + *  media_gobj_remove - Stop using a graph object on a media device
> + *
> + * @graph_obj: Pointer to the object
> + *
> + * This should be called at media_device_unregister_*() routines
> + */
> +void media_gobj_remove(struct media_gobj *gobj)
> +{
> +       /* For now, nothing to do */
> +}
> +
> +/**
>   * media_entity_init - Initialize a media entity
>   *
>   * @num_pads: Total number of sink and source pads.
> diff --git a/include/media/media-entity.h b/include/media/media-entity.h
> index 0a66fc225559..b1854239a476 100644
> --- a/include/media/media-entity.h
> +++ b/include/media/media-entity.h
> @@ -28,6 +28,39 @@
>  #include <linux/list.h>
>  #include <linux/media.h>
>
> +/* Enums used internally at the media controller to represent graphs */
> +
> +/**
> + * enum media_gobj_type - type of a graph object
> + *
> + */
> +enum media_gobj_type {
> +        /* FIXME: add the types here, as we embed media_gobj */
> +       MEDIA_GRAPH_NONE
> +};
> +
> +#define MEDIA_BITS_PER_TYPE            8
> +#define MEDIA_BITS_PER_LOCAL_ID                (32 - MEDIA_BITS_PER_TYPE)
> +#define MEDIA_LOCAL_ID_MASK             GENMASK(MEDIA_BITS_PER_LOCAL_ID - 1, 0)
> +
> +/* Structs to represent the objects that belong to a media graph */
> +
> +/**
> + * struct media_gobj - Define a graph object.
> + *
> + * @id:                Non-zero object ID identifier. The ID should be unique
> + *             inside a media_device, as it is composed by
> + *             MEDIA_BITS_PER_TYPE to store the type plus
> + *             MEDIA_BITS_PER_LOCAL_ID to store a per-type ID
> + *             (called as "local ID").
> + *
> + * All objects on the media graph should have this struct embedded
> + */
> +struct media_gobj {
> +       u32                     id;
> +};
> +
> +
>  struct media_pipeline {
>  };
>
> @@ -118,6 +151,26 @@ static inline u32 media_entity_id(struct media_entity *entity)
>         return entity->id;
>  }
>
> +static inline enum media_gobj_type media_type(struct media_gobj *gobj)
> +{
> +       return gobj->id >> MEDIA_BITS_PER_LOCAL_ID;
> +}
> +
> +static inline u32 media_localid(struct media_gobj *gobj)
> +{
> +       return gobj->id & MEDIA_LOCAL_ID_MASK;
> +}
> +
> +static inline u32 media_gobj_gen_id(enum media_gobj_type type, u32 local_id)
> +{
> +       u32 id;
> +
> +       id = type << MEDIA_BITS_PER_LOCAL_ID;
> +       id |= local_id & MEDIA_LOCAL_ID_MASK;
> +
> +       return id;
> +}
> +
>  #define MEDIA_ENTITY_ENUM_MAX_DEPTH    16
>  #define MEDIA_ENTITY_ENUM_MAX_ID       64
>
> @@ -131,6 +184,14 @@ struct media_entity_graph {
>         int top;
>  };
>
> +#define gobj_to_entity(gobj) \
> +               container_of(gobj, struct media_entity, graph_obj)
> +
> +void media_gobj_init(struct media_device *mdev,
> +                   enum media_gobj_type type,
> +                   struct media_gobj *gobj);
> +void media_gobj_remove(struct media_gobj *gobj);
> +
>  int media_entity_init(struct media_entity *entity, u16 num_pads,
>                 struct media_pad *pads);
>  void media_entity_cleanup(struct media_entity *entity);
> --
> 2.4.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2015-08-24 20:07 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-23 20:17 [PATCH v7 00/44] MC next generation patches Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 01/44] [media] media: create a macro to get entity ID Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-24 17:24   ` Shuah Khan
2015-08-24 17:24     ` Shuah Khan
2015-08-24 18:00     ` Mauro Carvalho Chehab
2015-08-24 18:00       ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 02/44] [media] staging: omap4iss: get entity ID using media_entity_id() Mauro Carvalho Chehab
2015-08-24 17:53   ` Shuah Khan
2015-08-25  6:34   ` Hans Verkuil
2015-08-23 20:17 ` [PATCH v7 03/44] [media] omap3isp: " Mauro Carvalho Chehab
2015-08-24 18:14   ` Shuah Khan
2015-08-24 18:34     ` Javier Martinez Canillas
2015-08-25  6:35   ` Hans Verkuil
2015-08-23 20:17 ` [PATCH v7 04/44] [media] media: add a common struct to be embed on media graph objects Mauro Carvalho Chehab
2015-08-24 20:07   ` Shuah Khan [this message]
2015-08-28 13:01     ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 05/44] [media] media: use media_gobj inside entities Mauro Carvalho Chehab
2015-08-24 22:13   ` Shuah Khan
2015-08-28 13:02     ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 06/44] [media] media: use media_gobj inside pads Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 07/44] [media] media: use media_gobj inside links Mauro Carvalho Chehab
2015-08-25  0:13   ` Shuah Khan
2015-08-28 12:54     ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 08/44] [media] media: add messages when media device gets (un)registered Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 09/44] [media] media: add a debug message to warn about gobj creation/removal Mauro Carvalho Chehab
2015-08-25 17:51   ` Shuah Khan
2015-08-26 14:51     ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 10/44] [media] media: rename the function that create pad links Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-25 18:55   ` Shuah Khan
2015-08-25 18:55     ` Shuah Khan
2015-08-25 18:55     ` Shuah Khan
2015-08-25 18:55     ` Shuah Khan
2015-08-26 14:54     ` Mauro Carvalho Chehab
2015-08-26 14:54       ` Mauro Carvalho Chehab
2015-08-26 14:54       ` Mauro Carvalho Chehab
2015-08-26 14:54       ` Mauro Carvalho Chehab
2015-08-28 13:08       ` Mauro Carvalho Chehab
2015-08-28 13:08         ` Mauro Carvalho Chehab
2015-08-28 13:08         ` Mauro Carvalho Chehab
2015-08-28 13:08         ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 11/44] [media] media: use entity.graph_obj.mdev instead of .parent Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-25  6:36   ` Hans Verkuil
2015-08-25  6:36     ` Hans Verkuil
2015-08-25  6:36     ` Hans Verkuil
2015-08-25 19:25     ` Shuah Khan
2015-08-25 19:25       ` Shuah Khan
2015-08-25 19:25       ` Shuah Khan
2015-08-26 14:59       ` Mauro Carvalho Chehab
2015-08-26 14:59         ` Mauro Carvalho Chehab
2015-08-26 14:59         ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 12/44] [media] media: remove media entity .parent field Mauro Carvalho Chehab
2015-08-25  6:37   ` Hans Verkuil
2015-08-23 20:17 ` [PATCH v7 13/44] [media] uapi/media.h: Declare interface types Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-25  6:46   ` Hans Verkuil
2015-08-25 20:34   ` Shuah Khan
2015-08-25 20:34     ` Shuah Khan
2015-08-26 14:59     ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 14/44] [media] media: add functions to allow creating interfaces Mauro Carvalho Chehab
2015-08-25  7:09   ` Hans Verkuil
2015-08-25  9:26     ` Mauro Carvalho Chehab
2015-08-25 13:41       ` Hans Verkuil
2015-08-25  7:42   ` Hans Verkuil
2015-08-25  9:57     ` Mauro Carvalho Chehab
2015-08-25 10:00       ` Mauro Carvalho Chehab
2015-08-25  8:29   ` Hans Verkuil
2015-08-25 10:16     ` Mauro Carvalho Chehab
2015-08-25 21:44       ` Shuah Khan
2015-08-23 20:17 ` [PATCH v7 15/44] [media] media: get rid of an unused code Mauro Carvalho Chehab
2015-08-25  7:10   ` Hans Verkuil
2015-08-25 10:10     ` Mauro Carvalho Chehab
2015-08-25 22:32       ` Shuah Khan
2015-08-26 15:17         ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 16/44] [media] media: convert links from array to list Mauro Carvalho Chehab
2015-08-25 22:48   ` Shuah Khan
2015-08-26 15:28     ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 17/44] [media] media: make add link more generic Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 18/44] [media] media: make media_link more generic to handle interace links Mauro Carvalho Chehab
2015-08-25  7:28   ` Hans Verkuil
2015-08-25  9:41     ` Mauro Carvalho Chehab
2015-08-25  7:38   ` Hans Verkuil
2015-08-25  9:53     ` Mauro Carvalho Chehab
2015-08-25 13:30       ` Hans Verkuil
2015-08-23 20:17 ` [PATCH v7 19/44] [media] media: make link debug printk more generic Mauro Carvalho Chehab
2015-08-25  7:33   ` Hans Verkuil
2015-08-25  9:45     ` Mauro Carvalho Chehab
2015-08-25  9:48     ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 20/44] [media] media: add support to link interfaces and entities Mauro Carvalho Chehab
2015-08-25  7:44   ` Hans Verkuil
2015-08-25 10:01     ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 21/44] [media] dvbdev: add support for interfaces Mauro Carvalho Chehab
2015-08-25  7:50   ` Hans Verkuil
2015-08-25 10:04     ` Mauro Carvalho Chehab
2015-08-25 13:44       ` Hans Verkuil
2015-08-23 20:17 ` [PATCH v7 22/44] [media] media: add a linked list to track interfaces by mdev Mauro Carvalho Chehab
2015-08-25  7:54   ` Hans Verkuil
2015-08-25 10:12     ` Mauro Carvalho Chehab
2015-08-25 13:48       ` Hans Verkuil
2015-08-23 20:17 ` [PATCH v7 23/44] [media] dvbdev: add support for indirect interface links Mauro Carvalho Chehab
2015-08-25  8:39   ` Hans Verkuil
2015-08-25 10:17     ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 24/44] [media] uapi/media.h: Fix entity namespace Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-25  8:58   ` Hans Verkuil
2015-08-25  8:58     ` Hans Verkuil
2015-08-25 11:25     ` Mauro Carvalho Chehab
2015-08-25 11:25       ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 25/44] [media] replace all occurrences of MEDIA_ENT_T_DEVNODE_V4L Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-25  9:23   ` Hans Verkuil
2015-08-25  9:23     ` Hans Verkuil
2015-08-25 11:32     ` Mauro Carvalho Chehab
2015-08-25 11:32       ` Mauro Carvalho Chehab
2015-08-25 13:54       ` Hans Verkuil
2015-08-25 13:54         ` Hans Verkuil
2015-08-25 15:12         ` Mauro Carvalho Chehab
2015-08-25 15:12           ` Mauro Carvalho Chehab
2015-08-25 15:22           ` Hans Verkuil
2015-08-25 15:22             ` Hans Verkuil
2015-08-23 20:17 ` [PATCH v7 26/44] [media] replace all occurrences of MEDIA_ENT_T_DEVNODE_DVB Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 27/44] [media] media: add macros to check if subdev or V4L2 DMA Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 28/44] [media] media: use macros to check for V4L2 subdev entities Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 29/44] [media] omap3/omap4/davinci: get rid of MEDIA_ENT_T_V4L2_SUBDEV abuse Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 30/44] [media] s5c73m3: fix subdev type Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 31/44] [media] s5k5baf: " Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 32/44] [media] davinci_vbpe: stop MEDIA_ENT_T_V4L2_SUBDEV abuse Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 33/44] [media] omap4iss: " Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 34/44] [media] v4l2-subdev: use MEDIA_ENT_T_UNKNOWN for new subdevs Mauro Carvalho Chehab
2015-08-23 20:17   ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 35/44] [media] media controller: get rid of entity subtype on Kernel Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 36/44] [media] DocBook: update descriptions for the media controller entities Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 37/44] [media] dvb: modify core to implement interfaces/entities at MC new gen Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 38/44] [media] media: report if a pad is sink or source at debug msg Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 39/44] [media] uapi/media.h: Add MEDIA_IOC_G_TOPOLOGY ioctl Mauro Carvalho Chehab
2015-08-25  9:33   ` Hans Verkuil
2015-08-25 11:36     ` Mauro Carvalho Chehab
2015-08-25 11:36       ` Mauro Carvalho Chehab
2015-08-23 20:17 ` [PATCH v7 40/44] [media] media: Use a macro to interate between all interfaces Mauro Carvalho Chehab
2015-08-25  9:26   ` Hans Verkuil
2015-08-23 20:17 ` [PATCH v7 41/44] [media] media: move mdev list init to gobj Mauro Carvalho Chehab
2015-08-25  9:28   ` Hans Verkuil
2015-08-23 20:17 ` [PATCH v7 42/44] [media] media-device: add pads and links to media_device Mauro Carvalho Chehab
2015-08-25  9:29   ` Hans Verkuil
2015-08-23 20:18 ` [PATCH v7 43/44] [media] media_device: add a topology version field Mauro Carvalho Chehab
2015-08-23 20:18 ` [PATCH v7 44/44] [media] media-device: add support for MEDIA_IOC_G_TOPOLOGY ioctl Mauro Carvalho Chehab
2015-08-25 19:11 ` [PATCH v7 00/44] MC next generation patches Shuah Khan
2015-08-25 20:02   ` Mauro Carvalho Chehab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAKocOOPNoMRWyx1KbDO-vh2Wh7fGtPBSN8uYw+34qzpCTaAHLw@mail.gmail.com \
    --to=shuahkhan@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@infradead.org \
    --cc=mchehab@osg.samsung.com \
    --cc=shuahkh@osg.samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.