1/* 2 * Copyright (c) 2016 ARM Ltd. 3 * 4 * This file is dual-licensed: you can use it either under the terms 5 * of the GPL or the X11 license, at your option. Note that this dual 6 * licensing only applies to this file, and not this project as a 7 * whole. 8 * 9 * a) This library is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License as 11 * published by the Free Software Foundation; either version 2 of the 12 * License, or (at your option) any later version. 13 * 14 * This library is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * Or, alternatively, 20 * 21 * b) Permission is hereby granted, free of charge, to any person 22 * obtaining a copy of this software and associated documentation 23 * files (the "Software"), to deal in the Software without 24 * restriction, including without limitation the rights to use, 25 * copy, modify, merge, publish, distribute, sublicense, and/or 26 * sell copies of the Software, and to permit persons to whom the 27 * Software is furnished to do so, subject to the following 28 * conditions: 29 * 30 * The above copyright notice and this permission notice shall be 31 * included in all copies or substantial portions of the Software. 32 * 33 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 * OTHER DEALINGS IN THE SOFTWARE. 41 */ 42 43/dts-v1/; 44 45#include "sun50i-a64.dtsi" 46 47#include <dt-bindings/gpio/gpio.h> 48 49/ { 50 model = "BananaPi-M64"; 51 compatible = "sinovoip,bananapi-m64", "allwinner,sun50i-a64"; 52 53 aliases { 54 ethernet0 = &emac; 55 serial0 = &uart0; 56 serial1 = &uart1; 57 }; 58 59 chosen { 60 stdout-path = "serial0:115200n8"; 61 }; 62 63 leds { 64 compatible = "gpio-leds"; 65 66 pwr-led { 67 label = "bananapi-m64:red:pwr"; 68 gpios = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */ 69 default-state = "on"; 70 }; 71 72 green { 73 label = "bananapi-m64:green:user"; 74 gpios = <&pio 4 14 GPIO_ACTIVE_HIGH>; /* PE14 */ 75 }; 76 77 blue { 78 label = "bananapi-m64:blue:user"; 79 gpios = <&pio 4 15 GPIO_ACTIVE_HIGH>; /* PE15 */ 80 }; 81 }; 82 83 wifi_pwrseq: wifi_pwrseq { 84 compatible = "mmc-pwrseq-simple"; 85 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 86 }; 87}; 88 89&ehci0 { 90 status = "okay"; 91}; 92 93&ehci1 { 94 status = "okay"; 95}; 96 97&emac { 98 pinctrl-names = "default"; 99 pinctrl-0 = <&rgmii_pins>; 100 phy-mode = "rgmii"; 101 phy-handle = <&ext_rgmii_phy>; 102 phy-supply = <®_dc1sw>; 103 status = "okay"; 104}; 105 106&i2c1 { 107 pinctrl-names = "default"; 108 pinctrl-0 = <&i2c1_pins>; 109 status = "okay"; 110}; 111 112&i2c1_pins { 113 bias-pull-up; 114}; 115 116&mdio { 117 ext_rgmii_phy: ethernet-phy@1 { 118 compatible = "ethernet-phy-ieee802.3-c22"; 119 reg = <1>; 120 }; 121}; 122 123&mmc0 { 124 pinctrl-names = "default"; 125 pinctrl-0 = <&mmc0_pins>; 126 vmmc-supply = <®_dcdc1>; 127 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 128 disable-wp; 129 bus-width = <4>; 130 status = "okay"; 131}; 132 133&mmc1 { 134 pinctrl-names = "default"; 135 pinctrl-0 = <&mmc1_pins>; 136 vmmc-supply = <®_dldo2>; 137 vqmmc-supply = <®_dldo4>; 138 mmc-pwrseq = <&wifi_pwrseq>; 139 bus-width = <4>; 140 non-removable; 141 status = "okay"; 142 143 brcmf: wifi@1 { 144 reg = <1>; 145 compatible = "brcm,bcm4329-fmac"; 146 interrupt-parent = <&r_pio>; 147 interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ 148 interrupt-names = "host-wake"; 149 }; 150}; 151 152&mmc2 { 153 pinctrl-names = "default"; 154 pinctrl-0 = <&mmc2_pins>; 155 vmmc-supply = <®_dcdc1>; 156 bus-width = <8>; 157 non-removable; 158 cap-mmc-hw-reset; 159 status = "okay"; 160}; 161 162&ohci0 { 163 status = "okay"; 164}; 165 166&ohci1 { 167 status = "okay"; 168}; 169 170&r_rsb { 171 status = "okay"; 172 173 axp803: pmic@3a3 { 174 compatible = "x-powers,axp803"; 175 reg = <0x3a3>; 176 interrupt-parent = <&r_intc>; 177 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 178 x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ 179 }; 180}; 181 182#include "axp803.dtsi" 183 184®_aldo1 { 185 /* 186 * This regulator also drives the PE pingroup GPIOs, 187 * which also controls two LEDs. 188 */ 189 regulator-always-on; 190 regulator-min-microvolt = <2800000>; 191 regulator-max-microvolt = <2800000>; 192 regulator-name = "afvcc-csi"; 193}; 194 195®_aldo2 { 196 regulator-always-on; 197 regulator-min-microvolt = <1800000>; 198 regulator-max-microvolt = <3300000>; 199 regulator-name = "vcc-pl"; 200}; 201 202®_aldo3 { 203 regulator-always-on; 204 regulator-min-microvolt = <3000000>; 205 regulator-max-microvolt = <3000000>; 206 regulator-name = "vcc-pll-avcc"; 207}; 208 209®_dc1sw { 210 /* 211 * This regulator also indirectly drives the PD pingroup GPIOs, 212 * which also controls the power LED. 213 */ 214 regulator-always-on; 215 regulator-name = "vcc-phy"; 216}; 217 218®_dcdc1 { 219 regulator-always-on; 220 regulator-min-microvolt = <3300000>; 221 regulator-max-microvolt = <3300000>; 222 regulator-name = "vcc-3v3"; 223}; 224 225®_dcdc2 { 226 regulator-always-on; 227 regulator-min-microvolt = <1040000>; 228 regulator-max-microvolt = <1300000>; 229 regulator-name = "vdd-cpux"; 230}; 231 232/* DCDC3 is polyphased with DCDC2 */ 233 234®_dcdc5 { 235 regulator-always-on; 236 regulator-min-microvolt = <1500000>; 237 regulator-max-microvolt = <1500000>; 238 regulator-name = "vcc-dram"; 239}; 240 241®_dcdc6 { 242 regulator-always-on; 243 regulator-min-microvolt = <1100000>; 244 regulator-max-microvolt = <1100000>; 245 regulator-name = "vdd-sys"; 246}; 247 248®_dldo1 { 249 regulator-min-microvolt = <3300000>; 250 regulator-max-microvolt = <3300000>; 251 regulator-name = "vcc-hdmi-dsi"; 252}; 253 254®_dldo2 { 255 regulator-min-microvolt = <3300000>; 256 regulator-max-microvolt = <3300000>; 257 regulator-name = "vcc-wifi"; 258}; 259 260®_dldo4 { 261 regulator-min-microvolt = <1800000>; 262 regulator-max-microvolt = <3300000>; 263 regulator-name = "vcc-wifi-io"; 264}; 265 266®_drivevbus { 267 regulator-name = "usb0-vbus"; 268 status = "okay"; 269}; 270 271®_eldo1 { 272 regulator-min-microvolt = <1800000>; 273 regulator-max-microvolt = <1800000>; 274 regulator-name = "cpvdd"; 275}; 276 277®_fldo1 { 278 regulator-min-microvolt = <1200000>; 279 regulator-max-microvolt = <1200000>; 280 regulator-name = "vcc-1v2-hsic"; 281}; 282 283/* 284 * The A64 chip cannot work without this regulator off, although 285 * it seems to be only driving the AR100 core. 286 * Maybe we don't still know well about CPUs domain. 287 */ 288®_fldo2 { 289 regulator-always-on; 290 regulator-min-microvolt = <1100000>; 291 regulator-max-microvolt = <1100000>; 292 regulator-name = "vdd-cpus"; 293}; 294 295®_rtc_ldo { 296 regulator-name = "vcc-rtc"; 297}; 298 299&uart0 { 300 pinctrl-names = "default"; 301 pinctrl-0 = <&uart0_pins_a>; 302 status = "okay"; 303}; 304 305&uart1 { 306 pinctrl-names = "default"; 307 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 308 status = "okay"; 309}; 310 311&usb_otg { 312 dr_mode = "otg"; 313 status = "okay"; 314}; 315 316&usbphy { 317 usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ 318 usb0_vbus-supply = <®_drivevbus>; 319 status = "okay"; 320}; 321