0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/gpio/gpio-pca95xx.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006
0007 title: NXP PCA95xx I2C GPIO multiplexer
0008
0009 maintainers:
0010 - Krzysztof Kozlowski <krzk@kernel.org>
0011
0012 description: |+
0013 Bindings for the family of I2C GPIO multiplexers/expanders: NXP PCA95xx,
0014 Maxim MAX73xx
0015
0016 properties:
0017 compatible:
0018 enum:
0019 - exar,xra1202
0020 - maxim,max7310
0021 - maxim,max7312
0022 - maxim,max7313
0023 - maxim,max7315
0024 - maxim,max7319
0025 - maxim,max7320
0026 - maxim,max7321
0027 - maxim,max7322
0028 - maxim,max7323
0029 - maxim,max7324
0030 - maxim,max7325
0031 - maxim,max7326
0032 - maxim,max7327
0033 - nxp,pca6408
0034 - nxp,pca6416
0035 - nxp,pca9505
0036 - nxp,pca9506
0037 - nxp,pca9534
0038 - nxp,pca9535
0039 - nxp,pca9536
0040 - nxp,pca9537
0041 - nxp,pca9538
0042 - nxp,pca9539
0043 - nxp,pca9554
0044 - nxp,pca9555
0045 - nxp,pca9556
0046 - nxp,pca9557
0047 - nxp,pca9574
0048 - nxp,pca9575
0049 - nxp,pca9698
0050 - nxp,pcal6416
0051 - nxp,pcal6524
0052 - nxp,pcal9535
0053 - nxp,pcal9554b
0054 - nxp,pcal9555a
0055 - onnn,cat9554
0056 - onnn,pca9654
0057 - ti,pca6107
0058 - ti,pca9536
0059 - ti,tca6408
0060 - ti,tca6416
0061 - ti,tca6424
0062 - ti,tca9539
0063 - ti,tca9554
0064
0065 reg:
0066 maxItems: 1
0067
0068 gpio-controller: true
0069
0070 '#gpio-cells':
0071 const: 2
0072
0073 gpio-line-names:
0074 minItems: 1
0075 maxItems: 40
0076
0077 interrupts:
0078 maxItems: 1
0079
0080 interrupt-controller: true
0081
0082 '#interrupt-cells':
0083 const: 2
0084
0085 reset-gpios:
0086 maxItems: 1
0087 description:
0088 GPIO specification for the RESET input. This is an active low signal to
0089 the PCA953x. Not valid for Maxim MAX732x devices.
0090
0091 vcc-supply:
0092 description:
0093 Optional power supply. Not valid for Maxim MAX732x devices.
0094
0095 wakeup-source:
0096 $ref: /schemas/types.yaml#/definitions/flag
0097
0098 patternProperties:
0099 "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$":
0100 type: object
0101 properties:
0102 gpio-hog: true
0103 gpios: true
0104 input: true
0105 output-high: true
0106 output-low: true
0107 line-name: true
0108
0109 required:
0110 - gpio-hog
0111 - gpios
0112
0113 additionalProperties: false
0114
0115 required:
0116 - compatible
0117 - reg
0118 - gpio-controller
0119 - "#gpio-cells"
0120
0121 additionalProperties: false
0122
0123 allOf:
0124 - if:
0125 properties:
0126 compatible:
0127 contains:
0128 enum:
0129 - maxim,max7320
0130 - maxim,max7321
0131 - maxim,max7322
0132 - maxim,max7323
0133 - maxim,max7324
0134 - maxim,max7325
0135 - maxim,max7326
0136 - maxim,max7327
0137 then:
0138 properties:
0139 reset-gpios: false
0140 vcc-supply: false
0141
0142 examples:
0143 - |
0144 #include <dt-bindings/gpio/gpio.h>
0145 #include <dt-bindings/interrupt-controller/irq.h>
0146
0147 i2c0 {
0148 #address-cells = <1>;
0149 #size-cells = <0>;
0150
0151 gpio@20 {
0152 compatible = "nxp,pca9505";
0153 reg = <0x20>;
0154 pinctrl-names = "default";
0155 pinctrl-0 = <&pinctrl_pca9505>;
0156 gpio-controller;
0157 #gpio-cells = <2>;
0158 interrupt-parent = <&gpio3>;
0159 interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
0160
0161 usb3-sata-sel-hog {
0162 gpio-hog;
0163 gpios = <4 GPIO_ACTIVE_HIGH>;
0164 output-low;
0165 line-name = "usb3_sata_sel";
0166 };
0167 };
0168 };
0169
0170 - |
0171 #include <dt-bindings/interrupt-controller/irq.h>
0172
0173 i2c1 {
0174 #address-cells = <1>;
0175 #size-cells = <0>;
0176
0177 gpio99: gpio@22 {
0178 compatible = "nxp,pcal6524";
0179 reg = <0x22>;
0180 interrupt-parent = <&gpio6>;
0181 interrupts = <1 IRQ_TYPE_EDGE_FALLING>; /* gpio6_161 */
0182 interrupt-controller;
0183 #interrupt-cells = <2>;
0184 vcc-supply = <&vdds_1v8_main>;
0185 gpio-controller;
0186 #gpio-cells = <2>;
0187 gpio-line-names = "hdmi-ct-hpd", "hdmi.ls-oe", "p02", "p03",
0188 "vibra", "fault2", "p06", "p07", "en-usb",
0189 "en-host1", "en-host2", "chg-int", "p14", "p15",
0190 "mic-int", "en-modem", "shdn-hs-amp",
0191 "chg-status+red", "green", "blue", "en-esata",
0192 "fault1", "p26", "p27";
0193 };
0194 };
0195
0196 - |
0197 #include <dt-bindings/interrupt-controller/irq.h>
0198
0199 i2c2 {
0200 #address-cells = <1>;
0201 #size-cells = <0>;
0202
0203 /* MAX7325 with interrupt support enabled */
0204 gpio@6d {
0205 compatible = "maxim,max7325";
0206 reg = <0x6d>;
0207 gpio-controller;
0208 #gpio-cells = <2>;
0209 interrupt-controller;
0210 #interrupt-cells = <2>;
0211 interrupt-parent = <&gpio4>;
0212 interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
0213 };
0214 };
0215
0216 - |
0217 i2c3 {
0218 #address-cells = <1>;
0219 #size-cells = <0>;
0220
0221 /* MAX7325 with interrupt support disabled */
0222 gpio@6e {
0223 compatible = "maxim,max7325";
0224 reg = <0x6e>;
0225 gpio-controller;
0226 #gpio-cells = <2>;
0227 };
0228 };