* @fs_table: Hw sensors gain table (gain + val).
* @decimator: List of decimator register info (addr + mask).
* @batch: List of FIFO batching register info (addr + mask).
+ * @lir: Latched interrupt register info (addr + mask).
* @fifo_ops: Sensor hw FIFO parameters.
* @ts_settings: Hw timer related settings.
* @shub_settings: i2c controller related settings.
struct st_lsm6dsx_fs_table_entry fs_table[2];
struct st_lsm6dsx_reg decimator[ST_LSM6DSX_MAX_ID];
struct st_lsm6dsx_reg batch[ST_LSM6DSX_MAX_ID];
+ struct st_lsm6dsx_reg lir;
struct st_lsm6dsx_fifo_ops fifo_ops;
struct st_lsm6dsx_hw_ts_settings ts_settings;
struct st_lsm6dsx_shub_settings shub_settings;
.mask = GENMASK(5, 3),
},
},
+ .lir = {
+ .addr = 0x58,
+ .mask = BIT(0),
+ },
.fifo_ops = {
.update_fifo = st_lsm6dsx_update_fifo,
.read_fifo = st_lsm6dsx_read_fifo,
.mask = GENMASK(5, 3),
},
},
+ .lir = {
+ .addr = 0x58,
+ .mask = BIT(0),
+ },
.fifo_ops = {
.update_fifo = st_lsm6dsx_update_fifo,
.read_fifo = st_lsm6dsx_read_fifo,
.mask = GENMASK(5, 3),
},
},
+ .lir = {
+ .addr = 0x58,
+ .mask = BIT(0),
+ },
.fifo_ops = {
.update_fifo = st_lsm6dsx_update_fifo,
.read_fifo = st_lsm6dsx_read_fifo,
.mask = GENMASK(7, 4),
},
},
+ .lir = {
+ .addr = 0x56,
+ .mask = BIT(0),
+ },
.fifo_ops = {
.update_fifo = st_lsm6dsx_update_fifo,
.read_fifo = st_lsm6dsx_read_tagged_fifo,
.mask = GENMASK(7, 4),
},
},
+ .lir = {
+ .addr = 0x56,
+ .mask = BIT(0),
+ },
.fifo_ops = {
.update_fifo = st_lsm6dsx_update_fifo,
.read_fifo = st_lsm6dsx_read_tagged_fifo,
.mask = GENMASK(7, 4),
},
},
+ .lir = {
+ .addr = 0x56,
+ .mask = BIT(0),
+ },
.fifo_ops = {
.update_fifo = st_lsm6dsx_update_fifo,
.read_fifo = st_lsm6dsx_read_tagged_fifo,
if (err < 0)
return err;
+ /* enable Latched interrupts for device events */
+ if (hw->settings->lir.addr) {
+ unsigned int data;
+
+ data = ST_LSM6DSX_SHIFT_VAL(1, hw->settings->lir.mask);
+ err = regmap_update_bits(hw->regmap, hw->settings->lir.addr,
+ hw->settings->lir.mask, data);
+ if (err < 0)
+ return err;
+ }
+
err = st_lsm6dsx_init_shub(hw);
if (err < 0)
return err;