提交 e31a0ba7 编写于 作者: M Mauro Carvalho Chehab

[media] media: Fix DVB devnode representation at media controller

The previous provision for DVB media controller support were to
define an ID (likely meaning the adapter number) for the DVB
devnodes.

This is just plain wrong. Just like V4L, DVB devices (and any other
device node)) are uniquely identified via a (major, minor) tuple.

This is enough to uniquely identify a devnode, no matter what
API it implements.

So, before we go too far, let's mark the old v4l, fb, dvb and alsa
"devnode" info as deprecated, and just call it as "dev".

We can latter add fields specific to each API if needed.

As we don't want to break compilation on already existing apps,
let's just keep the old definitions as-is, adding a note that
those are deprecated at media-entity.h.
Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
上级 bc0c5aa3
...@@ -943,8 +943,8 @@ int __video_register_device(struct video_device *vdev, int type, int nr, ...@@ -943,8 +943,8 @@ int __video_register_device(struct video_device *vdev, int type, int nr,
vdev->vfl_type != VFL_TYPE_SUBDEV) { vdev->vfl_type != VFL_TYPE_SUBDEV) {
vdev->entity.type = MEDIA_ENT_T_DEVNODE_V4L; vdev->entity.type = MEDIA_ENT_T_DEVNODE_V4L;
vdev->entity.name = vdev->name; vdev->entity.name = vdev->name;
vdev->entity.info.v4l.major = VIDEO_MAJOR; vdev->entity.info.dev.major = VIDEO_MAJOR;
vdev->entity.info.v4l.minor = vdev->minor; vdev->entity.info.dev.minor = vdev->minor;
ret = media_device_register_entity(vdev->v4l2_dev->mdev, ret = media_device_register_entity(vdev->v4l2_dev->mdev,
&vdev->entity); &vdev->entity);
if (ret < 0) if (ret < 0)
......
...@@ -248,8 +248,8 @@ int v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev) ...@@ -248,8 +248,8 @@ int v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev)
goto clean_up; goto clean_up;
} }
#if defined(CONFIG_MEDIA_CONTROLLER) #if defined(CONFIG_MEDIA_CONTROLLER)
sd->entity.info.v4l.major = VIDEO_MAJOR; sd->entity.info.dev.major = VIDEO_MAJOR;
sd->entity.info.v4l.minor = vdev->minor; sd->entity.info.dev.minor = vdev->minor;
#endif #endif
sd->devnode = vdev; sd->devnode = vdev;
} }
......
...@@ -87,17 +87,7 @@ struct media_entity { ...@@ -87,17 +87,7 @@ struct media_entity {
struct { struct {
u32 major; u32 major;
u32 minor; u32 minor;
} v4l; } dev;
struct {
u32 major;
u32 minor;
} fb;
struct {
u32 card;
u32 device;
u32 subdevice;
} alsa;
int dvb;
/* Sub-device specifications */ /* Sub-device specifications */
/* Nothing needed yet */ /* Nothing needed yet */
......
...@@ -75,6 +75,20 @@ struct media_entity_desc { ...@@ -75,6 +75,20 @@ struct media_entity_desc {
union { union {
/* Node specifications */ /* Node specifications */
struct {
__u32 major;
__u32 minor;
} dev;
#if 1
/*
* DEPRECATED: previous node specifications. Kept just to
* avoid breaking compilation, but media_entity_desc.dev
* should be used instead. In particular, alsa and dvb
* fields below are wrong: for all devnodes, there should
* be just major/minor inside the struct, as this is enough
* to represent any devnode, no matter what type.
*/
struct { struct {
__u32 major; __u32 major;
__u32 minor; __u32 minor;
...@@ -89,6 +103,7 @@ struct media_entity_desc { ...@@ -89,6 +103,7 @@ struct media_entity_desc {
__u32 subdevice; __u32 subdevice;
} alsa; } alsa;
int dvb; int dvb;
#endif
/* Sub-device specifications */ /* Sub-device specifications */
/* Nothing needed yet */ /* Nothing needed yet */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册