xref: /freebsd/sys/contrib/device-tree/Bindings/gpio/gpio-pcf857x.txt (revision 5ca8e32633c4ffbbcd6762e5888b6a4ba0708c6c)
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