Re: [PATCH v2 4/4] v4l: async, fwnode: Improve module organisation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sakari,

Thanks for your work.

On 2021-03-12 14:56:57 +0200, Sakari Ailus wrote:
> The V4L2 async framework is generally used with the V4L2 fwnode, which
> also depends on the former. There is only one exception, the CAFE_CCIC
> driver, which uses V4L2 async but does not need V4L2 fwnode.
> 
> 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, build v4l2-async and v4l2-fwnode as a single module
> called v4l2-async (the v4l2-async.c file is renamed as v4l2-async-core.c).
> Also the menu item V4L2_FWNODE is renamed as 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".

I tested this patch as part of your latest master branch [1] and it 
fails to compile for me,

      AR      drivers/base/built-in.a
    drivers/media/v4l2-core/Makefile:18: *** missing separator.  Stop.
    make[2]: *** [scripts/Makefile.build:514: drivers/media/v4l2-core] Error 2
    make[1]: *** [scripts/Makefile.build:514: drivers/media] Error 2
    make: *** [Makefile:1849: drivers] Error 2

1. git://linuxtv.org/sailus/media_tree.git master
   e61c166cc1088746 ("v4l: async, fwnode: Improve module organisation")

> 
> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> ---
>  drivers/media/i2c/Kconfig            |  8 ++++++++
>  drivers/media/v4l2-core/Kconfig      |  4 ++++
>  drivers/media/v4l2-core/Makefile     | 11 +++++++++--
>  drivers/media/v4l2-core/v4l2-async.c | 23 +++++++++++++++++++++--
>  drivers/media/v4l2-core/v4l2-dev.c   |  5 -----
>  5 files changed, 42 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
> index 462c0e059754..4326e50c13c9 100644
> --- a/drivers/media/i2c/Kconfig
> +++ b/drivers/media/i2c/Kconfig
> @@ -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.
>  
> @@ -1341,6 +1342,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 +1352,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 +1364,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 +1388,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 +1404,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 +1414,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 +1424,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.
> diff --git a/drivers/media/v4l2-core/Kconfig b/drivers/media/v4l2-core/Kconfig
> index bf49f83cb86f..61b023b56d75 100644
> --- a/drivers/media/v4l2-core/Kconfig
> +++ b/drivers/media/v4l2-core/Kconfig
> @@ -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.
> @@ -71,6 +72,9 @@ config V4L2_FLASH_LED_CLASS
>  config V4L2_FWNODE
>  	tristate
>  
> +config V4L2_ASYNC
> +	tristate
> +
>  # Used by drivers that need Videobuf modules
>  config VIDEOBUF_GEN
>  	tristate
> diff --git a/drivers/media/v4l2-core/Makefile b/drivers/media/v4l2-core/Makefile
> index e4cd589b99a5..eb5ebb5461fd 100644
> --- a/drivers/media/v4l2-core/Makefile
> +++ b/drivers/media/v4l2-core/Makefile
> @@ -7,15 +7,22 @@ tuner-objs	:=	tuner-core.o
>  
>  videodev-objs	:=	v4l2-dev.o v4l2-ioctl.o v4l2-device.o v4l2-fh.o \
>  			v4l2-event.o v4l2-ctrls.o v4l2-subdev.o \
> -			v4l2-async.o v4l2-common.o
> +			v4l2-common.o
>  videodev-$(CONFIG_COMPAT) += v4l2-compat-ioctl32.o
>  videodev-$(CONFIG_TRACEPOINTS) += v4l2-trace.o
>  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
> +ifneq ($(findstring y,$(CONFIG_V4L2_ASYNC)$(CONFIG_V4L2_FWNODE)),)
> +obj-y += v4l2-async.o
> +else
> +ifneq ($(findstring m,$(CONFIG_V4L2_ASYNC)$(CONFIG_V4L2_FWNODE)),)
> +obj-m += v4l2-async.o
> +endif
> +endif
> +obj-$(CONFIG_V4L2_FWNODE) += v4l2-fwnode.o
>  obj-$(CONFIG_VIDEO_V4L2) += v4l2-dv-timings.o
>  
>  obj-$(CONFIG_VIDEO_TUNER) += tuner.o
> diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c
> index 21b3890b96fc..6e49386f0284 100644
> --- a/drivers/media/v4l2-core/v4l2-async.c
> +++ b/drivers/media/v4l2-core/v4l2-async.c
> @@ -852,8 +852,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@xxxxxx>");
> +MODULE_AUTHOR("Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>");
> +MODULE_AUTHOR("Ezequiel Garcia <ezequiel@xxxxxxxxxxxxx>");
> +MODULE_LICENSE("GPL");
> diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c
> index b6a72d297775..5002e3cd110f 100644
> --- a/drivers/media/v4l2-core/v4l2-dev.c
> +++ b/drivers/media/v4l2-core/v4l2-dev.c
> @@ -39,8 +39,6 @@
>  		       __func__, ##arg);				\
>  } while (0)
>  
> -static struct dentry *v4l2_debugfs_dir;
> -
>  /*
>   *	sysfs stuff
>   */
> @@ -1120,8 +1118,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;
>  }
>  
> @@ -1129,7 +1125,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);
>  }
> -- 
> 2.29.2
> 

-- 
Regards,
Niklas Söderlund



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux