Commit 005759613b95264fba9138010f112bc138c857c2
Committed by
Mauro Carvalho Chehab
1 parent
afd96668d8
Exists in
master
and in
7 other branches
V4L/DVB (10988): v4l2-dev: use parent field if the v4l2_device has no parent set.
Normally the parent device of v4l2_device is used as the video device node's parent. But if it was not set, then use the parent field in the video_device struct. This is needed in the cx88 driver, which has one core v4l2_device but creates multiple pci devices (one each for raw and mpeg video). So you cannot associate the core v4l2_device with a particular PCI device, but you can do that for each video_device. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Showing 2 changed files with 12 additions and 2 deletions Side-by-side Diff
Documentation/video4linux/v4l2-framework.txt
... | ... | @@ -91,7 +91,8 @@ |
91 | 91 | |
92 | 92 | The first 'dev' argument is normally the struct device pointer of a pci_dev, |
93 | 93 | usb_device or platform_device. It is rare for dev to be NULL, but it happens |
94 | -with ISA devices, for example. | |
94 | +with ISA devices or when one device creates multiple PCI devices, thus making | |
95 | +it impossible to associate v4l2_dev with a particular parent. | |
95 | 96 | |
96 | 97 | You unregister with: |
97 | 98 | |
... | ... | @@ -414,6 +415,15 @@ |
414 | 415 | - ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance |
415 | 416 | (highly recommended to use this and it might become compulsory in the |
416 | 417 | future!), then set this to your v4l2_ioctl_ops struct. |
418 | +- parent: you only set this if v4l2_device was registered with NULL as | |
419 | + the parent device struct. This only happens in cases where one hardware | |
420 | + device has multiple PCI devices that all share the same v4l2_device core. | |
421 | + | |
422 | + The cx88 driver is an example of this: one core v4l2_device struct, but | |
423 | + it is used by both an raw video PCI device (cx8800) and a MPEG PCI device | |
424 | + (cx8802). Since the v4l2_device cannot be associated with a particular | |
425 | + PCI device it is setup without a parent device. But when the struct | |
426 | + video_device is setup you do know which parent PCI device to use. | |
417 | 427 | |
418 | 428 | If you use v4l2_ioctl_ops, then you should set either .unlocked_ioctl or |
419 | 429 | .ioctl to video_ioctl2 in your v4l2_file_operations struct. |
drivers/media/video/v4l2-dev.c