-Registration will initialize the v4l2_device struct and link dev->driver_data-to v4l2_dev. If v4l2_dev->name is empty then it will be set to a value derived-from dev (driver name followed by the bus_id, to be precise). If you set it-up before calling v4l2_device_register then it will be untouched. If dev is-NULL, then you *must* setup v4l2_dev->name before calling v4l2_device_register.+Registration will initialize the v4l2_device struct. If the dev->driver_data+field is NULL, it will be linked to v4l2_dev. Drivers that use the media+device framework in addition to the V4L2 framework need to set+dev->driver_data manually to point to the driver-specific device structure+that embed the struct v4l2_device instance. This is achieved by a+dev_set_drvdata() call before registering the V4L2 device instance.++If v4l2_dev->name is empty then it will be set to a value derived from dev+(driver name followed by the bus_id, to be precise). If you set it up before+calling v4l2_device_register then it will be untouched. If dev is NULL, then+you *must* setup v4l2_dev->name before calling v4l2_device_register.

You can use v4l2_device_set_name() to set the name based on a driver name and a driver-global atomic_t instance. This will generate names like ivtv0, ivtv1,@@ -108,6 +114,7 @@ You unregister with:

v4l2_device_unregister(struct v4l2_device *v4l2_dev);

+If the dev->driver_data field points to v4l2_dev, it will be reset to NULL. Unregistering will also automatically unregister all subdevs from the device.

/* Each instance of a V4L2 device should create the v4l2_device struct,@@ -39,6 +40,9 @@ struct v4l2_device { Note: dev might be NULL if there is no parent device as is the case with e.g. ISA devices. */ struct device *dev;+#if defined(CONFIG_MEDIA_CONTROLLER)+ struct media_device *mdev;+#endif /* used to keep track of the registered subdevs */ struct list_head subdevs; /* lock this struct; can be used by the driver as well if this-- 1.7.2.2