blob: 86eb81112232131f01e45c51dac871c781b8387e [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2019 BayLibre, SAS
4 * Author: Neil Armstrong <narmstrong@baylibre.com>
5 */
6
7#include "meson-g12b-odroid.dtsi"
8
9/ {
10 aliases {
11 rtc0 = &rtc;
12 };
13
14 dio2133: audio-amplifier-0 {
15 compatible = "simple-audio-amplifier";
16 enable-gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
17 VCC-supply = <&vcc_5v>;
18 sound-name-prefix = "U19";
19 status = "okay";
20 };
21
Tom Rini6bb92fc2024-05-20 09:54:58 -060022 hub_5v: regulator-hub-5v {
Tom Rini53633a82024-02-29 12:33:36 -050023 compatible = "regulator-fixed";
24 regulator-name = "HUB_5V";
25 regulator-min-microvolt = <5000000>;
26 regulator-max-microvolt = <5000000>;
27 vin-supply = <&vcc_5v>;
28
29 /* Connected to the Hub CHIPENABLE, LOW sets low power state */
30 gpio = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
31 enable-active-high;
32 };
33
Tom Rini6b642ac2024-10-01 12:20:28 -060034 /* USB hub supports both USB 2.0 and USB 3.0 root hub */
35 usb-hub {
36 dr_mode = "host";
37 #address-cells = <1>;
38 #size-cells = <0>;
39
40 /* 2.0 hub on port 1 */
41 hub_2_0: hub@1 {
42 compatible = "usb5e3,610";
43 reg = <1>;
44 peer-hub = <&hub_3_0>;
45 vdd-supply = <&usb_pwr_en>;
46 };
47
48 /* 3.0 hub on port 4 */
49 hub_3_0: hub@2 {
50 compatible = "usb5e3,620";
51 reg = <2>;
52 peer-hub = <&hub_2_0>;
53 reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
54 vdd-supply = <&vcc_5v>;
55 };
56 };
57
Tom Rini53633a82024-02-29 12:33:36 -050058 sound {
59 compatible = "amlogic,axg-sound-card";
60 model = "ODROID-N2";
61 audio-widgets = "Line", "Lineout";
62 audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>,
63 <&tdmin_b>, <&tdmin_c>, <&tdmin_lb>,
64 <&dio2133>;
65 audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
66 "TDMOUT_B IN 1", "FRDDR_B OUT 1",
67 "TDMOUT_B IN 2", "FRDDR_C OUT 1",
68 "TDM_B Playback", "TDMOUT_B OUT",
69 "TDMOUT_C IN 0", "FRDDR_A OUT 2",
70 "TDMOUT_C IN 1", "FRDDR_B OUT 2",
71 "TDMOUT_C IN 2", "FRDDR_C OUT 2",
72 "TDM_C Playback", "TDMOUT_C OUT",
73 "TDMIN_A IN 4", "TDM_B Loopback",
74 "TDMIN_B IN 4", "TDM_B Loopback",
75 "TDMIN_C IN 4", "TDM_B Loopback",
76 "TDMIN_LB IN 1", "TDM_B Loopback",
77 "TDMIN_A IN 5", "TDM_C Loopback",
78 "TDMIN_B IN 5", "TDM_C Loopback",
79 "TDMIN_C IN 5", "TDM_C Loopback",
80 "TDMIN_LB IN 2", "TDM_C Loopback",
81 "TODDR_A IN 0", "TDMIN_A OUT",
82 "TODDR_B IN 0", "TDMIN_A OUT",
83 "TODDR_C IN 0", "TDMIN_A OUT",
84 "TODDR_A IN 1", "TDMIN_B OUT",
85 "TODDR_B IN 1", "TDMIN_B OUT",
86 "TODDR_C IN 1", "TDMIN_B OUT",
87 "TODDR_A IN 2", "TDMIN_C OUT",
88 "TODDR_B IN 2", "TDMIN_C OUT",
89 "TODDR_C IN 2", "TDMIN_C OUT",
90 "TODDR_A IN 6", "TDMIN_LB OUT",
91 "TODDR_B IN 6", "TDMIN_LB OUT",
92 "TODDR_C IN 6", "TDMIN_LB OUT",
93 "U19 INL", "ACODEC LOLP",
94 "U19 INR", "ACODEC LORP",
95 "Lineout", "U19 OUTL",
96 "Lineout", "U19 OUTR";
97
98 assigned-clocks = <&clkc CLKID_MPLL2>,
99 <&clkc CLKID_MPLL0>,
100 <&clkc CLKID_MPLL1>;
101 assigned-clock-parents = <0>, <0>, <0>;
102 assigned-clock-rates = <294912000>,
103 <270950400>,
104 <393216000>;
105
106 dai-link-0 {
107 sound-dai = <&frddr_a>;
108 };
109
110 dai-link-1 {
111 sound-dai = <&frddr_b>;
112 };
113
114 dai-link-2 {
115 sound-dai = <&frddr_c>;
116 };
117
118 dai-link-3 {
119 sound-dai = <&toddr_a>;
120 };
121
122 dai-link-4 {
123 sound-dai = <&toddr_b>;
124 };
125
126 dai-link-5 {
127 sound-dai = <&toddr_c>;
128 };
129
130 /* 8ch hdmi interface */
131 dai-link-6 {
132 sound-dai = <&tdmif_b>;
133 dai-format = "i2s";
134 dai-tdm-slot-tx-mask-0 = <1 1>;
135 dai-tdm-slot-tx-mask-1 = <1 1>;
136 dai-tdm-slot-tx-mask-2 = <1 1>;
137 dai-tdm-slot-tx-mask-3 = <1 1>;
138 mclk-fs = <256>;
139
140 codec-0 {
141 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
142 };
143
144 codec-1 {
145 sound-dai = <&toacodec TOACODEC_IN_B>;
146 };
147 };
148
149 /* i2s jack output interface */
150 dai-link-7 {
151 sound-dai = <&tdmif_c>;
152 dai-format = "i2s";
153 dai-tdm-slot-tx-mask-0 = <1 1>;
154 mclk-fs = <256>;
155
156 codec-0 {
157 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>;
158 };
159
160 codec-1 {
161 sound-dai = <&toacodec TOACODEC_IN_C>;
162 };
163 };
164
165 /* hdmi glue */
166 dai-link-8 {
167 sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
168
169 codec {
170 sound-dai = <&hdmi_tx>;
171 };
172 };
173
174 /* acodec glue */
175 dai-link-9 {
176 sound-dai = <&toacodec TOACODEC_OUT>;
177
178 codec {
179 sound-dai = <&acodec>;
180 };
181 };
182 };
183};
184
185&acodec {
186 AVDD-supply = <&vddao_1v8>;
187 status = "okay";
188};
189
190&ethmac {
191 pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
192 pinctrl-names = "default";
193 status = "okay";
194 phy-mode = "rgmii";
195 phy-handle = <&external_phy>;
196 amlogic,tx-delay-ns = <2>;
197};
198
199&ext_mdio {
200 external_phy: ethernet-phy@0 {
201 /* Realtek RTL8211F (0x001cc916) */
202 reg = <0>;
203 max-speed = <1000>;
204
205 reset-assert-us = <10000>;
206 reset-deassert-us = <80000>;
207 reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
208
209 interrupt-parent = <&gpio_intc>;
210 /* MAC_INTR on GPIOZ_14 */
211 interrupts = <IRQID_GPIOZ_14 IRQ_TYPE_LEVEL_LOW>;
212 };
213};
214
215&gpio {
216 gpio-line-names =
217 /* GPIOZ */
218 "", "", "", "", "", "", "", "",
219 "", "", "", "", "", "", "", "",
220 /* GPIOH */
221 "", "", "", "", "", "", "", "",
222 "",
223 /* BOOT */
224 "", "", "", "", "", "", "", "",
225 "", "", "", "", "", "", "", "",
226 /* GPIOC */
227 "", "", "", "", "", "", "", "",
228 /* GPIOA */
229 "PIN_44", /* GPIOA_0 */
230 "PIN_46", /* GPIOA_1 */
231 "PIN_45", /* GPIOA_2 */
232 "PIN_47", /* GPIOA_3 */
233 "PIN_26", /* GPIOA_4 */
234 "", "", "", "", "", "",
235 "PIN_42", /* GPIOA_11 */
236 "PIN_32", /* GPIOA_12 */
237 "PIN_7", /* GPIOA_13 */
238 "PIN_27", /* GPIOA_14 */
239 "PIN_28", /* GPIOA_15 */
240 /* GPIOX */
241 "PIN_16", /* GPIOX_0 */
242 "PIN_18", /* GPIOX_1 */
243 "PIN_22", /* GPIOX_2 */
244 "PIN_11", /* GPIOX_3 */
245 "PIN_13", /* GPIOX_4 */
246 "PIN_33", /* GPIOX_5 */
247 "PIN_35", /* GPIOX_6 */
248 "PIN_15", /* GPIOX_7 */
249 "PIN_19", /* GPIOX_8 */
250 "PIN_21", /* GPIOX_9 */
251 "PIN_24", /* GPIOX_10 */
252 "PIN_23", /* GPIOX_11 */
253 "PIN_8", /* GPIOX_12 */
254 "PIN_10", /* GPIOX_13 */
255 "PIN_29", /* GPIOX_14 */
256 "PIN_31", /* GPIOX_15 */
257 "PIN_12", /* GPIOX_16 */
258 "PIN_3", /* GPIOX_17 */
259 "PIN_5", /* GPIOX_18 */
260 "PIN_36"; /* GPIOX_19 */
Tom Rini53633a82024-02-29 12:33:36 -0500261};
262
263&i2c3 {
264 status = "okay";
265 pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
266 pinctrl-names = "default";
267
268 rtc: rtc@51 {
269 compatible = "nxp,pcf8563";
270 reg = <0x51>;
271 wakeup-source;
272 };
273};
274
275&ir {
276 status = "okay";
277 pinctrl-0 = <&remote_input_ao_pins>;
278 pinctrl-names = "default";
279 linux,rc-map-name = "rc-odroid";
280};
281
282/*
283 * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins
284 * and eMMC Data 4 to 7 pins.
285 * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
286 * and change bus-width to 4 then spifc can be enabled.
287 * The SW1 slide should also be set to the correct position.
288 */
289&spifc {
290 status = "disabled";
291 pinctrl-0 = <&nor_pins>;
292 pinctrl-names = "default";
293
294 mx25u64: flash@0 {
295 #address-cells = <1>;
296 #size-cells = <1>;
297 compatible = "mxicy,mx25u6435f", "jedec,spi-nor";
298 reg = <0>;
299 spi-max-frequency = <104000000>;
300 };
301};
302
303&toacodec {
304 status = "okay";
305};
306
307&usb {
308 vbus-supply = <&usb_pwr_en>;
309};
310
311&usb2_phy1 {
312 /* Enable the hub which is connected to this port */
313 phy-supply = <&hub_5v>;
314};