21 #include <linux/types.h>
23 #include <linux/module.h>
24 #include <linux/i2c.h>
25 #include <linux/slab.h>
26 #if defined(CONFIG_SPI)
29 #include <linux/videodev2.h>
38 INIT_LIST_HEAD(&v4l2_dev->
subdevs);
42 kref_init(&v4l2_dev->
ref);
52 if (!v4l2_dev->
name[0])
54 dev->
driver->name, dev_name(dev));
61 static void v4l2_device_release(
struct kref *ref)
72 return kref_put(&v4l2_dev->
ref, v4l2_device_release);
82 if (basename[len - 1] >=
'0' && basename[len - 1] <=
'9')
84 "%s-%d", basename, num);
87 "%s%d", basename, num);
108 if (v4l2_dev ==
NULL)
115 #if defined(CONFIG_I2C) || (defined(CONFIG_I2C_MODULE) && defined(MODULE))
128 #if defined(CONFIG_SPI)
133 spi_unregister_device(spi);
144 #if defined(CONFIG_MEDIA_CONTROLLER)
156 if (!try_module_get(sd->
owner))
163 module_put(sd->
owner);
173 module_put(sd->
owner);
177 #if defined(CONFIG_MEDIA_CONTROLLER)
179 if (v4l2_dev->mdev) {
184 module_put(sd->
owner);
190 spin_lock(&v4l2_dev->
lock);
192 spin_unlock(&v4l2_dev->
lock);
198 static void v4l2_device_release_subdev_node(
struct video_device *vdev)
224 video_set_drvdata(vdev, sd);
228 vdev->
release = v4l2_device_release_subdev_node;
236 #if defined(CONFIG_MEDIA_CONTROLLER)
238 sd->entity.info.v4l.minor = vdev->
minor;
265 spin_lock(&v4l2_dev->
lock);
267 spin_unlock(&v4l2_dev->
lock);
273 #if defined(CONFIG_MEDIA_CONTROLLER)
278 module_put(sd->
owner);