add support for ASM330LHHXG1
Subsystems (3)
Lorenzo Bianconi
maintainerv3 cover add support for ASM330LHHXG1
Add support for ASM330LHHXG1 IMU automotive mems sensor
https://www.st.com/resource/en/datasheet/asm330lhhxg1.pdf
Changes since v2:
- use lsm6dsr as fallback device
Changes since v1:
- add patch 1/3 to improve kernel docs and comments
Lorenzo Bianconi (3):
iio: imu: st_lsm6dsx: improve kernel docs and comments
iio: imu: st_lsm6dsx: add support to ASM330LHHXG1
dt-bindings: iio: imu: st_lsm6dsx: add asm330lhhxg1
.../bindings/iio/imu/st,lsm6dsx.yaml | 3 ++ drivers/iio/imu/st_lsm6dsx/Kconfig | 31 ++++++++++++++--- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h | 2 ++ .../iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c | 28 ++++++++++++++-- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 33 +++++++++++++++---- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c | 5 +++ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c | 5 +++ 7 files changed, 93 insertions(+), 14 deletions(-)
Signature · 1 line
2.43.0
Lorenzo Bianconi
maintainerPATCH v3 1/3 iio: imu: st_lsm6dsx: improve kernel docs and comments
Improve kernel docs and comments reporting supported sensors in a list in order to make more easy to add new devices in the future.
--- drivers/iio/imu/st_lsm6dsx/Kconfig | 30 +++++++++++++++---- .../iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c | 27 +++++++++++++++-- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 28 +++++++++++++---- 3 files changed, 71 insertions(+), 14 deletions(-)
drivers/iio/imu/st_lsm6dsx/Kconfig +25 -5
@@ -11,11 +11,31 @@ config IIO_ST_LSM6DSX select IIO_ST_LSM6DSX_I3C if (I3C) help Say yes here to build support for STMicroelectronics LSM6DSx imu - sensor. Supported devices: lsm6ds3, lsm6ds3h, lsm6dsl, lsm6dsm, - ism330dlc, lsm6dso, lsm6dsox, asm330lhh, asm330lhhx, lsm6dsr, - lsm6ds3tr-c, ism330dhcx, lsm6dsrx, lsm6ds0, lsm6dsop, lsm6dstx, - lsm6dsv, lsm6dsv16x, lsm6dso16is, ism330is, asm330lhb, lsm6dst - and the accelerometer/gyroscope of lsm9ds1. + sensor. + Supported devices: + - asm330lhb + - asm330lhh + - asm330lhhx + - ism330dhcx + - ism330dlc + - ism330is + - lsm6ds0 + - lsm6ds3 + - lsm6ds3h + - lsm6ds3tr-c + - lsm6dsl + - lsm6dsm + - lsm6dso + - lsm6dso16is + - lsm6dsop + - lsm6dsox + - lsm6dsr + - lsm6dsrx + - lsm6dst + - lsm6dstx + - lsm6dsv + - lsm6dsv16x + - lsm9ds1 To compile this driver as a module, choose M here: the module will be called st_lsm6dsx.
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c +24 -3
@@ -2,7 +2,7 @@/* * STMicroelectronics st_lsm6dsx FIFO buffer library driver * -* LSM6DS3/LSM6DS3H/LSM6DSL/LSM6DSM/ISM330DLC/LSM6DS3TR-C: +* Pattern FIFO: * The FIFO buffer can be configured to store data from gyroscope and * accelerometer. Samples are queued without any tag according to a * specific pattern based on 'FIFO data sets' (6 bytes each):
@@ -14,12 +14,33 @@* (e.g. Gx, Gy, Gz, Ax, Ay, Az), then data are repeated depending on the * value of the decimation factor and ODR set for each FIFO data set. * -* LSM6DSO/LSM6DSOX/ASM330LHH/ASM330LHHX/LSM6DSR/LSM6DSRX/ISM330DHCX/ -* LSM6DST/LSM6DSOP/LSM6DSTX/LSM6DSV/ASM330LHB: +* Supported devices: +* - ISM330DLC +* - LSM6DS3 +* - LSM6DS3H +* - LSM6DS3TR-C +* - LSM6DSL +* - LSM6DSM +* +* Tagged FIFO: * The FIFO buffer can be configured to store data from gyroscope and * accelerometer. Each sample is queued with a tag (1B) indicating data * source (gyroscope, accelerometer, hw timer). * +* Supported devices: +* - ASM330LHB +* - ASM330LHH +* - ASM330LHHX +* - ISM330DHCX +* - LSM6DSO +* - LSM6DSOP +* - LSM6DSOX +* - LSM6DSR +* - LSM6DSRX +* - LSM6DST +* - LSM6DSTX +* - LSM6DSV +* * FIFO supported modes: * - BYPASS: FIFO disabled * - CONTINUOUS: FIFO enabled. When the buffer is full, the FIFO index
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +22 -6
@@ -14,34 +14,50 @@* by a different driver. * * Supported sensors: -* - LSM6DS3: +* +* - LSM6DS3 * - Accelerometer/Gyroscope supported ODR [Hz]: 12.5, 26, 52, 104, 208, 416 * - Accelerometer supported full-scale [g]: +-2/+-4/+-8/+-16 * - Gyroscope supported full-scale [dps]: +-125/+-245/+-500/+-1000/+-2000 * - FIFO size: 8KB * -* - LSM6DS3H/LSM6DSL/LSM6DSM/ISM330DLC/LSM6DS3TR-C: +* - ISM330DLC +* - LSM6DS3H +* - LSM6DS3TR-C +* - LSM6DSL +* - LSM6DSM * - Accelerometer/Gyroscope supported ODR [Hz]: 12.5, 26, 52, 104, 208, 416 * - Accelerometer supported full-scale [g]: +-2/+-4/+-8/+-16 * - Gyroscope supported full-scale [dps]: +-125/+-245/+-500/+-1000/+-2000 * - FIFO size: 4KB * -* - LSM6DSO/LSM6DSOX/ASM330LHH/ASM330LHHX/LSM6DSR/ISM330DHCX/LSM6DST/LSM6DSOP/ -* LSM6DSTX/LSM6DSO16IS/ISM330IS: +* - ASM330LHH +* - ASM330LHHX +* - ISM330DHCX +* - ISM330IS +* - LSM6DSO +* - LSM6DSO16IS +* - LSM6DSOP +* - LSM6DSOX +* - LSM6DSR +* - LSM6DST +* - LSM6DSTX * - Accelerometer/Gyroscope supported ODR [Hz]: 12.5, 26, 52, 104, 208, 416, * 833 * - Accelerometer supported full-scale [g]: +-2/+-4/+-8/+-16 * - Gyroscope supported full-scale [dps]: +-125/+-245/+-500/+-1000/+-2000 * - FIFO size: 3KB * -* - LSM6DSV/LSM6DSV16X: +* - LSM6DSV +* - LSM6DSV16X * - Accelerometer/Gyroscope supported ODR [Hz]: 7.5, 15, 30, 60, 120, 240, * 480, 960 * - Accelerometer supported full-scale [g]: +-2/+-4/+-8/+-16 * - Gyroscope supported full-scale [dps]: +-125/+-250/+-500/+-1000/+-2000 * - FIFO size: 3KB * -* - LSM9DS1/LSM6DS0: +* - LSM6DS0 +* - LSM9DS1 * - Accelerometer supported ODR [Hz]: 10, 50, 119, 238, 476, 952 * - Accelerometer supported full-scale [g]: +-2/+-4/+-8/+-16 * - Gyroscope supported ODR [Hz]: 15, 60, 119, 238, 476, 952
Signature · 1 line
2.43.0
Lorenzo Bianconi
maintainerPATCH v3 2/3 iio: imu: st_lsm6dsx: add support to ASM330LHHXG1
In reply to Lorenzo BianconiAdd support to STM ASM330LHHXG1 (accelerometer and gyroscope) Mems sensor.
The ASM330LHHXG1 sensor can use LSM6DSR as fallback device since it implements all the ASM330LHHXG1 features currently implemented in st_lsm6dsx.
--- drivers/iio/imu/st_lsm6dsx/Kconfig | 1 + drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h | 2 ++ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c | 1 + drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 5 +++++ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c | 5 +++++ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c | 5 +++++ 6 files changed, 19 insertions(+)
drivers/iio/imu/st_lsm6dsx/Kconfig +1 -0
@@ -16,6 +16,7 @@ config IIO_ST_LSM6DSX - asm330lhb - asm330lhh - asm330lhhx + - asm330lhhxg1 - ism330dhcx - ism330dlc - ism330is
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h +2 -0
@@ -38,6 +38,7 @@#define ST_LSM6DSO16IS_DEV_NAME "lsm6dso16is"#define ST_ISM330IS_DEV_NAME "ism330is"#define ST_ASM330LHB_DEV_NAME "asm330lhb" +#define ST_ASM330LHHXG1_DEV_NAME "asm330lhhxg1"enum st_lsm6dsx_hw_id {ST_LSM6DS3_ID =1 ,
@@ -63,6 +64,7 @@ enum st_lsm6dsx_hw_id {ST_LSM6DSO16IS_ID ,ST_ISM330IS_ID ,ST_ASM330LHB_ID , +ST_ASM330LHHXG1_ID , ST_LSM6DSX_MAX_ID, };
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c +1 -0
@@ -31,6 +31,7 @@* - ASM330LHB * - ASM330LHH * - ASM330LHHX +* - ASM330LHHXG1 * - ISM330DHCX * - LSM6DSO * - LSM6DSOP
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +5 -0
@@ -33,6 +33,7 @@* * - ASM330LHH * - ASM330LHHX +* - ASM330LHHXG1 * - ISM330DHCX * - ISM330IS * - LSM6DSO
@@ -836,6 +837,10 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = { .hw_id = ST_ASM330LHHX_ID, .name = ST_ASM330LHHX_DEV_NAME, .wai = 0x6b, + }, { + .hw_id = ST_ASM330LHHXG1_ID, + .name = ST_ASM330LHHXG1_DEV_NAME, + .wai = 0x6b, }, { .hw_id = ST_LSM6DSTX_ID, .name = ST_LSM6DSTX_DEV_NAME,
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c +5 -0
@@ -134,6 +134,10 @@ static const struct of_device_id st_lsm6dsx_i2c_of_match[] = { .compatible = "st,asm330lhb", .data = (void *)ST_ASM330LHB_ID, }, + { + .compatible = "st,asm330lhhxg1", + .data = (void *)ST_ASM330LHHXG1_ID, + }, {}, };MODULE_DEVICE_TABLE (of, st_lsm6dsx_i2c_of_match);
@@ -168,6 +172,7 @@ static const struct i2c_device_id st_lsm6dsx_i2c_id_table[] = { { ST_LSM6DSO16IS_DEV_NAME, ST_LSM6DSO16IS_ID }, { ST_ISM330IS_DEV_NAME, ST_ISM330IS_ID }, { ST_ASM330LHB_DEV_NAME, ST_ASM330LHB_ID }, + { ST_ASM330LHHXG1_DEV_NAME, ST_ASM330LHHXG1_ID }, {}, };MODULE_DEVICE_TABLE (i2c, st_lsm6dsx_i2c_id_table);
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c +5 -0
@@ -129,6 +129,10 @@ static const struct of_device_id st_lsm6dsx_spi_of_match[] = { .compatible = "st,asm330lhb", .data = (void *)ST_ASM330LHB_ID, }, + { + .compatible = "st,asm330lhhxg1", + .data = (void *)ST_ASM330LHHXG1_ID, + }, {}, };MODULE_DEVICE_TABLE (of, st_lsm6dsx_spi_of_match);
@@ -157,6 +161,7 @@ static const struct spi_device_id st_lsm6dsx_spi_id_table[] = { { ST_LSM6DSO16IS_DEV_NAME, ST_LSM6DSO16IS_ID }, { ST_ISM330IS_DEV_NAME, ST_ISM330IS_ID }, { ST_ASM330LHB_DEV_NAME, ST_ASM330LHB_ID }, + { ST_ASM330LHHXG1_DEV_NAME, ST_ASM330LHHXG1_ID }, {}, };MODULE_DEVICE_TABLE (spi, st_lsm6dsx_spi_id_table);
Signature · 1 line
2.43.0
Lorenzo Bianconi
maintainerPATCH v3 3/3 dt-bindings: iio: imu: st_lsm6dsx: add asm330lhhxg1
In reply to Lorenzo BianconiAdd device bindings for asm330lhhxg1 IMU sensor.
The asm330lhhx supports a subset of the features and functionality provided by the lsm6dsr via identical interfaces and so is a suitable fallback compatible.
--- Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml | 3 +++ 1 file changed, 3 insertions(+)
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +3 -0
@@ -49,6 +49,9 @@ properties: - items: - const: st,asm330lhb - const: st,asm330lhh + - items: + - const: st,asm330lhhxg1 + - const: st,lsm6dsr reg: maxItems: 1
Signature · 1 line
2.43.0
Rob Herring
maintainerRe: [PATCH v3 3/3] dt-bindings: iio: imu: st_lsm6dsx: add asm330lhhxg1
Quoted 4 lines · Lorenzo Bianconi
Add device bindings for asm330lhhxg1 IMU sensor.
The asm330lhhx supports a subset of the features and functionality provided by the lsm6dsr via identical interfaces and so is a suitable fallback compatible.
A subset cannot fallback to a superset.
Quoted 11 lines
Signed-off-by Lorenzo Bianconi <[email protected]>--- Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml | 3 +++ 1 file changed, 3 insertions(+)Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +0
-0
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml properties: · line 54
Quoted 6 lines
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +3
-0@@ -49,6 +49,9 @@ properties: - items: - const: st,asm330lhb - const: st,asm330lhh + - items: + - const: st,asm330lhhxg1 + - const: st,lsm6dsr
Assuming this is correct and the commit msg is wrong, can't this be added to the existing entry?:
items:
- enum:
- st,asm330lhhx
- st,asm330lhhxg1
- const: st,lsm6dsr
Quoted 6 lines
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +0
-0reg: maxItems: 1Signature · 1 line
2.43.0
Lorenzo Bianconi
maintainerRe: [PATCH v3 3/3] dt-bindings: iio: imu: st_lsm6dsx: add asm330lhhxg1
Quoted 29 lines · Lorenzo Bianconi
Quoted 4 lines
Add device bindings for asm330lhhxg1 IMU sensor.
The asm330lhhx supports a subset of the features and functionality provided by the lsm6dsr via identical interfaces and so is a suitable fallback compatible.A subset cannot fallback to a superset.
Quoted 11 lines
Signed-off-by Lorenzo Bianconi <[email protected]>--- Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml | 3 +++ 1 file changed, 3 insertions(+)Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +0
-0Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml properties: · line 54
Quoted 6 lines
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +3
-0@@ -49,6 +49,9 @@ properties: - items: - const: st,asm330lhb - const: st,asm330lhh + - items: + - const: st,asm330lhhxg1 + - const: st,lsm6dsrAssuming this is correct and the commit msg is wrong, can't this be added to the existing entry?:
Quoted 5 lines
items:
- enum:
- st,asm330lhhx
- st,asm330lhhxg1
- const: st,lsm6dsr
ack, I will fix it in v4.
Regards,
Lorenzo
Quoted 8 lines
Quoted 8 lines
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +0
-0reg: maxItems: 1Signature · 1 line
2.43.0