1// SPDX-License-Identifier: GPL-2.0
2
3/ {
4	compatible = "nvidia,p3768-0000";
5
6	aliases {
7		serial0 = &tcu;
8	};
9
10	chosen {
11		stdout-path = "serial0:115200n8";
12	};
13
14	bus@0 {
15		i2c@3160000 {
16			status = "okay";
17
18			eeprom@57 {
19				compatible = "atmel,24c02";
20				reg = <0x57>;
21
22				label = "system";
23				vcc-supply = <&vdd_1v8_sys>;
24				address-width = <8>;
25				pagesize = <8>;
26				size = <256>;
27				read-only;
28			};
29		};
30
31		serial@31d0000 {
32			current-speed = <115200>;
33			status = "okay";
34		};
35
36		pwm@32a0000 {
37			assigned-clocks = <&bpmp TEGRA234_CLK_PWM3>;
38			assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
39			status = "okay";
40		};
41
42		padctl@3520000 {
43			status = "okay";
44
45			pads {
46				usb2 {
47					lanes {
48						usb2-0 {
49							nvidia,function = "xusb";
50							status = "okay";
51						};
52
53						usb2-1 {
54							nvidia,function = "xusb";
55							status = "okay";
56						};
57
58						usb2-2 {
59							nvidia,function = "xusb";
60							status = "okay";
61						};
62					};
63				};
64
65				usb3 {
66					lanes {
67						usb3-0 {
68							nvidia,function = "xusb";
69							status = "okay";
70						};
71
72						usb3-1 {
73							nvidia,function = "xusb";
74							status = "okay";
75						};
76					};
77				};
78			};
79
80			ports {
81				/* recovery port */
82				usb2-0 {
83					mode = "otg";
84					vbus-supply = <&vdd_5v0_sys>;
85					status = "okay";
86					usb-role-switch;
87				};
88
89				/* hub */
90				usb2-1 {
91					mode = "host";
92					vbus-supply = <&vdd_1v1_hub>;
93					status = "okay";
94				};
95
96				/* M.2 Key-E */
97				usb2-2 {
98					mode = "host";
99					vbus-supply = <&vdd_5v0_sys>;
100					status = "okay";
101				};
102
103				/* hub */
104				usb3-0 {
105					nvidia,usb2-companion = <1>;
106					status = "okay";
107				};
108
109				/* J5 */
110				usb3-1 {
111					nvidia,usb2-companion = <0>;
112					status = "okay";
113				};
114			};
115		};
116
117		usb@3550000 {
118			status = "okay";
119
120			phys = <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
121			       <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>;
122			phy-names = "usb2-0", "usb3-1";
123		};
124
125		usb@3610000 {
126			status = "okay";
127
128			phys = <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
129			       <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
130			       <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-2}>,
131			       <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-0}>,
132			       <&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>;
133			phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-0",
134				    "usb3-1";
135		};
136
137		/* C1 - M.2 Key-E */
138		pcie@14100000 {
139			status = "okay";
140
141			vddio-pex-ctl-supply = <&vdd_1v8_ao>;
142
143			phys = <&p2u_hsio_3>;
144			phy-names = "p2u-0";
145		};
146
147		/* C4 - M.2 Key-M */
148		pcie@14160000 {
149			status = "okay";
150
151			vddio-pex-ctl-supply = <&vdd_1v8_ao>;
152
153			phys = <&p2u_hsio_4>, <&p2u_hsio_5>, <&p2u_hsio_6>,
154			       <&p2u_hsio_7>;
155			phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3";
156		};
157
158		/* C8 - Ethernet */
159		pcie@140a0000 {
160			status = "okay";
161
162			num-lanes = <2>;
163
164			phys = <&p2u_gbe_2>, <&p2u_gbe_3>;
165			phy-names = "p2u-0", "p2u-1";
166
167			vddio-pex-ctl-supply = <&vdd_1v8_ao>;
168			vpcie3v3-supply = <&vdd_3v3_pcie>;
169		};
170
171		/* C7 - M.2 Key-M */
172		pcie@141e0000 {
173			status = "okay";
174
175			vddio-pex-ctl-supply = <&vdd_1v8_ao>;
176
177			phys = <&p2u_gbe_0>, <&p2u_gbe_1>;
178			phy-names = "p2u-0", "p2u-1";
179		};
180	};
181
182	gpio-keys {
183		compatible = "gpio-keys";
184
185		key-force-recovery {
186			label = "Force Recovery";
187			gpios = <&gpio TEGRA234_MAIN_GPIO(G, 0) GPIO_ACTIVE_LOW>;
188			linux,input-type = <EV_KEY>;
189			linux,code = <BTN_1>;
190		};
191
192		key-power {
193			label = "Power";
194			gpios = <&gpio_aon TEGRA234_AON_GPIO(EE, 4) GPIO_ACTIVE_LOW>;
195			linux,input-type = <EV_KEY>;
196			linux,code = <KEY_POWER>;
197			wakeup-event-action = <EV_ACT_ASSERTED>;
198			wakeup-source;
199		};
200
201		key-suspend {
202			label = "Suspend";
203			gpios = <&gpio TEGRA234_MAIN_GPIO(G, 2) GPIO_ACTIVE_LOW>;
204			linux,input-type = <EV_KEY>;
205			linux,code = <KEY_SLEEP>;
206		};
207	};
208
209	fan: pwm-fan {
210		compatible = "pwm-fan";
211		pwms = <&pwm3 0 45334>;
212		cooling-levels = <0 95 178 255>;
213		#cooling-cells = <2>;
214	};
215
216	vdd_1v8_sys: regulator-vdd-1v8-sys {
217		compatible = "regulator-fixed";
218		regulator-name = "VDD_1V8_SYS";
219		regulator-min-microvolt = <1800000>;
220		regulator-max-microvolt = <1800000>;
221		regulator-always-on;
222	};
223
224	vdd_1v1_hub: regulator-vdd-1v1-hub {
225		compatible = "regulator-fixed";
226		regulator-name = "VDD_AV10_HUB";
227		regulator-min-microvolt = <1100000>;
228		regulator-max-microvolt = <1100000>;
229		vin-supply = <&vdd_5v0_sys>;
230		regulator-always-on;
231	};
232
233	vdd_3v3_pcie: regulator-vdd-3v3-pcie {
234		compatible = "regulator-fixed";
235		regulator-name = "VDD_3V3_PCIE";
236		regulator-min-microvolt = <3300000>;
237		regulator-max-microvolt = <3300000>;
238		gpio = <&gpio_aon TEGRA234_AON_GPIO(AA, 5) GPIO_ACTIVE_HIGH>;
239		enable-active-high;
240	};
241
242	serial {
243		status = "okay";
244	};
245};
246