1b4b8f2c9SClément Péron// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2bdecc9cbSJagan Teki/* 3bdecc9cbSJagan Teki * Copyright (C) 2017 Jagan Teki <jteki@openedev.com> 493d6a27cSSamuel Holland * Copyright (C) 2017-2018 Samuel Holland <samuel@sholland.org> 5bdecc9cbSJagan Teki */ 6bdecc9cbSJagan Teki 7bdecc9cbSJagan Teki/dts-v1/; 8bdecc9cbSJagan Teki 9bdecc9cbSJagan Teki#include "sun50i-a64.dtsi" 10bdecc9cbSJagan Teki 11bdecc9cbSJagan Teki#include <dt-bindings/gpio/gpio.h> 12bdecc9cbSJagan Teki 13bdecc9cbSJagan Teki/ { 14bdecc9cbSJagan Teki model = "OrangePi Win/Win Plus"; 15bdecc9cbSJagan Teki compatible = "xunlong,orangepi-win", "allwinner,sun50i-a64"; 16bdecc9cbSJagan Teki 17bdecc9cbSJagan Teki aliases { 1893d6a27cSSamuel Holland ethernet0 = &emac; 19bdecc9cbSJagan Teki serial0 = &uart0; 2013b31e6bSSamuel Holland serial1 = &uart1; 2113b31e6bSSamuel Holland serial2 = &uart2; 2213b31e6bSSamuel Holland serial3 = &uart3; 2313b31e6bSSamuel Holland serial4 = &uart4; 24bdecc9cbSJagan Teki }; 25bdecc9cbSJagan Teki 26bdecc9cbSJagan Teki chosen { 27bdecc9cbSJagan Teki stdout-path = "serial0:115200n8"; 28bdecc9cbSJagan Teki }; 293131cfb6SSamuel Holland 30f4e4453aSJagan Teki hdmi-connector { 31f4e4453aSJagan Teki compatible = "hdmi-connector"; 32f4e4453aSJagan Teki type = "a"; 33f4e4453aSJagan Teki 34f4e4453aSJagan Teki port { 35f4e4453aSJagan Teki hdmi_con_in: endpoint { 36f4e4453aSJagan Teki remote-endpoint = <&hdmi_out_con>; 37f4e4453aSJagan Teki }; 38f4e4453aSJagan Teki }; 39f4e4453aSJagan Teki }; 40f4e4453aSJagan Teki 41e71cc560SSamuel Holland leds { 42e71cc560SSamuel Holland compatible = "gpio-leds"; 43e71cc560SSamuel Holland 44e71cc560SSamuel Holland status { 45e71cc560SSamuel Holland label = "orangepi:green:status"; 46e71cc560SSamuel Holland gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ 47e71cc560SSamuel Holland }; 48e71cc560SSamuel Holland }; 49e71cc560SSamuel Holland 5093d6a27cSSamuel Holland reg_gmac_3v3: gmac-3v3 { 5193d6a27cSSamuel Holland compatible = "regulator-fixed"; 5293d6a27cSSamuel Holland regulator-name = "gmac-3v3"; 5393d6a27cSSamuel Holland regulator-min-microvolt = <3300000>; 5493d6a27cSSamuel Holland regulator-max-microvolt = <3300000>; 5593d6a27cSSamuel Holland regulator-boot-on; 5693d6a27cSSamuel Holland enable-active-high; 5793d6a27cSSamuel Holland gpio = <&pio 3 14 GPIO_ACTIVE_HIGH>; /* PD14 */ 5893d6a27cSSamuel Holland status = "okay"; 5993d6a27cSSamuel Holland }; 6093d6a27cSSamuel Holland 613131cfb6SSamuel Holland reg_usb1_vbus: usb1-vbus { 623131cfb6SSamuel Holland compatible = "regulator-fixed"; 633131cfb6SSamuel Holland regulator-name = "usb1-vbus"; 643131cfb6SSamuel Holland regulator-min-microvolt = <5000000>; 653131cfb6SSamuel Holland regulator-max-microvolt = <5000000>; 663131cfb6SSamuel Holland regulator-boot-on; 673131cfb6SSamuel Holland enable-active-high; 683131cfb6SSamuel Holland gpio = <&pio 3 7 GPIO_ACTIVE_HIGH>; /* PD7 */ 693131cfb6SSamuel Holland status = "okay"; 703131cfb6SSamuel Holland }; 7164971e5aSSamuel Holland 7264971e5aSSamuel Holland wifi_pwrseq: wifi_pwrseq { 7364971e5aSSamuel Holland compatible = "mmc-pwrseq-simple"; 7464971e5aSSamuel Holland reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */ 7585c6faddSJernej Skrabec clocks = <&rtc 1>; 7685c6faddSJernej Skrabec clock-names = "ext_clock"; 7764971e5aSSamuel Holland }; 78bdecc9cbSJagan Teki}; 79bdecc9cbSJagan Teki 806db1aaf4SJernej Skrabec&codec { 816db1aaf4SJernej Skrabec status = "okay"; 826db1aaf4SJernej Skrabec}; 836db1aaf4SJernej Skrabec 846db1aaf4SJernej Skrabec&codec_analog { 856db1aaf4SJernej Skrabec cpvdd-supply = <®_eldo1>; 866db1aaf4SJernej Skrabec status = "okay"; 876db1aaf4SJernej Skrabec}; 886db1aaf4SJernej Skrabec 896db1aaf4SJernej Skrabec&dai { 906db1aaf4SJernej Skrabec status = "okay"; 916db1aaf4SJernej Skrabec}; 926db1aaf4SJernej Skrabec 93f4e4453aSJagan Teki&de { 94f4e4453aSJagan Teki status = "okay"; 95f4e4453aSJagan Teki}; 96f4e4453aSJagan Teki 9714ff5d8fSSamuel Holland&ehci0 { 9814ff5d8fSSamuel Holland status = "okay"; 9914ff5d8fSSamuel Holland}; 10014ff5d8fSSamuel Holland 101bdecc9cbSJagan Teki&ehci1 { 102bdecc9cbSJagan Teki status = "okay"; 103bdecc9cbSJagan Teki}; 104bdecc9cbSJagan Teki 10593d6a27cSSamuel Holland&emac { 10693d6a27cSSamuel Holland pinctrl-names = "default"; 10793d6a27cSSamuel Holland pinctrl-0 = <&rgmii_pins>; 10893d6a27cSSamuel Holland phy-mode = "rgmii"; 10993d6a27cSSamuel Holland phy-handle = <&ext_rgmii_phy>; 11093d6a27cSSamuel Holland phy-supply = <®_gmac_3v3>; 11193d6a27cSSamuel Holland status = "okay"; 11293d6a27cSSamuel Holland}; 11393d6a27cSSamuel Holland 114f4e4453aSJagan Teki&hdmi { 115f4e4453aSJagan Teki hvcc-supply = <®_dldo1>; 116f4e4453aSJagan Teki status = "okay"; 117f4e4453aSJagan Teki}; 118f4e4453aSJagan Teki 119f4e4453aSJagan Teki&hdmi_out { 120f4e4453aSJagan Teki hdmi_out_con: endpoint { 121f4e4453aSJagan Teki remote-endpoint = <&hdmi_con_in>; 122f4e4453aSJagan Teki }; 123f4e4453aSJagan Teki}; 124f4e4453aSJagan Teki 12593d6a27cSSamuel Holland&mdio { 12693d6a27cSSamuel Holland ext_rgmii_phy: ethernet-phy@1 { 12793d6a27cSSamuel Holland compatible = "ethernet-phy-ieee802.3-c22"; 12893d6a27cSSamuel Holland reg = <1>; 12993d6a27cSSamuel Holland }; 13093d6a27cSSamuel Holland}; 13193d6a27cSSamuel Holland 132bdecc9cbSJagan Teki&mmc0 { 133bdecc9cbSJagan Teki pinctrl-names = "default"; 134bdecc9cbSJagan Teki pinctrl-0 = <&mmc0_pins>; 135e5701010SJagan Teki vmmc-supply = <®_dcdc1>; 13609b964afSSamuel Holland cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 13709b964afSSamuel Holland disable-wp; 13809b964afSSamuel Holland bus-width = <4>; 139bdecc9cbSJagan Teki status = "okay"; 140bdecc9cbSJagan Teki}; 141bdecc9cbSJagan Teki 14264971e5aSSamuel Holland&mmc1 { 14364971e5aSSamuel Holland pinctrl-names = "default"; 14464971e5aSSamuel Holland pinctrl-0 = <&mmc1_pins>; 14564971e5aSSamuel Holland vmmc-supply = <®_dldo2>; 14664971e5aSSamuel Holland vqmmc-supply = <®_dldo4>; 14764971e5aSSamuel Holland mmc-pwrseq = <&wifi_pwrseq>; 14864971e5aSSamuel Holland bus-width = <4>; 14964971e5aSSamuel Holland non-removable; 15064971e5aSSamuel Holland status = "okay"; 15185c6faddSJernej Skrabec 15285c6faddSJernej Skrabec brcmf: wifi@1 { 15385c6faddSJernej Skrabec reg = <1>; 15485c6faddSJernej Skrabec compatible = "brcm,bcm4329-fmac"; 15585c6faddSJernej Skrabec interrupt-parent = <&r_pio>; 15685c6faddSJernej Skrabec interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 */ 15785c6faddSJernej Skrabec interrupt-names = "host-wake"; 15885c6faddSJernej Skrabec }; 15964971e5aSSamuel Holland}; 16064971e5aSSamuel Holland 16114ff5d8fSSamuel Holland&ohci0 { 16214ff5d8fSSamuel Holland status = "okay"; 16314ff5d8fSSamuel Holland}; 16414ff5d8fSSamuel Holland 165bdecc9cbSJagan Teki&ohci1 { 166bdecc9cbSJagan Teki status = "okay"; 167bdecc9cbSJagan Teki}; 168bdecc9cbSJagan Teki 16963eb1e14SJernej Skrabec&r_ir { 17063eb1e14SJernej Skrabec status = "okay"; 17163eb1e14SJernej Skrabec}; 17263eb1e14SJernej Skrabec 173e5701010SJagan Teki&r_rsb { 174e5701010SJagan Teki status = "okay"; 175e5701010SJagan Teki 176e5701010SJagan Teki axp803: pmic@3a3 { 177e5701010SJagan Teki compatible = "x-powers,axp803"; 178e5701010SJagan Teki reg = <0x3a3>; 179e5701010SJagan Teki interrupt-parent = <&r_intc>; 180e5701010SJagan Teki interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 181b1360dcfSJernej Skrabec x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ 182e5701010SJagan Teki }; 183e5701010SJagan Teki}; 184e5701010SJagan Teki 185e5701010SJagan Teki#include "axp803.dtsi" 186e5701010SJagan Teki 187a24270afSChen-Yu Tsai&ac_power_supply { 188a24270afSChen-Yu Tsai status = "okay"; 189a24270afSChen-Yu Tsai}; 190a24270afSChen-Yu Tsai 191a24270afSChen-Yu Tsai&battery_power_supply { 192a24270afSChen-Yu Tsai status = "okay"; 193a24270afSChen-Yu Tsai}; 194a24270afSChen-Yu Tsai 195e5701010SJagan Teki®_aldo1 { 196eacd9c43SSamuel Holland regulator-min-microvolt = <2800000>; 197eacd9c43SSamuel Holland regulator-max-microvolt = <2800000>; 198e5701010SJagan Teki regulator-name = "afvcc-csi"; 199e5701010SJagan Teki}; 200e5701010SJagan Teki 201e5701010SJagan Teki®_aldo2 { 202e5701010SJagan Teki regulator-always-on; 203e5701010SJagan Teki regulator-min-microvolt = <1800000>; 204e5701010SJagan Teki regulator-max-microvolt = <3300000>; 205e5701010SJagan Teki regulator-name = "vcc-pl"; 206e5701010SJagan Teki}; 207e5701010SJagan Teki 208e5701010SJagan Teki®_aldo3 { 209e5701010SJagan Teki regulator-always-on; 210e5701010SJagan Teki regulator-min-microvolt = <3000000>; 211e5701010SJagan Teki regulator-max-microvolt = <3000000>; 212e5701010SJagan Teki regulator-name = "vcc-pll-avcc"; 213e5701010SJagan Teki}; 214e5701010SJagan Teki 215e5701010SJagan Teki®_dcdc1 { 216e5701010SJagan Teki regulator-always-on; 217e5701010SJagan Teki regulator-min-microvolt = <3300000>; 218e5701010SJagan Teki regulator-max-microvolt = <3300000>; 219e5701010SJagan Teki regulator-name = "vcc-3v3"; 220e5701010SJagan Teki}; 221e5701010SJagan Teki 222e5701010SJagan Teki®_dcdc2 { 223e5701010SJagan Teki regulator-always-on; 224e5701010SJagan Teki regulator-min-microvolt = <1040000>; 225e5701010SJagan Teki regulator-max-microvolt = <1300000>; 226e5701010SJagan Teki regulator-name = "vdd-cpux"; 227e5701010SJagan Teki}; 228e5701010SJagan Teki 229e5701010SJagan Teki/* DCDC3 is polyphased with DCDC2 */ 230e5701010SJagan Teki 231e5701010SJagan Teki®_dcdc5 { 232e5701010SJagan Teki regulator-always-on; 233e5701010SJagan Teki regulator-min-microvolt = <1500000>; 234e5701010SJagan Teki regulator-max-microvolt = <1500000>; 235e5701010SJagan Teki regulator-name = "vcc-dram"; 236e5701010SJagan Teki}; 237e5701010SJagan Teki 238e5701010SJagan Teki®_dcdc6 { 239e5701010SJagan Teki regulator-always-on; 240e5701010SJagan Teki regulator-min-microvolt = <1100000>; 241e5701010SJagan Teki regulator-max-microvolt = <1100000>; 242e5701010SJagan Teki regulator-name = "vdd-sys"; 243e5701010SJagan Teki}; 244e5701010SJagan Teki 245e5701010SJagan Teki®_dldo1 { 246e5701010SJagan Teki regulator-min-microvolt = <3300000>; 247e5701010SJagan Teki regulator-max-microvolt = <3300000>; 248e5701010SJagan Teki regulator-name = "vcc-hdmi-dsi"; 249e5701010SJagan Teki}; 250e5701010SJagan Teki 251e5701010SJagan Teki®_dldo2 { 252e5701010SJagan Teki regulator-min-microvolt = <3300000>; 253e5701010SJagan Teki regulator-max-microvolt = <3300000>; 254e5701010SJagan Teki regulator-name = "vcc-wifi"; 255e5701010SJagan Teki}; 256e5701010SJagan Teki 257e5701010SJagan Teki®_dldo3 { 258e5701010SJagan Teki regulator-min-microvolt = <3300000>; 259e5701010SJagan Teki regulator-max-microvolt = <3300000>; 260e5701010SJagan Teki regulator-name = "avdd-csi"; 261e5701010SJagan Teki}; 262e5701010SJagan Teki 263e5701010SJagan Teki®_dldo4 { 264e5701010SJagan Teki regulator-min-microvolt = <3300000>; 265e5701010SJagan Teki regulator-max-microvolt = <3300000>; 266e5701010SJagan Teki regulator-name = "vcc-wifi-io"; 267e5701010SJagan Teki}; 268e5701010SJagan Teki 26914ff5d8fSSamuel Holland®_drivevbus { 27014ff5d8fSSamuel Holland regulator-name = "usb0-vbus"; 27114ff5d8fSSamuel Holland status = "okay"; 27214ff5d8fSSamuel Holland}; 27314ff5d8fSSamuel Holland 274e5701010SJagan Teki®_eldo1 { 275e5701010SJagan Teki regulator-min-microvolt = <1800000>; 276e5701010SJagan Teki regulator-max-microvolt = <1800000>; 277e5701010SJagan Teki regulator-name = "cpvdd"; 278e5701010SJagan Teki}; 279e5701010SJagan Teki 280eacd9c43SSamuel Holland®_eldo3 { 281eacd9c43SSamuel Holland regulator-min-microvolt = <1500000>; 282eacd9c43SSamuel Holland regulator-max-microvolt = <1800000>; 283eacd9c43SSamuel Holland regulator-name = "dvdd-csi"; 284eacd9c43SSamuel Holland}; 285eacd9c43SSamuel Holland 286e5701010SJagan Teki®_fldo1 { 287e5701010SJagan Teki regulator-min-microvolt = <1200000>; 288e5701010SJagan Teki regulator-max-microvolt = <1200000>; 289e5701010SJagan Teki regulator-name = "vcc-1v2-hsic"; 290e5701010SJagan Teki}; 291e5701010SJagan Teki 292e5701010SJagan Teki/* 293e5701010SJagan Teki * The A64 chip cannot work without this regulator off, although 294e5701010SJagan Teki * it seems to be only driving the AR100 core. 295e5701010SJagan Teki * Maybe we don't still know well about CPUs domain. 296e5701010SJagan Teki */ 297e5701010SJagan Teki®_fldo2 { 298e5701010SJagan Teki regulator-always-on; 299e5701010SJagan Teki regulator-min-microvolt = <1100000>; 300e5701010SJagan Teki regulator-max-microvolt = <1100000>; 301e5701010SJagan Teki regulator-name = "vdd-cpus"; 302e5701010SJagan Teki}; 303e5701010SJagan Teki 304e5701010SJagan Teki®_rtc_ldo { 305e5701010SJagan Teki regulator-name = "vcc-rtc"; 306e5701010SJagan Teki}; 307e5701010SJagan Teki 3085cbef9f9SIcenowy Zheng&simplefb_hdmi { 3095cbef9f9SIcenowy Zheng vcc-hdmi-supply = <®_dldo1>; 3105cbef9f9SIcenowy Zheng}; 3115cbef9f9SIcenowy Zheng 3126db1aaf4SJernej Skrabec&sound { 3136db1aaf4SJernej Skrabec status = "okay"; 3146db1aaf4SJernej Skrabec simple-audio-card,widgets = "Headphone", "Headphone Jack", 3156db1aaf4SJernej Skrabec "Microphone", "Microphone Jack", 3166db1aaf4SJernej Skrabec "Microphone", "Onboard Microphone"; 3176db1aaf4SJernej Skrabec simple-audio-card,routing = 3186db1aaf4SJernej Skrabec "Left DAC", "AIF1 Slot 0 Left", 3196db1aaf4SJernej Skrabec "Right DAC", "AIF1 Slot 0 Right", 3206db1aaf4SJernej Skrabec "AIF1 Slot 0 Left ADC", "Left ADC", 3216db1aaf4SJernej Skrabec "AIF1 Slot 0 Right ADC", "Right ADC", 3226db1aaf4SJernej Skrabec "Headphone Jack", "HP", 3236db1aaf4SJernej Skrabec "MIC2", "Microphone Jack", 3246db1aaf4SJernej Skrabec "Onboard Microphone", "MBIAS", 3256db1aaf4SJernej Skrabec "MIC1", "Onboard Microphone"; 3266db1aaf4SJernej Skrabec}; 3276db1aaf4SJernej Skrabec 328d8174422SSamuel Holland&spi0 { 329d8174422SSamuel Holland status = "okay"; 330d8174422SSamuel Holland 331d8174422SSamuel Holland spi-flash@0 { 332d8174422SSamuel Holland compatible = "mxicy,mx25l1606e", "jedec,spi-nor"; 333d8174422SSamuel Holland reg = <0>; 334d8174422SSamuel Holland spi-max-frequency = <80000000>; 335d8174422SSamuel Holland m25p,fast-read; 336d8174422SSamuel Holland status = "okay"; 337d8174422SSamuel Holland }; 338d8174422SSamuel Holland}; 339d8174422SSamuel Holland 34013b31e6bSSamuel Holland/* On debug connector */ 341bdecc9cbSJagan Teki&uart0 { 342bdecc9cbSJagan Teki pinctrl-names = "default"; 343d91ebb95SChen-Yu Tsai pinctrl-0 = <&uart0_pb_pins>; 344bdecc9cbSJagan Teki status = "okay"; 345bdecc9cbSJagan Teki}; 346bdecc9cbSJagan Teki 34713b31e6bSSamuel Holland/* Bluetooth */ 34813b31e6bSSamuel Holland&uart1 { 34913b31e6bSSamuel Holland pinctrl-names = "default"; 35013b31e6bSSamuel Holland pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 35185c6faddSJernej Skrabec uart-has-rtscts; 35213b31e6bSSamuel Holland status = "okay"; 35385c6faddSJernej Skrabec 35485c6faddSJernej Skrabec bluetooth { 35585c6faddSJernej Skrabec compatible = "brcm,bcm43438-bt"; 35685c6faddSJernej Skrabec max-speed = <1500000>; 35785c6faddSJernej Skrabec clocks = <&rtc 1>; 35885c6faddSJernej Skrabec clock-names = "lpo"; 35985c6faddSJernej Skrabec vbat-supply = <®_dldo2>; 36085c6faddSJernej Skrabec vddio-supply = <®_dldo4>; 36185c6faddSJernej Skrabec device-wakeup-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ 36285c6faddSJernej Skrabec host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */ 36385c6faddSJernej Skrabec shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ 36485c6faddSJernej Skrabec }; 36513b31e6bSSamuel Holland}; 36613b31e6bSSamuel Holland 36713b31e6bSSamuel Holland/* On Pi-2 connector, RTS/CTS optional */ 36813b31e6bSSamuel Holland&uart2 { 36913b31e6bSSamuel Holland pinctrl-names = "default"; 37013b31e6bSSamuel Holland pinctrl-0 = <&uart2_pins>; 37113b31e6bSSamuel Holland status = "disabled"; 37213b31e6bSSamuel Holland}; 37313b31e6bSSamuel Holland 37413b31e6bSSamuel Holland/* On Pi-2 connector, RTS/CTS optional */ 37513b31e6bSSamuel Holland&uart3 { 37613b31e6bSSamuel Holland pinctrl-names = "default"; 37713b31e6bSSamuel Holland pinctrl-0 = <&uart3_pins>; 37813b31e6bSSamuel Holland status = "disabled"; 37913b31e6bSSamuel Holland}; 38013b31e6bSSamuel Holland 38113b31e6bSSamuel Holland/* On Pi-2 connector (labeled for SPI1), RTS/CTS optional */ 38213b31e6bSSamuel Holland&uart4 { 38313b31e6bSSamuel Holland pinctrl-names = "default"; 38413b31e6bSSamuel Holland pinctrl-0 = <&uart4_pins>; 38513b31e6bSSamuel Holland status = "disabled"; 38613b31e6bSSamuel Holland}; 38713b31e6bSSamuel Holland 38814ff5d8fSSamuel Holland&usb_otg { 38914ff5d8fSSamuel Holland dr_mode = "otg"; 390bdecc9cbSJagan Teki status = "okay"; 391bdecc9cbSJagan Teki}; 392bdecc9cbSJagan Teki 39314ff5d8fSSamuel Holland&usbphy { 39414ff5d8fSSamuel Holland usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ 39514ff5d8fSSamuel Holland usb0_vbus-supply = <®_drivevbus>; 39614ff5d8fSSamuel Holland usb1_vbus-supply = <®_usb1_vbus>; 39714ff5d8fSSamuel Holland status = "okay"; 39814ff5d8fSSamuel Holland}; 399