drivers:iio:stm:imu:st_lsm6dsv16bx: add lsm6dsv16b support to driver
Lsm6dsv16b sensor is managed by the same general driver as it implements a subset of the functions of lsm6dsv16bx. Signed-off-by: Mario Tesi <mario.tesi@st.com> Change-Id: I4f5f22978d90619c5629b803c1283f1d70e0e7dd
This commit is contained in:
parent
876ab6c015
commit
2dae89e66f
@ -26,6 +26,7 @@
|
|||||||
#define ST_LSM6DSV16BX_ODR_EXPAND(odr, uodr) ((odr * 1000000) + uodr)
|
#define ST_LSM6DSV16BX_ODR_EXPAND(odr, uodr) ((odr * 1000000) + uodr)
|
||||||
|
|
||||||
#define ST_LSM6DSV16BX_DEV_NAME "lsm6dsv16bx"
|
#define ST_LSM6DSV16BX_DEV_NAME "lsm6dsv16bx"
|
||||||
|
#define ST_LSM6DSV16B_DEV_NAME "lsm6dsv16b"
|
||||||
|
|
||||||
#define ST_LSM6DSV16BX_SAMPLE_SIZE 6
|
#define ST_LSM6DSV16BX_SAMPLE_SIZE 6
|
||||||
#define ST_LSM6DSV16BX_TS_SAMPLE_SIZE 4
|
#define ST_LSM6DSV16BX_TS_SAMPLE_SIZE 4
|
||||||
@ -398,6 +399,7 @@ struct st_lsm6dsv16bx_fs_table_entry {
|
|||||||
*/
|
*/
|
||||||
enum st_lsm6dsv16bx_hw_id {
|
enum st_lsm6dsv16bx_hw_id {
|
||||||
ST_LSM6DSV16BX_ID,
|
ST_LSM6DSV16BX_ID,
|
||||||
|
ST_LSM6DSV16B_ID,
|
||||||
ST_LSM6DSV16BX_MAX_ID,
|
ST_LSM6DSV16BX_MAX_ID,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -91,6 +91,47 @@ static const struct st_lsm6dsv16bx_settings st_lsm6dsv16bx_sensor_settings[] = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.id = {
|
||||||
|
.hw_id = ST_LSM6DSV16B_ID,
|
||||||
|
.name = ST_LSM6DSV16B_DEV_NAME,
|
||||||
|
},
|
||||||
|
.st_qvar_probe = false,
|
||||||
|
.st_mlc_probe = false,
|
||||||
|
.st_fsm_probe = true,
|
||||||
|
.st_sflp_probe = true,
|
||||||
|
.st_tdm_probe = true,
|
||||||
|
.fs_table = {
|
||||||
|
[ST_LSM6DSV16BX_ID_ACC] = {
|
||||||
|
.size = 4,
|
||||||
|
.reg = {
|
||||||
|
.addr = ST_LSM6DSV16BX_REG_CTRL8_ADDR,
|
||||||
|
.mask = GENMASK(1, 0),
|
||||||
|
},
|
||||||
|
.fs_avl[0] = { ST_LSM6DSV16BX_ACC_FS_2G_GAIN, 0x0 },
|
||||||
|
.fs_avl[1] = { ST_LSM6DSV16BX_ACC_FS_4G_GAIN, 0x1 },
|
||||||
|
.fs_avl[2] = { ST_LSM6DSV16BX_ACC_FS_8G_GAIN, 0x2 },
|
||||||
|
.fs_avl[3] = { ST_LSM6DSV16BX_ACC_FS_16G_GAIN, 0x3 },
|
||||||
|
},
|
||||||
|
[ST_LSM6DSV16BX_ID_GYRO] = {
|
||||||
|
.size = 6,
|
||||||
|
.reg = {
|
||||||
|
.addr = ST_LSM6DSV16BX_REG_CTRL6_ADDR,
|
||||||
|
.mask = GENMASK(3, 0),
|
||||||
|
},
|
||||||
|
.fs_avl[0] = { ST_LSM6DSV16BX_GYRO_FS_125_GAIN, 0x0 },
|
||||||
|
.fs_avl[1] = { ST_LSM6DSV16BX_GYRO_FS_250_GAIN, 0x1 },
|
||||||
|
.fs_avl[2] = { ST_LSM6DSV16BX_GYRO_FS_500_GAIN, 0x2 },
|
||||||
|
.fs_avl[3] = { ST_LSM6DSV16BX_GYRO_FS_1000_GAIN, 0x3 },
|
||||||
|
.fs_avl[4] = { ST_LSM6DSV16BX_GYRO_FS_2000_GAIN, 0x4 },
|
||||||
|
.fs_avl[5] = { ST_LSM6DSV16BX_GYRO_FS_4000_GAIN, 0x6 },
|
||||||
|
},
|
||||||
|
[ST_LSM6DSV16BX_ID_TEMP] = {
|
||||||
|
.size = 1,
|
||||||
|
.fs_avl[0] = { (1000000 / ST_LSM6DSV16BX_TEMP_GAIN), 0x0 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct st_lsm6dsv16bx_odr_table_entry
|
static const struct st_lsm6dsv16bx_odr_table_entry
|
||||||
|
@ -43,12 +43,17 @@ static const struct of_device_id st_lsm6dsv16bx_i2c_of_match[] = {
|
|||||||
.compatible = "st," ST_LSM6DSV16BX_DEV_NAME,
|
.compatible = "st," ST_LSM6DSV16BX_DEV_NAME,
|
||||||
.data = (void *)ST_LSM6DSV16BX_ID,
|
.data = (void *)ST_LSM6DSV16BX_ID,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.compatible = "st," ST_LSM6DSV16B_DEV_NAME,
|
||||||
|
.data = (void *)ST_LSM6DSV16B_ID,
|
||||||
|
},
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, st_lsm6dsv16bx_i2c_of_match);
|
MODULE_DEVICE_TABLE(of, st_lsm6dsv16bx_i2c_of_match);
|
||||||
|
|
||||||
static const struct i2c_device_id st_lsm6dsv16bx_i2c_id_table[] = {
|
static const struct i2c_device_id st_lsm6dsv16bx_i2c_id_table[] = {
|
||||||
{ ST_LSM6DSV16BX_DEV_NAME, ST_LSM6DSV16BX_ID },
|
{ ST_LSM6DSV16BX_DEV_NAME, ST_LSM6DSV16BX_ID },
|
||||||
|
{ ST_LSM6DSV16B_DEV_NAME, ST_LSM6DSV16B_ID },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(i2c, st_lsm6dsv16bx_i2c_id_table);
|
MODULE_DEVICE_TABLE(i2c, st_lsm6dsv16bx_i2c_id_table);
|
||||||
|
@ -41,12 +41,17 @@ static const struct of_device_id st_lsm6dsv16bx_spi_of_match[] = {
|
|||||||
.compatible = "st," ST_LSM6DSV16BX_DEV_NAME,
|
.compatible = "st," ST_LSM6DSV16BX_DEV_NAME,
|
||||||
.data = (void *)ST_LSM6DSV16BX_ID,
|
.data = (void *)ST_LSM6DSV16BX_ID,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.compatible = "st," ST_LSM6DSV16B_DEV_NAME,
|
||||||
|
.data = (void *)ST_LSM6DSV16B_ID,
|
||||||
|
},
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, st_lsm6dsv16bx_spi_of_match);
|
MODULE_DEVICE_TABLE(of, st_lsm6dsv16bx_spi_of_match);
|
||||||
|
|
||||||
static const struct spi_device_id st_lsm6dsv16bx_spi_id_table[] = {
|
static const struct spi_device_id st_lsm6dsv16bx_spi_id_table[] = {
|
||||||
{ ST_LSM6DSV16BX_DEV_NAME, ST_LSM6DSV16BX_ID },
|
{ ST_LSM6DSV16BX_DEV_NAME, ST_LSM6DSV16BX_ID },
|
||||||
|
{ ST_LSM6DSV16B_DEV_NAME, ST_LSM6DSV16B_ID },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(spi, st_lsm6dsv16bx_spi_id_table);
|
MODULE_DEVICE_TABLE(spi, st_lsm6dsv16bx_spi_id_table);
|
||||||
|
Loading…
Reference in New Issue
Block a user