.mask_int2 = 0x00,
                        .addr_ihl = 0x25,
                        .mask_ihl = 0x02,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .sim = {
                        .addr = 0x23,
                        .mask_ihl = 0x80,
                        .addr_od = 0x22,
                        .mask_od = 0x40,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .sim = {
                        .addr = 0x23,
                        .mask_int2 = 0x00,
                        .addr_ihl = 0x23,
                        .mask_ihl = 0x40,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                        .ig1 = {
                                .en_addr = 0x23,
                                .en_mask = 0x08,
                .drdy_irq = {
                        .addr = 0x21,
                        .mask_int1 = 0x04,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .sim = {
                        .addr = 0x21,
                        .mask_ihl = 0x80,
                        .addr_od = 0x22,
                        .mask_od = 0x40,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .sim = {
                        .addr = 0x21,
                .drdy_irq = {
                        .addr = 0x21,
                        .mask_int1 = 0x04,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .sim = {
                        .addr = 0x21,
                        .mask_int2 = 0x00,
                        .addr_ihl = 0x25,
                        .mask_ihl = 0x02,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .sim = {
                        .addr = 0x23,
 
                 * different one. Take into account irq status register
                 * to understand if irq trigger can be properly supported
                 */
-               if (sdata->sensor_settings->drdy_irq.addr_stat_drdy)
+               if (sdata->sensor_settings->drdy_irq.stat_drdy.addr)
                        sdata->hw_irq_trigger = enable;
                return 0;
        }
 
        int ret;
 
        /* How would I know if I can't check it? */
-       if (!sdata->sensor_settings->drdy_irq.addr_stat_drdy)
+       if (!sdata->sensor_settings->drdy_irq.stat_drdy.addr)
                return -EINVAL;
 
        /* No scan mask, no interrupt */
                return 0;
 
        ret = sdata->tf->read_byte(&sdata->tb, sdata->dev,
-                       sdata->sensor_settings->drdy_irq.addr_stat_drdy,
+                       sdata->sensor_settings->drdy_irq.stat_drdy.addr,
                        &status);
        if (ret < 0) {
                dev_err(sdata->dev,
                        "error checking samples available\n");
                return ret;
        }
-       /*
-        * the lower bits of .active_scan_mask[0] is directly mapped
-        * to the channels on the sensor: either bit 0 for
-        * one-dimensional sensors, or e.g. x,y,z for accelerometers,
-        * gyroscopes or magnetometers. No sensor use more than 3
-        * channels, so cut the other status bits here.
-        */
-       status &= 0x07;
 
-       if (status & (u8)indio_dev->active_scan_mask[0])
+       if (status & sdata->sensor_settings->drdy_irq.stat_drdy.mask)
                return 1;
 
        return 0;
         * it was "our" interrupt.
         */
        if (sdata->int_pin_open_drain &&
-           sdata->sensor_settings->drdy_irq.addr_stat_drdy)
+           sdata->sensor_settings->drdy_irq.stat_drdy.addr)
                irq_trig |= IRQF_SHARED;
 
        err = request_threaded_irq(sdata->get_irq_data_ready(indio_dev),
 
                         * drain settings, but only for INT1 and not
                         * for the DRDY line on INT2.
                         */
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .multi_read_bit = true,
                .bootime = 2,
                         * drain settings, but only for INT1 and not
                         * for the DRDY line on INT2.
                         */
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .multi_read_bit = true,
                .bootime = 2,
                         * drain settings, but only for INT1 and not
                         * for the DRDY line on INT2.
                         */
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .multi_read_bit = true,
                .bootime = 2,
 
                },
                .drdy_irq = {
                        /* drdy line is routed drdy pin */
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x07,
+                       },
                },
                .multi_read_bit = true,
                .bootime = 2,
                .drdy_irq = {
                        .addr = 0x62,
                        .mask_int1 = 0x01,
-                       .addr_stat_drdy = 0x67,
+                       .stat_drdy = {
+                               .addr = 0x67,
+                               .mask = 0x07,
+                       },
                },
                .multi_read_bit = false,
                .bootime = 2,
 
                        .mask_ihl = 0x80,
                        .addr_od = 0x22,
                        .mask_od = 0x40,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x03,
+                       },
                },
                .multi_read_bit = true,
                .bootime = 2,
                        .mask_ihl = 0x80,
                        .addr_od = 0x22,
                        .mask_od = 0x40,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x03,
+                       },
                },
                .multi_read_bit = true,
                .bootime = 2,
                        .mask_ihl = 0x80,
                        .addr_od = 0x12,
                        .mask_od = 0x40,
-                       .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
+                       .stat_drdy = {
+                               .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
+                               .mask = 0x03,
+                       },
                },
                .multi_read_bit = false,
                .bootime = 2,
 
  * @mask_ihl: mask to enable/disable active low on the INT lines.
  * @addr_od: address to enable/disable Open Drain on the INT lines.
  * @mask_od: mask to enable/disable Open Drain on the INT lines.
- * @addr_stat_drdy: address to read status of DRDY (data ready) interrupt
+ * struct stat_drdy - status register of DRDY (data ready) interrupt.
  * struct ig1 - represents the Interrupt Generator 1 of sensors.
  * @en_addr: address of the enable ig1 register.
  * @en_mask: mask to write the on/off value for enable.
        u8 mask_ihl;
        u8 addr_od;
        u8 mask_od;
-       u8 addr_stat_drdy;
+       struct {
+               u8 addr;
+               u8 mask;
+       } stat_drdy;
        struct {
                u8 en_addr;
                u8 en_mask;