1

iio: st_sensors: don't always auto-enable I2C and SPI interface drivers

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.

Signed-off-by: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20220110152432.3799227-1-nikita.yoush@cogentembedded.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
Nikita Yushchenko 2022-01-10 18:24:32 +03:00 committed by Jonathan Cameron
parent 2553340bd2
commit 26b2ec2e9a
6 changed files with 104 additions and 68 deletions

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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.

View File

@ -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

View File

@ -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"