153ab4af3SHans de Goede/* 253ab4af3SHans de Goede * Copyright 2014 Chen-Yu Tsai 353ab4af3SHans de Goede * 453ab4af3SHans de Goede * Chen-Yu Tsai <wens@csie.org> 553ab4af3SHans de Goede * 653ab4af3SHans de Goede * This file is dual-licensed: you can use it either under the terms 753ab4af3SHans de Goede * of the GPL or the X11 license, at your option. Note that this dual 853ab4af3SHans de Goede * licensing only applies to this file, and not this project as a 953ab4af3SHans de Goede * whole. 1053ab4af3SHans de Goede * 1153ab4af3SHans de Goede * a) This file is free software; you can redistribute it and/or 1253ab4af3SHans de Goede * modify it under the terms of the GNU General Public License as 1353ab4af3SHans de Goede * published by the Free Software Foundation; either version 2 of the 1453ab4af3SHans de Goede * License, or (at your option) any later version. 1553ab4af3SHans de Goede * 1653ab4af3SHans de Goede * This file is distributed in the hope that it will be useful, 1753ab4af3SHans de Goede * but WITHOUT ANY WARRANTY; without even the implied warranty of 1853ab4af3SHans de Goede * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1953ab4af3SHans de Goede * GNU General Public License for more details. 2053ab4af3SHans de Goede * 2153ab4af3SHans de Goede * Or, alternatively, 2253ab4af3SHans de Goede * 2353ab4af3SHans de Goede * b) Permission is hereby granted, free of charge, to any person 2453ab4af3SHans de Goede * obtaining a copy of this software and associated documentation 2553ab4af3SHans de Goede * files (the "Software"), to deal in the Software without 2653ab4af3SHans de Goede * restriction, including without limitation the rights to use, 2753ab4af3SHans de Goede * copy, modify, merge, publish, distribute, sublicense, and/or 2853ab4af3SHans de Goede * sell copies of the Software, and to permit persons to whom the 2953ab4af3SHans de Goede * Software is furnished to do so, subject to the following 3053ab4af3SHans de Goede * conditions: 3153ab4af3SHans de Goede * 3253ab4af3SHans de Goede * The above copyright notice and this permission notice shall be 3353ab4af3SHans de Goede * included in all copies or substantial portions of the Software. 3453ab4af3SHans de Goede * 3553ab4af3SHans de Goede * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 3653ab4af3SHans de Goede * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 3753ab4af3SHans de Goede * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 3853ab4af3SHans de Goede * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 3953ab4af3SHans de Goede * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 4053ab4af3SHans de Goede * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 4153ab4af3SHans de Goede * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 4253ab4af3SHans de Goede * OTHER DEALINGS IN THE SOFTWARE. 4353ab4af3SHans de Goede */ 4453ab4af3SHans de Goede 4553ab4af3SHans de Goede/dts-v1/; 4653ab4af3SHans de Goede#include "sun9i-a80.dtsi" 4753ab4af3SHans de Goede 4853ab4af3SHans de Goede#include <dt-bindings/gpio/gpio.h> 4953ab4af3SHans de Goede#include <dt-bindings/pinctrl/sun4i-a10.h> 5053ab4af3SHans de Goede 5153ab4af3SHans de Goede/ { 5253ab4af3SHans de Goede model = "Merrii A80 Optimus Board"; 5353ab4af3SHans de Goede compatible = "merrii,a80-optimus", "allwinner,sun9i-a80"; 5453ab4af3SHans de Goede 5553ab4af3SHans de Goede aliases { 5653ab4af3SHans de Goede serial0 = &uart0; 5753ab4af3SHans de Goede serial1 = &uart4; 5853ab4af3SHans de Goede }; 5953ab4af3SHans de Goede 6053ab4af3SHans de Goede chosen { 6153ab4af3SHans de Goede stdout-path = "serial0:115200n8"; 6253ab4af3SHans de Goede }; 6353ab4af3SHans de Goede 6453ab4af3SHans de Goede leds { 6553ab4af3SHans de Goede compatible = "gpio-leds"; 6653ab4af3SHans de Goede pinctrl-names = "default"; 6780e5f83cSHans de Goede pinctrl-0 = <&led_pins_optimus>, <&led_r_pins_optimus>; 6853ab4af3SHans de Goede 6953ab4af3SHans de Goede /* The LED names match those found on the board */ 7053ab4af3SHans de Goede 7153ab4af3SHans de Goede led2 { 7253ab4af3SHans de Goede label = "optimus:led2:usr"; 7353ab4af3SHans de Goede gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; 7453ab4af3SHans de Goede }; 7553ab4af3SHans de Goede 7680e5f83cSHans de Goede led3 { 7780e5f83cSHans de Goede label = "optimus:led3:usr"; 7880e5f83cSHans de Goede gpios = <&r_pio 1 15 GPIO_ACTIVE_HIGH>; /* PM15 */ 7980e5f83cSHans de Goede }; 8053ab4af3SHans de Goede 8153ab4af3SHans de Goede led4 { 8253ab4af3SHans de Goede label = "optimus:led4:usr"; 8353ab4af3SHans de Goede gpios = <&pio 7 0 GPIO_ACTIVE_HIGH>; 8453ab4af3SHans de Goede }; 8553ab4af3SHans de Goede }; 8653ab4af3SHans de Goede 87*860fbdd4SHans de Goede reg_usb1_vbus: usb1-vbus { 88*860fbdd4SHans de Goede compatible = "regulator-fixed"; 89*860fbdd4SHans de Goede pinctrl-names = "default"; 90*860fbdd4SHans de Goede pinctrl-0 = <&usb1_vbus_pin_optimus>; 91*860fbdd4SHans de Goede regulator-name = "usb1-vbus"; 92*860fbdd4SHans de Goede regulator-min-microvolt = <5000000>; 93*860fbdd4SHans de Goede regulator-max-microvolt = <5000000>; 94*860fbdd4SHans de Goede enable-active-high; 95*860fbdd4SHans de Goede gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ 96*860fbdd4SHans de Goede }; 97*860fbdd4SHans de Goede 9853ab4af3SHans de Goede reg_usb3_vbus: usb3-vbus { 9953ab4af3SHans de Goede compatible = "regulator-fixed"; 10053ab4af3SHans de Goede pinctrl-names = "default"; 10153ab4af3SHans de Goede pinctrl-0 = <&usb3_vbus_pin_optimus>; 10253ab4af3SHans de Goede regulator-name = "usb3-vbus"; 10353ab4af3SHans de Goede regulator-min-microvolt = <5000000>; 10453ab4af3SHans de Goede regulator-max-microvolt = <5000000>; 10553ab4af3SHans de Goede enable-active-high; 10653ab4af3SHans de Goede gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ 10753ab4af3SHans de Goede }; 10853ab4af3SHans de Goede}; 10953ab4af3SHans de Goede 11053ab4af3SHans de Goede&ehci0 { 11153ab4af3SHans de Goede status = "okay"; 11253ab4af3SHans de Goede}; 11353ab4af3SHans de Goede 11453ab4af3SHans de Goede&ehci1 { 11553ab4af3SHans de Goede status = "okay"; 11653ab4af3SHans de Goede}; 11753ab4af3SHans de Goede 11853ab4af3SHans de Goede&ehci2 { 11953ab4af3SHans de Goede status = "okay"; 12053ab4af3SHans de Goede}; 12153ab4af3SHans de Goede 122*860fbdd4SHans de Goede&mmc0 { 123*860fbdd4SHans de Goede pinctrl-names = "default"; 124*860fbdd4SHans de Goede pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_optimus>; 125*860fbdd4SHans de Goede vmmc-supply = <®_dcdc1>; 126*860fbdd4SHans de Goede bus-width = <4>; 127*860fbdd4SHans de Goede cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH8 */ 128*860fbdd4SHans de Goede cd-inverted; 129*860fbdd4SHans de Goede status = "okay"; 130*860fbdd4SHans de Goede}; 131*860fbdd4SHans de Goede 132*860fbdd4SHans de Goede&mmc2 { 133*860fbdd4SHans de Goede pinctrl-names = "default"; 134*860fbdd4SHans de Goede pinctrl-0 = <&mmc2_8bit_pins>; 135*860fbdd4SHans de Goede vmmc-supply = <®_dcdc1>; 136*860fbdd4SHans de Goede bus-width = <8>; 137*860fbdd4SHans de Goede non-removable; 138*860fbdd4SHans de Goede cap-mmc-hw-reset; 139*860fbdd4SHans de Goede status = "okay"; 140*860fbdd4SHans de Goede}; 141*860fbdd4SHans de Goede 142*860fbdd4SHans de Goede&mmc2_8bit_pins { 143*860fbdd4SHans de Goede /* Increase drive strength for DDR modes */ 144*860fbdd4SHans de Goede allwinner,drive = <SUN4I_PINCTRL_40_MA>; 145*860fbdd4SHans de Goede}; 146*860fbdd4SHans de Goede 14753ab4af3SHans de Goede&ohci0 { 14853ab4af3SHans de Goede status = "okay"; 14953ab4af3SHans de Goede}; 15053ab4af3SHans de Goede 15153ab4af3SHans de Goede&ohci2 { 15253ab4af3SHans de Goede status = "okay"; 15353ab4af3SHans de Goede}; 15453ab4af3SHans de Goede 15553ab4af3SHans de Goede&pio { 15653ab4af3SHans de Goede led_pins_optimus: led-pins@0 { 15753ab4af3SHans de Goede allwinner,pins = "PH0", "PH1"; 15853ab4af3SHans de Goede allwinner,function = "gpio_out"; 15953ab4af3SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 16053ab4af3SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 16153ab4af3SHans de Goede }; 16253ab4af3SHans de Goede 16353ab4af3SHans de Goede mmc0_cd_pin_optimus: mmc0_cd_pin@0 { 16453ab4af3SHans de Goede allwinner,pins = "PH18"; 16553ab4af3SHans de Goede allwinner,function = "gpio_in"; 16653ab4af3SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 16753ab4af3SHans de Goede allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 16853ab4af3SHans de Goede }; 16953ab4af3SHans de Goede 17053ab4af3SHans de Goede usb1_vbus_pin_optimus: usb1_vbus_pin@1 { 17153ab4af3SHans de Goede allwinner,pins = "PH4"; 17253ab4af3SHans de Goede allwinner,function = "gpio_out"; 17353ab4af3SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 17453ab4af3SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 17553ab4af3SHans de Goede }; 17653ab4af3SHans de Goede 17753ab4af3SHans de Goede usb3_vbus_pin_optimus: usb3_vbus_pin@1 { 17853ab4af3SHans de Goede allwinner,pins = "PH5"; 17953ab4af3SHans de Goede allwinner,function = "gpio_out"; 18053ab4af3SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 18153ab4af3SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 18253ab4af3SHans de Goede }; 18353ab4af3SHans de Goede}; 18453ab4af3SHans de Goede 18580e5f83cSHans de Goede&r_ir { 18680e5f83cSHans de Goede status = "okay"; 18780e5f83cSHans de Goede}; 18880e5f83cSHans de Goede 18980e5f83cSHans de Goede&r_pio { 19080e5f83cSHans de Goede led_r_pins_optimus: led-pins@1 { 19180e5f83cSHans de Goede allwinner,pins = "PM15"; 19280e5f83cSHans de Goede allwinner,function = "gpio_out"; 19380e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 19480e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 19580e5f83cSHans de Goede }; 19680e5f83cSHans de Goede}; 19780e5f83cSHans de Goede 19880e5f83cSHans de Goede&r_rsb { 19980e5f83cSHans de Goede status = "okay"; 200*860fbdd4SHans de Goede 201*860fbdd4SHans de Goede axp809: pmic@3a3 { 202*860fbdd4SHans de Goede reg = <0x3a3>; 203*860fbdd4SHans de Goede interrupt-parent = <&nmi_intc>; 204*860fbdd4SHans de Goede interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 205*860fbdd4SHans de Goede 206*860fbdd4SHans de Goede regulators { 207*860fbdd4SHans de Goede reg_aldo1: aldo1 { 208*860fbdd4SHans de Goede /* 209*860fbdd4SHans de Goede * TODO: This should be handled by the 210*860fbdd4SHans de Goede * USB PHY driver. 211*860fbdd4SHans de Goede */ 212*860fbdd4SHans de Goede regulator-always-on; 213*860fbdd4SHans de Goede regulator-min-microvolt = <3000000>; 214*860fbdd4SHans de Goede regulator-max-microvolt = <3000000>; 215*860fbdd4SHans de Goede regulator-name = "vcc33-usbh"; 21680e5f83cSHans de Goede }; 21780e5f83cSHans de Goede 218*860fbdd4SHans de Goede reg_aldo2: aldo2 { 219*860fbdd4SHans de Goede regulator-min-microvolt = <1800000>; 220*860fbdd4SHans de Goede regulator-max-microvolt = <1800000>; 221*860fbdd4SHans de Goede regulator-name = "vcc-pb-io-cam"; 222*860fbdd4SHans de Goede }; 223*860fbdd4SHans de Goede 224*860fbdd4SHans de Goede aldo3 { 225*860fbdd4SHans de Goede /* unused */ 226*860fbdd4SHans de Goede }; 227*860fbdd4SHans de Goede 228*860fbdd4SHans de Goede reg_dc5ldo: dc5ldo { 229*860fbdd4SHans de Goede regulator-always-on; 230*860fbdd4SHans de Goede regulator-min-microvolt = <800000>; 231*860fbdd4SHans de Goede regulator-max-microvolt = <1100000>; 232*860fbdd4SHans de Goede regulator-name = "vdd-cpus-09-usbh"; 233*860fbdd4SHans de Goede }; 234*860fbdd4SHans de Goede 235*860fbdd4SHans de Goede reg_dcdc1: dcdc1 { 236*860fbdd4SHans de Goede regulator-always-on; 237*860fbdd4SHans de Goede regulator-min-microvolt = <3000000>; 238*860fbdd4SHans de Goede regulator-max-microvolt = <3000000>; 239*860fbdd4SHans de Goede regulator-name = "vcc-3v"; 240*860fbdd4SHans de Goede }; 241*860fbdd4SHans de Goede 242*860fbdd4SHans de Goede reg_dcdc2: dcdc2 { 243*860fbdd4SHans de Goede regulator-min-microvolt = <800000>; 244*860fbdd4SHans de Goede regulator-max-microvolt = <1100000>; 245*860fbdd4SHans de Goede regulator-name = "vdd-gpu"; 246*860fbdd4SHans de Goede }; 247*860fbdd4SHans de Goede 248*860fbdd4SHans de Goede reg_dcdc3: dcdc3 { 249*860fbdd4SHans de Goede regulator-always-on; 250*860fbdd4SHans de Goede regulator-min-microvolt = <800000>; 251*860fbdd4SHans de Goede regulator-max-microvolt = <1100000>; 252*860fbdd4SHans de Goede regulator-name = "vdd-cpua"; 253*860fbdd4SHans de Goede }; 254*860fbdd4SHans de Goede 255*860fbdd4SHans de Goede reg_dcdc4: dcdc4 { 256*860fbdd4SHans de Goede regulator-always-on; 257*860fbdd4SHans de Goede regulator-min-microvolt = <800000>; 258*860fbdd4SHans de Goede regulator-max-microvolt = <1100000>; 259*860fbdd4SHans de Goede regulator-name = "vdd-sys-usb0-hdmi"; 260*860fbdd4SHans de Goede }; 261*860fbdd4SHans de Goede 262*860fbdd4SHans de Goede reg_dcdc5: dcdc5 { 263*860fbdd4SHans de Goede regulator-always-on; 264*860fbdd4SHans de Goede regulator-min-microvolt = <1425000>; 265*860fbdd4SHans de Goede regulator-max-microvolt = <1575000>; 266*860fbdd4SHans de Goede regulator-name = "vcc-dram"; 267*860fbdd4SHans de Goede }; 268*860fbdd4SHans de Goede 269*860fbdd4SHans de Goede reg_dldo1: dldo1 { 270*860fbdd4SHans de Goede /* 271*860fbdd4SHans de Goede * The WiFi chip supports a wide range 272*860fbdd4SHans de Goede * (3.0 ~ 4.8V) of voltages, and so does 273*860fbdd4SHans de Goede * this regulator (3.0 ~ 4.2V), but 274*860fbdd4SHans de Goede * Allwinner SDK always sets it to 3.3V. 275*860fbdd4SHans de Goede */ 276*860fbdd4SHans de Goede regulator-min-microvolt = <3300000>; 277*860fbdd4SHans de Goede regulator-max-microvolt = <3300000>; 278*860fbdd4SHans de Goede regulator-name = "vcc-wifi"; 279*860fbdd4SHans de Goede }; 280*860fbdd4SHans de Goede 281*860fbdd4SHans de Goede reg_dldo2: dldo2 { 282*860fbdd4SHans de Goede regulator-always-on; 283*860fbdd4SHans de Goede regulator-min-microvolt = <3000000>; 284*860fbdd4SHans de Goede regulator-max-microvolt = <3000000>; 285*860fbdd4SHans de Goede regulator-name = "vcc-pl"; 286*860fbdd4SHans de Goede }; 287*860fbdd4SHans de Goede 288*860fbdd4SHans de Goede reg_eldo1: eldo1 { 289*860fbdd4SHans de Goede regulator-min-microvolt = <1200000>; 290*860fbdd4SHans de Goede regulator-max-microvolt = <1200000>; 291*860fbdd4SHans de Goede regulator-name = "vcc-dvdd-cam"; 292*860fbdd4SHans de Goede }; 293*860fbdd4SHans de Goede 294*860fbdd4SHans de Goede reg_eldo2: eldo2 { 295*860fbdd4SHans de Goede regulator-min-microvolt = <1800000>; 296*860fbdd4SHans de Goede regulator-max-microvolt = <1800000>; 297*860fbdd4SHans de Goede regulator-name = "vcc-pe"; 298*860fbdd4SHans de Goede }; 299*860fbdd4SHans de Goede 300*860fbdd4SHans de Goede reg_eldo3: eldo3 { 301*860fbdd4SHans de Goede regulator-always-on; 302*860fbdd4SHans de Goede regulator-min-microvolt = <3000000>; 303*860fbdd4SHans de Goede regulator-max-microvolt = <3000000>; 304*860fbdd4SHans de Goede regulator-name = "vcc-pm-codec-io1"; 305*860fbdd4SHans de Goede }; 306*860fbdd4SHans de Goede 307*860fbdd4SHans de Goede reg_ldo_io0: ldo_io0 { 308*860fbdd4SHans de Goede regulator-always-on; 309*860fbdd4SHans de Goede regulator-min-microvolt = <3000000>; 310*860fbdd4SHans de Goede regulator-max-microvolt = <3000000>; 311*860fbdd4SHans de Goede regulator-name = "vcc-pg"; 312*860fbdd4SHans de Goede }; 313*860fbdd4SHans de Goede 314*860fbdd4SHans de Goede reg_ldo_io1: ldo_io1 { 315*860fbdd4SHans de Goede regulator-min-microvolt = <2500000>; 316*860fbdd4SHans de Goede regulator-max-microvolt = <2500000>; 317*860fbdd4SHans de Goede regulator-name = "vcc-pa-gmac-2v5"; 318*860fbdd4SHans de Goede }; 319*860fbdd4SHans de Goede 320*860fbdd4SHans de Goede reg_rtc_ldo: rtc_ldo { 321*860fbdd4SHans de Goede regulator-name = "vcc-rtc-vdd1v8-io"; 322*860fbdd4SHans de Goede }; 323*860fbdd4SHans de Goede }; 324*860fbdd4SHans de Goede }; 325*860fbdd4SHans de Goede}; 326*860fbdd4SHans de Goede 327*860fbdd4SHans de Goede#include "axp809.dtsi" 328*860fbdd4SHans de Goede 32953ab4af3SHans de Goede&uart0 { 33053ab4af3SHans de Goede pinctrl-names = "default"; 33153ab4af3SHans de Goede pinctrl-0 = <&uart0_pins_a>; 33253ab4af3SHans de Goede status = "okay"; 33353ab4af3SHans de Goede}; 33453ab4af3SHans de Goede 33553ab4af3SHans de Goede&usbphy1 { 33653ab4af3SHans de Goede phy-supply = <®_usb1_vbus>; 33753ab4af3SHans de Goede status = "okay"; 33853ab4af3SHans de Goede}; 33953ab4af3SHans de Goede 34053ab4af3SHans de Goede&usbphy2 { 34153ab4af3SHans de Goede status = "okay"; 34253ab4af3SHans de Goede}; 34353ab4af3SHans de Goede 34453ab4af3SHans de Goede&usbphy3 { 34553ab4af3SHans de Goede phy-supply = <®_usb3_vbus>; 34653ab4af3SHans de Goede status = "okay"; 34753ab4af3SHans de Goede}; 348