1b4b8f2c9SClément Péron// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2cabbaed7SClément Péron// Copyright (C) 2017 Jagan Teki <jteki@openedev.com> 34969efb2SJagan Teki 44969efb2SJagan Teki/dts-v1/; 54969efb2SJagan Teki 64969efb2SJagan Teki#include "sun50i-a64.dtsi" 7ac904843SVasily Khoruzhick#include "sun50i-a64-cpu-opp.dtsi" 84969efb2SJagan Teki 94969efb2SJagan Teki#include <dt-bindings/gpio/gpio.h> 104969efb2SJagan Teki 114969efb2SJagan Teki/ { 124969efb2SJagan Teki model = "Olimex A64-Olinuxino"; 134969efb2SJagan Teki compatible = "olimex,a64-olinuxino", "allwinner,sun50i-a64"; 144969efb2SJagan Teki 154969efb2SJagan Teki aliases { 1621eac6f3SAndre Przywara ethernet0 = &emac; 174969efb2SJagan Teki serial0 = &uart0; 184969efb2SJagan Teki }; 194969efb2SJagan Teki 204969efb2SJagan Teki chosen { 214969efb2SJagan Teki stdout-path = "serial0:115200n8"; 224969efb2SJagan Teki }; 23916b68cfSJagan Teki 24f4e4453aSJagan Teki hdmi-connector { 25f4e4453aSJagan Teki compatible = "hdmi-connector"; 26f4e4453aSJagan Teki type = "a"; 27f4e4453aSJagan Teki 28f4e4453aSJagan Teki port { 29f4e4453aSJagan Teki hdmi_con_in: endpoint { 30f4e4453aSJagan Teki remote-endpoint = <&hdmi_out_con>; 31f4e4453aSJagan Teki }; 32f4e4453aSJagan Teki }; 33f4e4453aSJagan Teki }; 34f4e4453aSJagan Teki 3589866b26SPetr Štetiar leds { 3689866b26SPetr Štetiar compatible = "gpio-leds"; 3789866b26SPetr Štetiar 3889866b26SPetr Štetiar led-0 { 3989866b26SPetr Štetiar label = "a64-olinuxino:red:user"; 4089866b26SPetr Štetiar gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */ 4189866b26SPetr Štetiar }; 4289866b26SPetr Štetiar }; 4389866b26SPetr Štetiar 44aa9cbe94SAndre Przywara reg_usb1_vbus: usb1-vbus { 45aa9cbe94SAndre Przywara compatible = "regulator-fixed"; 46aa9cbe94SAndre Przywara regulator-name = "usb1-vbus"; 47aa9cbe94SAndre Przywara regulator-min-microvolt = <5000000>; 48aa9cbe94SAndre Przywara regulator-max-microvolt = <5000000>; 49aa9cbe94SAndre Przywara regulator-boot-on; 50aa9cbe94SAndre Przywara enable-active-high; 51aa9cbe94SAndre Przywara gpio = <&pio 6 9 GPIO_ACTIVE_HIGH>; /* PG9 */ 52aa9cbe94SAndre Przywara status = "okay"; 53aa9cbe94SAndre Przywara }; 54aa9cbe94SAndre Przywara 55916b68cfSJagan Teki wifi_pwrseq: wifi_pwrseq { 56916b68cfSJagan Teki compatible = "mmc-pwrseq-simple"; 57916b68cfSJagan Teki reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 58916b68cfSJagan Teki }; 594969efb2SJagan Teki}; 604969efb2SJagan Teki 61*f9814e2eSPhilip Rinn&codec { 62*f9814e2eSPhilip Rinn status = "okay"; 63*f9814e2eSPhilip Rinn}; 64*f9814e2eSPhilip Rinn 65*f9814e2eSPhilip Rinn&codec_analog { 66*f9814e2eSPhilip Rinn cpvdd-supply = <®_eldo1>; 67*f9814e2eSPhilip Rinn status = "okay"; 68*f9814e2eSPhilip Rinn}; 69*f9814e2eSPhilip Rinn 70ac904843SVasily Khoruzhick&cpu0 { 71ac904843SVasily Khoruzhick cpu-supply = <®_dcdc2>; 72ac904843SVasily Khoruzhick}; 73ac904843SVasily Khoruzhick 74ac904843SVasily Khoruzhick&cpu1 { 75ac904843SVasily Khoruzhick cpu-supply = <®_dcdc2>; 76ac904843SVasily Khoruzhick}; 77ac904843SVasily Khoruzhick 78ac904843SVasily Khoruzhick&cpu2 { 79ac904843SVasily Khoruzhick cpu-supply = <®_dcdc2>; 80ac904843SVasily Khoruzhick}; 81ac904843SVasily Khoruzhick 82ac904843SVasily Khoruzhick&cpu3 { 83ac904843SVasily Khoruzhick cpu-supply = <®_dcdc2>; 84ac904843SVasily Khoruzhick}; 85ac904843SVasily Khoruzhick 86*f9814e2eSPhilip Rinn&dai { 87*f9814e2eSPhilip Rinn status = "okay"; 88*f9814e2eSPhilip Rinn}; 89*f9814e2eSPhilip Rinn 90f4e4453aSJagan Teki&de { 91f4e4453aSJagan Teki status = "okay"; 92f4e4453aSJagan Teki}; 93f4e4453aSJagan Teki 94aa9cbe94SAndre Przywara&ehci0 { 95aa9cbe94SAndre Przywara status = "okay"; 96aa9cbe94SAndre Przywara}; 97aa9cbe94SAndre Przywara 98aa9cbe94SAndre Przywara&ehci1 { 99aa9cbe94SAndre Przywara status = "okay"; 100aa9cbe94SAndre Przywara}; 101aa9cbe94SAndre Przywara 10221eac6f3SAndre Przywara&emac { 10321eac6f3SAndre Przywara pinctrl-names = "default"; 10421eac6f3SAndre Przywara pinctrl-0 = <&rgmii_pins>; 10521eac6f3SAndre Przywara phy-mode = "rgmii"; 10621eac6f3SAndre Przywara phy-handle = <&ext_rgmii_phy>; 10721eac6f3SAndre Przywara phy-supply = <®_dcdc1>; 10867929449SRodrigo Exterckötter Tjäder allwinner,tx-delay-ps = <600>; 10921eac6f3SAndre Przywara status = "okay"; 11021eac6f3SAndre Przywara}; 11121eac6f3SAndre Przywara 112f4e4453aSJagan Teki&hdmi { 113f4e4453aSJagan Teki hvcc-supply = <®_dldo1>; 114f4e4453aSJagan Teki status = "okay"; 115f4e4453aSJagan Teki}; 116f4e4453aSJagan Teki 117f4e4453aSJagan Teki&hdmi_out { 118f4e4453aSJagan Teki hdmi_out_con: endpoint { 119f4e4453aSJagan Teki remote-endpoint = <&hdmi_con_in>; 120f4e4453aSJagan Teki }; 121f4e4453aSJagan Teki}; 122f4e4453aSJagan Teki 12321eac6f3SAndre Przywara&mdio { 12421eac6f3SAndre Przywara ext_rgmii_phy: ethernet-phy@1 { 12521eac6f3SAndre Przywara compatible = "ethernet-phy-ieee802.3-c22"; 12621eac6f3SAndre Przywara reg = <1>; 12721eac6f3SAndre Przywara }; 12821eac6f3SAndre Przywara}; 12921eac6f3SAndre Przywara 1304969efb2SJagan Teki&mmc0 { 1314969efb2SJagan Teki pinctrl-names = "default"; 1324969efb2SJagan Teki pinctrl-0 = <&mmc0_pins>; 1334969efb2SJagan Teki vmmc-supply = <®_dcdc1>; 134b75cb68dSTuomas Tynkkynen cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 1354969efb2SJagan Teki disable-wp; 1364969efb2SJagan Teki bus-width = <4>; 1374969efb2SJagan Teki status = "okay"; 1384969efb2SJagan Teki}; 1394969efb2SJagan Teki 140916b68cfSJagan Teki&mmc1 { 141916b68cfSJagan Teki pinctrl-names = "default"; 142916b68cfSJagan Teki pinctrl-0 = <&mmc1_pins>; 1433d615c2fSStefan Mavrodiev vmmc-supply = <®_dcdc1>; 144916b68cfSJagan Teki vqmmc-supply = <®_dldo4>; 145916b68cfSJagan Teki mmc-pwrseq = <&wifi_pwrseq>; 146916b68cfSJagan Teki bus-width = <4>; 147916b68cfSJagan Teki non-removable; 148916b68cfSJagan Teki status = "okay"; 149916b68cfSJagan Teki 150916b68cfSJagan Teki rtl8723bs: wifi@1 { 151916b68cfSJagan Teki reg = <1>; 152916b68cfSJagan Teki interrupt-parent = <&r_pio>; 153916b68cfSJagan Teki interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ 154916b68cfSJagan Teki interrupt-names = "host-wake"; 155916b68cfSJagan Teki }; 156916b68cfSJagan Teki}; 157916b68cfSJagan Teki 158aa9cbe94SAndre Przywara&ohci0 { 159aa9cbe94SAndre Przywara status = "okay"; 160aa9cbe94SAndre Przywara}; 161aa9cbe94SAndre Przywara 162aa9cbe94SAndre Przywara&ohci1 { 163aa9cbe94SAndre Przywara status = "okay"; 164aa9cbe94SAndre Przywara}; 165aa9cbe94SAndre Przywara 166f0c3b29fSStefan Mavrodiev&pio { 167f0c3b29fSStefan Mavrodiev vcc-pc-supply = <®_dcdc1>; 168f0c3b29fSStefan Mavrodiev vcc-pd-supply = <®_dcdc1>; 169f0c3b29fSStefan Mavrodiev vcc-pe-supply = <®_aldo1>; 170f0c3b29fSStefan Mavrodiev vcc-pg-supply = <®_dldo4>; 171f0c3b29fSStefan Mavrodiev}; 172f0c3b29fSStefan Mavrodiev 173f0c3b29fSStefan Mavrodiev&r_pio { 174f0c3b29fSStefan Mavrodiev /* 175f0c3b29fSStefan Mavrodiev * FIXME: We can't add that supply for now since it would 176f0c3b29fSStefan Mavrodiev * create a circular dependency between pinctrl, the regulator 177f0c3b29fSStefan Mavrodiev * and the RSB Bus. 178f0c3b29fSStefan Mavrodiev * 179f0c3b29fSStefan Mavrodiev * vcc-pl-supply = <®_aldo2>; 180f0c3b29fSStefan Mavrodiev */ 181f0c3b29fSStefan Mavrodiev}; 182f0c3b29fSStefan Mavrodiev 1835a5e5216SEmmanuel Vadot&pio { 1845a5e5216SEmmanuel Vadot vcc-pa-supply = <®_dcdc1>; 1855a5e5216SEmmanuel Vadot vcc-pb-supply = <®_dcdc1>; 1865a5e5216SEmmanuel Vadot vcc-pc-supply = <®_dcdc1>; 1875a5e5216SEmmanuel Vadot vcc-pd-supply = <®_dcdc1>; 1885a5e5216SEmmanuel Vadot vcc-pe-supply = <®_aldo1>; 1895a5e5216SEmmanuel Vadot vcc-pf-supply = <®_dcdc1>; 1905a5e5216SEmmanuel Vadot vcc-pg-supply = <®_dldo4>; 1915a5e5216SEmmanuel Vadot vcc-ph-supply = <®_dcdc1>; 1925a5e5216SEmmanuel Vadot}; 1935a5e5216SEmmanuel Vadot 1944969efb2SJagan Teki&r_rsb { 1954969efb2SJagan Teki status = "okay"; 1964969efb2SJagan Teki 1974969efb2SJagan Teki axp803: pmic@3a3 { 1984969efb2SJagan Teki compatible = "x-powers,axp803"; 1994969efb2SJagan Teki reg = <0x3a3>; 2004969efb2SJagan Teki interrupt-parent = <&r_intc>; 20173088dfeSSamuel Holland interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>; 202aa9cbe94SAndre Przywara x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ 2034969efb2SJagan Teki }; 2044969efb2SJagan Teki}; 2054969efb2SJagan Teki 2065a5e5216SEmmanuel Vadot/* VCC-PL is powered by aldo2 but we cannot add it as the RSB */ 2075a5e5216SEmmanuel Vadot/* interface used to talk to the PMIC in on the PL pins */ 2085a5e5216SEmmanuel Vadot/* &r_pio { */ 2095a5e5216SEmmanuel Vadot/* vcc-pl-supply = <®_aldo2>; */ 2105a5e5216SEmmanuel Vadot/* }; */ 2115a5e5216SEmmanuel Vadot 2124969efb2SJagan Teki#include "axp803.dtsi" 2134969efb2SJagan Teki 214a24270afSChen-Yu Tsai&ac_power_supply { 215a24270afSChen-Yu Tsai status = "okay"; 216a24270afSChen-Yu Tsai}; 217a24270afSChen-Yu Tsai 218a24270afSChen-Yu Tsai&battery_power_supply { 219a24270afSChen-Yu Tsai status = "okay"; 220a24270afSChen-Yu Tsai}; 221a24270afSChen-Yu Tsai 2224969efb2SJagan Teki®_aldo1 { 2234969efb2SJagan Teki regulator-always-on; 2244969efb2SJagan Teki regulator-min-microvolt = <2800000>; 2254969efb2SJagan Teki regulator-max-microvolt = <2800000>; 2264969efb2SJagan Teki regulator-name = "vcc-pe"; 2274969efb2SJagan Teki}; 2284969efb2SJagan Teki 2294969efb2SJagan Teki®_aldo2 { 2304969efb2SJagan Teki regulator-always-on; 2314969efb2SJagan Teki regulator-min-microvolt = <3300000>; 2324969efb2SJagan Teki regulator-max-microvolt = <3300000>; 2334969efb2SJagan Teki regulator-name = "vcc-pl"; 2344969efb2SJagan Teki}; 2354969efb2SJagan Teki 2364969efb2SJagan Teki®_aldo3 { 2374969efb2SJagan Teki regulator-always-on; 2384969efb2SJagan Teki regulator-min-microvolt = <3000000>; 2394969efb2SJagan Teki regulator-max-microvolt = <3000000>; 2404969efb2SJagan Teki regulator-name = "vcc-pll-avcc"; 2414969efb2SJagan Teki}; 2424969efb2SJagan Teki 2434969efb2SJagan Teki®_dcdc1 { 2444969efb2SJagan Teki regulator-always-on; 2454969efb2SJagan Teki regulator-min-microvolt = <3300000>; 2464969efb2SJagan Teki regulator-max-microvolt = <3300000>; 2474969efb2SJagan Teki regulator-name = "vcc-3v3"; 2484969efb2SJagan Teki}; 2494969efb2SJagan Teki 2504969efb2SJagan Teki®_dcdc2 { 2514969efb2SJagan Teki regulator-always-on; 2524969efb2SJagan Teki regulator-min-microvolt = <1040000>; 2534969efb2SJagan Teki regulator-max-microvolt = <1300000>; 2544969efb2SJagan Teki regulator-name = "vdd-cpux"; 2554969efb2SJagan Teki}; 2564969efb2SJagan Teki 2574969efb2SJagan Teki/* DCDC3 is polyphased with DCDC2 */ 2584969efb2SJagan Teki 25993366b49SAndre Przywara/* 26093366b49SAndre Przywara * The board uses DDR3L DRAM chips. 1.36V is the closest to the nominal 26193366b49SAndre Przywara * 1.35V that the PMIC can drive. 26293366b49SAndre Przywara */ 2634969efb2SJagan Teki®_dcdc5 { 2644969efb2SJagan Teki regulator-always-on; 26593366b49SAndre Przywara regulator-min-microvolt = <1360000>; 26693366b49SAndre Przywara regulator-max-microvolt = <1360000>; 2674969efb2SJagan Teki regulator-name = "vcc-ddr3"; 2684969efb2SJagan Teki}; 2694969efb2SJagan Teki 2704969efb2SJagan Teki®_dcdc6 { 2714969efb2SJagan Teki regulator-always-on; 2724969efb2SJagan Teki regulator-min-microvolt = <1100000>; 2734969efb2SJagan Teki regulator-max-microvolt = <1100000>; 2744969efb2SJagan Teki regulator-name = "vdd-sys"; 2754969efb2SJagan Teki}; 2764969efb2SJagan Teki 2774969efb2SJagan Teki®_dldo1 { 2784969efb2SJagan Teki regulator-min-microvolt = <3300000>; 2794969efb2SJagan Teki regulator-max-microvolt = <3300000>; 2804969efb2SJagan Teki regulator-name = "vcc-hdmi"; 2814969efb2SJagan Teki}; 2824969efb2SJagan Teki 2834969efb2SJagan Teki®_dldo2 { 2844969efb2SJagan Teki regulator-min-microvolt = <3300000>; 2854969efb2SJagan Teki regulator-max-microvolt = <3300000>; 2864969efb2SJagan Teki regulator-name = "vcc-mipi"; 2874969efb2SJagan Teki}; 2884969efb2SJagan Teki 2894969efb2SJagan Teki®_dldo3 { 2904969efb2SJagan Teki regulator-min-microvolt = <2800000>; 2914969efb2SJagan Teki regulator-max-microvolt = <2800000>; 2924969efb2SJagan Teki regulator-name = "vcc-avdd-csi"; 2934969efb2SJagan Teki}; 2944969efb2SJagan Teki 2954969efb2SJagan Teki®_dldo4 { 2964969efb2SJagan Teki regulator-min-microvolt = <3300000>; 2974969efb2SJagan Teki regulator-max-microvolt = <3300000>; 2984969efb2SJagan Teki regulator-name = "vcc-wifi-io"; 2994969efb2SJagan Teki}; 3004969efb2SJagan Teki 301aa9cbe94SAndre Przywara®_drivevbus { 302aa9cbe94SAndre Przywara regulator-name = "usb0-vbus"; 303aa9cbe94SAndre Przywara status = "okay"; 304aa9cbe94SAndre Przywara}; 305aa9cbe94SAndre Przywara 3064969efb2SJagan Teki®_eldo1 { 3074969efb2SJagan Teki regulator-min-microvolt = <1800000>; 3084969efb2SJagan Teki regulator-max-microvolt = <1800000>; 3094969efb2SJagan Teki regulator-name = "cpvdd"; 3104969efb2SJagan Teki}; 3114969efb2SJagan Teki 3124969efb2SJagan Teki®_eldo2 { 3134969efb2SJagan Teki regulator-min-microvolt = <1800000>; 3144969efb2SJagan Teki regulator-max-microvolt = <1800000>; 3154969efb2SJagan Teki regulator-name = "vcc-dvdd-csi"; 3164969efb2SJagan Teki}; 3174969efb2SJagan Teki 3184969efb2SJagan Teki®_fldo1 { 3194969efb2SJagan Teki regulator-min-microvolt = <1200000>; 3204969efb2SJagan Teki regulator-max-microvolt = <1200000>; 3214969efb2SJagan Teki regulator-name = "vcc-1v2-hsic"; 3224969efb2SJagan Teki}; 3234969efb2SJagan Teki 3244969efb2SJagan Teki/* 3254969efb2SJagan Teki * The A64 chip cannot work without this regulator off, although 3264969efb2SJagan Teki * it seems to be only driving the AR100 core. 3274969efb2SJagan Teki * Maybe we don't still know well about CPUs domain. 3284969efb2SJagan Teki */ 3294969efb2SJagan Teki®_fldo2 { 3304969efb2SJagan Teki regulator-always-on; 3314969efb2SJagan Teki regulator-min-microvolt = <1100000>; 3324969efb2SJagan Teki regulator-max-microvolt = <1100000>; 3334969efb2SJagan Teki regulator-name = "vdd-cpus"; 3344969efb2SJagan Teki}; 3354969efb2SJagan Teki 3364969efb2SJagan Teki®_rtc_ldo { 3374969efb2SJagan Teki regulator-name = "vcc-rtc"; 3384969efb2SJagan Teki}; 3394969efb2SJagan Teki 3405cbef9f9SIcenowy Zheng&simplefb_hdmi { 3415cbef9f9SIcenowy Zheng vcc-hdmi-supply = <®_dldo1>; 3425cbef9f9SIcenowy Zheng}; 3435cbef9f9SIcenowy Zheng 344*f9814e2eSPhilip Rinn&sound { 345*f9814e2eSPhilip Rinn simple-audio-card,aux-devs = <&codec_analog>; 346*f9814e2eSPhilip Rinn simple-audio-card,widgets = "Microphone", "Microphone Jack Left", 347*f9814e2eSPhilip Rinn "Microphone", "Microphone Jack Right", 348*f9814e2eSPhilip Rinn "Headphone", "Headphone Jack"; 349*f9814e2eSPhilip Rinn simple-audio-card,routing = "Left DAC", "DACL", 350*f9814e2eSPhilip Rinn "Right DAC", "DACR", 351*f9814e2eSPhilip Rinn "Headphone Jack", "HP", 352*f9814e2eSPhilip Rinn "ADCL", "Left ADC", 353*f9814e2eSPhilip Rinn "ADCR", "Right ADC", 354*f9814e2eSPhilip Rinn "Microphone Jack Left", "MBIAS", 355*f9814e2eSPhilip Rinn "MIC1", "Microphone Jack Left", 356*f9814e2eSPhilip Rinn "Microphone Jack Right", "MBIAS", 357*f9814e2eSPhilip Rinn "MIC2", "Microphone Jack Right"; 358*f9814e2eSPhilip Rinn status = "okay"; 359*f9814e2eSPhilip Rinn}; 360*f9814e2eSPhilip Rinn 3614969efb2SJagan Teki&uart0 { 3624969efb2SJagan Teki pinctrl-names = "default"; 363d91ebb95SChen-Yu Tsai pinctrl-0 = <&uart0_pb_pins>; 3644969efb2SJagan Teki status = "okay"; 3654969efb2SJagan Teki}; 366aa9cbe94SAndre Przywara 367aa9cbe94SAndre Przywara&usb_otg { 368aa9cbe94SAndre Przywara dr_mode = "otg"; 369aa9cbe94SAndre Przywara status = "okay"; 370aa9cbe94SAndre Przywara}; 371aa9cbe94SAndre Przywara 372aa9cbe94SAndre Przywara&usbphy { 373aa9cbe94SAndre Przywara status = "okay"; 374aa9cbe94SAndre Przywara usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ 375aa9cbe94SAndre Przywara usb0_vbus-supply = <®_drivevbus>; 376aa9cbe94SAndre Przywara usb1_vbus-supply = <®_usb1_vbus>; 377aa9cbe94SAndre Przywara}; 378