Skip to contentSkip to conversation

add support for ASM330LHB

PATCH In review Lorenzo Bianconi 3 participants 6 messages Mar 6, 2023 – Mar 12, 2023

Subsystems (3)
lore
Share & tools
lore

Lorenzo Bianconi

author maintainer
#0 lore raw

cover add support for ASM330LHB

Add support for ASM330LHB IMU automotive mems sensor
https://www.st.com/resource/en/datasheet/asm330lhb.pdf

Lorenzo Bianconi (2):
iio: imu: st_lsm6dsx: add support to ASM330LHB
dt-bindings: iio: imu: st_lsm6dsx: add asm330lhb

 Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml | 3 +++
 drivers/iio/imu/st_lsm6dsx/Kconfig                        | 4 ++--
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h                   | 2 ++
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c            | 2 +-
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c              | 4 ++++
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c               | 5 +++++
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c               | 5 +++++
 7 files changed, 22 insertions(+), 3 deletions(-)
Signature · 1 line
2.39.2
author maintainer
#1 lore raw

PATCH 1/2 iio: imu: st_lsm6dsx: add support to ASM330LHB

Add support to STM ASM330LHB (acc + gyro) automotive Mems sensor. The ASM330LHB sensor can use ASM330LHH as fallback device since it implements all the ASM330LHB features currently implemented in st_lsm6dsx.

Datasheet: https://www.st.com/resource/en/datasheet/asm330lhb.pdf

---
 drivers/iio/imu/st_lsm6dsx/Kconfig             | 4 ++--
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h        | 2 ++
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c | 2 +-
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c   | 4 ++++
 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(+), 3 deletions(-)
drivers/iio/imu/st_lsm6dsx/Kconfig +2 -2
index f6660847fb58..caa82ba6fce5 100644
@@ -13,8 +13,8 @@ config IIO_ST_LSM6DSX
 	  sensor. Supported devices: lsm6ds3, lsm6ds3h, lsm6dsl, lsm6dsm,
 	  ism330dlc, lsm6dso, lsm6dsox, asm330lhh, asm330lhhx, lsm6dsr,
 	  lsm6ds3tr-c, ism330dhcx, lsm6dsrx, lsm6ds0, lsm6dsop, lsm6dstx,
-	  lsm6dsv, lsm6dsv16x, lsm6dso16is, ism330is, lsm6dst and the
-	  accelerometer/gyroscope of lsm9ds1.
+	  lsm6dsv, lsm6dsv16x, lsm6dso16is, ism330is, asm330lhb, lsm6dst
+	  and the accelerometer/gyroscope of 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.h +2 -0
index 8e119d78730b..9dfe4917a386 100644
@@ -37,6 +37,7 @@
 #define ST_LSM6DSV16X_DEV_NAME	"lsm6dsv16x"
 #define ST_LSM6DSO16IS_DEV_NAME	"lsm6dso16is"
 #define ST_ISM330IS_DEV_NAME	"ism330is"
+#define ST_ASM330LHB_DEV_NAME	"asm330lhb"
 
 enum st_lsm6dsx_hw_id {
 	ST_LSM6DS3_ID,
@@ -61,6 +62,7 @@ enum st_lsm6dsx_hw_id {
 	ST_LSM6DSV16X_ID,
 	ST_LSM6DSO16IS_ID,
 	ST_ISM330IS_ID,
+	ST_ASM330LHB_ID,
 	ST_LSM6DSX_MAX_ID,
 };
 
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c +1 -1
index f6c11d6fb0b0..066fe561c5e8 100644
@@ -15,7 +15,7 @@
  * value of the decimation factor and ODR set for each FIFO data set.
  *
  * LSM6DSO/LSM6DSOX/ASM330LHH/ASM330LHHX/LSM6DSR/LSM6DSRX/ISM330DHCX/
- * LSM6DST/LSM6DSOP/LSM6DSTX/LSM6DSV:
+ * LSM6DST/LSM6DSOP/LSM6DSTX/LSM6DSV/ASM330LHB:
  * 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).
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +4 -0
index 966df6ffe874..455e5edd3a80 100644
@@ -1032,6 +1032,10 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
 				.hw_id = ST_LSM6DSOP_ID,
 				.name = ST_LSM6DSOP_DEV_NAME,
 				.wai = 0x6c,
+			}, {
+				.hw_id = ST_ASM330LHB_ID,
+				.name = ST_ASM330LHB_DEV_NAME,
+				.wai = 0x6b,
 			},
 		},
 		.channels = {
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c +5 -0
index df5f60925260..ccdc4ceffd85 100644
@@ -125,6 +125,10 @@ static const struct of_device_id st_lsm6dsx_i2c_of_match[] = {
 		.compatible = "st,ism330is",
 		.data = (void *)ST_ISM330IS_ID,
 	},
+	{
+		.compatible = "st,asm330lhb",
+		.data = (void *)ST_ASM330LHB_ID,
+	},
 	{},
 };
 MODULE_DEVICE_TABLE(of, st_lsm6dsx_i2c_of_match);
@@ -152,6 +156,7 @@ static const struct i2c_device_id st_lsm6dsx_i2c_id_table[] = {
 	{ ST_LSM6DSV16X_DEV_NAME, ST_LSM6DSV16X_ID },
 	{ ST_LSM6DSO16IS_DEV_NAME, ST_LSM6DSO16IS_ID },
 	{ ST_ISM330IS_DEV_NAME, ST_ISM330IS_ID },
+	{ ST_ASM330LHB_DEV_NAME, ST_ASM330LHB_ID },
 	{},
 };
 MODULE_DEVICE_TABLE(i2c, st_lsm6dsx_i2c_id_table);
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c +5 -0
index 974584bda875..f56c170c41a9 100644
@@ -125,6 +125,10 @@ static const struct of_device_id st_lsm6dsx_spi_of_match[] = {
 		.compatible = "st,ism330is",
 		.data = (void *)ST_ISM330IS_ID,
 	},
+	{
+		.compatible = "st,asm330lhb",
+		.data = (void *)ST_ASM330LHB_ID,
+	},
 	{},
 };
 MODULE_DEVICE_TABLE(of, st_lsm6dsx_spi_of_match);
@@ -152,6 +156,7 @@ static const struct spi_device_id st_lsm6dsx_spi_id_table[] = {
 	{ ST_LSM6DSV16X_DEV_NAME, ST_LSM6DSV16X_ID },
 	{ ST_LSM6DSO16IS_DEV_NAME, ST_LSM6DSO16IS_ID },
 	{ ST_ISM330IS_DEV_NAME, ST_ISM330IS_ID },
+	{ ST_ASM330LHB_DEV_NAME, ST_ASM330LHB_ID },
 	{},
 };
 MODULE_DEVICE_TABLE(spi, st_lsm6dsx_spi_id_table);
Signature · 1 line
2.39.2
author maintainer
#2 lore raw

PATCH 2/2 dt-bindings: iio: imu: st_lsm6dsx: add asm330lhb

In reply to Lorenzo Bianconi

Add device bindings for asm330lhb IMU sensor.
Use asm330lhh as fallback device for asm330lhb since it implements all the features currently supported by asm330lhb.

---
 Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml | 3 +++
 1 file changed, 3 insertions(+)
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +3 -0
index decf022335d8..b39f5217d8ff 100644
@@ -46,6 +46,9 @@ properties:
       - items:
           - const: st,ism330is
           - const: st,lsm6dso16is
+      - items:
+          - const: st,asm330lhb
+          - const: st,asm330lhh
 
   reg:
     maxItems: 1
Signature · 1 line
2.39.2
Acked-by on v1 2/2
#3 lore raw

Re: [PATCH 2/2] dt-bindings: iio: imu: st_lsm6dsx: add asm330lhb

Quoted 14 lines · Lorenzo Bianconi

Add device bindings for asm330lhb IMU sensor.
Use asm330lhh as fallback device for asm330lhb since it implements all the features currently supported by asm330lhb.

---
 Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml | 3 +++
 1 file changed, 3 insertions(+)
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +0 -0
index decf022335d8..b39f5217d8ff 100644

Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml properties: · line 51

Quoted 6 lines
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +3 -0
@@ -46,6 +46,9 @@ properties:
       - items:
           - const: st,ism330is
           - const: st,lsm6dso16is
+      - items:
+          - const: st,asm330lhb
+          - const: st,asm330lhh

You added it to the end of the list, but aren't there any ordering already? If so, it should be put rather in correct place.

Best regards,
Krzysztof

author maintainer
#4 lore raw

Re: [PATCH 2/2] dt-bindings: iio: imu: st_lsm6dsx: add asm330lhb

Quoted 10 lines · Krzysztof Kozlowski
Quoted 9 lines · Lorenzo Bianconi

Add device bindings for asm330lhb IMU sensor.
Use asm330lhh as fallback device for asm330lhb since it implements all the features currently supported by asm330lhb.

---
 Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml | 3 +++
 1 file changed, 3 insertions(+)
Quoted 14 lines

Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml properties: · line 51

Quoted 11 lines
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +3 -0
index decf022335d8..b39f5217d8ff 100644
@@ -46,6 +46,9 @@ properties:
       - items:
           - const: st,ism330is
           - const: st,lsm6dso16is
+      - items:
+          - const: st,asm330lhb
+          - const: st,asm330lhh

You added it to the end of the list, but aren't there any ordering already? If so, it should be put rather in correct place.

Hi Krzysztof,

I do not think there is any ordering issue there.

Regards,
Lorenzo

Quoted 7 lines

Best regards,
Krzysztof

maintainer
#5 lore raw

Re: [PATCH 2/2] dt-bindings: iio: imu: st_lsm6dsx: add asm330lhb

Quoted 26 lines · On Thu, 9 Mar 2023 10:57:00 +0100 Lorenzo Bianconi <[email protected]> wrote:
Quoted 10 lines · Krzysztof Kozlowski
Quoted 9 lines · Lorenzo Bianconi

Add device bindings for asm330lhb IMU sensor.
Use asm330lhh as fallback device for asm330lhb since it implements all the features currently supported by asm330lhb.

---
 Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml | 3 +++
 1 file changed, 3 insertions(+)
Quoted 14 lines

Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml properties: · line 51

Quoted 11 lines
Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml +3 -0
index decf022335d8..b39f5217d8ff 100644
@@ -46,6 +46,9 @@ properties:
       - items:
           - const: st,ism330is
           - const: st,lsm6dso16is
+      - items:
+          - const: st,asm330lhb
+          - const: st,asm330lhh  

You added it to the end of the list, but aren't there any ordering already? If so, it should be put rather in correct place.

Quoted 3 lines

Hi Krzysztof,

I do not think there is any ordering issue there.

As of today, they aren't in any particular order that I can see. However, it might be nice to go for some sort of order as a follow up patch (very low priority though!).

The same applies in the driver, where some of the entries could be organized by name or maybe wai value. Perhaps it's just not worth bothering and this series doesn't make things worse, so I've applied the series to the togreg branch of iio.git and pushed out initially as testing to let 0-day see what it can find.

Thanks,

Jonathan

Quoted 11 lines

Regards,
Lorenzo

Quoted 7 lines

Best regards,
Krzysztof