For the AD7124 chip the logical irq line (̅R̅D̅Y) is physically on the same pin as the spi MISO output (DOUT) and so reading a register might trigger an interrupt. For correct operation it's critical that the actual state of the pin can be read to judge if an interrupt event is a real one or just a spurious one triggered by toggling the line in its MISO mode. Allow specification of an "interrupt-gpios" property instead of a plain interrupt. The semantic is that the GPIO's interrupt is to be used as event source and reading the GPIO can be used to differentiate between a real event and one triggered by MISO. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxx> --- .../devicetree/bindings/iio/adc/adi,ad7124.yaml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml index 35ed04350e28..feb3a41a148e 100644 --- a/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml @@ -37,6 +37,9 @@ properties: description: IRQ line for the ADC maxItems: 1 + interrupt-gpios: + description: GPIO reading the interrupt line + '#address-cells': const: 1 @@ -57,7 +60,12 @@ required: - reg - clocks - clock-names - - interrupts + +oneOf: + - required: + - interrupts + - required: + - interrupt-gpios patternProperties: "^channel@([0-9]|1[0-5])$": @@ -119,8 +127,7 @@ examples: compatible = "adi,ad7124-4"; reg = <0>; spi-max-frequency = <5000000>; - interrupts = <25 2>; - interrupt-parent = <&gpio>; + interrupt-gpios = <&gpio 25 2>; refin1-supply = <&adc_vref>; clocks = <&ad7124_mclk>; clock-names = "mclk"; -- 2.45.2