Commit 3a042fda authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Jonathan Cameron
Browse files

iio: imu: st_lsm6dsx: add support to ISM330IS

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

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


Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Link: https://lore.kernel.org/r/4cd1614060e06f49cd92f5930d8fd40117c07920.1669279604.git.lorenzo@kernel.org


Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent eda549e2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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, the accelerometer/gyroscope
	  of lsm9ds1 and lsm6dst.
	  lsm6dsv, lsm6dsv16x, lsm6dso16is, ism330is, lsm6dst and the
	  accelerometer/gyroscope of lsm9ds1.

	  To compile this driver as a module, choose M here: the module
	  will be called st_lsm6dsx.
+2 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#define ST_LSM6DSV_DEV_NAME	"lsm6dsv"
#define ST_LSM6DSV16X_DEV_NAME	"lsm6dsv16x"
#define ST_LSM6DSO16IS_DEV_NAME	"lsm6dso16is"
#define ST_ISM330IS_DEV_NAME	"ism330is"

enum st_lsm6dsx_hw_id {
	ST_LSM6DS3_ID,
@@ -59,6 +60,7 @@ enum st_lsm6dsx_hw_id {
	ST_LSM6DSV_ID,
	ST_LSM6DSV16X_ID,
	ST_LSM6DSO16IS_ID,
	ST_ISM330IS_ID,
	ST_LSM6DSX_MAX_ID,
};

+6 −2
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@
 *   - FIFO size: 4KB
 *
 * - LSM6DSO/LSM6DSOX/ASM330LHH/ASM330LHHX/LSM6DSR/ISM330DHCX/LSM6DST/LSM6DSOP/
 *   LSM6DSTX/LSM6DSO16IS:
 *   LSM6DSTX/LSM6DSO16IS/ISM330IS:
 *   - Accelerometer/Gyroscope supported ODR [Hz]: 12.5, 26, 52, 104, 208, 416,
 *     833
 *   - Accelerometer supported full-scale [g]: +-2/+-4/+-8/+-16
@@ -1393,7 +1393,11 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
				.hw_id = ST_LSM6DSO16IS_ID,
				.name = ST_LSM6DSO16IS_DEV_NAME,
				.wai = 0x22,
			},
			}, {
				.hw_id = ST_ISM330IS_ID,
				.name = ST_ISM330IS_DEV_NAME,
				.wai = 0x22,
			}
		},
		.channels = {
			[ST_LSM6DSX_ID_ACC] = {
+5 −0
Original line number Diff line number Diff line
@@ -121,6 +121,10 @@ static const struct of_device_id st_lsm6dsx_i2c_of_match[] = {
		.compatible = "st,lsm6dso16is",
		.data = (void *)ST_LSM6DSO16IS_ID,
	},
	{
		.compatible = "st,ism330is",
		.data = (void *)ST_ISM330IS_ID,
	},
	{},
};
MODULE_DEVICE_TABLE(of, st_lsm6dsx_i2c_of_match);
@@ -147,6 +151,7 @@ static const struct i2c_device_id st_lsm6dsx_i2c_id_table[] = {
	{ ST_LSM6DSV_DEV_NAME, ST_LSM6DSV_ID },
	{ ST_LSM6DSV16X_DEV_NAME, ST_LSM6DSV16X_ID },
	{ ST_LSM6DSO16IS_DEV_NAME, ST_LSM6DSO16IS_ID },
	{ ST_ISM330IS_DEV_NAME, ST_ISM330IS_ID },
	{},
};
MODULE_DEVICE_TABLE(i2c, st_lsm6dsx_i2c_id_table);
+5 −0
Original line number Diff line number Diff line
@@ -121,6 +121,10 @@ static const struct of_device_id st_lsm6dsx_spi_of_match[] = {
		.compatible = "st,lsm6dso16is",
		.data = (void *)ST_LSM6DSO16IS_ID,
	},
	{
		.compatible = "st,ism330is",
		.data = (void *)ST_ISM330IS_ID,
	},
	{},
};
MODULE_DEVICE_TABLE(of, st_lsm6dsx_spi_of_match);
@@ -147,6 +151,7 @@ static const struct spi_device_id st_lsm6dsx_spi_id_table[] = {
	{ ST_LSM6DSV_DEV_NAME, ST_LSM6DSV_ID },
	{ ST_LSM6DSV16X_DEV_NAME, ST_LSM6DSV16X_ID },
	{ ST_LSM6DSO16IS_DEV_NAME, ST_LSM6DSO16IS_ID },
	{ ST_ISM330IS_DEV_NAME, ST_ISM330IS_ID },
	{},
};
MODULE_DEVICE_TABLE(spi, st_lsm6dsx_spi_id_table);