blob: 3bca8023638d4b8b8bd32dd3c5846c64dd5e645d [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
Tom Rini9c8af152024-12-24 12:03:04 -060098 clocks = <&clkc CLKID_MPLL2>,
99 <&clkc CLKID_MPLL0>,
100 <&clkc CLKID_MPLL1>;
101
Tom Rini53633a82024-02-29 12:33:36 -0500102 assigned-clocks = <&clkc CLKID_MPLL2>,
103 <&clkc CLKID_MPLL0>,
104 <&clkc CLKID_MPLL1>;
105 assigned-clock-parents = <0>, <0>, <0>;
106 assigned-clock-rates = <294912000>,
107 <270950400>,
108 <393216000>;
109
110 dai-link-0 {
111 sound-dai = <&frddr_a>;
112 };
113
114 dai-link-1 {
115 sound-dai = <&frddr_b>;
116 };
117
118 dai-link-2 {
119 sound-dai = <&frddr_c>;
120 };
121
122 dai-link-3 {
123 sound-dai = <&toddr_a>;
124 };
125
126 dai-link-4 {
127 sound-dai = <&toddr_b>;
128 };
129
130 dai-link-5 {
131 sound-dai = <&toddr_c>;
132 };
133
134 /* 8ch hdmi interface */
135 dai-link-6 {
136 sound-dai = <&tdmif_b>;
137 dai-format = "i2s";
138 dai-tdm-slot-tx-mask-0 = <1 1>;
139 dai-tdm-slot-tx-mask-1 = <1 1>;
140 dai-tdm-slot-tx-mask-2 = <1 1>;
141 dai-tdm-slot-tx-mask-3 = <1 1>;
142 mclk-fs = <256>;
143
144 codec-0 {
145 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
146 };
147
148 codec-1 {
149 sound-dai = <&toacodec TOACODEC_IN_B>;
150 };
151 };
152
153 /* i2s jack output interface */
154 dai-link-7 {
155 sound-dai = <&tdmif_c>;
156 dai-format = "i2s";
157 dai-tdm-slot-tx-mask-0 = <1 1>;
158 mclk-fs = <256>;
159
160 codec-0 {
161 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>;
162 };
163
164 codec-1 {
165 sound-dai = <&toacodec TOACODEC_IN_C>;
166 };
167 };
168
169 /* hdmi glue */
170 dai-link-8 {
171 sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
172
173 codec {
174 sound-dai = <&hdmi_tx>;
175 };
176 };
177
178 /* acodec glue */
179 dai-link-9 {
180 sound-dai = <&toacodec TOACODEC_OUT>;
181
182 codec {
183 sound-dai = <&acodec>;
184 };
185 };
186 };
187};
188
189&acodec {
190 AVDD-supply = <&vddao_1v8>;
191 status = "okay";
192};
193
194&ethmac {
195 pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
196 pinctrl-names = "default";
197 status = "okay";
198 phy-mode = "rgmii";
199 phy-handle = <&external_phy>;
200 amlogic,tx-delay-ns = <2>;
201};
202
203&ext_mdio {
204 external_phy: ethernet-phy@0 {
205 /* Realtek RTL8211F (0x001cc916) */
206 reg = <0>;
207 max-speed = <1000>;
208
209 reset-assert-us = <10000>;
210 reset-deassert-us = <80000>;
211 reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
212
213 interrupt-parent = <&gpio_intc>;
214 /* MAC_INTR on GPIOZ_14 */
215 interrupts = <IRQID_GPIOZ_14 IRQ_TYPE_LEVEL_LOW>;
216 };
217};
218
219&gpio {
220 gpio-line-names =
221 /* GPIOZ */
222 "", "", "", "", "", "", "", "",
223 "", "", "", "", "", "", "", "",
224 /* GPIOH */
225 "", "", "", "", "", "", "", "",
226 "",
227 /* BOOT */
228 "", "", "", "", "", "", "", "",
229 "", "", "", "", "", "", "", "",
230 /* GPIOC */
231 "", "", "", "", "", "", "", "",
232 /* GPIOA */
233 "PIN_44", /* GPIOA_0 */
234 "PIN_46", /* GPIOA_1 */
235 "PIN_45", /* GPIOA_2 */
236 "PIN_47", /* GPIOA_3 */
237 "PIN_26", /* GPIOA_4 */
238 "", "", "", "", "", "",
239 "PIN_42", /* GPIOA_11 */
240 "PIN_32", /* GPIOA_12 */
241 "PIN_7", /* GPIOA_13 */
242 "PIN_27", /* GPIOA_14 */
243 "PIN_28", /* GPIOA_15 */
244 /* GPIOX */
245 "PIN_16", /* GPIOX_0 */
246 "PIN_18", /* GPIOX_1 */
247 "PIN_22", /* GPIOX_2 */
248 "PIN_11", /* GPIOX_3 */
249 "PIN_13", /* GPIOX_4 */
250 "PIN_33", /* GPIOX_5 */
251 "PIN_35", /* GPIOX_6 */
252 "PIN_15", /* GPIOX_7 */
253 "PIN_19", /* GPIOX_8 */
254 "PIN_21", /* GPIOX_9 */
255 "PIN_24", /* GPIOX_10 */
256 "PIN_23", /* GPIOX_11 */
257 "PIN_8", /* GPIOX_12 */
258 "PIN_10", /* GPIOX_13 */
259 "PIN_29", /* GPIOX_14 */
260 "PIN_31", /* GPIOX_15 */
261 "PIN_12", /* GPIOX_16 */
262 "PIN_3", /* GPIOX_17 */
263 "PIN_5", /* GPIOX_18 */
264 "PIN_36"; /* GPIOX_19 */
Tom Rini53633a82024-02-29 12:33:36 -0500265};
266
267&i2c3 {
268 status = "okay";
269 pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
270 pinctrl-names = "default";
271
272 rtc: rtc@51 {
273 compatible = "nxp,pcf8563";
274 reg = <0x51>;
275 wakeup-source;
276 };
277};
278
279&ir {
280 status = "okay";
281 pinctrl-0 = <&remote_input_ao_pins>;
282 pinctrl-names = "default";
283 linux,rc-map-name = "rc-odroid";
284};
285
286/*
287 * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins
288 * and eMMC Data 4 to 7 pins.
289 * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
290 * and change bus-width to 4 then spifc can be enabled.
291 * The SW1 slide should also be set to the correct position.
292 */
293&spifc {
294 status = "disabled";
295 pinctrl-0 = <&nor_pins>;
296 pinctrl-names = "default";
297
298 mx25u64: flash@0 {
299 #address-cells = <1>;
300 #size-cells = <1>;
301 compatible = "mxicy,mx25u6435f", "jedec,spi-nor";
302 reg = <0>;
303 spi-max-frequency = <104000000>;
304 };
305};
306
307&toacodec {
308 status = "okay";
309};
310
311&usb {
312 vbus-supply = <&usb_pwr_en>;
313};
314
315&usb2_phy1 {
316 /* Enable the hub which is connected to this port */
317 phy-supply = <&hub_5v>;
318};