media: v4l: async, fwnode: Improve module organisation
The V4L2 async framework is generally used with the V4L2 fwnode, which also depends on the former. There are a few exceptions but they are relatively few. At the same time there is a vast number of systems that need videodev module, but have no use for v4l2-async that's now part of videodev. In order to improve, split the v4l2-async into its own module. Selecting V4L2_FWNODE also selects V4L2_ASYNC. This also moves the initialisation of the debufs entries for async subdevs to loading of the v4l2-async module. The directory is named as "v4l2-async". Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
1cb1361373
commit
ff3cc65cad
5 changed files with 40 additions and 9 deletions
|
@ -217,6 +217,7 @@ config VIDEO_ADV7180
|
||||||
depends on GPIOLIB && VIDEO_V4L2 && I2C
|
depends on GPIOLIB && VIDEO_V4L2 && I2C
|
||||||
select MEDIA_CONTROLLER
|
select MEDIA_CONTROLLER
|
||||||
select VIDEO_V4L2_SUBDEV_API
|
select VIDEO_V4L2_SUBDEV_API
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
Support for the Analog Devices ADV7180 video decoder.
|
Support for the Analog Devices ADV7180 video decoder.
|
||||||
|
|
||||||
|
@ -534,6 +535,7 @@ config VIDEO_ADV7175
|
||||||
config VIDEO_ADV7343
|
config VIDEO_ADV7343
|
||||||
tristate "ADV7343 video encoder"
|
tristate "ADV7343 video encoder"
|
||||||
depends on I2C
|
depends on I2C
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
Support for Analog Devices I2C bus based ADV7343 encoder.
|
Support for Analog Devices I2C bus based ADV7343 encoder.
|
||||||
|
|
||||||
|
@ -652,6 +654,7 @@ config SDR_MAX2175
|
||||||
tristate "Maxim 2175 RF to Bits tuner"
|
tristate "Maxim 2175 RF to Bits tuner"
|
||||||
depends on VIDEO_V4L2 && MEDIA_SDR_SUPPORT && I2C
|
depends on VIDEO_V4L2 && MEDIA_SDR_SUPPORT && I2C
|
||||||
select REGMAP_I2C
|
select REGMAP_I2C
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
Support for Maxim 2175 tuner. It is an advanced analog/digital
|
Support for Maxim 2175 tuner. It is an advanced analog/digital
|
||||||
radio receiver with RF-to-Bits front-end designed for SDR solutions.
|
radio receiver with RF-to-Bits front-end designed for SDR solutions.
|
||||||
|
@ -668,6 +671,7 @@ menu "Miscellaneous helper chips"
|
||||||
config VIDEO_THS7303
|
config VIDEO_THS7303
|
||||||
tristate "THS7303/53 Video Amplifier"
|
tristate "THS7303/53 Video Amplifier"
|
||||||
depends on VIDEO_V4L2 && I2C
|
depends on VIDEO_V4L2 && I2C
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
Support for TI THS7303/53 video amplifier
|
Support for TI THS7303/53 video amplifier
|
||||||
|
|
||||||
|
@ -1341,6 +1345,7 @@ config VIDEO_AD5820
|
||||||
tristate "AD5820 lens voice coil support"
|
tristate "AD5820 lens voice coil support"
|
||||||
depends on GPIOLIB && I2C && VIDEO_V4L2
|
depends on GPIOLIB && I2C && VIDEO_V4L2
|
||||||
select MEDIA_CONTROLLER
|
select MEDIA_CONTROLLER
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
This is a driver for the AD5820 camera lens voice coil.
|
This is a driver for the AD5820 camera lens voice coil.
|
||||||
It is used for example in Nokia N900 (RX-51).
|
It is used for example in Nokia N900 (RX-51).
|
||||||
|
@ -1350,6 +1355,7 @@ config VIDEO_AK7375
|
||||||
depends on I2C && VIDEO_V4L2
|
depends on I2C && VIDEO_V4L2
|
||||||
select MEDIA_CONTROLLER
|
select MEDIA_CONTROLLER
|
||||||
select VIDEO_V4L2_SUBDEV_API
|
select VIDEO_V4L2_SUBDEV_API
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
This is a driver for the AK7375 camera lens voice coil.
|
This is a driver for the AK7375 camera lens voice coil.
|
||||||
AK7375 is a 12 bit DAC with 120mA output current sink
|
AK7375 is a 12 bit DAC with 120mA output current sink
|
||||||
|
@ -1361,6 +1367,7 @@ config VIDEO_DW9714
|
||||||
depends on I2C && VIDEO_V4L2
|
depends on I2C && VIDEO_V4L2
|
||||||
select MEDIA_CONTROLLER
|
select MEDIA_CONTROLLER
|
||||||
select VIDEO_V4L2_SUBDEV_API
|
select VIDEO_V4L2_SUBDEV_API
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
This is a driver for the DW9714 camera lens voice coil.
|
This is a driver for the DW9714 camera lens voice coil.
|
||||||
DW9714 is a 10 bit DAC with 120mA output current sink
|
DW9714 is a 10 bit DAC with 120mA output current sink
|
||||||
|
@ -1384,6 +1391,7 @@ config VIDEO_DW9807_VCM
|
||||||
depends on I2C && VIDEO_V4L2
|
depends on I2C && VIDEO_V4L2
|
||||||
select MEDIA_CONTROLLER
|
select MEDIA_CONTROLLER
|
||||||
select VIDEO_V4L2_SUBDEV_API
|
select VIDEO_V4L2_SUBDEV_API
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
This is a driver for the DW9807 camera lens voice coil.
|
This is a driver for the DW9807 camera lens voice coil.
|
||||||
DW9807 is a 10 bit DAC with 100mA output current sink
|
DW9807 is a 10 bit DAC with 100mA output current sink
|
||||||
|
@ -1399,6 +1407,7 @@ config VIDEO_ADP1653
|
||||||
tristate "ADP1653 flash support"
|
tristate "ADP1653 flash support"
|
||||||
depends on I2C && VIDEO_V4L2
|
depends on I2C && VIDEO_V4L2
|
||||||
select MEDIA_CONTROLLER
|
select MEDIA_CONTROLLER
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
This is a driver for the ADP1653 flash controller. It is used for
|
This is a driver for the ADP1653 flash controller. It is used for
|
||||||
example in Nokia N900.
|
example in Nokia N900.
|
||||||
|
@ -1408,6 +1417,7 @@ config VIDEO_LM3560
|
||||||
depends on I2C && VIDEO_V4L2
|
depends on I2C && VIDEO_V4L2
|
||||||
select MEDIA_CONTROLLER
|
select MEDIA_CONTROLLER
|
||||||
select REGMAP_I2C
|
select REGMAP_I2C
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
This is a driver for the lm3560 dual flash controllers. It controls
|
This is a driver for the lm3560 dual flash controllers. It controls
|
||||||
flash, torch LEDs.
|
flash, torch LEDs.
|
||||||
|
@ -1417,6 +1427,7 @@ config VIDEO_LM3646
|
||||||
depends on I2C && VIDEO_V4L2
|
depends on I2C && VIDEO_V4L2
|
||||||
select MEDIA_CONTROLLER
|
select MEDIA_CONTROLLER
|
||||||
select REGMAP_I2C
|
select REGMAP_I2C
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
This is a driver for the lm3646 dual flash controllers. It controls
|
This is a driver for the lm3646 dual flash controllers. It controls
|
||||||
flash, torch LEDs.
|
flash, torch LEDs.
|
||||||
|
|
|
@ -62,6 +62,7 @@ config V4L2_FLASH_LED_CLASS
|
||||||
tristate "V4L2 flash API for LED flash class devices"
|
tristate "V4L2 flash API for LED flash class devices"
|
||||||
depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||||
depends on LEDS_CLASS_FLASH
|
depends on LEDS_CLASS_FLASH
|
||||||
|
select V4L2_ASYNC
|
||||||
help
|
help
|
||||||
Say Y here to enable V4L2 flash API support for LED flash
|
Say Y here to enable V4L2 flash API support for LED flash
|
||||||
class drivers.
|
class drivers.
|
||||||
|
@ -70,6 +71,10 @@ config V4L2_FLASH_LED_CLASS
|
||||||
|
|
||||||
config V4L2_FWNODE
|
config V4L2_FWNODE
|
||||||
tristate
|
tristate
|
||||||
|
select V4L2_ASYNC
|
||||||
|
|
||||||
|
config V4L2_ASYNC
|
||||||
|
tristate
|
||||||
|
|
||||||
# Used by drivers that need Videobuf modules
|
# Used by drivers that need Videobuf modules
|
||||||
config VIDEOBUF_GEN
|
config VIDEOBUF_GEN
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
tuner-objs := tuner-core.o
|
tuner-objs := tuner-core.o
|
||||||
|
|
||||||
videodev-objs := v4l2-dev.o v4l2-ioctl.o v4l2-device.o v4l2-fh.o \
|
videodev-objs := v4l2-dev.o v4l2-ioctl.o v4l2-device.o v4l2-fh.o \
|
||||||
v4l2-event.o v4l2-subdev.o v4l2-async.o v4l2-common.o \
|
v4l2-event.o v4l2-subdev.o v4l2-common.o \
|
||||||
v4l2-ctrls-core.o v4l2-ctrls-api.o \
|
v4l2-ctrls-core.o v4l2-ctrls-api.o \
|
||||||
v4l2-ctrls-request.o v4l2-ctrls-defs.o
|
v4l2-ctrls-request.o v4l2-ctrls-defs.o
|
||||||
videodev-$(CONFIG_COMPAT) += v4l2-compat-ioctl32.o
|
videodev-$(CONFIG_COMPAT) += v4l2-compat-ioctl32.o
|
||||||
|
@ -15,8 +15,9 @@ videodev-$(CONFIG_MEDIA_CONTROLLER) += v4l2-mc.o
|
||||||
videodev-$(CONFIG_SPI) += v4l2-spi.o
|
videodev-$(CONFIG_SPI) += v4l2-spi.o
|
||||||
videodev-$(CONFIG_VIDEO_V4L2_I2C) += v4l2-i2c.o
|
videodev-$(CONFIG_VIDEO_V4L2_I2C) += v4l2-i2c.o
|
||||||
|
|
||||||
obj-$(CONFIG_V4L2_FWNODE) += v4l2-fwnode.o
|
|
||||||
obj-$(CONFIG_VIDEO_V4L2) += videodev.o
|
obj-$(CONFIG_VIDEO_V4L2) += videodev.o
|
||||||
|
obj-$(CONFIG_V4L2_FWNODE) += v4l2-fwnode.o
|
||||||
|
obj-$(CONFIG_V4L2_ASYNC) += v4l2-async.o
|
||||||
obj-$(CONFIG_VIDEO_V4L2) += v4l2-dv-timings.o
|
obj-$(CONFIG_VIDEO_V4L2) += v4l2-dv-timings.o
|
||||||
|
|
||||||
obj-$(CONFIG_VIDEO_TUNER) += tuner.o
|
obj-$(CONFIG_VIDEO_TUNER) += tuner.o
|
||||||
|
|
|
@ -854,8 +854,27 @@ static int pending_subdevs_show(struct seq_file *s, void *data)
|
||||||
}
|
}
|
||||||
DEFINE_SHOW_ATTRIBUTE(pending_subdevs);
|
DEFINE_SHOW_ATTRIBUTE(pending_subdevs);
|
||||||
|
|
||||||
void v4l2_async_debug_init(struct dentry *debugfs_dir)
|
static struct dentry *v4l2_async_debugfs_dir;
|
||||||
|
|
||||||
|
static int __init v4l2_async_init(void)
|
||||||
{
|
{
|
||||||
debugfs_create_file("pending_async_subdevices", 0444, debugfs_dir, NULL,
|
v4l2_async_debugfs_dir = debugfs_create_dir("v4l2-async", NULL);
|
||||||
|
debugfs_create_file("pending_async_subdevices", 0444,
|
||||||
|
v4l2_async_debugfs_dir, NULL,
|
||||||
&pending_subdevs_fops);
|
&pending_subdevs_fops);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __exit v4l2_async_exit(void)
|
||||||
|
{
|
||||||
|
debugfs_remove_recursive(v4l2_async_debugfs_dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
subsys_initcall(v4l2_async_init);
|
||||||
|
module_exit(v4l2_async_exit);
|
||||||
|
|
||||||
|
MODULE_AUTHOR("Guennadi Liakhovetski <g.liakhovetski@gmx.de>");
|
||||||
|
MODULE_AUTHOR("Sakari Ailus <sakari.ailus@linux.intel.com>");
|
||||||
|
MODULE_AUTHOR("Ezequiel Garcia <ezequiel@collabora.com>");
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
|
|
@ -39,8 +39,6 @@
|
||||||
__func__, ##arg); \
|
__func__, ##arg); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
static struct dentry *v4l2_debugfs_dir;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* sysfs stuff
|
* sysfs stuff
|
||||||
*/
|
*/
|
||||||
|
@ -1121,8 +1119,6 @@ static int __init videodev_init(void)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
v4l2_debugfs_dir = debugfs_create_dir("video4linux", NULL);
|
|
||||||
v4l2_async_debug_init(v4l2_debugfs_dir);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1130,7 +1126,6 @@ static void __exit videodev_exit(void)
|
||||||
{
|
{
|
||||||
dev_t dev = MKDEV(VIDEO_MAJOR, 0);
|
dev_t dev = MKDEV(VIDEO_MAJOR, 0);
|
||||||
|
|
||||||
debugfs_remove_recursive(v4l2_debugfs_dir);
|
|
||||||
class_unregister(&video_class);
|
class_unregister(&video_class);
|
||||||
unregister_chrdev_region(dev, VIDEO_NUM_DEVICES);
|
unregister_chrdev_region(dev, VIDEO_NUM_DEVICES);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue