|
@@ -319,7 +319,8 @@ static int st_sensors_set_drdy_int_pin(struct iio_dev *indio_dev,
|
|
|
}
|
|
|
|
|
|
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
|
|
@@ -446,11 +447,21 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev,
|
|
|
}
|
|
|
|
|
|
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;
|
|
|
}
|