blob: 1745e28b31105252e5b4b79dfe142f370c5d7294 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/usb/ti,tps6598x.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Texas Instruments 6598x Type-C Port Switch and Power Delivery controller
8
9maintainers:
10 - Bryan O'Donoghue <bryan.odonoghue@linaro.org>
11
12description: |
13 Texas Instruments 6598x Type-C Port Switch and Power Delivery controller
14
15 A variant of this controller known as Apple CD321x or Apple ACE is also
16 present on hardware with Apple SoCs such as the M1.
17
18properties:
19 compatible:
20 enum:
21 - ti,tps6598x
22 - apple,cd321x
23 - ti,tps25750
24
25 reg:
26 minItems: 1
27 items:
28 - description: main PD controller address
29 - description: |
30 I2C slave address field in PBMs input data
31 which is used as the device address when writing the
32 patch for TPS25750.
33 The patch address can be any value except 0x00, 0x20,
34 0x21, 0x22, and 0x23
35
36 reg-names:
37 items:
38 - const: main
39 - const: patch-address
40
Tom Rini93743d22024-04-01 09:08:13 -040041 reset-gpios:
42 description: GPIO used for the HRESET pin.
43 maxItems: 1
44
Tom Rini53633a82024-02-29 12:33:36 -050045 wakeup-source: true
46
47 interrupts:
48 maxItems: 1
49
50 interrupt-names:
51 items:
52 - const: irq
53
54 connector:
55 $ref: /schemas/connector/usb-connector.yaml#
56
57 firmware-name:
58 description: |
59 Should contain the name of the default patch binary
60 file located on the firmware search path which is
61 used to switch the controller into APP mode.
62 This is used when tps25750 doesn't have an EEPROM
63 connected to it.
64 maxItems: 1
65
66required:
67 - compatible
68 - reg
69
70allOf:
71 - if:
72 properties:
73 compatible:
74 contains:
75 const: ti,tps25750
76 then:
77 properties:
78 reg:
79 maxItems: 2
80
81 connector:
82 required:
83 - data-role
84
85 required:
86 - connector
87 - reg-names
88 else:
89 properties:
90 reg:
91 maxItems: 1
92
93additionalProperties: false
94
95examples:
96 - |
Tom Rini93743d22024-04-01 09:08:13 -040097 #include <dt-bindings/gpio/gpio.h>
Tom Rini53633a82024-02-29 12:33:36 -050098 #include <dt-bindings/interrupt-controller/irq.h>
99 i2c {
100 #address-cells = <1>;
101 #size-cells = <0>;
102
103 tps6598x: tps6598x@38 {
104 compatible = "ti,tps6598x";
105 reg = <0x38>;
106 wakeup-source;
107
108 interrupt-parent = <&msmgpio>;
109 interrupts = <107 IRQ_TYPE_LEVEL_LOW>;
110 interrupt-names = "irq";
111
112 pinctrl-names = "default";
113 pinctrl-0 = <&typec_pins>;
Tom Rini93743d22024-04-01 09:08:13 -0400114 reset-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
Tom Rini53633a82024-02-29 12:33:36 -0500115
116 typec_con: connector {
117 compatible = "usb-c-connector";
118 label = "USB-C";
119 port {
120 typec_ep: endpoint {
121 remote-endpoint = <&otg_ep>;
122 };
123 };
124 };
125 };
126 };
127
128 - |
129 #include <dt-bindings/interrupt-controller/irq.h>
130 i2c {
131 #address-cells = <1>;
132 #size-cells = <0>;
133
134 typec@21 {
135 compatible = "ti,tps25750";
136 reg = <0x21>, <0x0f>;
137 reg-names = "main", "patch-address";
138
139 interrupt-parent = <&msmgpio>;
140 interrupts = <100 IRQ_TYPE_LEVEL_LOW>;
141 interrupt-names = "irq";
142 firmware-name = "tps25750.bin";
143
144 pinctrl-names = "default";
145 pinctrl-0 = <&typec_pins>;
146
147 typec_con0: connector {
148 compatible = "usb-c-connector";
149 label = "USB-C";
150 data-role = "dual";
151 port {
152 typec_ep0: endpoint {
153 remote-endpoint = <&otg_ep>;
154 };
155 };
156 };
157 };
158 };
159...