xref: /freebsd-src/sys/contrib/device-tree/Bindings/i2c/i2c-mux-pca954x.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
15956d97fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0
25956d97fSEmmanuel Vadot%YAML 1.2
35956d97fSEmmanuel Vadot---
45956d97fSEmmanuel Vadot$id: http://devicetree.org/schemas/i2c/i2c-mux-pca954x.yaml#
55956d97fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
65956d97fSEmmanuel Vadot
7aa1a8ff2SEmmanuel Vadottitle: NXP PCA954x I2C and compatible bus switches
85956d97fSEmmanuel Vadot
95956d97fSEmmanuel Vadotmaintainers:
105956d97fSEmmanuel Vadot  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
115956d97fSEmmanuel Vadot
125956d97fSEmmanuel Vadotdescription:
13aa1a8ff2SEmmanuel Vadot  The NXP PCA954x and compatible devices are I2C bus
14aa1a8ff2SEmmanuel Vadot  multiplexer/switches that share the same functionality
15aa1a8ff2SEmmanuel Vadot  and register layout.
16aa1a8ff2SEmmanuel Vadot  The devices usually have 4 or 8 child buses, which are
17aa1a8ff2SEmmanuel Vadot  attached to the parent bus by using the SMBus "Send Byte"
18aa1a8ff2SEmmanuel Vadot  command.
195956d97fSEmmanuel Vadot
205956d97fSEmmanuel Vadotproperties:
215956d97fSEmmanuel Vadot  compatible:
225956d97fSEmmanuel Vadot    oneOf:
235956d97fSEmmanuel Vadot      - enum:
24aa1a8ff2SEmmanuel Vadot          - maxim,max7356
25aa1a8ff2SEmmanuel Vadot          - maxim,max7357
26aa1a8ff2SEmmanuel Vadot          - maxim,max7358
27aa1a8ff2SEmmanuel Vadot          - maxim,max7367
28aa1a8ff2SEmmanuel Vadot          - maxim,max7368
29aa1a8ff2SEmmanuel Vadot          - maxim,max7369
305956d97fSEmmanuel Vadot          - nxp,pca9540
315956d97fSEmmanuel Vadot          - nxp,pca9542
325956d97fSEmmanuel Vadot          - nxp,pca9543
335956d97fSEmmanuel Vadot          - nxp,pca9544
345956d97fSEmmanuel Vadot          - nxp,pca9545
355956d97fSEmmanuel Vadot          - nxp,pca9546
365956d97fSEmmanuel Vadot          - nxp,pca9547
375956d97fSEmmanuel Vadot          - nxp,pca9548
385956d97fSEmmanuel Vadot          - nxp,pca9846
395956d97fSEmmanuel Vadot          - nxp,pca9847
405956d97fSEmmanuel Vadot          - nxp,pca9848
415956d97fSEmmanuel Vadot          - nxp,pca9849
425956d97fSEmmanuel Vadot      - items:
435956d97fSEmmanuel Vadot          - const: nxp,pca9646
445956d97fSEmmanuel Vadot          - const: nxp,pca9546
455956d97fSEmmanuel Vadot
465956d97fSEmmanuel Vadot  reg:
475956d97fSEmmanuel Vadot    maxItems: 1
485956d97fSEmmanuel Vadot
495956d97fSEmmanuel Vadot  interrupts:
505956d97fSEmmanuel Vadot    maxItems: 1
515956d97fSEmmanuel Vadot
525956d97fSEmmanuel Vadot  "#interrupt-cells":
535956d97fSEmmanuel Vadot    const: 2
545956d97fSEmmanuel Vadot
555956d97fSEmmanuel Vadot  interrupt-controller: true
565956d97fSEmmanuel Vadot
575956d97fSEmmanuel Vadot  reset-gpios:
585956d97fSEmmanuel Vadot    maxItems: 1
595956d97fSEmmanuel Vadot
605956d97fSEmmanuel Vadot  i2c-mux-idle-disconnect:
615956d97fSEmmanuel Vadot    type: boolean
625956d97fSEmmanuel Vadot    description: Forces mux to disconnect all children in idle state. This is
635956d97fSEmmanuel Vadot      necessary for example, if there are several multiplexers on the bus and
645956d97fSEmmanuel Vadot      the devices behind them use same I2C addresses.
655956d97fSEmmanuel Vadot
665956d97fSEmmanuel Vadot  idle-state:
675956d97fSEmmanuel Vadot    description: if present, overrides i2c-mux-idle-disconnect
685956d97fSEmmanuel Vadot    $ref: /schemas/mux/mux-controller.yaml#/properties/idle-state
695956d97fSEmmanuel Vadot
70aa1a8ff2SEmmanuel Vadot  vdd-supply:
71aa1a8ff2SEmmanuel Vadot    description: A voltage regulator supplying power to the chip. On PCA9846
72aa1a8ff2SEmmanuel Vadot      the regulator supplies power to VDD2 (core logic) and optionally to VDD1.
73aa1a8ff2SEmmanuel Vadot
74*01950c46SEmmanuel Vadot  maxim,isolate-stuck-channel:
75*01950c46SEmmanuel Vadot    type: boolean
76*01950c46SEmmanuel Vadot    description: Allows to use non faulty channels while a stuck channel is
77*01950c46SEmmanuel Vadot      isolated from the upstream bus. If not set all channels are isolated from
78*01950c46SEmmanuel Vadot      the upstream bus until the fault is cleared.
79*01950c46SEmmanuel Vadot
80*01950c46SEmmanuel Vadot  maxim,send-flush-out-sequence:
81*01950c46SEmmanuel Vadot    type: boolean
82*01950c46SEmmanuel Vadot    description: Send a flush-out sequence to stuck auxiliary buses
83*01950c46SEmmanuel Vadot      automatically after a stuck channel is being detected.
84*01950c46SEmmanuel Vadot
85*01950c46SEmmanuel Vadot  maxim,preconnection-wiggle-test-enable:
86*01950c46SEmmanuel Vadot    type: boolean
87*01950c46SEmmanuel Vadot    description: Send a STOP condition to the auxiliary buses when the switch
88*01950c46SEmmanuel Vadot      register activates a channel to detect a stuck high fault. On fault the
89*01950c46SEmmanuel Vadot      channel is isolated from the upstream bus.
90*01950c46SEmmanuel Vadot
915956d97fSEmmanuel Vadotrequired:
925956d97fSEmmanuel Vadot  - compatible
935956d97fSEmmanuel Vadot  - reg
945956d97fSEmmanuel Vadot
95aa1a8ff2SEmmanuel VadotallOf:
96aa1a8ff2SEmmanuel Vadot  - $ref: /schemas/i2c/i2c-mux.yaml#
97aa1a8ff2SEmmanuel Vadot  - if:
98aa1a8ff2SEmmanuel Vadot      not:
99aa1a8ff2SEmmanuel Vadot        properties:
100aa1a8ff2SEmmanuel Vadot          compatible:
101aa1a8ff2SEmmanuel Vadot            contains:
102aa1a8ff2SEmmanuel Vadot              enum:
103aa1a8ff2SEmmanuel Vadot                - maxim,max7367
104aa1a8ff2SEmmanuel Vadot                - maxim,max7369
105aa1a8ff2SEmmanuel Vadot                - nxp,pca9542
106aa1a8ff2SEmmanuel Vadot                - nxp,pca9543
107aa1a8ff2SEmmanuel Vadot                - nxp,pca9544
108aa1a8ff2SEmmanuel Vadot                - nxp,pca9545
109aa1a8ff2SEmmanuel Vadot    then:
110aa1a8ff2SEmmanuel Vadot      properties:
111aa1a8ff2SEmmanuel Vadot        interrupts: false
112aa1a8ff2SEmmanuel Vadot        "#interrupt-cells": false
113aa1a8ff2SEmmanuel Vadot        interrupt-controller: false
114aa1a8ff2SEmmanuel Vadot
115*01950c46SEmmanuel Vadot  - if:
116*01950c46SEmmanuel Vadot      not:
117*01950c46SEmmanuel Vadot        properties:
118*01950c46SEmmanuel Vadot          compatible:
119*01950c46SEmmanuel Vadot            contains:
120*01950c46SEmmanuel Vadot              enum:
121*01950c46SEmmanuel Vadot                - maxim,max7357
122*01950c46SEmmanuel Vadot    then:
123*01950c46SEmmanuel Vadot      properties:
124*01950c46SEmmanuel Vadot        maxim,isolate-stuck-channel: false
125*01950c46SEmmanuel Vadot        maxim,send-flush-out-sequence: false
126*01950c46SEmmanuel Vadot        maxim,preconnection-wiggle-test-enable: false
127*01950c46SEmmanuel Vadot
1285956d97fSEmmanuel VadotunevaluatedProperties: false
1295956d97fSEmmanuel Vadot
1305956d97fSEmmanuel Vadotexamples:
1315956d97fSEmmanuel Vadot  - |
1325956d97fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
1335956d97fSEmmanuel Vadot
1345956d97fSEmmanuel Vadot    i2c {
1355956d97fSEmmanuel Vadot        #address-cells = <1>;
1365956d97fSEmmanuel Vadot        #size-cells = <0>;
1375956d97fSEmmanuel Vadot
1385956d97fSEmmanuel Vadot        i2c-mux@74 {
139aa1a8ff2SEmmanuel Vadot            compatible = "nxp,pca9545";
1405956d97fSEmmanuel Vadot            #address-cells = <1>;
1415956d97fSEmmanuel Vadot            #size-cells = <0>;
1425956d97fSEmmanuel Vadot            reg = <0x74>;
1435956d97fSEmmanuel Vadot
144aa1a8ff2SEmmanuel Vadot            vdd-supply = <&p3v3>;
145aa1a8ff2SEmmanuel Vadot
1465956d97fSEmmanuel Vadot            interrupt-parent = <&ipic>;
1475956d97fSEmmanuel Vadot            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
1485956d97fSEmmanuel Vadot            interrupt-controller;
1495956d97fSEmmanuel Vadot            #interrupt-cells = <2>;
1505956d97fSEmmanuel Vadot
1515956d97fSEmmanuel Vadot            i2c@2 {
1525956d97fSEmmanuel Vadot                #address-cells = <1>;
1535956d97fSEmmanuel Vadot                #size-cells = <0>;
1545956d97fSEmmanuel Vadot                reg = <2>;
1555956d97fSEmmanuel Vadot
1565956d97fSEmmanuel Vadot                eeprom@54 {
1575956d97fSEmmanuel Vadot                    compatible = "atmel,24c08";
1585956d97fSEmmanuel Vadot                    reg = <0x54>;
1595956d97fSEmmanuel Vadot                };
1605956d97fSEmmanuel Vadot            };
1615956d97fSEmmanuel Vadot
1625956d97fSEmmanuel Vadot            i2c@4 {
1635956d97fSEmmanuel Vadot                #address-cells = <1>;
1645956d97fSEmmanuel Vadot                #size-cells = <0>;
1655956d97fSEmmanuel Vadot                reg = <4>;
1665956d97fSEmmanuel Vadot
1675956d97fSEmmanuel Vadot                rtc@51 {
1685956d97fSEmmanuel Vadot                    compatible = "nxp,pcf8563";
1695956d97fSEmmanuel Vadot                    reg = <0x51>;
1705956d97fSEmmanuel Vadot                };
1715956d97fSEmmanuel Vadot            };
1725956d97fSEmmanuel Vadot        };
1735956d97fSEmmanuel Vadot    };
1745956d97fSEmmanuel Vadot...
175