Commit ff3cc65c authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab

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: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: default avatarEzequiel Garcia <ezequiel@collabora.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 1cb13613
...@@ -217,6 +217,7 @@ config VIDEO_ADV7180 ...@@ -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 ...@@ -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 ...@@ -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" ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 @@ ...@@ -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 ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment