Re: [PATCH v8 28/55] [media] uapi/media.h: Fix entity namespace

2015-09-11 Thread Hans Verkuil
On 09/06/2015 02:02 PM, Mauro Carvalho Chehab wrote:
> Now that interfaces got created, we need to fix the entity
> namespace.
> 
> So, let's create a consistent new namespace and add backward
> compatibility macros to keep the old namespace preserved.
> 
> Signed-off-by: Mauro Carvalho Chehab 

Acked-by: Hans Verkuil 

> 
> diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> index ada0738d26f2..dadcf1655070 100644
> --- a/drivers/media/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb-core/dvbdev.c
> @@ -230,17 +230,17 @@ static void dvb_create_media_entity(struct dvb_device 
> *dvbdev,
>  
>   switch (type) {
>   case DVB_DEVICE_FRONTEND:
> - dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_FE;
> + dvbdev->entity->type = MEDIA_ENT_T_DVB_DEMOD;
>   dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
>   dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
>   break;
>   case DVB_DEVICE_DEMUX:
> - dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_DEMUX;
> + dvbdev->entity->type = MEDIA_ENT_T_DVB_DEMUX;
>   dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
>   dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
>   break;
>   case DVB_DEVICE_CA:
> - dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_CA;
> + dvbdev->entity->type = MEDIA_ENT_T_DVB_CA;
>   dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
>   dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
>   break;
> @@ -439,7 +439,7 @@ EXPORT_SYMBOL(dvb_unregister_device);
>  void dvb_create_media_graph(struct dvb_adapter *adap)
>  {
>   struct media_device *mdev = adap->mdev;
> - struct media_entity *entity, *tuner = NULL, *fe = NULL;
> + struct media_entity *entity, *tuner = NULL, *demod = NULL;
>   struct media_entity *demux = NULL, *dvr = NULL, *ca = NULL;
>   struct media_interface *intf;
>  
> @@ -451,26 +451,26 @@ void dvb_create_media_graph(struct dvb_adapter *adap)
>   case MEDIA_ENT_T_V4L2_SUBDEV_TUNER:
>   tuner = entity;
>   break;
> - case MEDIA_ENT_T_DEVNODE_DVB_FE:
> - fe = entity;
> + case MEDIA_ENT_T_DVB_DEMOD:
> + demod = entity;
>   break;
> - case MEDIA_ENT_T_DEVNODE_DVB_DEMUX:
> + case MEDIA_ENT_T_DVB_DEMUX:
>   demux = entity;
>   break;
> - case MEDIA_ENT_T_DEVNODE_DVB_DVR:
> + case MEDIA_ENT_T_DVB_TSOUT:
>   dvr = entity;
>   break;
> - case MEDIA_ENT_T_DEVNODE_DVB_CA:
> + case MEDIA_ENT_T_DVB_CA:
>   ca = entity;
>   break;
>   }
>   }
>  
> - if (tuner && fe)
> - media_create_pad_link(tuner, 0, fe, 0, 0);
> + if (tuner && demod)
> + media_create_pad_link(tuner, 0, demod, 0, 0);
>  
> - if (fe && demux)
> - media_create_pad_link(fe, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
> + if (demod && demux)
> + media_create_pad_link(demod, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
>  
>   if (demux && dvr)
>   media_create_pad_link(demux, 1, dvr, 0, MEDIA_LNK_FL_ENABLED);
> diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h
> index aca828709bad..f8725b881a1d 100644
> --- a/include/uapi/linux/media.h
> +++ b/include/uapi/linux/media.h
> @@ -42,31 +42,69 @@ struct media_device_info {
>  
>  #define MEDIA_ENT_ID_FLAG_NEXT   (1 << 31)
>  
> +/*
> + * Base numbers for entity types
> + *
> + * Please notice that the huge gap of 16 bits for each base is overkill!
> + * 8 bits is more than enough to avoid starving entity types for each
> + * subsystem.
> + *
> + * However, It is kept this way just to avoid binary breakages with the
> + * namespace provided on legacy versions of this header.
> + */
> +#define MEDIA_ENT_T_DVB_BASE 0x
> +#define MEDIA_ENT_T_V4L2_BASE0x0001
> +#define MEDIA_ENT_T_V4L2_SUBDEV_BASE 0x0002
> +
> +/*
> + * V4L2 entities - Those are used for DMA (mmap/DMABUF) and
> + *   read()/write() data I/O associated with the V4L2 devnodes.
> + */
> +#define MEDIA_ENT_T_V4L2_VIDEO   (MEDIA_ENT_T_V4L2_BASE + 1)
> + /*
> +  * Please notice that numbers between MEDIA_ENT_T_V4L2_BASE + 2 and
> +  * MEDIA_ENT_T_V4L2_BASE + 4 can't be used, as those values used
> +  * to be declared for FB, ALSA and DVB entities.
> +  * As those values were never actually used in practice, we're just
> +  * adding them as backward compatibility macros and keeping the
> +  * numberspace clean here. This way, we avoid breaking compilation,
> +  * in the case of having some userspace application using the old
> + 

Re: [PATCH v8 28/55] [media] uapi/media.h: Fix entity namespace

2015-09-06 Thread Mauro Carvalho Chehab
Now that interfaces got created, we need to fix the entity
namespace.

So, let's create a consistent new namespace and add backward
compatibility macros to keep the old namespace preserved.

Signed-off-by: Mauro Carvalho Chehab 

diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
index ada0738d26f2..dadcf1655070 100644
--- a/drivers/media/dvb-core/dvbdev.c
+++ b/drivers/media/dvb-core/dvbdev.c
@@ -230,17 +230,17 @@ static void dvb_create_media_entity(struct dvb_device 
*dvbdev,
 
switch (type) {
case DVB_DEVICE_FRONTEND:
-   dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_FE;
+   dvbdev->entity->type = MEDIA_ENT_T_DVB_DEMOD;
dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
break;
case DVB_DEVICE_DEMUX:
-   dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_DEMUX;
+   dvbdev->entity->type = MEDIA_ENT_T_DVB_DEMUX;
dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
break;
case DVB_DEVICE_CA:
-   dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_CA;
+   dvbdev->entity->type = MEDIA_ENT_T_DVB_CA;
dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
break;
@@ -439,7 +439,7 @@ EXPORT_SYMBOL(dvb_unregister_device);
 void dvb_create_media_graph(struct dvb_adapter *adap)
 {
struct media_device *mdev = adap->mdev;
-   struct media_entity *entity, *tuner = NULL, *fe = NULL;
+   struct media_entity *entity, *tuner = NULL, *demod = NULL;
struct media_entity *demux = NULL, *dvr = NULL, *ca = NULL;
struct media_interface *intf;
 
@@ -451,26 +451,26 @@ void dvb_create_media_graph(struct dvb_adapter *adap)
case MEDIA_ENT_T_V4L2_SUBDEV_TUNER:
tuner = entity;
break;
-   case MEDIA_ENT_T_DEVNODE_DVB_FE:
-   fe = entity;
+   case MEDIA_ENT_T_DVB_DEMOD:
+   demod = entity;
break;
-   case MEDIA_ENT_T_DEVNODE_DVB_DEMUX:
+   case MEDIA_ENT_T_DVB_DEMUX:
demux = entity;
break;
-   case MEDIA_ENT_T_DEVNODE_DVB_DVR:
+   case MEDIA_ENT_T_DVB_TSOUT:
dvr = entity;
break;
-   case MEDIA_ENT_T_DEVNODE_DVB_CA:
+   case MEDIA_ENT_T_DVB_CA:
ca = entity;
break;
}
}
 
-   if (tuner && fe)
-   media_create_pad_link(tuner, 0, fe, 0, 0);
+   if (tuner && demod)
+   media_create_pad_link(tuner, 0, demod, 0, 0);
 
-   if (fe && demux)
-   media_create_pad_link(fe, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
+   if (demod && demux)
+   media_create_pad_link(demod, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
 
if (demux && dvr)
media_create_pad_link(demux, 1, dvr, 0, MEDIA_LNK_FL_ENABLED);
diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h
index aca828709bad..f8725b881a1d 100644
--- a/include/uapi/linux/media.h
+++ b/include/uapi/linux/media.h
@@ -42,31 +42,69 @@ struct media_device_info {
 
 #define MEDIA_ENT_ID_FLAG_NEXT (1 << 31)
 
+/*
+ * Base numbers for entity types
+ *
+ * Please notice that the huge gap of 16 bits for each base is overkill!
+ * 8 bits is more than enough to avoid starving entity types for each
+ * subsystem.
+ *
+ * However, It is kept this way just to avoid binary breakages with the
+ * namespace provided on legacy versions of this header.
+ */
+#define MEDIA_ENT_T_DVB_BASE   0x
+#define MEDIA_ENT_T_V4L2_BASE  0x0001
+#define MEDIA_ENT_T_V4L2_SUBDEV_BASE   0x0002
+
+/*
+ * V4L2 entities - Those are used for DMA (mmap/DMABUF) and
+ * read()/write() data I/O associated with the V4L2 devnodes.
+ */
+#define MEDIA_ENT_T_V4L2_VIDEO (MEDIA_ENT_T_V4L2_BASE + 1)
+   /*
+* Please notice that numbers between MEDIA_ENT_T_V4L2_BASE + 2 and
+* MEDIA_ENT_T_V4L2_BASE + 4 can't be used, as those values used
+* to be declared for FB, ALSA and DVB entities.
+* As those values were never actually used in practice, we're just
+* adding them as backward compatibility macros and keeping the
+* numberspace clean here. This way, we avoid breaking compilation,
+* in the case of having some userspace application using the old
+* symbols.
+*/
+#define MEDIA_ENT_T_V4L2_VBI   (MEDIA_ENT_T_V4L2_BASE + 5)
+#define MEDIA_ENT_T_V4L2_SWRADIO   (MEDIA_ENT_T_V4L2_BASE + 6)
+
+/* V4L2 Sub-device entities */
+#define 

Re: [PATCH v8 28/55] [media] uapi/media.h: Fix entity namespace

2015-08-31 Thread Hans Verkuil
On 08/30/2015 05:06 AM, Mauro Carvalho Chehab wrote:
> Now that interfaces got created, we need to fix the entity
> namespace.
> 
> So, let's create a consistent new namespace and add backward
> compatibility macros to keep the old namespace preserved.
> 
> Signed-off-by: Mauro Carvalho Chehab 
> 
> diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> index 14d32cdcdd47..88013d1a2c39 100644
> --- a/drivers/media/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb-core/dvbdev.c
> @@ -230,17 +230,17 @@ static void dvb_create_media_entity(struct dvb_device 
> *dvbdev,
>  
>   switch (type) {
>   case DVB_DEVICE_FRONTEND:
> - dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_FE;
> + dvbdev->entity->type = MEDIA_ENT_T_DVB_DEMOD;
>   dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
>   dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
>   break;
>   case DVB_DEVICE_DEMUX:
> - dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_DEMUX;
> + dvbdev->entity->type = MEDIA_ENT_T_DVB_DEMUX;
>   dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
>   dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
>   break;
>   case DVB_DEVICE_CA:
> - dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_CA;
> + dvbdev->entity->type = MEDIA_ENT_T_DVB_CA;
>   dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
>   dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
>   break;
> @@ -439,7 +439,7 @@ EXPORT_SYMBOL(dvb_unregister_device);
>  void dvb_create_media_graph(struct dvb_adapter *adap)
>  {
>   struct media_device *mdev = adap->mdev;
> - struct media_entity *entity, *tuner = NULL, *fe = NULL;
> + struct media_entity *entity, *tuner = NULL, *demod = NULL;
>   struct media_entity *demux = NULL, *dvr = NULL, *ca = NULL;
>   struct media_interface *intf;
>  
> @@ -451,26 +451,26 @@ void dvb_create_media_graph(struct dvb_adapter *adap)
>   case MEDIA_ENT_T_V4L2_SUBDEV_TUNER:
>   tuner = entity;
>   break;
> - case MEDIA_ENT_T_DEVNODE_DVB_FE:
> - fe = entity;
> + case MEDIA_ENT_T_DVB_DEMOD:
> + demod = entity;
>   break;
> - case MEDIA_ENT_T_DEVNODE_DVB_DEMUX:
> + case MEDIA_ENT_T_DVB_DEMUX:
>   demux = entity;
>   break;
> - case MEDIA_ENT_T_DEVNODE_DVB_DVR:
> + case MEDIA_ENT_T_DVB_TSOUT:
>   dvr = entity;
>   break;
> - case MEDIA_ENT_T_DEVNODE_DVB_CA:
> + case MEDIA_ENT_T_DVB_CA:
>   ca = entity;
>   break;
>   }
>   }
>  
> - if (tuner && fe)
> - media_create_pad_link(tuner, 0, fe, 0, 0);
> + if (tuner && demod)
> + media_create_pad_link(tuner, 0, demod, 0, 0);
>  
> - if (fe && demux)
> - media_create_pad_link(fe, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
> + if (demod && demux)
> + media_create_pad_link(demod, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
>  
>   if (demux && dvr)
>   media_create_pad_link(demux, 1, dvr, 0, MEDIA_LNK_FL_ENABLED);
> diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h
> index aca828709bad..3bbda409353f 100644
> --- a/include/uapi/linux/media.h
> +++ b/include/uapi/linux/media.h
> @@ -42,31 +42,71 @@ struct media_device_info {
>  
>  #define MEDIA_ENT_ID_FLAG_NEXT   (1 << 31)
>  
> +/*
> + * Base numbers for entity types
> + *
> + * Please notice that the huge gap of 16 bits for each base is overkill!
> + * 8 bits is more than enough to avoid starving entity types for each
> + * subsystem.
> + *
> + * However, It is kept this way just to avoid binary breakages with the
> + * namespace provided on legacy versions of this header.
> + */
> +#define MEDIA_ENT_T_DVB_BASE 0x0001

I would change this to 0x, see follow-up comment later for why.

> +#define MEDIA_ENT_T_V4L2_BASE0x0001
> +#define MEDIA_ENT_T_V4L2_SUBDEV_BASE 0x0002
> +
> +/*
> + * V4L2 entities - Those are used for DMA (mmap/DMABUF) and
> + *   read()/write() data I/O associated with the V4L2 devnodes.
> + */
> +#define MEDIA_ENT_T_V4L2_VIDEO   (MEDIA_ENT_T_V4L2_BASE + 1)
> + /*
> +  * Please notice that numbers between MEDIA_ENT_T_V4L2_BASE + 2 and
> +  * MEDIA_ENT_T_V4L2_BASE + 4 can't be used, as those values used
> +  * to be declared for FB, ALSA and DVB entities.
> +  * As those values were never actually used in practice, we're just
> +  * adding them as backward compatibility macros and keeping the
> +  * numberspace clean here. This way, we avoid breaking compilation,
> +  * in the case of having some userspace 

Re: [PATCH v8 28/55] [media] uapi/media.h: Fix entity namespace

2015-08-31 Thread Mauro Carvalho Chehab
Em Mon, 31 Aug 2015 13:17:08 +0200
Hans Verkuil  escreveu:

> On 08/30/2015 05:06 AM, Mauro Carvalho Chehab wrote:
> > Now that interfaces got created, we need to fix the entity
> > namespace.
> > 
> > So, let's create a consistent new namespace and add backward
> > compatibility macros to keep the old namespace preserved.
> > 
> > Signed-off-by: Mauro Carvalho Chehab 
> > 
> > diff --git a/drivers/media/dvb-core/dvbdev.c 
> > b/drivers/media/dvb-core/dvbdev.c
> > index 14d32cdcdd47..88013d1a2c39 100644
> > --- a/drivers/media/dvb-core/dvbdev.c
> > +++ b/drivers/media/dvb-core/dvbdev.c
> > @@ -230,17 +230,17 @@ static void dvb_create_media_entity(struct dvb_device 
> > *dvbdev,
> >  
> > switch (type) {
> > case DVB_DEVICE_FRONTEND:
> > -   dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_FE;
> > +   dvbdev->entity->type = MEDIA_ENT_T_DVB_DEMOD;
> > dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
> > dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
> > break;
> > case DVB_DEVICE_DEMUX:
> > -   dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_DEMUX;
> > +   dvbdev->entity->type = MEDIA_ENT_T_DVB_DEMUX;
> > dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
> > dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
> > break;
> > case DVB_DEVICE_CA:
> > -   dvbdev->entity->type = MEDIA_ENT_T_DEVNODE_DVB_CA;
> > +   dvbdev->entity->type = MEDIA_ENT_T_DVB_CA;
> > dvbdev->pads[0].flags = MEDIA_PAD_FL_SINK;
> > dvbdev->pads[1].flags = MEDIA_PAD_FL_SOURCE;
> > break;
> > @@ -439,7 +439,7 @@ EXPORT_SYMBOL(dvb_unregister_device);
> >  void dvb_create_media_graph(struct dvb_adapter *adap)
> >  {
> > struct media_device *mdev = adap->mdev;
> > -   struct media_entity *entity, *tuner = NULL, *fe = NULL;
> > +   struct media_entity *entity, *tuner = NULL, *demod = NULL;
> > struct media_entity *demux = NULL, *dvr = NULL, *ca = NULL;
> > struct media_interface *intf;
> >  
> > @@ -451,26 +451,26 @@ void dvb_create_media_graph(struct dvb_adapter *adap)
> > case MEDIA_ENT_T_V4L2_SUBDEV_TUNER:
> > tuner = entity;
> > break;
> > -   case MEDIA_ENT_T_DEVNODE_DVB_FE:
> > -   fe = entity;
> > +   case MEDIA_ENT_T_DVB_DEMOD:
> > +   demod = entity;
> > break;
> > -   case MEDIA_ENT_T_DEVNODE_DVB_DEMUX:
> > +   case MEDIA_ENT_T_DVB_DEMUX:
> > demux = entity;
> > break;
> > -   case MEDIA_ENT_T_DEVNODE_DVB_DVR:
> > +   case MEDIA_ENT_T_DVB_TSOUT:
> > dvr = entity;
> > break;
> > -   case MEDIA_ENT_T_DEVNODE_DVB_CA:
> > +   case MEDIA_ENT_T_DVB_CA:
> > ca = entity;
> > break;
> > }
> > }
> >  
> > -   if (tuner && fe)
> > -   media_create_pad_link(tuner, 0, fe, 0, 0);
> > +   if (tuner && demod)
> > +   media_create_pad_link(tuner, 0, demod, 0, 0);
> >  
> > -   if (fe && demux)
> > -   media_create_pad_link(fe, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
> > +   if (demod && demux)
> > +   media_create_pad_link(demod, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
> >  
> > if (demux && dvr)
> > media_create_pad_link(demux, 1, dvr, 0, MEDIA_LNK_FL_ENABLED);
> > diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h
> > index aca828709bad..3bbda409353f 100644
> > --- a/include/uapi/linux/media.h
> > +++ b/include/uapi/linux/media.h
> > @@ -42,31 +42,71 @@ struct media_device_info {
> >  
> >  #define MEDIA_ENT_ID_FLAG_NEXT (1 << 31)
> >  
> > +/*
> > + * Base numbers for entity types
> > + *
> > + * Please notice that the huge gap of 16 bits for each base is overkill!
> > + * 8 bits is more than enough to avoid starving entity types for each
> > + * subsystem.
> > + *
> > + * However, It is kept this way just to avoid binary breakages with the
> > + * namespace provided on legacy versions of this header.
> > + */
> > +#define MEDIA_ENT_T_DVB_BASE   0x0001
> 
> I would change this to 0x, see follow-up comment later for why.
> 
> > +#define MEDIA_ENT_T_V4L2_BASE  0x0001
> > +#define MEDIA_ENT_T_V4L2_SUBDEV_BASE   0x0002
> > +
> > +/*
> > + * V4L2 entities - Those are used for DMA (mmap/DMABUF) and
> > + * read()/write() data I/O associated with the V4L2 devnodes.
> > + */
> > +#define MEDIA_ENT_T_V4L2_VIDEO (MEDIA_ENT_T_V4L2_BASE + 1)
> > +   /*
> > +* Please notice that numbers between MEDIA_ENT_T_V4L2_BASE + 2 and
> > +* MEDIA_ENT_T_V4L2_BASE + 4 can't be used, as those values used
> > +* to be declared for FB, ALSA and DVB entities.
> > +* As those values were never actually used in practice, we're just
> > 

[PATCH v8 28/55] [media] uapi/media.h: Fix entity namespace

2015-08-29 Thread Mauro Carvalho Chehab
Now that interfaces got created, we need to fix the entity
namespace.

So, let's create a consistent new namespace and add backward
compatibility macros to keep the old namespace preserved.

Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com

diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
index 14d32cdcdd47..88013d1a2c39 100644
--- a/drivers/media/dvb-core/dvbdev.c
+++ b/drivers/media/dvb-core/dvbdev.c
@@ -230,17 +230,17 @@ static void dvb_create_media_entity(struct dvb_device 
*dvbdev,
 
switch (type) {
case DVB_DEVICE_FRONTEND:
-   dvbdev-entity-type = MEDIA_ENT_T_DEVNODE_DVB_FE;
+   dvbdev-entity-type = MEDIA_ENT_T_DVB_DEMOD;
dvbdev-pads[0].flags = MEDIA_PAD_FL_SINK;
dvbdev-pads[1].flags = MEDIA_PAD_FL_SOURCE;
break;
case DVB_DEVICE_DEMUX:
-   dvbdev-entity-type = MEDIA_ENT_T_DEVNODE_DVB_DEMUX;
+   dvbdev-entity-type = MEDIA_ENT_T_DVB_DEMUX;
dvbdev-pads[0].flags = MEDIA_PAD_FL_SINK;
dvbdev-pads[1].flags = MEDIA_PAD_FL_SOURCE;
break;
case DVB_DEVICE_CA:
-   dvbdev-entity-type = MEDIA_ENT_T_DEVNODE_DVB_CA;
+   dvbdev-entity-type = MEDIA_ENT_T_DVB_CA;
dvbdev-pads[0].flags = MEDIA_PAD_FL_SINK;
dvbdev-pads[1].flags = MEDIA_PAD_FL_SOURCE;
break;
@@ -439,7 +439,7 @@ EXPORT_SYMBOL(dvb_unregister_device);
 void dvb_create_media_graph(struct dvb_adapter *adap)
 {
struct media_device *mdev = adap-mdev;
-   struct media_entity *entity, *tuner = NULL, *fe = NULL;
+   struct media_entity *entity, *tuner = NULL, *demod = NULL;
struct media_entity *demux = NULL, *dvr = NULL, *ca = NULL;
struct media_interface *intf;
 
@@ -451,26 +451,26 @@ void dvb_create_media_graph(struct dvb_adapter *adap)
case MEDIA_ENT_T_V4L2_SUBDEV_TUNER:
tuner = entity;
break;
-   case MEDIA_ENT_T_DEVNODE_DVB_FE:
-   fe = entity;
+   case MEDIA_ENT_T_DVB_DEMOD:
+   demod = entity;
break;
-   case MEDIA_ENT_T_DEVNODE_DVB_DEMUX:
+   case MEDIA_ENT_T_DVB_DEMUX:
demux = entity;
break;
-   case MEDIA_ENT_T_DEVNODE_DVB_DVR:
+   case MEDIA_ENT_T_DVB_TSOUT:
dvr = entity;
break;
-   case MEDIA_ENT_T_DEVNODE_DVB_CA:
+   case MEDIA_ENT_T_DVB_CA:
ca = entity;
break;
}
}
 
-   if (tuner  fe)
-   media_create_pad_link(tuner, 0, fe, 0, 0);
+   if (tuner  demod)
+   media_create_pad_link(tuner, 0, demod, 0, 0);
 
-   if (fe  demux)
-   media_create_pad_link(fe, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
+   if (demod  demux)
+   media_create_pad_link(demod, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
 
if (demux  dvr)
media_create_pad_link(demux, 1, dvr, 0, MEDIA_LNK_FL_ENABLED);
diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h
index aca828709bad..3bbda409353f 100644
--- a/include/uapi/linux/media.h
+++ b/include/uapi/linux/media.h
@@ -42,31 +42,71 @@ struct media_device_info {
 
 #define MEDIA_ENT_ID_FLAG_NEXT (1  31)
 
+/*
+ * Base numbers for entity types
+ *
+ * Please notice that the huge gap of 16 bits for each base is overkill!
+ * 8 bits is more than enough to avoid starving entity types for each
+ * subsystem.
+ *
+ * However, It is kept this way just to avoid binary breakages with the
+ * namespace provided on legacy versions of this header.
+ */
+#define MEDIA_ENT_T_DVB_BASE   0x0001
+#define MEDIA_ENT_T_V4L2_BASE  0x0001
+#define MEDIA_ENT_T_V4L2_SUBDEV_BASE   0x0002
+
+/*
+ * V4L2 entities - Those are used for DMA (mmap/DMABUF) and
+ * read()/write() data I/O associated with the V4L2 devnodes.
+ */
+#define MEDIA_ENT_T_V4L2_VIDEO (MEDIA_ENT_T_V4L2_BASE + 1)
+   /*
+* Please notice that numbers between MEDIA_ENT_T_V4L2_BASE + 2 and
+* MEDIA_ENT_T_V4L2_BASE + 4 can't be used, as those values used
+* to be declared for FB, ALSA and DVB entities.
+* As those values were never actually used in practice, we're just
+* adding them as backward compatibility macros and keeping the
+* numberspace clean here. This way, we avoid breaking compilation,
+* in the case of having some userspace application using the old
+* symbols.
+*/
+#define MEDIA_ENT_T_V4L2_VBI   (MEDIA_ENT_T_V4L2_BASE + 5)
+   /* for TX radio, as RX is done via either ALSA or wire */
+#define MEDIA_ENT_T_V4L2_RADIO (MEDIA_ENT_T_V4L2_BASE + 6)
+#define