lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YeBCEmdgtdzsYB6Z@smile.fi.intel.com>
Date:   Thu, 13 Jan 2022 17:15:30 +0200
From:   Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
To:     Nikita Yushchenko <nikita.yoush@...entembedded.com>
Cc:     Jonathan Cameron <jic23@...nel.org>,
        Lars-Peter Clausen <lars@...afoo.de>,
        Linus Walleij <linus.walleij@...aro.org>,
        Alexandru Ardelean <aardelean@...iqon.com>,
        Cai Huoqing <caihuoqing@...du.com>, linux-iio@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3] iio: st_sensors: don't always auto-enable I2C and SPI
 interface drivers

On Mon, Jan 10, 2022 at 06:24:32PM +0300, Nikita Yushchenko wrote:
> This patch makes I2C and SPI interface drivers for STMicroelectronics
> sensor chips individually selectable via Kconfig.
> 
> The default is kept unchanged - I2C and SPI interface drivers are still
> selected by default if the corresponding bus support is available.
> 
> However, the patch makes it possible to explicitly disable drivers
> that are not needed for a particular target.

FWIW,
Acked-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>

> Signed-off-by: Nikita Yushchenko <nikita.yoush@...entembedded.com>
> ---
> Changes since v2:
> - fix subject and spelling in the commit message
> Changes since v1:
> - use "default XXX" instead of "default y if XXX", per suggestion by
>   Arnd Bergmann
> 
>  drivers/iio/accel/Kconfig             | 35 ++++++++++++++-----------
>  drivers/iio/common/st_sensors/Kconfig |  2 --
>  drivers/iio/gyro/Kconfig              | 37 ++++++++++++++++-----------
>  drivers/iio/imu/st_lsm9ds0/Kconfig    | 28 +++++++++++++++-----
>  drivers/iio/magnetometer/Kconfig      | 35 ++++++++++++++-----------
>  drivers/iio/pressure/Kconfig          | 35 ++++++++++++++-----------
>  6 files changed, 104 insertions(+), 68 deletions(-)
> 
> diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig
> index 49587c992a6d..eb17ca40e08a 100644
> --- a/drivers/iio/accel/Kconfig
> +++ b/drivers/iio/accel/Kconfig
> @@ -349,8 +349,6 @@ config IIO_ST_ACCEL_3AXIS
>  	depends on !SENSORS_LIS3_I2C
>  	depends on !SENSORS_LIS3_SPI
>  	select IIO_ST_SENSORS_CORE
> -	select IIO_ST_ACCEL_I2C_3AXIS if (I2C)
> -	select IIO_ST_ACCEL_SPI_3AXIS if (SPI_MASTER)
>  	select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
>  	help
>  	  Say yes here to build support for STMicroelectronics accelerometers:
> @@ -358,23 +356,30 @@ config IIO_ST_ACCEL_3AXIS
>  	  LIS331DLH, LSM303DL, LSM303DLM, LSM330, LIS2DH12, H3LIS331DL,
>  	  LNG2DM, LIS3DE, LIS2DE12, LIS2HH12
>  
> -	  This driver can also be built as a module. If so, these modules
> -	  will be created:
> -	  - st_accel (core functions for the driver [it is mandatory]);
> -	  - st_accel_i2c (necessary for the I2C devices [optional*]);
> -	  - st_accel_spi (necessary for the SPI devices [optional*]);
> -
> -	  (*) one of these is necessary to do something.
> +	  Also need to enable at least one of I2C and SPI interface drivers
> +	  below.
>  
>  config IIO_ST_ACCEL_I2C_3AXIS
> -	tristate
> -	depends on IIO_ST_ACCEL_3AXIS
> -	depends on IIO_ST_SENSORS_I2C
> +	tristate "STMicroelectronics accelerometers 3-Axis I2C Interface"
> +	depends on I2C && IIO_ST_ACCEL_3AXIS
> +	default I2C && IIO_ST_ACCEL_3AXIS
> +	select IIO_ST_SENSORS_I2C
> +	help
> +	  Build support for STMicroelectronics accelerometers I2C interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_accel_i2c.
>  
>  config IIO_ST_ACCEL_SPI_3AXIS
> -	tristate
> -	depends on IIO_ST_ACCEL_3AXIS
> -	depends on IIO_ST_SENSORS_SPI
> +	tristate "STMicroelectronics accelerometers 3-Axis SPI Interface"
> +	depends on SPI_MASTER && IIO_ST_ACCEL_3AXIS
> +	default SPI_MASTER && IIO_ST_ACCEL_3AXIS
> +	select IIO_ST_SENSORS_SPI
> +	help
> +	  Build support for STMicroelectronics accelerometers SPI interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_accel_spi.
>  
>  config KXSD9
>  	tristate "Kionix KXSD9 Accelerometer Driver"
> diff --git a/drivers/iio/common/st_sensors/Kconfig b/drivers/iio/common/st_sensors/Kconfig
> index 9364ec7a811f..eda8f347fda5 100644
> --- a/drivers/iio/common/st_sensors/Kconfig
> +++ b/drivers/iio/common/st_sensors/Kconfig
> @@ -13,5 +13,3 @@ config IIO_ST_SENSORS_SPI
>  
>  config IIO_ST_SENSORS_CORE
>  	tristate
> -	select IIO_ST_SENSORS_I2C if I2C
> -	select IIO_ST_SENSORS_SPI if SPI_MASTER
> diff --git a/drivers/iio/gyro/Kconfig b/drivers/iio/gyro/Kconfig
> index a672f7d12bbb..97b86c4a53a6 100644
> --- a/drivers/iio/gyro/Kconfig
> +++ b/drivers/iio/gyro/Kconfig
> @@ -139,30 +139,37 @@ config IIO_ST_GYRO_3AXIS
>  	tristate "STMicroelectronics gyroscopes 3-Axis Driver"
>  	depends on (I2C || SPI_MASTER) && SYSFS
>  	select IIO_ST_SENSORS_CORE
> -	select IIO_ST_GYRO_I2C_3AXIS if (I2C)
> -	select IIO_ST_GYRO_SPI_3AXIS if (SPI_MASTER)
>  	select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
>  	help
>  	  Say yes here to build support for STMicroelectronics gyroscopes:
>  	  L3G4200D, LSM330DL, L3GD20, LSM330DLC, L3G4IS, LSM330, LSM9DS0.
>  
> -	  This driver can also be built as a module. If so, these modules
> -	  will be created:
> -	  - st_gyro (core functions for the driver [it is mandatory]);
> -	  - st_gyro_i2c (necessary for the I2C devices [optional*]);
> -	  - st_gyro_spi (necessary for the SPI devices [optional*]);
> -
> -	  (*) one of these is necessary to do something.
> +	  Also need to enable at least one of I2C and SPI interface drivers
> +	  below.
>  
>  config IIO_ST_GYRO_I2C_3AXIS
> -	tristate
> -	depends on IIO_ST_GYRO_3AXIS
> -	depends on IIO_ST_SENSORS_I2C
> +	tristate "STMicroelectronics gyroscopes 3-Axis I2C Interface"
> +	depends on I2C && IIO_ST_GYRO_3AXIS
> +	default I2C && IIO_ST_GYRO_3AXIS
> +	select IIO_ST_SENSORS_I2C
> +	help
> +	  Build support for STMicroelectronics gyroscopes I2C interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_gyro_i2c.
> +
>  
>  config IIO_ST_GYRO_SPI_3AXIS
> -	tristate
> -	depends on IIO_ST_GYRO_3AXIS
> -	depends on IIO_ST_SENSORS_SPI
> +	tristate "STMicroelectronics gyroscopes 3-Axis SPI Interface"
> +	depends on SPI_MASTER && IIO_ST_GYRO_3AXIS
> +	default SPI_MASTER && IIO_ST_GYRO_3AXIS
> +	select IIO_ST_SENSORS_SPI
> +	help
> +	  Build support for STMicroelectronics gyroscopes SPI interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_gyro_spi.
> +
>  
>  config ITG3200
>  	tristate "InvenSense ITG3200 Digital 3-Axis Gyroscope I2C driver"
> diff --git a/drivers/iio/imu/st_lsm9ds0/Kconfig b/drivers/iio/imu/st_lsm9ds0/Kconfig
> index 53b7017014f8..d29558edee60 100644
> --- a/drivers/iio/imu/st_lsm9ds0/Kconfig
> +++ b/drivers/iio/imu/st_lsm9ds0/Kconfig
> @@ -5,8 +5,6 @@ config IIO_ST_LSM9DS0
>  	depends on (I2C || SPI_MASTER) && SYSFS
>  	depends on !SENSORS_LIS3_I2C
>  	depends on !SENSORS_LIS3_SPI
> -	select IIO_ST_LSM9DS0_I2C if I2C
> -	select IIO_ST_LSM9DS0_SPI if SPI_MASTER
>  	select IIO_ST_ACCEL_3AXIS
>  	select IIO_ST_MAGN_3AXIS
>  
> @@ -17,12 +15,30 @@ config IIO_ST_LSM9DS0
>  	  To compile this driver as a module, choose M here: the module
>  	  will be called st_lsm9ds0.
>  
> +	  Also need to enable at least one of I2C and SPI interface drivers
> +
>  config IIO_ST_LSM9DS0_I2C
> -	tristate
> -	depends on IIO_ST_LSM9DS0
> +	tristate "STMicroelectronics LSM9DS0 IMU I2C interface"
> +	depends on I2C && IIO_ST_LSM9DS0
> +	default I2C && IIO_ST_LSM9DS0
> +	select IIO_ST_ACCEL_I2C_3AXIS
> +	select IIO_ST_MAGN_I2C_3AXIS
>  	select REGMAP_I2C
> +	help
> +	  Build support for STMicroelectronics LSM9DS0 IMU I2C interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_lsm9ds0_i2c.
>  
>  config IIO_ST_LSM9DS0_SPI
> -	tristate
> -	depends on IIO_ST_LSM9DS0
> +	tristate "STMicroelectronics LSM9DS0 IMU SPI interface"
> +	depends on SPI_MASTER && IIO_ST_LSM9DS0
> +	default SPI_MASTER && IIO_ST_LSM9DS0
> +	select IIO_ST_ACCEL_SPI_3AXIS
> +	select IIO_ST_MAGN_SPI_3AXIS
>  	select REGMAP_SPI
> +	help
> +	  Build support for STMicroelectronics LSM9DS0 IMU I2C interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_lsm9ds0_spi.
> diff --git a/drivers/iio/magnetometer/Kconfig b/drivers/iio/magnetometer/Kconfig
> index 565ee41ccb3a..54445365c4bc 100644
> --- a/drivers/iio/magnetometer/Kconfig
> +++ b/drivers/iio/magnetometer/Kconfig
> @@ -117,30 +117,35 @@ config IIO_ST_MAGN_3AXIS
>  	tristate "STMicroelectronics magnetometers 3-Axis Driver"
>  	depends on (I2C || SPI_MASTER) && SYSFS
>  	select IIO_ST_SENSORS_CORE
> -	select IIO_ST_MAGN_I2C_3AXIS if (I2C)
> -	select IIO_ST_MAGN_SPI_3AXIS if (SPI_MASTER)
>  	select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
>  	help
>  	  Say yes here to build support for STMicroelectronics magnetometers:
>  	  LSM303DLHC, LSM303DLM, LIS3MDL.
>  
> -	  This driver can also be built as a module. If so, these modules
> -	  will be created:
> -	  - st_magn (core functions for the driver [it is mandatory]);
> -	  - st_magn_i2c (necessary for the I2C devices [optional*]);
> -	  - st_magn_spi (necessary for the SPI devices [optional*]);
> -
> -	  (*) one of these is necessary to do something.
> +	  Also need to enable at least one of I2C and SPI interface drivers
> +	  below.
>  
>  config IIO_ST_MAGN_I2C_3AXIS
> -	tristate
> -	depends on IIO_ST_MAGN_3AXIS
> -	depends on IIO_ST_SENSORS_I2C
> +	tristate "STMicroelectronics magnetometers 3-Axis I2C Interface"
> +	depends on I2C && IIO_ST_MAGN_3AXIS
> +	default I2C && IIO_ST_MAGN_3AXIS
> +	select IIO_ST_SENSORS_I2C
> +	help
> +	  Build support for STMicroelectronics magnetometers I2C interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_magn_i2c.
>  
>  config IIO_ST_MAGN_SPI_3AXIS
> -	tristate
> -	depends on IIO_ST_MAGN_3AXIS
> -	depends on IIO_ST_SENSORS_SPI
> +	tristate "STMicroelectronics magnetometers 3-Axis SPI Interface"
> +	depends on SPI_MASTER && IIO_ST_MAGN_3AXIS
> +	default SPI_MASTER && IIO_ST_MAGN_3AXIS
> +	select IIO_ST_SENSORS_SPI
> +	help
> +	  Build support for STMicroelectronics magnetometers SPI interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_magn_spi.
>  
>  config SENSORS_HMC5843
>  	tristate
> diff --git a/drivers/iio/pressure/Kconfig b/drivers/iio/pressure/Kconfig
> index fc0d3cfca418..0ff756cea63a 100644
> --- a/drivers/iio/pressure/Kconfig
> +++ b/drivers/iio/pressure/Kconfig
> @@ -194,30 +194,35 @@ config IIO_ST_PRESS
>  	tristate "STMicroelectronics pressure sensor Driver"
>  	depends on (I2C || SPI_MASTER) && SYSFS
>  	select IIO_ST_SENSORS_CORE
> -	select IIO_ST_PRESS_I2C if (I2C)
> -	select IIO_ST_PRESS_SPI if (SPI_MASTER)
>  	select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
>  	help
>  	  Say yes here to build support for STMicroelectronics pressure
>  	  sensors: LPS001WP, LPS25H, LPS331AP, LPS22HB, LPS22HH.
>  
> -	  This driver can also be built as a module. If so, these modules
> -	  will be created:
> -	  - st_pressure (core functions for the driver [it is mandatory]);
> -	  - st_pressure_i2c (necessary for the I2C devices [optional*]);
> -	  - st_pressure_spi (necessary for the SPI devices [optional*]);
> -
> -	  (*) one of these is necessary to do something.
> +	  Also need to enable at least one of I2C and SPI interface drivers
> +	  below.
>  
>  config IIO_ST_PRESS_I2C
> -	tristate
> -	depends on IIO_ST_PRESS
> -	depends on IIO_ST_SENSORS_I2C
> +	tristate "STMicroelectronics pressure sensor I2C Interface"
> +	depends on I2C && IIO_ST_PRESS
> +	default I2C && IIO_ST_PRESS
> +	select IIO_ST_SENSORS_I2C
> +	help
> +	  Build support for STMicroelectronics pressure sensor I2C interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_pressure_i2c.
>  
>  config IIO_ST_PRESS_SPI
> -	tristate
> -	depends on IIO_ST_PRESS
> -	depends on IIO_ST_SENSORS_SPI
> +	tristate "STMicroelectronics pressure sensor SPI Interface"
> +	depends on SPI_MASTER && IIO_ST_PRESS
> +	default SPI_MASTER && IIO_ST_PRESS
> +	select IIO_ST_SENSORS_SPI
> +	help
> +	  Build support for STMicroelectronics pressure sensor SPI interface.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called st_pressure_spi.
>  
>  config T5403
>  	tristate "EPCOS T5403 digital barometric pressure sensor driver"
> -- 
> 2.30.2
> 

-- 
With Best Regards,
Andy Shevchenko


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ