mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	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
					
				| @ -217,6 +217,7 @@ config VIDEO_ADV7180 | ||||
| 	depends on GPIOLIB && VIDEO_V4L2 && I2C | ||||
| 	select MEDIA_CONTROLLER | ||||
| 	select VIDEO_V4L2_SUBDEV_API | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  Support for the Analog Devices ADV7180 video decoder. | ||||
| 
 | ||||
| @ -534,6 +535,7 @@ config VIDEO_ADV7175 | ||||
| config VIDEO_ADV7343 | ||||
| 	tristate "ADV7343 video encoder" | ||||
| 	depends on I2C | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  Support for Analog Devices I2C bus based ADV7343 encoder. | ||||
| 
 | ||||
| @ -652,6 +654,7 @@ config SDR_MAX2175 | ||||
| 	tristate "Maxim 2175 RF to Bits tuner" | ||||
| 	depends on VIDEO_V4L2 && MEDIA_SDR_SUPPORT && I2C | ||||
| 	select REGMAP_I2C | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  Support for Maxim 2175 tuner. It is an advanced analog/digital | ||||
| 	  radio receiver with RF-to-Bits front-end designed for SDR solutions. | ||||
| @ -668,6 +671,7 @@ menu "Miscellaneous helper chips" | ||||
| config VIDEO_THS7303 | ||||
| 	tristate "THS7303/53 Video Amplifier" | ||||
| 	depends on VIDEO_V4L2 && I2C | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  Support for TI THS7303/53 video amplifier | ||||
| 
 | ||||
| @ -1341,6 +1345,7 @@ config VIDEO_AD5820 | ||||
| 	tristate "AD5820 lens voice coil support" | ||||
| 	depends on GPIOLIB && I2C && VIDEO_V4L2 | ||||
| 	select MEDIA_CONTROLLER | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  This is a driver for the AD5820 camera lens voice coil. | ||||
| 	  It is used for example in Nokia N900 (RX-51). | ||||
| @ -1350,6 +1355,7 @@ config VIDEO_AK7375 | ||||
| 	depends on I2C && VIDEO_V4L2 | ||||
| 	select MEDIA_CONTROLLER | ||||
| 	select VIDEO_V4L2_SUBDEV_API | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  This is a driver for the AK7375 camera lens voice coil. | ||||
| 	  AK7375 is a 12 bit DAC with 120mA output current sink | ||||
| @ -1361,6 +1367,7 @@ config VIDEO_DW9714 | ||||
| 	depends on I2C && VIDEO_V4L2 | ||||
| 	select MEDIA_CONTROLLER | ||||
| 	select VIDEO_V4L2_SUBDEV_API | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  This is a driver for the DW9714 camera lens voice coil. | ||||
| 	  DW9714 is a 10 bit DAC with 120mA output current sink | ||||
| @ -1384,6 +1391,7 @@ config VIDEO_DW9807_VCM | ||||
| 	depends on I2C && VIDEO_V4L2 | ||||
| 	select MEDIA_CONTROLLER | ||||
| 	select VIDEO_V4L2_SUBDEV_API | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  This is a driver for the DW9807 camera lens voice coil. | ||||
| 	  DW9807 is a 10 bit DAC with 100mA output current sink | ||||
| @ -1399,6 +1407,7 @@ config VIDEO_ADP1653 | ||||
| 	tristate "ADP1653 flash support" | ||||
| 	depends on I2C && VIDEO_V4L2 | ||||
| 	select MEDIA_CONTROLLER | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  This is a driver for the ADP1653 flash controller. It is used for | ||||
| 	  example in Nokia N900. | ||||
| @ -1408,6 +1417,7 @@ config VIDEO_LM3560 | ||||
| 	depends on I2C && VIDEO_V4L2 | ||||
| 	select MEDIA_CONTROLLER | ||||
| 	select REGMAP_I2C | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  This is a driver for the lm3560 dual flash controllers. It controls | ||||
| 	  flash, torch LEDs. | ||||
| @ -1417,6 +1427,7 @@ config VIDEO_LM3646 | ||||
| 	depends on I2C && VIDEO_V4L2 | ||||
| 	select MEDIA_CONTROLLER | ||||
| 	select REGMAP_I2C | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  This is a driver for the lm3646 dual flash controllers. It controls | ||||
| 	  flash, torch LEDs. | ||||
|  | ||||
| @ -62,6 +62,7 @@ config V4L2_FLASH_LED_CLASS | ||||
| 	tristate "V4L2 flash API for LED flash class devices" | ||||
| 	depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API | ||||
| 	depends on LEDS_CLASS_FLASH | ||||
| 	select V4L2_ASYNC | ||||
| 	help | ||||
| 	  Say Y here to enable V4L2 flash API support for LED flash | ||||
| 	  class drivers. | ||||
| @ -70,6 +71,10 @@ config V4L2_FLASH_LED_CLASS | ||||
| 
 | ||||
| config V4L2_FWNODE | ||||
| 	tristate | ||||
| 	select V4L2_ASYNC | ||||
| 
 | ||||
| config V4L2_ASYNC | ||||
| 	tristate | ||||
| 
 | ||||
| # Used by drivers that need Videobuf modules | ||||
| config VIDEOBUF_GEN | ||||
|  | ||||
| @ -6,7 +6,7 @@ | ||||
| tuner-objs	:=	tuner-core.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-request.o v4l2-ctrls-defs.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_VIDEO_V4L2_I2C) += v4l2-i2c.o | ||||
| 
 | ||||
| obj-$(CONFIG_V4L2_FWNODE) += v4l2-fwnode.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_TUNER) += tuner.o | ||||
|  | ||||
| @ -854,8 +854,27 @@ static int pending_subdevs_show(struct seq_file *s, void *data) | ||||
| } | ||||
| 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); | ||||
| 
 | ||||
| 	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);				\ | ||||
| } while (0) | ||||
| 
 | ||||
| static struct dentry *v4l2_debugfs_dir; | ||||
| 
 | ||||
| /*
 | ||||
|  *	sysfs stuff | ||||
|  */ | ||||
| @ -1121,8 +1119,6 @@ static int __init videodev_init(void) | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 
 | ||||
| 	v4l2_debugfs_dir = debugfs_create_dir("video4linux", NULL); | ||||
| 	v4l2_async_debug_init(v4l2_debugfs_dir); | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| @ -1130,7 +1126,6 @@ static void __exit videodev_exit(void) | ||||
| { | ||||
| 	dev_t dev = MKDEV(VIDEO_MAJOR, 0); | ||||
| 
 | ||||
| 	debugfs_remove_recursive(v4l2_debugfs_dir); | ||||
| 	class_unregister(&video_class); | ||||
| 	unregister_chrdev_region(dev, VIDEO_NUM_DEVICES); | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Sakari Ailus
						Sakari Ailus