* @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;