^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) %YAML 1.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) $id: http://devicetree.org/schemas/gpio/gpio-pca95xx.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) $schema: http://devicetree.org/meta-schemas/core.yaml#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) title: NXP PCA95xx I2C GPIO multiplexer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) maintainers:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) - Krzysztof Kozlowski <krzk@kernel.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) description: |+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Bindings for the family of I2C GPIO multiplexers/expanders: NXP PCA95xx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) Maxim MAX73xx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) compatible:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) enum:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) - exar,xra1202
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) - maxim,max7310
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) - maxim,max7312
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) - maxim,max7313
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) - maxim,max7315
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) - maxim,max7319
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) - maxim,max7320
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) - maxim,max7321
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) - maxim,max7322
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) - maxim,max7323
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) - maxim,max7324
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) - maxim,max7325
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) - maxim,max7326
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) - maxim,max7327
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) - nxp,pca6416
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) - nxp,pca9505
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) - nxp,pca9534
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) - nxp,pca9535
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) - nxp,pca9536
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) - nxp,pca9537
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) - nxp,pca9538
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) - nxp,pca9539
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) - nxp,pca9554
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) - nxp,pca9555
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) - nxp,pca9556
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) - nxp,pca9557
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) - nxp,pca9574
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) - nxp,pca9575
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) - nxp,pca9698
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) - nxp,pcal6416
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) - nxp,pcal6524
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) - nxp,pcal9535
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) - nxp,pcal9555a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) - onnn,cat9554
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) - onnn,pca9654
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) - ti,pca6107
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) - ti,pca9536
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) - ti,tca6408
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) - ti,tca6416
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) - ti,tca6424
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) - ti,tca9539
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) - ti,tca9554
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) reg:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) maxItems: 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) gpio-controller: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) '#gpio-cells':
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) const: 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) gpio-line-names:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) minItems: 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) maxItems: 32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) interrupts:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) maxItems: 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) interrupt-controller: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) '#interrupt-cells':
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) const: 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) reset-gpios:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) GPIO specification for the RESET input. This is an active low signal to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) the PCA953x. Not valid for Maxim MAX732x devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) vcc-supply:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) Optional power supply. Not valid for Maxim MAX732x devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) wakeup-source:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) $ref: /schemas/types.yaml#/definitions/flag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) patternProperties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$":
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) type: object
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) gpio-hog: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) gpios: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) input: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) output-high: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) output-low: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) line-name: true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) required:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) - gpio-hog
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) - gpios
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) additionalProperties: false
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) required:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) - compatible
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) - reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) - gpio-controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) - "#gpio-cells"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) additionalProperties: false
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) allOf:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) - if:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) compatible:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) contains:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) enum:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) - maxim,max7320
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) - maxim,max7321
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) - maxim,max7322
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) - maxim,max7323
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) - maxim,max7324
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) - maxim,max7325
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) - maxim,max7326
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) - maxim,max7327
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) then:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) reset-gpios: false
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) vcc-supply: false
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) examples:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #include <dt-bindings/gpio/gpio.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #include <dt-bindings/interrupt-controller/irq.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) i2c0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) gpio@20 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) compatible = "nxp,pca9505";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) reg = <0x20>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) pinctrl-names = "default";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) pinctrl-0 = <&pinctrl_pca9505>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) gpio-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #gpio-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) interrupt-parent = <&gpio3>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) usb3-sata-sel-hog {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) gpio-hog;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) gpios = <4 GPIO_ACTIVE_HIGH>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) output-low;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) line-name = "usb3_sata_sel";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #include <dt-bindings/interrupt-controller/irq.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) i2c1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) gpio99: gpio@22 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) compatible = "nxp,pcal6524";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) reg = <0x22>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) interrupt-parent = <&gpio6>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) interrupts = <1 IRQ_TYPE_EDGE_FALLING>; /* gpio6_161 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) interrupt-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) #interrupt-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) vcc-supply = <&vdds_1v8_main>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) gpio-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) #gpio-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) gpio-line-names = "hdmi-ct-hpd", "hdmi.ls-oe", "p02", "p03",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) "vibra", "fault2", "p06", "p07", "en-usb",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) "en-host1", "en-host2", "chg-int", "p14", "p15",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) "mic-int", "en-modem", "shdn-hs-amp",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) "chg-status+red", "green", "blue", "en-esata",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) "fault1", "p26", "p27";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) ts3a227@3b {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) compatible = "ti,ts3a227e";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) reg = <0x3b>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) interrupt-parent = <&gpio99>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) interrupts = <14 IRQ_TYPE_EDGE_RISING>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) ti,micbias = <0>; /* 2.1V */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) #include <dt-bindings/interrupt-controller/irq.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) i2c2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) /* MAX7325 with interrupt support enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) gpio@6d {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) compatible = "maxim,max7325";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) reg = <0x6d>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) gpio-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) #gpio-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) interrupt-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) #interrupt-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) interrupt-parent = <&gpio4>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) - |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) i2c3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) /* MAX7325 with interrupt support disabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) gpio@6e {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) compatible = "maxim,max7325";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) reg = <0x6e>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) gpio-controller;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #gpio-cells = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) };