1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2// Copyright (C) 2017 Jagan Teki <jteki@openedev.com> 3// Copyright (C) 2017-2018 Samuel Holland <samuel@sholland.org> 4 5/dts-v1/; 6 7#include "sun50i-a64.dtsi" 8#include "sun50i-a64-cpu-opp.dtsi" 9 10#include <dt-bindings/gpio/gpio.h> 11 12/ { 13 model = "OrangePi Win/Win Plus"; 14 compatible = "xunlong,orangepi-win", "allwinner,sun50i-a64"; 15 16 aliases { 17 ethernet0 = &emac; 18 serial0 = &uart0; 19 serial1 = &uart1; 20 serial2 = &uart2; 21 serial3 = &uart3; 22 serial4 = &uart4; 23 }; 24 25 chosen { 26 stdout-path = "serial0:115200n8"; 27 }; 28 29 hdmi-connector { 30 compatible = "hdmi-connector"; 31 type = "a"; 32 33 port { 34 hdmi_con_in: endpoint { 35 remote-endpoint = <&hdmi_out_con>; 36 }; 37 }; 38 }; 39 40 leds { 41 compatible = "gpio-leds"; 42 43 led-0 { 44 label = "orangepi:green:status"; 45 gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ 46 }; 47 }; 48 49 reg_gmac_3v3: gmac-3v3 { 50 compatible = "regulator-fixed"; 51 regulator-name = "gmac-3v3"; 52 regulator-min-microvolt = <3300000>; 53 regulator-max-microvolt = <3300000>; 54 regulator-boot-on; 55 enable-active-high; 56 gpio = <&pio 3 14 GPIO_ACTIVE_HIGH>; /* PD14 */ 57 status = "okay"; 58 }; 59 60 reg_usb1_vbus: usb1-vbus { 61 compatible = "regulator-fixed"; 62 regulator-name = "usb1-vbus"; 63 regulator-min-microvolt = <5000000>; 64 regulator-max-microvolt = <5000000>; 65 regulator-boot-on; 66 enable-active-high; 67 gpio = <&pio 3 7 GPIO_ACTIVE_HIGH>; /* PD7 */ 68 status = "okay"; 69 }; 70 71 wifi_pwrseq: wifi_pwrseq { 72 compatible = "mmc-pwrseq-simple"; 73 reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */ 74 clocks = <&rtc CLK_OSC32K_FANOUT>; 75 clock-names = "ext_clock"; 76 }; 77}; 78 79&codec { 80 status = "okay"; 81}; 82 83&codec_analog { 84 cpvdd-supply = <®_eldo1>; 85 status = "okay"; 86}; 87 88&cpu0 { 89 cpu-supply = <®_dcdc2>; 90}; 91 92&cpu1 { 93 cpu-supply = <®_dcdc2>; 94}; 95 96&cpu2 { 97 cpu-supply = <®_dcdc2>; 98}; 99 100&cpu3 { 101 cpu-supply = <®_dcdc2>; 102}; 103 104&dai { 105 status = "okay"; 106}; 107 108&de { 109 status = "okay"; 110}; 111 112&ehci0 { 113 status = "okay"; 114}; 115 116&ehci1 { 117 status = "okay"; 118}; 119 120&emac { 121 pinctrl-names = "default"; 122 pinctrl-0 = <&rgmii_pins>; 123 phy-mode = "rgmii-id"; 124 phy-handle = <&ext_rgmii_phy>; 125 phy-supply = <®_gmac_3v3>; 126 status = "okay"; 127}; 128 129&hdmi { 130 hvcc-supply = <®_dldo1>; 131 status = "okay"; 132}; 133 134&hdmi_out { 135 hdmi_out_con: endpoint { 136 remote-endpoint = <&hdmi_con_in>; 137 }; 138}; 139 140&mdio { 141 ext_rgmii_phy: ethernet-phy@1 { 142 compatible = "ethernet-phy-ieee802.3-c22"; 143 reg = <1>; 144 }; 145}; 146 147&mmc0 { 148 pinctrl-names = "default"; 149 pinctrl-0 = <&mmc0_pins>; 150 vmmc-supply = <®_dcdc1>; 151 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 152 disable-wp; 153 bus-width = <4>; 154 status = "okay"; 155}; 156 157&mmc1 { 158 pinctrl-names = "default"; 159 pinctrl-0 = <&mmc1_pins>; 160 vmmc-supply = <®_dldo2>; 161 vqmmc-supply = <®_dldo4>; 162 mmc-pwrseq = <&wifi_pwrseq>; 163 bus-width = <4>; 164 non-removable; 165 status = "okay"; 166 167 brcmf: wifi@1 { 168 reg = <1>; 169 compatible = "brcm,bcm4329-fmac"; 170 interrupt-parent = <&r_pio>; 171 interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 */ 172 interrupt-names = "host-wake"; 173 }; 174}; 175 176&ohci0 { 177 status = "okay"; 178}; 179 180&ohci1 { 181 status = "okay"; 182}; 183 184&r_ir { 185 status = "okay"; 186}; 187 188&r_rsb { 189 status = "okay"; 190 191 axp803: pmic@3a3 { 192 compatible = "x-powers,axp803"; 193 reg = <0x3a3>; 194 interrupt-parent = <&r_intc>; 195 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>; 196 x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ 197 }; 198}; 199 200#include "axp803.dtsi" 201 202&ac_power_supply { 203 status = "okay"; 204}; 205 206&battery_power_supply { 207 status = "okay"; 208}; 209 210®_aldo1 { 211 regulator-min-microvolt = <2800000>; 212 regulator-max-microvolt = <2800000>; 213 regulator-name = "afvcc-csi"; 214}; 215 216®_aldo2 { 217 regulator-always-on; 218 regulator-min-microvolt = <1800000>; 219 regulator-max-microvolt = <3300000>; 220 regulator-name = "vcc-pl"; 221}; 222 223®_aldo3 { 224 regulator-always-on; 225 regulator-min-microvolt = <3000000>; 226 regulator-max-microvolt = <3000000>; 227 regulator-name = "vcc-pll-avcc"; 228}; 229 230®_dcdc1 { 231 regulator-always-on; 232 regulator-min-microvolt = <3300000>; 233 regulator-max-microvolt = <3300000>; 234 regulator-name = "vcc-3v3"; 235}; 236 237®_dcdc2 { 238 regulator-always-on; 239 regulator-min-microvolt = <1040000>; 240 regulator-max-microvolt = <1300000>; 241 regulator-name = "vdd-cpux"; 242}; 243 244/* DCDC3 is polyphased with DCDC2 */ 245 246®_dcdc5 { 247 regulator-always-on; 248 regulator-min-microvolt = <1500000>; 249 regulator-max-microvolt = <1500000>; 250 regulator-name = "vcc-dram"; 251}; 252 253®_dcdc6 { 254 regulator-always-on; 255 regulator-min-microvolt = <1100000>; 256 regulator-max-microvolt = <1100000>; 257 regulator-name = "vdd-sys"; 258}; 259 260®_dldo1 { 261 regulator-min-microvolt = <3300000>; 262 regulator-max-microvolt = <3300000>; 263 regulator-name = "vcc-hdmi-dsi"; 264}; 265 266®_dldo2 { 267 regulator-min-microvolt = <3300000>; 268 regulator-max-microvolt = <3300000>; 269 regulator-name = "vcc-wifi"; 270}; 271 272®_dldo3 { 273 regulator-min-microvolt = <3300000>; 274 regulator-max-microvolt = <3300000>; 275 regulator-name = "avdd-csi"; 276}; 277 278®_dldo4 { 279 regulator-min-microvolt = <3300000>; 280 regulator-max-microvolt = <3300000>; 281 regulator-name = "vcc-wifi-io"; 282}; 283 284®_drivevbus { 285 regulator-name = "usb0-vbus"; 286 status = "okay"; 287}; 288 289®_eldo1 { 290 regulator-min-microvolt = <1800000>; 291 regulator-max-microvolt = <1800000>; 292 regulator-name = "cpvdd"; 293}; 294 295®_eldo3 { 296 regulator-min-microvolt = <1500000>; 297 regulator-max-microvolt = <1800000>; 298 regulator-name = "dvdd-csi"; 299}; 300 301®_fldo1 { 302 regulator-min-microvolt = <1200000>; 303 regulator-max-microvolt = <1200000>; 304 regulator-name = "vcc-1v2-hsic"; 305}; 306 307/* 308 * The A64 chip cannot work without this regulator off, although 309 * it seems to be only driving the AR100 core. 310 * Maybe we don't still know well about CPUs domain. 311 */ 312®_fldo2 { 313 regulator-always-on; 314 regulator-min-microvolt = <1100000>; 315 regulator-max-microvolt = <1100000>; 316 regulator-name = "vdd-cpus"; 317}; 318 319®_rtc_ldo { 320 regulator-name = "vcc-rtc"; 321}; 322 323&simplefb_hdmi { 324 vcc-hdmi-supply = <®_dldo1>; 325}; 326 327&sound { 328 status = "okay"; 329 simple-audio-card,widgets = "Headphone", "Headphone Jack", 330 "Microphone", "Microphone Jack", 331 "Microphone", "Onboard Microphone"; 332 simple-audio-card,routing = 333 "Left DAC", "DACL", 334 "Right DAC", "DACR", 335 "ADCL", "Left ADC", 336 "ADCR", "Right ADC", 337 "Headphone Jack", "HP", 338 "MIC2", "Microphone Jack", 339 "Onboard Microphone", "MBIAS", 340 "MIC1", "Onboard Microphone"; 341}; 342 343&spi0 { 344 status = "okay"; 345 346 flash@0 { 347 compatible = "mxicy,mx25l1606e", "jedec,spi-nor"; 348 reg = <0>; 349 spi-max-frequency = <80000000>; 350 m25p,fast-read; 351 status = "okay"; 352 }; 353}; 354 355/* On debug connector */ 356&uart0 { 357 pinctrl-names = "default"; 358 pinctrl-0 = <&uart0_pb_pins>; 359 status = "okay"; 360}; 361 362/* Bluetooth */ 363&uart1 { 364 pinctrl-names = "default"; 365 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 366 uart-has-rtscts; 367 status = "okay"; 368 369 bluetooth { 370 compatible = "brcm,bcm43438-bt"; 371 max-speed = <1500000>; 372 clocks = <&rtc CLK_OSC32K_FANOUT>; 373 clock-names = "lpo"; 374 vbat-supply = <®_dldo2>; 375 vddio-supply = <®_dldo4>; 376 device-wakeup-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ 377 host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */ 378 shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ 379 }; 380}; 381 382/* On Pi-2 connector, RTS/CTS optional */ 383&uart2 { 384 pinctrl-names = "default"; 385 pinctrl-0 = <&uart2_pins>; 386 status = "disabled"; 387}; 388 389/* On Pi-2 connector, RTS/CTS optional */ 390&uart3 { 391 pinctrl-names = "default"; 392 pinctrl-0 = <&uart3_pins>; 393 status = "disabled"; 394}; 395 396/* On Pi-2 connector (labeled for SPI1), RTS/CTS optional */ 397&uart4 { 398 pinctrl-names = "default"; 399 pinctrl-0 = <&uart4_pins>; 400 status = "disabled"; 401}; 402 403&usb_otg { 404 dr_mode = "otg"; 405 status = "okay"; 406}; 407 408&usbphy { 409 usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ 410 usb0_vbus-supply = <®_drivevbus>; 411 usb1_vbus-supply = <®_usb1_vbus>; 412 status = "okay"; 413}; 414