^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) * NXP PCA954x I2C bus switch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) The driver supports NXP PCA954x and PCA984x I2C mux/switch devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) Required Properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) - compatible: Must contain one of the following.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) "nxp,pca9540",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) "nxp,pca9542",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) "nxp,pca9543",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) "nxp,pca9544",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) "nxp,pca9545",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) "nxp,pca9546", "nxp,pca9846",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) "nxp,pca9547", "nxp,pca9847",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) "nxp,pca9548", "nxp,pca9848",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) "nxp,pca9849"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) - reg: The I2C address of the device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) The following required properties are defined externally:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) - Standard I2C mux properties. See i2c-mux.txt in this directory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) - I2C child bus nodes. See i2c-mux.txt in this directory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) Optional Properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) - reset-gpios: Reference to the GPIO connected to the reset input.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) - idle-state: if present, overrides i2c-mux-idle-disconnect,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) Please refer to Documentation/devicetree/bindings/mux/mux-controller.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) - i2c-mux-idle-disconnect: Boolean; if defined, forces mux to disconnect all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) children in idle state. This is necessary for example, if there are several
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) multiplexers on the bus and the devices behind them use same I2C addresses.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) - interrupts: Interrupt mapping for IRQ.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) - interrupt-controller: Marks the device node as an interrupt controller.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) - #interrupt-cells : Should be two.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) - first cell is the pin number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) - second cell is used to specify flags.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) See also Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) i2c-switch@74 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) compatible = "nxp,pca9548";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) reg = <0x74>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) interrupt-parent = <&ipic>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) interrupt-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #interrupt-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) i2c@2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) reg = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) eeprom@54 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) compatible = "atmel,24c08";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) reg = <0x54>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) i2c@4 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) reg = <4>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) rtc@51 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) compatible = "nxp,pcf8563";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) reg = <0x51>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) };