1* PCF857x-compatible I/O expanders 2 3The PCF857x-compatible chips have "quasi-bidirectional" I/O lines that can be 4driven high by a pull-up current source or driven low to ground. This combines 5the direction and output level into a single bit per line, which can't be read 6back. We can't actually know at initialization time whether a line is configured 7(a) as output and driving the signal low/high, or (b) as input and reporting a 8low/high value, without knowing the last value written since the chip came out 9of reset (if any). The only reliable solution for setting up line direction is 10thus to do it explicitly. 11 12Required Properties: 13 14 - compatible: should be one of the following. 15 - "maxim,max7328": For the Maxim MAX7378 16 - "maxim,max7329": For the Maxim MAX7329 17 - "nxp,pca8574": For the NXP PCA8574 18 - "nxp,pca8575": For the NXP PCA8575 19 - "nxp,pca9670": For the NXP PCA9670 20 - "nxp,pca9671": For the NXP PCA9671 21 - "nxp,pca9672": For the NXP PCA9672 22 - "nxp,pca9673": For the NXP PCA9673 23 - "nxp,pca9674": For the NXP PCA9674 24 - "nxp,pca9675": For the NXP PCA9675 25 - "nxp,pcf8574": For the NXP PCF8574 26 - "nxp,pcf8574a": For the NXP PCF8574A 27 - "nxp,pcf8575": For the NXP PCF8575 28 29 - reg: I2C slave address. 30 31 - gpio-controller: Marks the device node as a gpio controller. 32 - #gpio-cells: Should be 2. The first cell is the GPIO number and the second 33 cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the 34 GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported. 35 36Optional Properties: 37 38 - lines-initial-states: Bitmask that specifies the initial state of each 39 line. When a bit is set to zero, the corresponding line will be initialized to 40 the input (pulled-up) state. When the bit is set to one, the line will be 41 initialized the low-level output state. If the property is not specified 42 all lines will be initialized to the input state. 43 44 The I/O expander can detect input state changes, and thus optionally act as 45 an interrupt controller. When the expander interrupt line is connected all the 46 following properties must be set. For more information please see the 47 interrupt controller device tree bindings documentation available at 48 Documentation/devicetree/bindings/interrupt-controller/interrupts.txt. 49 50 - interrupt-controller: Identifies the node as an interrupt controller. 51 - #interrupt-cells: Number of cells to encode an interrupt source, shall be 2. 52 - interrupts: Interrupt specifier for the controllers interrupt. 53 54 55Please refer to gpio.txt in this directory for details of the common GPIO 56bindings used by client devices. 57 58Example: PCF8575 I/O expander node 59 60 pcf8575: gpio@20 { 61 compatible = "nxp,pcf8575"; 62 reg = <0x20>; 63 interrupt-parent = <&irqpin2>; 64 interrupts = <3 0>; 65 gpio-controller; 66 #gpio-cells = <2>; 67 interrupt-controller; 68 #interrupt-cells = <2>; 69 }; 70