All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@infradead.org>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>
Subject: Re: [PATCH v7 14/44] [media] media: add functions to allow creating interfaces
Date: Tue, 25 Aug 2015 07:00:32 -0300	[thread overview]
Message-ID: <20150825070032.0e6f0ae3@recife.lan> (raw)
In-Reply-To: <20150825065742.0369f2ea@recife.lan>

Em Tue, 25 Aug 2015 06:57:42 -0300
Mauro Carvalho Chehab <mchehab@osg.samsung.com> escreveu:

> Em Tue, 25 Aug 2015 09:42:25 +0200
> Hans Verkuil <hverkuil@xs4all.nl> escreveu:
> 
> > On 08/23/2015 10:17 PM, Mauro Carvalho Chehab wrote:
> > > Interfaces are different than entities: they represent a
> > > Kernel<->userspace interaction, while entities represent a
> > > piece of hardware/firmware/software that executes a function.
> > > 
> > > Let's distinguish them by creating a separate structure to
> > > store the interfaces.
> > > 
> > > Latter patches should change the existing drivers and logic
> > > to split the current interface embedded inside the entity
> > > structure (device nodes) into a separate object of the graph.
> > > 
> > > 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 a23c93369a04..d606e312786a 100644
> > > --- a/drivers/media/media-entity.c
> > > +++ b/drivers/media/media-entity.c
> > > @@ -44,11 +44,53 @@ static inline const char *gobj_type(enum media_gobj_type type)
> > >  		return "pad";
> > >  	case MEDIA_GRAPH_LINK:
> > >  		return "link";
> > > +	case MEDIA_GRAPH_INTF_DEVNODE:
> > > +		return "intf_devnode";
> > >  	default:
> > >  		return "unknown";
> > >  	}
> > >  }
> > >  
> > > +static inline const char *intf_type(struct media_interface *intf)
> > > +{
> > > +	switch (intf->type) {
> > > +	case MEDIA_INTF_T_DVB_FE:
> > > +		return "frontend";
> > > +	case MEDIA_INTF_T_DVB_DEMUX:
> > > +		return "demux";
> > > +	case MEDIA_INTF_T_DVB_DVR:
> > > +		return "DVR";
> > > +	case MEDIA_INTF_T_DVB_CA:
> > > +		return  "CA";
> > > +	case MEDIA_INTF_T_DVB_NET:
> > > +		return "dvbnet";
> > > +	case MEDIA_INTF_T_V4L_VIDEO:
> > > +		return "video";
> > > +	case MEDIA_INTF_T_V4L_VBI:
> > > +		return "vbi";
> > > +	case MEDIA_INTF_T_V4L_RADIO:
> > > +		return "radio";
> > > +	case MEDIA_INTF_T_V4L_SUBDEV:
> > > +		return "v4l2_subdev";
> > > +	case MEDIA_INTF_T_V4L_SWRADIO:
> > > +		return "swradio";
> > > +	case MEDIA_INTF_T_ALSA_PCM_CAPTURE:
> > > +		return "pcm_capture";
> > > +	case MEDIA_INTF_T_ALSA_PCM_PLAYBACK:
> > > +		return "pcm_playback";
> > > +	case MEDIA_INTF_T_ALSA_CONTROL:
> > > +		return "alsa_control";
> > > +	case MEDIA_INTF_T_ALSA_COMPRESS:
> > > +		return "compress";
> > > +	case MEDIA_INTF_T_ALSA_RAWMIDI:
> > > +		return "rawmidi";
> > > +	case MEDIA_INTF_T_ALSA_HWDEP:
> > > +		return "hwdep";
> > > +	default:
> > > +		return "unknown_intf";
> > > +	}
> > > +};
> > > +
> > >  static void dev_dbg_obj(const char *event_name,  struct media_gobj *gobj)
> > >  {
> > >  #if defined(DEBUG) || defined (CONFIG_DYNAMIC_DEBUG)
> > > @@ -84,6 +126,19 @@ static void dev_dbg_obj(const char *event_name,  struct media_gobj *gobj)
> > >  			"%s: id 0x%08x pad#%d: '%s':%d\n",
> > >  			event_name, gobj->id, media_localid(gobj),
> > >  			pad->entity->name, pad->index);
> > > +		break;
> > > +	}
> > > +	case MEDIA_GRAPH_INTF_DEVNODE:
> > > +	{
> > > +		struct media_interface *intf = gobj_to_intf(gobj);
> > > +		struct media_intf_devnode *devnode = intf_to_devnode(intf);
> > > +
> > > +		dev_dbg(gobj->mdev->dev,
> > > +			"%s: id 0x%08x intf_devnode#%d: %s - major: %d, minor: %d\n",
> > > +			event_name, gobj->id, media_localid(gobj),
> > > +			intf_type(intf),
> > > +			devnode->major, devnode->minor);
> > > +		break;
> > >  	}
> > >  	}
> > >  #endif
> > > @@ -119,6 +174,9 @@ void media_gobj_init(struct media_device *mdev,
> > >  	case MEDIA_GRAPH_LINK:
> > >  		gobj->id = media_gobj_gen_id(type, ++mdev->link_id);
> > >  		break;
> > > +	case MEDIA_GRAPH_INTF_DEVNODE:
> > > +		gobj->id = media_gobj_gen_id(type, ++mdev->intf_devnode_id);
> > > +		break;
> > >  	}
> > >  	dev_dbg_obj(__func__, gobj);
> > >  }
> > > @@ -793,3 +851,41 @@ struct media_pad *media_entity_remote_pad(struct media_pad *pad)
> > >  
> > >  }
> > >  EXPORT_SYMBOL_GPL(media_entity_remote_pad);
> > > +
> > > +
> > > +/* Functions related to the media interface via device nodes */
> > > +
> > > +struct media_intf_devnode *media_devnode_create(struct media_device *mdev,
> > > +						u32 type, u32 flags,
> > > +						u32 major, u32 minor,
> > > +						gfp_t gfp_flags)
> > > +{
> > > +	struct media_intf_devnode *devnode;
> > > +	struct media_interface *intf;
> > > +
> > > +	devnode = kzalloc(sizeof(*devnode), gfp_flags);
> > > +	if (!devnode)
> > > +		return NULL;
> > > +
> > > +	intf = &devnode->intf;
> > > +
> > > +	intf->type = type;
> > > +	intf->flags = flags;
> > 
> > After looking at patch 20 I think you want to create a media_interface_init()
> > helper function to set type and flags and later (in patch 20) init the 'links'
> > list.
> > 
> > This initialization will be shared with e.g. network or sysfs interfaces, so
> > doing this in a helper function would make sense.
> 
> We could move the common stuff to a helper function, but I actually prefer
> to do that when we add other interface types. It will take some time
> until we get there, and the logic may change until then.
>
> See the comment
> I'm writing for patch 20.

Please ignore this. I misread your comment there.

I'll write a patch at the end of the series moving the common
interface init to a media_interface_init() helper function.

Regards,
Mauro

  reply	other threads:[~2015-08-25 10:00 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
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 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 [this message]
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 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
     [not found] ` <cover.1440359643.git.mchehab-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org>
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
     [not found]     ` <55df3b23389e68b19354011babf0da1d26d0a91a.1440359643.git.mchehab-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org>
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 24/44] [media] uapi/media.h: Fix entity namespace Mauro Carvalho Chehab
2015-08-23 20:17     ` Mauro Carvalho Chehab
     [not found]     ` <5cf25be2d0508e02f6ffe469509fa12c45ddcb8d.1440359643.git.mchehab-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org>
2015-08-25  8:58       ` Hans Verkuil
2015-08-25  8:58         ` Hans Verkuil
     [not found]         ` <55DC2E2D.4090000-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
2015-08-25 11:25           ` Mauro Carvalho Chehab
2015-08-25 11:25             ` 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
     [not found]     ` <55DC366C.5050509-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
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=20150825070032.0e6f0ae3@recife.lan \
    --to=mchehab@infradead.org \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-media@vger.kernel.org \
    /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.