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