18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 28c2ecf20Sopenharmony_ci// Copyright (C) 2019 Ondřej Jirman <megous@megous.com> 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci/dts-v1/; 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include "sun50i-h6.dtsi" 78c2ecf20Sopenharmony_ci#include "sun50i-h6-cpu-opp.dtsi" 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <dt-bindings/gpio/gpio.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci/ { 128c2ecf20Sopenharmony_ci model = "OrangePi 3"; 138c2ecf20Sopenharmony_ci compatible = "xunlong,orangepi-3", "allwinner,sun50i-h6"; 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci aliases { 168c2ecf20Sopenharmony_ci serial0 = &uart0; 178c2ecf20Sopenharmony_ci serial1 = &uart1; 188c2ecf20Sopenharmony_ci }; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci chosen { 218c2ecf20Sopenharmony_ci stdout-path = "serial0:115200n8"; 228c2ecf20Sopenharmony_ci }; 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci connector { 258c2ecf20Sopenharmony_ci compatible = "hdmi-connector"; 268c2ecf20Sopenharmony_ci ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */ 278c2ecf20Sopenharmony_ci type = "a"; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci port { 308c2ecf20Sopenharmony_ci hdmi_con_in: endpoint { 318c2ecf20Sopenharmony_ci remote-endpoint = <&hdmi_out_con>; 328c2ecf20Sopenharmony_ci }; 338c2ecf20Sopenharmony_ci }; 348c2ecf20Sopenharmony_ci }; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci ext_osc32k: ext_osc32k_clk { 378c2ecf20Sopenharmony_ci #clock-cells = <0>; 388c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 398c2ecf20Sopenharmony_ci clock-frequency = <32768>; 408c2ecf20Sopenharmony_ci clock-output-names = "ext_osc32k"; 418c2ecf20Sopenharmony_ci }; 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci leds { 448c2ecf20Sopenharmony_ci compatible = "gpio-leds"; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci power { 478c2ecf20Sopenharmony_ci label = "orangepi:red:power"; 488c2ecf20Sopenharmony_ci gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ 498c2ecf20Sopenharmony_ci default-state = "on"; 508c2ecf20Sopenharmony_ci }; 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci status { 538c2ecf20Sopenharmony_ci label = "orangepi:green:status"; 548c2ecf20Sopenharmony_ci gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */ 558c2ecf20Sopenharmony_ci }; 568c2ecf20Sopenharmony_ci }; 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci reg_vcc5v: vcc5v { 598c2ecf20Sopenharmony_ci /* board wide 5V supply directly from the DC jack */ 608c2ecf20Sopenharmony_ci compatible = "regulator-fixed"; 618c2ecf20Sopenharmony_ci regulator-name = "vcc-5v"; 628c2ecf20Sopenharmony_ci regulator-min-microvolt = <5000000>; 638c2ecf20Sopenharmony_ci regulator-max-microvolt = <5000000>; 648c2ecf20Sopenharmony_ci regulator-always-on; 658c2ecf20Sopenharmony_ci }; 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci reg_vcc33_wifi: vcc33-wifi { 688c2ecf20Sopenharmony_ci /* Always on 3.3V regulator for WiFi and BT */ 698c2ecf20Sopenharmony_ci compatible = "regulator-fixed"; 708c2ecf20Sopenharmony_ci regulator-name = "vcc33-wifi"; 718c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 728c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 738c2ecf20Sopenharmony_ci regulator-always-on; 748c2ecf20Sopenharmony_ci vin-supply = <®_vcc5v>; 758c2ecf20Sopenharmony_ci }; 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci reg_vcc_wifi_io: vcc-wifi-io { 788c2ecf20Sopenharmony_ci /* Always on 1.8V/300mA regulator for WiFi and BT IO */ 798c2ecf20Sopenharmony_ci compatible = "regulator-fixed"; 808c2ecf20Sopenharmony_ci regulator-name = "vcc-wifi-io"; 818c2ecf20Sopenharmony_ci regulator-min-microvolt = <1800000>; 828c2ecf20Sopenharmony_ci regulator-max-microvolt = <1800000>; 838c2ecf20Sopenharmony_ci regulator-always-on; 848c2ecf20Sopenharmony_ci vin-supply = <®_vcc33_wifi>; 858c2ecf20Sopenharmony_ci }; 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ci wifi_pwrseq: wifi-pwrseq { 888c2ecf20Sopenharmony_ci compatible = "mmc-pwrseq-simple"; 898c2ecf20Sopenharmony_ci clocks = <&rtc 1>; 908c2ecf20Sopenharmony_ci clock-names = "ext_clock"; 918c2ecf20Sopenharmony_ci reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */ 928c2ecf20Sopenharmony_ci post-power-on-delay-ms = <200>; 938c2ecf20Sopenharmony_ci }; 948c2ecf20Sopenharmony_ci}; 958c2ecf20Sopenharmony_ci 968c2ecf20Sopenharmony_ci&cpu0 { 978c2ecf20Sopenharmony_ci cpu-supply = <®_dcdca>; 988c2ecf20Sopenharmony_ci}; 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ci&de { 1018c2ecf20Sopenharmony_ci status = "okay"; 1028c2ecf20Sopenharmony_ci}; 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci&dwc3 { 1058c2ecf20Sopenharmony_ci status = "okay"; 1068c2ecf20Sopenharmony_ci}; 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci&ehci0 { 1098c2ecf20Sopenharmony_ci status = "okay"; 1108c2ecf20Sopenharmony_ci}; 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci&ehci3 { 1138c2ecf20Sopenharmony_ci status = "okay"; 1148c2ecf20Sopenharmony_ci}; 1158c2ecf20Sopenharmony_ci 1168c2ecf20Sopenharmony_ci&gpu { 1178c2ecf20Sopenharmony_ci mali-supply = <®_dcdcc>; 1188c2ecf20Sopenharmony_ci status = "okay"; 1198c2ecf20Sopenharmony_ci}; 1208c2ecf20Sopenharmony_ci 1218c2ecf20Sopenharmony_ci&hdmi { 1228c2ecf20Sopenharmony_ci status = "okay"; 1238c2ecf20Sopenharmony_ci}; 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci&hdmi_out { 1268c2ecf20Sopenharmony_ci hdmi_out_con: endpoint { 1278c2ecf20Sopenharmony_ci remote-endpoint = <&hdmi_con_in>; 1288c2ecf20Sopenharmony_ci }; 1298c2ecf20Sopenharmony_ci}; 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci&mmc0 { 1328c2ecf20Sopenharmony_ci vmmc-supply = <®_cldo1>; 1338c2ecf20Sopenharmony_ci cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 1348c2ecf20Sopenharmony_ci bus-width = <4>; 1358c2ecf20Sopenharmony_ci status = "okay"; 1368c2ecf20Sopenharmony_ci}; 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci&mmc1 { 1398c2ecf20Sopenharmony_ci vmmc-supply = <®_vcc33_wifi>; 1408c2ecf20Sopenharmony_ci vqmmc-supply = <®_vcc_wifi_io>; 1418c2ecf20Sopenharmony_ci mmc-pwrseq = <&wifi_pwrseq>; 1428c2ecf20Sopenharmony_ci bus-width = <4>; 1438c2ecf20Sopenharmony_ci non-removable; 1448c2ecf20Sopenharmony_ci status = "okay"; 1458c2ecf20Sopenharmony_ci 1468c2ecf20Sopenharmony_ci brcm: sdio-wifi@1 { 1478c2ecf20Sopenharmony_ci reg = <1>; 1488c2ecf20Sopenharmony_ci compatible = "brcm,bcm4329-fmac"; 1498c2ecf20Sopenharmony_ci interrupt-parent = <&r_pio>; 1508c2ecf20Sopenharmony_ci interrupts = <1 0 IRQ_TYPE_LEVEL_LOW>; /* PM0 */ 1518c2ecf20Sopenharmony_ci interrupt-names = "host-wake"; 1528c2ecf20Sopenharmony_ci }; 1538c2ecf20Sopenharmony_ci}; 1548c2ecf20Sopenharmony_ci 1558c2ecf20Sopenharmony_ci&mmc2 { 1568c2ecf20Sopenharmony_ci vmmc-supply = <®_cldo1>; 1578c2ecf20Sopenharmony_ci vqmmc-supply = <®_bldo2>; 1588c2ecf20Sopenharmony_ci cap-mmc-hw-reset; 1598c2ecf20Sopenharmony_ci non-removable; 1608c2ecf20Sopenharmony_ci bus-width = <8>; 1618c2ecf20Sopenharmony_ci status = "okay"; 1628c2ecf20Sopenharmony_ci}; 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_ci&ohci0 { 1658c2ecf20Sopenharmony_ci status = "okay"; 1668c2ecf20Sopenharmony_ci}; 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ci&ohci3 { 1698c2ecf20Sopenharmony_ci status = "okay"; 1708c2ecf20Sopenharmony_ci}; 1718c2ecf20Sopenharmony_ci 1728c2ecf20Sopenharmony_ci&pio { 1738c2ecf20Sopenharmony_ci vcc-pc-supply = <®_bldo2>; 1748c2ecf20Sopenharmony_ci vcc-pd-supply = <®_cldo1>; 1758c2ecf20Sopenharmony_ci vcc-pg-supply = <®_vcc_wifi_io>; 1768c2ecf20Sopenharmony_ci}; 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_ci&r_i2c { 1798c2ecf20Sopenharmony_ci status = "okay"; 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ci axp805: pmic@36 { 1828c2ecf20Sopenharmony_ci compatible = "x-powers,axp805", "x-powers,axp806"; 1838c2ecf20Sopenharmony_ci reg = <0x36>; 1848c2ecf20Sopenharmony_ci interrupt-parent = <&r_intc>; 1858c2ecf20Sopenharmony_ci interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 1868c2ecf20Sopenharmony_ci interrupt-controller; 1878c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 1888c2ecf20Sopenharmony_ci x-powers,self-working-mode; 1898c2ecf20Sopenharmony_ci vina-supply = <®_vcc5v>; 1908c2ecf20Sopenharmony_ci vinb-supply = <®_vcc5v>; 1918c2ecf20Sopenharmony_ci vinc-supply = <®_vcc5v>; 1928c2ecf20Sopenharmony_ci vind-supply = <®_vcc5v>; 1938c2ecf20Sopenharmony_ci vine-supply = <®_vcc5v>; 1948c2ecf20Sopenharmony_ci aldoin-supply = <®_vcc5v>; 1958c2ecf20Sopenharmony_ci bldoin-supply = <®_vcc5v>; 1968c2ecf20Sopenharmony_ci cldoin-supply = <®_vcc5v>; 1978c2ecf20Sopenharmony_ci 1988c2ecf20Sopenharmony_ci regulators { 1998c2ecf20Sopenharmony_ci reg_aldo1: aldo1 { 2008c2ecf20Sopenharmony_ci regulator-always-on; 2018c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 2028c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 2038c2ecf20Sopenharmony_ci regulator-name = "vcc-pl-led-ir"; 2048c2ecf20Sopenharmony_ci }; 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_ci reg_aldo2: aldo2 { 2078c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 2088c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 2098c2ecf20Sopenharmony_ci regulator-name = "vcc33-audio-tv-ephy-mac"; 2108c2ecf20Sopenharmony_ci }; 2118c2ecf20Sopenharmony_ci 2128c2ecf20Sopenharmony_ci /* ALDO3 is shorted to CLDO1 */ 2138c2ecf20Sopenharmony_ci reg_aldo3: aldo3 { 2148c2ecf20Sopenharmony_ci regulator-always-on; 2158c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 2168c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 2178c2ecf20Sopenharmony_ci regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-1"; 2188c2ecf20Sopenharmony_ci }; 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_ci reg_bldo1: bldo1 { 2218c2ecf20Sopenharmony_ci regulator-always-on; 2228c2ecf20Sopenharmony_ci regulator-min-microvolt = <1800000>; 2238c2ecf20Sopenharmony_ci regulator-max-microvolt = <1800000>; 2248c2ecf20Sopenharmony_ci regulator-name = "vcc18-dram-bias-pll"; 2258c2ecf20Sopenharmony_ci }; 2268c2ecf20Sopenharmony_ci 2278c2ecf20Sopenharmony_ci reg_bldo2: bldo2 { 2288c2ecf20Sopenharmony_ci regulator-always-on; 2298c2ecf20Sopenharmony_ci regulator-min-microvolt = <1800000>; 2308c2ecf20Sopenharmony_ci regulator-max-microvolt = <1800000>; 2318c2ecf20Sopenharmony_ci regulator-name = "vcc-efuse-pcie-hdmi-pc"; 2328c2ecf20Sopenharmony_ci }; 2338c2ecf20Sopenharmony_ci 2348c2ecf20Sopenharmony_ci bldo3 { 2358c2ecf20Sopenharmony_ci /* unused */ 2368c2ecf20Sopenharmony_ci }; 2378c2ecf20Sopenharmony_ci 2388c2ecf20Sopenharmony_ci bldo4 { 2398c2ecf20Sopenharmony_ci /* unused */ 2408c2ecf20Sopenharmony_ci }; 2418c2ecf20Sopenharmony_ci 2428c2ecf20Sopenharmony_ci reg_cldo1: cldo1 { 2438c2ecf20Sopenharmony_ci regulator-always-on; 2448c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 2458c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 2468c2ecf20Sopenharmony_ci regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-2"; 2478c2ecf20Sopenharmony_ci }; 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ci cldo2 { 2508c2ecf20Sopenharmony_ci /* unused */ 2518c2ecf20Sopenharmony_ci }; 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_ci cldo3 { 2548c2ecf20Sopenharmony_ci /* unused */ 2558c2ecf20Sopenharmony_ci }; 2568c2ecf20Sopenharmony_ci 2578c2ecf20Sopenharmony_ci reg_dcdca: dcdca { 2588c2ecf20Sopenharmony_ci regulator-always-on; 2598c2ecf20Sopenharmony_ci regulator-min-microvolt = <800000>; 2608c2ecf20Sopenharmony_ci regulator-max-microvolt = <1160000>; 2618c2ecf20Sopenharmony_ci regulator-ramp-delay = <2500>; 2628c2ecf20Sopenharmony_ci regulator-name = "vdd-cpu"; 2638c2ecf20Sopenharmony_ci }; 2648c2ecf20Sopenharmony_ci 2658c2ecf20Sopenharmony_ci reg_dcdcc: dcdcc { 2668c2ecf20Sopenharmony_ci regulator-enable-ramp-delay = <32000>; 2678c2ecf20Sopenharmony_ci regulator-min-microvolt = <810000>; 2688c2ecf20Sopenharmony_ci regulator-max-microvolt = <1080000>; 2698c2ecf20Sopenharmony_ci regulator-ramp-delay = <2500>; 2708c2ecf20Sopenharmony_ci regulator-name = "vdd-gpu"; 2718c2ecf20Sopenharmony_ci }; 2728c2ecf20Sopenharmony_ci 2738c2ecf20Sopenharmony_ci reg_dcdcd: dcdcd { 2748c2ecf20Sopenharmony_ci regulator-always-on; 2758c2ecf20Sopenharmony_ci regulator-min-microvolt = <960000>; 2768c2ecf20Sopenharmony_ci regulator-max-microvolt = <960000>; 2778c2ecf20Sopenharmony_ci regulator-name = "vdd-sys"; 2788c2ecf20Sopenharmony_ci }; 2798c2ecf20Sopenharmony_ci 2808c2ecf20Sopenharmony_ci reg_dcdce: dcdce { 2818c2ecf20Sopenharmony_ci regulator-always-on; 2828c2ecf20Sopenharmony_ci regulator-min-microvolt = <1200000>; 2838c2ecf20Sopenharmony_ci regulator-max-microvolt = <1200000>; 2848c2ecf20Sopenharmony_ci regulator-name = "vcc-dram"; 2858c2ecf20Sopenharmony_ci }; 2868c2ecf20Sopenharmony_ci 2878c2ecf20Sopenharmony_ci sw { 2888c2ecf20Sopenharmony_ci /* unused */ 2898c2ecf20Sopenharmony_ci }; 2908c2ecf20Sopenharmony_ci }; 2918c2ecf20Sopenharmony_ci }; 2928c2ecf20Sopenharmony_ci}; 2938c2ecf20Sopenharmony_ci 2948c2ecf20Sopenharmony_ci&r_ir { 2958c2ecf20Sopenharmony_ci status = "okay"; 2968c2ecf20Sopenharmony_ci}; 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_ci&rtc { 2998c2ecf20Sopenharmony_ci clocks = <&ext_osc32k>; 3008c2ecf20Sopenharmony_ci}; 3018c2ecf20Sopenharmony_ci 3028c2ecf20Sopenharmony_ci&uart0 { 3038c2ecf20Sopenharmony_ci pinctrl-names = "default"; 3048c2ecf20Sopenharmony_ci pinctrl-0 = <&uart0_ph_pins>; 3058c2ecf20Sopenharmony_ci status = "okay"; 3068c2ecf20Sopenharmony_ci}; 3078c2ecf20Sopenharmony_ci 3088c2ecf20Sopenharmony_ci/* There's the BT part of the AP6256 connected to that UART */ 3098c2ecf20Sopenharmony_ci&uart1 { 3108c2ecf20Sopenharmony_ci pinctrl-names = "default"; 3118c2ecf20Sopenharmony_ci pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 3128c2ecf20Sopenharmony_ci uart-has-rtscts; 3138c2ecf20Sopenharmony_ci status = "okay"; 3148c2ecf20Sopenharmony_ci 3158c2ecf20Sopenharmony_ci bluetooth { 3168c2ecf20Sopenharmony_ci compatible = "brcm,bcm4345c5"; 3178c2ecf20Sopenharmony_ci clocks = <&rtc 1>; 3188c2ecf20Sopenharmony_ci clock-names = "lpo"; 3198c2ecf20Sopenharmony_ci device-wakeup-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */ 3208c2ecf20Sopenharmony_ci host-wakeup-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */ 3218c2ecf20Sopenharmony_ci shutdown-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */ 3228c2ecf20Sopenharmony_ci max-speed = <1500000>; 3238c2ecf20Sopenharmony_ci }; 3248c2ecf20Sopenharmony_ci}; 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_ci&usb2otg { 3278c2ecf20Sopenharmony_ci /* 3288c2ecf20Sopenharmony_ci * This board doesn't have a controllable VBUS even though it 3298c2ecf20Sopenharmony_ci * does have an ID pin. Using it as anything but a USB host is 3308c2ecf20Sopenharmony_ci * unsafe. 3318c2ecf20Sopenharmony_ci */ 3328c2ecf20Sopenharmony_ci dr_mode = "host"; 3338c2ecf20Sopenharmony_ci status = "okay"; 3348c2ecf20Sopenharmony_ci}; 3358c2ecf20Sopenharmony_ci 3368c2ecf20Sopenharmony_ci&usb2phy { 3378c2ecf20Sopenharmony_ci usb0_id_det-gpios = <&pio 2 15 GPIO_ACTIVE_HIGH>; /* PC15 */ 3388c2ecf20Sopenharmony_ci usb0_vbus-supply = <®_vcc5v>; 3398c2ecf20Sopenharmony_ci usb3_vbus-supply = <®_vcc5v>; 3408c2ecf20Sopenharmony_ci status = "okay"; 3418c2ecf20Sopenharmony_ci}; 3428c2ecf20Sopenharmony_ci 3438c2ecf20Sopenharmony_ci&usb3phy { 3448c2ecf20Sopenharmony_ci status = "okay"; 3458c2ecf20Sopenharmony_ci}; 346