]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: imu: st_lsm6dsx: add support to ASM330LHHXG1
authorLorenzo Bianconi <lorenzo@kernel.org>
Sat, 3 Feb 2024 12:01:37 +0000 (13:01 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 17 Feb 2024 16:16:11 +0000 (16:16 +0000)
Add support to STM ASM330LHHXG1 (accelerometer and gyroscope) Mems
sensor.
The ASM330LHHXG1 sensor can use LSM6DSR as fallback device since LSM6DSR
implements all the ASM330LHHXG1 features currently implemented in
st_lsm6dsx.

Link: https://www.st.com/resource/en/datasheet/asm330lhhxg1.pdf
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://lore.kernel.org/r/e3dbe4720cdf407d0152e93b1331306a8c7f5df3.1706961432.git.lorenzo@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/imu/st_lsm6dsx/Kconfig
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c

index 24914946f914822a0333342727283de4561d27bd..89d687ec3099cc3ecb848e44f610c5cd64c80ad1 100644 (file)
@@ -16,6 +16,7 @@ config IIO_ST_LSM6DSX
          - asm330lhb
          - asm330lhh
          - asm330lhhx
+         - asm330lhhxg1
          - ism330dhcx
          - ism330dlc
          - ism330is
index c19237717e8122f97d0410c69cdce8532819c7ba..a3b93566533bc06106be437d416249cb5aa326b2 100644 (file)
@@ -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,
 };
 
index 154f92fa9a87dd9227caf39745770870aa8658ed..0a7cd8c1aa3313a113b9092d6a58d597ba68290c 100644 (file)
@@ -31,6 +31,7 @@
  * - ASM330LHB
  * - ASM330LHH
  * - ASM330LHHX
+ * - ASM330LHHXG1
  * - ISM330DHCX
  * - LSM6DSO
  * - LSM6DSOP
index 01ef9d38aaddb779038f8964dc28f1883934c7ec..0716986f981299beca0ab9876ff5c241ce29221a 100644 (file)
@@ -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,
index 911444ec57c0166bda209709e11543f9c7b2980d..cddf41cc0ca97f59b9891d543b5807a3ab03811a 100644 (file)
@@ -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);
index f56c170c41a9ded6aa06568a0eca493c9d766f5d..c122c8831365a4ffa4544d347946d51ba96ee001 100644 (file)
@@ -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);