lkml.org 
[lkml]   [2019]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.20 140/304] media: v4l2-device: Link subdevices to their parent devices if available
    Date
    From: Tomasz Figa <tfiga@chromium.org>

    [ Upstream commit ee494cf377e142f65f202fadf0d859f8e12119fb ]

    Currently v4l2_device_register_subdev_nodes() does not initialize the
    dev_parent field of the video_device structs it creates for subdevices
    being registered. This leads to __video_register_device() falling back
    to the parent device of associated v4l2_device struct, which often does
    not match the physical device the subdevice is registered for.

    Due to the problem above, the links between real devices and v4l-subdev
    nodes cannot be obtained from sysfs, which might be confusing for the
    userspace trying to identify the hardware.

    Fix this by initializing the dev_parent field of the video_device struct
    with the value of dev field of the v4l2_subdev struct. In case of
    subdevices without a parent struct device, the field will be NULL and the
    old behavior will be preserved by the semantics of
    __video_register_device().

    Signed-off-by: Tomasz Figa <tfiga@chromium.org>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/v4l2-core/v4l2-device.c | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/drivers/media/v4l2-core/v4l2-device.c b/drivers/media/v4l2-core/v4l2-device.c
    index df0ac38c4050..e0ddb9a52bd1 100644
    --- a/drivers/media/v4l2-core/v4l2-device.c
    +++ b/drivers/media/v4l2-core/v4l2-device.c
    @@ -247,6 +247,7 @@ int v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev)

    video_set_drvdata(vdev, sd);
    strscpy(vdev->name, sd->name, sizeof(vdev->name));
    + vdev->dev_parent = sd->dev;
    vdev->v4l2_dev = v4l2_dev;
    vdev->fops = &v4l2_subdev_fops;
    vdev->release = v4l2_device_release_subdev_node;
    --
    2.19.1
    \
     
     \ /
      Last update: 2019-01-28 18:43    [W:4.046 / U:0.672 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site