[media] cx88: set dev_parent to the correct parent PCI bus
authorHans Verkuil <hans.verkuil@cisco.com>
Wed, 12 Jun 2013 14:23:44 +0000 (11:23 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 21 Jun 2013 14:08:07 +0000 (11:08 -0300)
The cx88 driver has one v4l2_device, but the video nodes are owned by two
different PCI busses. So the dev_parent pointer should be set to the correct
parent bus, otherwise sysfs won't show the correct device hierarchy.
This broke starting in 3.6 after a driver change, so this patch resurrects
the correct behavior.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/pci/cx88/cx88-core.c

index c8f3dcc579d45136c730eb03f4b1679bdf6d6a2d..ad59dc9235aefd1ec7241185a70e9b4af6d94247 100644 (file)
@@ -1034,7 +1034,14 @@ struct video_device *cx88_vdev_init(struct cx88_core *core,
        if (NULL == vfd)
                return NULL;
        *vfd = *template_;
+       /*
+        * The dev pointer of v4l2_device is NULL, instead we set the
+        * video_device dev_parent pointer to the correct PCI bus device.
+        * This driver is a rare example where there is one v4l2_device,
+        * but the video nodes have different parent (PCI) devices.
+        */
        vfd->v4l2_dev = &core->v4l2_dev;
+       vfd->dev_parent = &pci->dev;
        vfd->release = video_device_release;
        snprintf(vfd->name, sizeof(vfd->name), "%s %s (%s)",
                 core->name, type, core->board.name);