.int1 = {
                                .addr = 0x22,
                                .mask = 0x02,
+                               .addr_od = 0x22,
+                               .mask_od = 0x40,
                        },
                        .int2 = {
                                .addr = 0x22,
                                .mask = 0x10,
+                               .addr_od = 0x22,
+                               .mask_od = 0x40,
                        },
                        .addr_ihl = 0x22,
                        .mask_ihl = 0x80,
-                       .addr_od = 0x22,
-                       .mask_od = 0x40,
                        .stat_drdy = {
                                .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
                                .mask = 0x07,
                        .int1 = {
                                .addr = 0x22,
                                .mask = 0x04,
+                               .addr_od = 0x22,
+                               .mask_od = 0x40,
                        },
                        .int2 = {
                                .addr = 0x22,
                                .mask = 0x20,
+                               .addr_od = 0x22,
+                               .mask_od = 0x40,
                        },
                        .addr_ihl = 0x22,
                        .mask_ihl = 0x80,
-                       .addr_od = 0x22,
-                       .mask_od = 0x40,
                        .stat_drdy = {
                                .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
                                .mask = 0x07,
                        .int1 = {
                                .addr = 0x23,
                                .mask = 0x01,
+                               .addr_od = 0x22,
+                               .mask_od = 0x20,
                        },
                        .int2 = {
                                .addr = 0x24,
                                .mask = 0x01,
+                               .addr_od = 0x22,
+                               .mask_od = 0x20,
                        },
                        .addr_ihl = 0x22,
                        .mask_ihl = 0x08,
-                       .addr_od = 0x22,
-                       .mask_od = 0x20,
                        .stat_drdy = {
                                .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
                                .mask = 0x01,
 
        }
 
        if (pdata->open_drain) {
-               if (!sdata->sensor_settings->drdy_irq.addr_od)
+               if (!sdata->sensor_settings->drdy_irq.int1.addr_od &&
+                   !sdata->sensor_settings->drdy_irq.int2.addr_od)
                        dev_err(&indio_dev->dev,
                                "open drain requested but unsupported.\n");
                else
        }
 
        if (sdata->int_pin_open_drain) {
+               u8 addr, mask;
+
+               if (sdata->drdy_int_pin == 1) {
+                       addr = sdata->sensor_settings->drdy_irq.int1.addr_od;
+                       mask = sdata->sensor_settings->drdy_irq.int1.mask_od;
+               } else {
+                       addr = sdata->sensor_settings->drdy_irq.int2.addr_od;
+                       mask = sdata->sensor_settings->drdy_irq.int2.mask_od;
+               }
+
                dev_info(&indio_dev->dev,
-                        "set interrupt line to open drain mode\n");
-               err = st_sensors_write_data_with_mask(indio_dev,
-                               sdata->sensor_settings->drdy_irq.addr_od,
-                               sdata->sensor_settings->drdy_irq.mask_od, 1);
+                        "set interrupt line to open drain mode on pin %d\n",
+                        sdata->drdy_int_pin);
+               err = st_sensors_write_data_with_mask(indio_dev, addr,
+                                                     mask, 1);
                if (err < 0)
                        return err;
        }
 
                        .int1 = {
                                .addr = 0x22,
                                .mask = 0x04,
+                               .addr_od = 0x22,
+                               .mask_od = 0x40,
                        },
                        .int2 = {
                                .addr = 0x22,
                                .mask = 0x20,
+                               .addr_od = 0x22,
+                               .mask_od = 0x40,
                        },
                        .addr_ihl = 0x22,
                        .mask_ihl = 0x80,
-                       .addr_od = 0x22,
-                       .mask_od = 0x40,
                        .stat_drdy = {
                                .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
                                .mask = 0x03,
                        .int1 = {
                                .addr = 0x23,
                                .mask = 0x01,
+                               .addr_od = 0x22,
+                               .mask_od = 0x40,
                        },
                        .addr_ihl = 0x22,
                        .mask_ihl = 0x80,
-                       .addr_od = 0x22,
-                       .mask_od = 0x40,
                        .stat_drdy = {
                                .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
                                .mask = 0x03,
                        .int1 = {
                                .addr = 0x12,
                                .mask = 0x04,
+                               .addr_od = 0x12,
+                               .mask_od = 0x40,
                        },
                        .addr_ihl = 0x12,
                        .mask_ihl = 0x80,
-                       .addr_od = 0x12,
-                       .mask_od = 0x40,
                        .stat_drdy = {
                                .addr = ST_SENSORS_DEFAULT_STAT_ADDR,
                                .mask = 0x03,
 
        u8 mask;
 };
 
+/**
+ * struct st_sensor_int_drdy - ST sensor device drdy line parameters
+ * @addr: address of INT drdy register.
+ * @mask: mask to enable drdy line.
+ * @addr_od: address to enable/disable Open Drain on the INT line.
+ * @mask_od: mask to enable/disable Open Drain on the INT line.
+ */
+struct st_sensor_int_drdy {
+       u8 addr;
+       u8 mask;
+       u8 addr_od;
+       u8 mask_od;
+};
+
 /**
  * struct st_sensor_data_ready_irq - ST sensor device data-ready interrupt
  * struct int1 - data-ready configuration register for INT1 pin.
  * struct int2 - data-ready configuration register for INT2 pin.
  * @addr_ihl: address to enable/disable active low on the INT lines.
  * @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.
  * 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.
  */
 struct st_sensor_data_ready_irq {
-       struct {
-               u8 addr;
-               u8 mask;
-       } int1;
-       struct {
-               u8 addr;
-               u8 mask;
-       } int2;
+       struct st_sensor_int_drdy int1;
+       struct st_sensor_int_drdy int2;
        u8 addr_ihl;
        u8 mask_ihl;
-       u8 addr_od;
-       u8 mask_od;
        struct {
                u8 addr;
                u8 mask;