1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
3 * Copyright (c) 2019 BayLibre, SAS
4 * Author: Neil Armstrong <narmstrong@baylibre.com>
7 #include <dt-bindings/input/input.h>
8 #include <dt-bindings/gpio/meson-g12a-gpio.h>
9 #include <dt-bindings/sound/meson-g12a-toacodec.h>
10 #include <dt-bindings/sound/meson-g12a-tohdmitx.h>
20 dio2133: audio-amplifier-0 {
21 compatible = "simple-audio-amplifier";
22 enable-gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
23 VCC-supply = <&vcc_5v>;
24 sound-name-prefix = "U19";
29 stdout-path = "serial0:115200n8";
33 device_type = "memory";
34 reg = <0x0 0x0 0x0 0x40000000>;
37 emmc_pwrseq: emmc-pwrseq {
38 compatible = "mmc-pwrseq-emmc";
39 reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
43 compatible = "gpio-leds";
47 gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
48 linux,default-trigger = "heartbeat";
52 tflash_vdd: regulator-tflash_vdd {
53 compatible = "regulator-fixed";
55 regulator-name = "TFLASH_VDD";
56 regulator-min-microvolt = <3300000>;
57 regulator-max-microvolt = <3300000>;
59 gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>;
64 tf_io: gpio-regulator-tf_io {
65 compatible = "regulator-gpio";
67 regulator-name = "TF_IO";
68 regulator-min-microvolt = <1800000>;
69 regulator-max-microvolt = <3300000>;
71 gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
78 flash_1v8: regulator-flash_1v8 {
79 compatible = "regulator-fixed";
80 regulator-name = "FLASH_1V8";
81 regulator-min-microvolt = <1800000>;
82 regulator-max-microvolt = <1800000>;
83 vin-supply = <&vcc_3v3>;
87 main_12v: regulator-main_12v {
88 compatible = "regulator-fixed";
89 regulator-name = "12V";
90 regulator-min-microvolt = <12000000>;
91 regulator-max-microvolt = <12000000>;
95 vcc_5v: regulator-vcc_5v {
96 compatible = "regulator-fixed";
97 regulator-name = "5V";
98 regulator-min-microvolt = <5000000>;
99 regulator-max-microvolt = <5000000>;
101 vin-supply = <&main_12v>;
102 gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
106 vcc_1v8: regulator-vcc_1v8 {
107 compatible = "regulator-fixed";
108 regulator-name = "VCC_1V8";
109 regulator-min-microvolt = <1800000>;
110 regulator-max-microvolt = <1800000>;
111 vin-supply = <&vcc_3v3>;
115 vcc_3v3: regulator-vcc_3v3 {
116 compatible = "regulator-fixed";
117 regulator-name = "VCC_3V3";
118 regulator-min-microvolt = <3300000>;
119 regulator-max-microvolt = <3300000>;
120 vin-supply = <&vddao_3v3>;
122 /* FIXME: actually controlled by VDDCPU_B_EN */
125 vddcpu_a: regulator-vddcpu-a {
127 * MP8756GD Regulator.
129 compatible = "pwm-regulator";
131 regulator-name = "VDDCPU_A";
132 regulator-min-microvolt = <721000>;
133 regulator-max-microvolt = <1022000>;
135 pwm-supply = <&main_12v>;
137 pwms = <&pwm_ab 0 1250 0>;
138 pwm-dutycycle-range = <100 0>;
144 vddcpu_b: regulator-vddcpu-b {
146 * Silergy SY8120B1ABC Regulator.
148 compatible = "pwm-regulator";
150 regulator-name = "VDDCPU_B";
151 regulator-min-microvolt = <721000>;
152 regulator-max-microvolt = <1022000>;
154 pwm-supply = <&main_12v>;
156 pwms = <&pwm_AO_cd 1 1250 0>;
157 pwm-dutycycle-range = <100 0>;
163 hub_5v: regulator-hub_5v {
164 compatible = "regulator-fixed";
165 regulator-name = "HUB_5V";
166 regulator-min-microvolt = <5000000>;
167 regulator-max-microvolt = <5000000>;
168 vin-supply = <&vcc_5v>;
170 /* Connected to the Hub CHIPENABLE, LOW sets low power state */
171 gpio = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
175 usb_pwr_en: regulator-usb_pwr_en {
176 compatible = "regulator-fixed";
177 regulator-name = "USB_PWR_EN";
178 regulator-min-microvolt = <5000000>;
179 regulator-max-microvolt = <5000000>;
180 vin-supply = <&vcc_5v>;
182 /* Connected to the microUSB port power enable */
183 gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;
187 vddao_1v8: regulator-vddao_1v8 {
188 compatible = "regulator-fixed";
189 regulator-name = "VDDAO_1V8";
190 regulator-min-microvolt = <1800000>;
191 regulator-max-microvolt = <1800000>;
192 vin-supply = <&vddao_3v3>;
196 vddao_3v3: regulator-vddao_3v3 {
197 compatible = "regulator-fixed";
198 regulator-name = "VDDAO_3V3";
199 regulator-min-microvolt = <3300000>;
200 regulator-max-microvolt = <3300000>;
201 vin-supply = <&main_12v>;
206 compatible = "hdmi-connector";
210 hdmi_connector_in: endpoint {
211 remote-endpoint = <&hdmi_tx_tmds_out>;
217 compatible = "amlogic,axg-sound-card";
219 audio-widgets = "Line", "Lineout";
220 audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>,
221 <&tdmin_b>, <&tdmin_c>, <&tdmin_lb>,
223 audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
224 "TDMOUT_B IN 1", "FRDDR_B OUT 1",
225 "TDMOUT_B IN 2", "FRDDR_C OUT 1",
226 "TDM_B Playback", "TDMOUT_B OUT",
227 "TDMOUT_C IN 0", "FRDDR_A OUT 2",
228 "TDMOUT_C IN 1", "FRDDR_B OUT 2",
229 "TDMOUT_C IN 2", "FRDDR_C OUT 2",
230 "TDM_C Playback", "TDMOUT_C OUT",
231 "TDMIN_A IN 4", "TDM_B Loopback",
232 "TDMIN_B IN 4", "TDM_B Loopback",
233 "TDMIN_C IN 4", "TDM_B Loopback",
234 "TDMIN_LB IN 1", "TDM_B Loopback",
235 "TDMIN_A IN 5", "TDM_C Loopback",
236 "TDMIN_B IN 5", "TDM_C Loopback",
237 "TDMIN_C IN 5", "TDM_C Loopback",
238 "TDMIN_LB IN 2", "TDM_C Loopback",
239 "TODDR_A IN 0", "TDMIN_A OUT",
240 "TODDR_B IN 0", "TDMIN_A OUT",
241 "TODDR_C IN 0", "TDMIN_A OUT",
242 "TODDR_A IN 1", "TDMIN_B OUT",
243 "TODDR_B IN 1", "TDMIN_B OUT",
244 "TODDR_C IN 1", "TDMIN_B OUT",
245 "TODDR_A IN 2", "TDMIN_C OUT",
246 "TODDR_B IN 2", "TDMIN_C OUT",
247 "TODDR_C IN 2", "TDMIN_C OUT",
248 "TODDR_A IN 6", "TDMIN_LB OUT",
249 "TODDR_B IN 6", "TDMIN_LB OUT",
250 "TODDR_C IN 6", "TDMIN_LB OUT",
251 "U19 INL", "ACODEC LOLP",
252 "U19 INR", "ACODEC LORP",
253 "Lineout", "U19 OUTL",
254 "Lineout", "U19 OUTR";
256 assigned-clocks = <&clkc CLKID_MPLL2>,
259 assigned-clock-parents = <0>, <0>, <0>;
260 assigned-clock-rates = <294912000>,
266 sound-dai = <&frddr_a>;
270 sound-dai = <&frddr_b>;
274 sound-dai = <&frddr_c>;
278 sound-dai = <&toddr_a>;
282 sound-dai = <&toddr_b>;
286 sound-dai = <&toddr_c>;
289 /* 8ch hdmi interface */
291 sound-dai = <&tdmif_b>;
293 dai-tdm-slot-tx-mask-0 = <1 1>;
294 dai-tdm-slot-tx-mask-1 = <1 1>;
295 dai-tdm-slot-tx-mask-2 = <1 1>;
296 dai-tdm-slot-tx-mask-3 = <1 1>;
300 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
304 sound-dai = <&toacodec TOACODEC_IN_B>;
308 /* i2s jack output interface */
310 sound-dai = <&tdmif_c>;
312 dai-tdm-slot-tx-mask-0 = <1 1>;
316 sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>;
320 sound-dai = <&toacodec TOACODEC_IN_C>;
326 sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
329 sound-dai = <&hdmi_tx>;
335 sound-dai = <&toacodec TOACODEC_OUT>;
338 sound-dai = <&acodec>;
345 AVDD-supply = <&vddao_1v8>;
354 pinctrl-0 = <&cec_ao_a_h_pins>;
355 pinctrl-names = "default";
357 hdmi-phandle = <&hdmi_tx>;
361 pinctrl-0 = <&cec_ao_b_h_pins>;
362 pinctrl-names = "default";
364 hdmi-phandle = <&hdmi_tx>;
372 cpu-supply = <&vddcpu_b>;
373 operating-points-v2 = <&cpu_opp_table_0>;
374 clocks = <&clkc CLKID_CPU_CLK>;
375 clock-latency = <50000>;
379 cpu-supply = <&vddcpu_b>;
380 operating-points-v2 = <&cpu_opp_table_0>;
381 clocks = <&clkc CLKID_CPU_CLK>;
382 clock-latency = <50000>;
386 cpu-supply = <&vddcpu_a>;
387 operating-points-v2 = <&cpub_opp_table_1>;
388 clocks = <&clkc CLKID_CPUB_CLK>;
389 clock-latency = <50000>;
393 cpu-supply = <&vddcpu_a>;
394 operating-points-v2 = <&cpub_opp_table_1>;
395 clocks = <&clkc CLKID_CPUB_CLK>;
396 clock-latency = <50000>;
400 cpu-supply = <&vddcpu_a>;
401 operating-points-v2 = <&cpub_opp_table_1>;
402 clocks = <&clkc CLKID_CPUB_CLK>;
403 clock-latency = <50000>;
407 cpu-supply = <&vddcpu_a>;
408 operating-points-v2 = <&cpub_opp_table_1>;
409 clocks = <&clkc CLKID_CPUB_CLK>;
410 clock-latency = <50000>;
414 external_phy: ethernet-phy@0 {
415 /* Realtek RTL8211F (0x001cc916) */
419 reset-assert-us = <10000>;
420 reset-deassert-us = <80000>;
421 reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
423 interrupt-parent = <&gpio_intc>;
424 /* MAC_INTR on GPIOZ_14 */
425 interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
430 pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
431 pinctrl-names = "default";
434 phy-handle = <&external_phy>;
435 amlogic,tx-delay-ns = <2>;
453 "", "", "", "", "", "", "", "",
454 "", "", "", "", "", "", "", "",
456 "", "", "", "", "", "", "", "",
459 "", "", "", "", "", "", "", "",
460 "", "", "", "", "", "", "", "",
462 "", "", "", "", "", "", "", "",
464 "PIN_44", /* GPIOA_0 */
465 "PIN_46", /* GPIOA_1 */
466 "PIN_45", /* GPIOA_2 */
467 "PIN_47", /* GPIOA_3 */
468 "PIN_26", /* GPIOA_4 */
469 "", "", "", "", "", "",
470 "PIN_42", /* GPIOA_11 */
471 "PIN_32", /* GPIOA_12 */
472 "PIN_7", /* GPIOA_13 */
473 "PIN_27", /* GPIOA_14 */
474 "PIN_28", /* GPIOA_15 */
476 "PIN_16", /* GPIOX_0 */
477 "PIN_18", /* GPIOX_1 */
478 "PIN_22", /* GPIOX_2 */
479 "PIN_11", /* GPIOX_3 */
480 "PIN_13", /* GPIOX_4 */
481 "PIN_33", /* GPIOX_5 */
482 "PIN_35", /* GPIOX_6 */
483 "PIN_15", /* GPIOX_7 */
484 "PIN_19", /* GPIOX_8 */
485 "PIN_21", /* GPIOX_9 */
486 "PIN_24", /* GPIOX_10 */
487 "PIN_23", /* GPIOX_11 */
488 "PIN_8", /* GPIOX_12 */
489 "PIN_10", /* GPIOX_13 */
490 "PIN_29", /* GPIOX_14 */
491 "PIN_31", /* GPIOX_15 */
492 "PIN_12", /* GPIOX_16 */
493 "PIN_3", /* GPIOX_17 */
494 "PIN_5", /* GPIOX_18 */
495 "PIN_36"; /* GPIOX_19 */
497 * WARNING: The USB Hub on the Odroid-N2 needs a reset signal
498 * to be turned high in order to be detected by the USB Controller
499 * This signal should be handled by a USB specific power sequence
500 * in order to reset the Hub when USB bus is powered down.
504 gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
506 line-name = "usb-hub-reset";
512 pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
513 pinctrl-names = "default";
514 hdmi-supply = <&vcc_5v>;
518 hdmi_tx_tmds_out: endpoint {
519 remote-endpoint = <&hdmi_connector_in>;
525 pinctrl-0 = <&remote_input_ao_pins>;
526 pinctrl-names = "default";
527 linux,rc-map-name = "rc-odroid";
532 pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
533 pinctrl-names = "default";
536 compatible = "nxp,pcf8563";
543 pinctrl-0 = <&pwm_a_e_pins>;
544 pinctrl-names = "default";
546 clock-names = "clkin0";
551 pinctrl-0 = <&pwm_ao_d_e_pins>;
552 pinctrl-names = "default";
554 clock-names = "clkin1";
560 vref-supply = <&vddao_1v8>;
566 pinctrl-0 = <&sdcard_c_pins>;
567 pinctrl-1 = <&sdcard_clk_gate_c_pins>;
568 pinctrl-names = "default", "clk-gate";
572 max-frequency = <50000000>;
575 cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
576 vmmc-supply = <&tflash_vdd>;
577 vqmmc-supply = <&tf_io>;
584 pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
585 pinctrl-1 = <&emmc_clk_gate_pins>;
586 pinctrl-names = "default", "clk-gate";
592 max-frequency = <200000000>;
595 mmc-pwrseq = <&emmc_pwrseq>;
596 vmmc-supply = <&vcc_3v3>;
597 vqmmc-supply = <&flash_1v8>;
601 * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins
602 * and eMMC Data 4 to 7 pins.
603 * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
604 * and change bus-width to 4 then spifc can be enabled.
605 * The SW1 slide should also be set to the correct position.
609 pinctrl-0 = <&nor_pins>;
610 pinctrl-names = "default";
613 #address-cells = <1>;
615 compatible = "mxicy,mx25u6435f", "jedec,spi-nor";
617 spi-max-frequency = <104000000>;
675 pinctrl-0 = <&uart_ao_a_pins>;
676 pinctrl-names = "default";
681 vbus-supply = <&usb_pwr_en>;
685 phy-supply = <&vcc_5v>;
689 /* Enable the hub which is connected to this port */
690 phy-supply = <&hub_5v>;