Commit c4f0b78a authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

[media] v4l: Don't register media entities for subdev device nodes

Subdevs already have their own entity, don't register as second one when
registering the subdev device node.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: default avatarSakari Ailus <sakari.ailus@maxwell.research.nokia.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent e2241531
...@@ -389,7 +389,8 @@ static int v4l2_open(struct inode *inode, struct file *filp) ...@@ -389,7 +389,8 @@ static int v4l2_open(struct inode *inode, struct file *filp)
video_get(vdev); video_get(vdev);
mutex_unlock(&videodev_lock); mutex_unlock(&videodev_lock);
#if defined(CONFIG_MEDIA_CONTROLLER) #if defined(CONFIG_MEDIA_CONTROLLER)
if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) { if (vdev->v4l2_dev && vdev->v4l2_dev->mdev &&
vdev->vfl_type != VFL_TYPE_SUBDEV) {
entity = media_entity_get(&vdev->entity); entity = media_entity_get(&vdev->entity);
if (!entity) { if (!entity) {
ret = -EBUSY; ret = -EBUSY;
...@@ -415,7 +416,8 @@ static int v4l2_open(struct inode *inode, struct file *filp) ...@@ -415,7 +416,8 @@ static int v4l2_open(struct inode *inode, struct file *filp)
/* decrease the refcount in case of an error */ /* decrease the refcount in case of an error */
if (ret) { if (ret) {
#if defined(CONFIG_MEDIA_CONTROLLER) #if defined(CONFIG_MEDIA_CONTROLLER)
if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) if (vdev->v4l2_dev && vdev->v4l2_dev->mdev &&
vdev->vfl_type != VFL_TYPE_SUBDEV)
media_entity_put(entity); media_entity_put(entity);
#endif #endif
video_put(vdev); video_put(vdev);
...@@ -437,7 +439,8 @@ static int v4l2_release(struct inode *inode, struct file *filp) ...@@ -437,7 +439,8 @@ static int v4l2_release(struct inode *inode, struct file *filp)
mutex_unlock(vdev->lock); mutex_unlock(vdev->lock);
} }
#if defined(CONFIG_MEDIA_CONTROLLER) #if defined(CONFIG_MEDIA_CONTROLLER)
if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) if (vdev->v4l2_dev && vdev->v4l2_dev->mdev &&
vdev->vfl_type != VFL_TYPE_SUBDEV)
media_entity_put(&vdev->entity); media_entity_put(&vdev->entity);
#endif #endif
/* decrease the refcount unconditionally since the release() /* decrease the refcount unconditionally since the release()
...@@ -686,7 +689,8 @@ int __video_register_device(struct video_device *vdev, int type, int nr, ...@@ -686,7 +689,8 @@ int __video_register_device(struct video_device *vdev, int type, int nr,
#if defined(CONFIG_MEDIA_CONTROLLER) #if defined(CONFIG_MEDIA_CONTROLLER)
/* Part 5: Register the entity. */ /* Part 5: Register the entity. */
if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) { if (vdev->v4l2_dev && vdev->v4l2_dev->mdev &&
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.v4l.major = VIDEO_MAJOR; vdev->entity.v4l.major = VIDEO_MAJOR;
...@@ -733,7 +737,8 @@ void video_unregister_device(struct video_device *vdev) ...@@ -733,7 +737,8 @@ void video_unregister_device(struct video_device *vdev)
return; return;
#if defined(CONFIG_MEDIA_CONTROLLER) #if defined(CONFIG_MEDIA_CONTROLLER)
if (vdev->v4l2_dev && vdev->v4l2_dev->mdev) if (vdev->v4l2_dev && vdev->v4l2_dev->mdev &&
vdev->vfl_type != VFL_TYPE_SUBDEV)
media_device_unregister_entity(&vdev->entity); media_device_unregister_entity(&vdev->entity);
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment