Skip to contentSkip to conversation

add support for LSM6DSV16X

PATCH In review Lorenzo Bianconi 3 participants 6 messages Nov 6, 2022 – Nov 12, 2022

Subsystems (3)
lore
Share & tools
lore

Lorenzo Bianconi

author maintainer
#0 lore raw

cover add support for LSM6DSV16X

Add support for LSM6DSV16X IMU mems sensor
https://www.st.com/resource/en/datasheet/lsm6dsv16x.pdf

Lorenzo Bianconi (2):
iio: imu: st_lsm6dsx: add support to LSM6DSV16X
dt-bindings: iio: imu: st_lsm6dsx: add lsm6dsv16x device bindings

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

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

Add support to STM LSM6DSV16X (accelerometer and gyroscope) Mems sensor. The LSM6DSV16X sensor can use LSM6DSV as fallback device since it implements all the LSM6DSV16X features currently implemented in st_lsm6dsx.

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

---
 drivers/iio/imu/st_lsm6dsx/Kconfig           | 3 ++-
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      | 2 ++
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 6 +++++-
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c  | 5 +++++
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c  | 5 +++++
 5 files changed, 19 insertions(+), 2 deletions(-)
drivers/iio/imu/st_lsm6dsx/Kconfig +2 -1
index 1c68bac94bce..37d02e0fc227 100644
@@ -13,7 +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, the accelerometer/gyroscope of lsm9ds1 and lsm6dst.
+	  lsm6dsv, lsm6dsv16x, the accelerometer/gyroscope of lsm9ds1
+	  and lsm6dst.
 
 	  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 ab61895cf072..683cfadcf62e 100644
@@ -34,6 +34,7 @@
 #define ST_ASM330LHHX_DEV_NAME	"asm330lhhx"
 #define ST_LSM6DSTX_DEV_NAME	"lsm6dstx"
 #define ST_LSM6DSV_DEV_NAME	"lsm6dsv"
+#define ST_LSM6DSV16X_DEV_NAME	"lsm6dsv16x"
 
 enum st_lsm6dsx_hw_id {
 	ST_LSM6DS3_ID,
@@ -55,6 +56,7 @@ enum st_lsm6dsx_hw_id {
 	ST_ASM330LHHX_ID,
 	ST_LSM6DSTX_ID,
 	ST_LSM6DSV_ID,
+	ST_LSM6DSV16X_ID,
 	ST_LSM6DSX_MAX_ID,
 };
 
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +5 -1
index 5e716a5071fd..acb6101aec5d 100644
@@ -27,7 +27,7 @@
  *   - FIFO size: 4KB
  *
  * - LSM6DSO/LSM6DSOX/ASM330LHH/ASM330LHHX/LSM6DSR/ISM330DHCX/LSM6DST/LSM6DSOP/
- *   LSM6DSTX:
+ *   LSM6DSTX/LSM6DSV/LSM6DSV16X:
  *   - Accelerometer/Gyroscope supported ODR [Hz]: 12.5, 26, 52, 104, 208, 416,
  *     833
  *   - Accelerometer supported full-scale [g]: +-2/+-4/+-8/+-16
@@ -1180,6 +1180,10 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
 				.hw_id = ST_LSM6DSV_ID,
 				.name = ST_LSM6DSV_DEV_NAME,
 				.wai = 0x70,
+			}, {
+				.hw_id = ST_LSM6DSV16X_ID,
+				.name = ST_LSM6DSV16X_DEV_NAME,
+				.wai = 0x70,
 			},
 		},
 		.channels = {
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c +5 -0
index 239c8920a31f..0faf1b4c11af 100644
@@ -113,6 +113,10 @@ static const struct of_device_id st_lsm6dsx_i2c_of_match[] = {
 		.compatible = "st,lsm6dsv",
 		.data = (void *)ST_LSM6DSV_ID,
 	},
+	{
+		.compatible = "st,lsm6dsv16x",
+		.data = (void *)ST_LSM6DSV16X_ID,
+	},
 	{},
 };
 MODULE_DEVICE_TABLE(of, st_lsm6dsx_i2c_of_match);
@@ -137,6 +141,7 @@ static const struct i2c_device_id st_lsm6dsx_i2c_id_table[] = {
 	{ ST_ASM330LHHX_DEV_NAME, ST_ASM330LHHX_ID },
 	{ ST_LSM6DSTX_DEV_NAME, ST_LSM6DSTX_ID },
 	{ ST_LSM6DSV_DEV_NAME, ST_LSM6DSV_ID },
+	{ ST_LSM6DSV16X_DEV_NAME, ST_LSM6DSV16X_ID },
 	{},
 };
 MODULE_DEVICE_TABLE(i2c, st_lsm6dsx_i2c_id_table);
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c +5 -0
index 66705ef16ed0..57597aaa2a92 100644
@@ -113,6 +113,10 @@ static const struct of_device_id st_lsm6dsx_spi_of_match[] = {
 		.compatible = "st,lsm6dsv",
 		.data = (void *)ST_LSM6DSV_ID,
 	},
+	{
+		.compatible = "st,lsm6dsv16x",
+		.data = (void *)ST_LSM6DSV16X_ID,
+	},
 	{},
 };
 MODULE_DEVICE_TABLE(of, st_lsm6dsx_spi_of_match);
@@ -137,6 +141,7 @@ static const struct spi_device_id st_lsm6dsx_spi_id_table[] = {
 	{ ST_ASM330LHHX_DEV_NAME, ST_ASM330LHHX_ID },
 	{ ST_LSM6DSTX_DEV_NAME, ST_LSM6DSTX_ID },
 	{ ST_LSM6DSV_DEV_NAME, ST_LSM6DSV_ID },
+	{ ST_LSM6DSV16X_DEV_NAME, ST_LSM6DSV16X_ID },
 	{},
 };
 MODULE_DEVICE_TABLE(spi, st_lsm6dsx_spi_id_table);
Signature · 1 line
2.38.1
author maintainer
#2 lore raw

PATCH 2/2 dt-bindings: iio: imu: st_lsm6dsx: add lsm6dsv16x device bindings

In reply to Lorenzo Bianconi

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

---
 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 e7349a3275dd..5933270799f5 100644
@@ -39,6 +39,9 @@ properties:
       - items:
           - const: st,lsm6dstx
           - const: st,lsm6dst
+      - items:
+          - const: st,lsm6dsv16x
+          - const: st,lsm6dsv
 
   reg:
     maxItems: 1
Signature · 1 line
2.38.1
Acked-by on v1 2/2
#3 lore raw

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

Quoted 1 line · Lorenzo Bianconi

Add device bindings for lsm6dsv16x IMU sensor.

Drop redundant, second "device bindings" in subject. So the subject should be (also with different prefix):

dt-bindings: iio: imu:: st,lsm6dsx.yaml: add lsm6dsv16x

With subject fixes:

Best regards,
Krzysztof

author maintainer
#4 lore raw

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

Quoted 5 lines · Lorenzo Bianconi
Quoted 1 line

Add device bindings for lsm6dsv16x IMU sensor.

Drop redundant, second "device bindings" in subject. So the subject should be (also with different prefix):

ack

Quoted 10 lines

dt-bindings: iio: imu:: st,lsm6dsx.yaml: add lsm6dsv16x

With subject fixes:

Best regards,
Krzysztof

@Jonathan: do you want me send v2 or are you going to take care of it?

Regards,
Lorenzo

maintainer
#5 lore raw

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

Quoted 15 lines · On Tue, 8 Nov 2022 15:25:40 +0100 Lorenzo Bianconi <[email protected]> wrote:
Quoted 5 lines · Lorenzo Bianconi
Quoted 1 line

Add device bindings for lsm6dsv16x IMU sensor.

Drop redundant, second "device bindings" in subject. So the subject should be (also with different prefix):

ack

Quoted 7 lines

dt-bindings: iio: imu:: st,lsm6dsx.yaml: add lsm6dsv16x

With subject fixes:

Quoted 8 lines
Quoted 3 lines

Best regards,
Krzysztof

@Jonathan: do you want me send v2 or are you going to take care of it?

Regards,
Lorenzo

I tidied the patch title up whilst applying. Applied to the togreg branch of iio.git and pushed out as testing for all the normal reasons.

Thanks,

Jonathan