1*860fbdd4SHans de Goede/* 2*860fbdd4SHans de Goede * Copyright 2016 Luo Yi <luoyi.ly@gmail.com> 3*860fbdd4SHans de Goede * 4*860fbdd4SHans de Goede * Thanks to the original work by Hans de Goede <hdegoede@redhat.com> 5*860fbdd4SHans de Goede * 6*860fbdd4SHans de Goede * This file is dual-licensed: you can use it either under the terms 7*860fbdd4SHans de Goede * of the GPL or the X11 license, at your option. Note that this dual 8*860fbdd4SHans de Goede * licensing only applies to this file, and not this project as a 9*860fbdd4SHans de Goede * whole. 10*860fbdd4SHans de Goede * 11*860fbdd4SHans de Goede * a) This file is free software; you can redistribute it and/or 12*860fbdd4SHans de Goede * modify it under the terms of the GNU General Public License as 13*860fbdd4SHans de Goede * published by the Free Software Foundation; either version 2 of the 14*860fbdd4SHans de Goede * License, or (at your option) any later version. 15*860fbdd4SHans de Goede * 16*860fbdd4SHans de Goede * This file is distributed in the hope that it will be useful, 17*860fbdd4SHans de Goede * but WITHOUT ANY WARRANTY; without even the implied warranty of 18*860fbdd4SHans de Goede * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*860fbdd4SHans de Goede * GNU General Public License for more details. 20*860fbdd4SHans de Goede * 21*860fbdd4SHans de Goede * Or, alternatively, 22*860fbdd4SHans de Goede * 23*860fbdd4SHans de Goede * b) Permission is hereby granted, free of charge, to any person 24*860fbdd4SHans de Goede * obtaining a copy of this software and associated documentation 25*860fbdd4SHans de Goede * files (the "Software"), to deal in the Software without 26*860fbdd4SHans de Goede * restriction, including without limitation the rights to use, 27*860fbdd4SHans de Goede * copy, modify, merge, publish, distribute, sublicense, and/or 28*860fbdd4SHans de Goede * sell copies of the Software, and to permit persons to whom the 29*860fbdd4SHans de Goede * Software is furnished to do so, subject to the following 30*860fbdd4SHans de Goede * conditions: 31*860fbdd4SHans de Goede * 32*860fbdd4SHans de Goede * The above copyright notice and this permission notice shall be 33*860fbdd4SHans de Goede * included in all copies or substantial portions of the Software. 34*860fbdd4SHans de Goede * 35*860fbdd4SHans de Goede * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 36*860fbdd4SHans de Goede * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 37*860fbdd4SHans de Goede * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 38*860fbdd4SHans de Goede * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 39*860fbdd4SHans de Goede * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 40*860fbdd4SHans de Goede * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 41*860fbdd4SHans de Goede * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 42*860fbdd4SHans de Goede * OTHER DEALINGS IN THE SOFTWARE. 43*860fbdd4SHans de Goede */ 44*860fbdd4SHans de Goede 45*860fbdd4SHans de Goede/dts-v1/; 46*860fbdd4SHans de Goede#include "sun7i-a20.dtsi" 47*860fbdd4SHans de Goede#include "sunxi-common-regulators.dtsi" 48*860fbdd4SHans de Goede#include <dt-bindings/gpio/gpio.h> 49*860fbdd4SHans de Goede#include <dt-bindings/interrupt-controller/arm-gic.h> 50*860fbdd4SHans de Goede 51*860fbdd4SHans de Goede/ { 52*860fbdd4SHans de Goede model = "Banana Pi BPI-M1-Plus"; 53*860fbdd4SHans de Goede compatible = "sinovoip,bpi-m1-plus", "allwinner,sun7i-a20"; 54*860fbdd4SHans de Goede 55*860fbdd4SHans de Goede aliases { 56*860fbdd4SHans de Goede serial0 = &uart0; 57*860fbdd4SHans de Goede }; 58*860fbdd4SHans de Goede 59*860fbdd4SHans de Goede chosen { 60*860fbdd4SHans de Goede stdout-path = "serial0:115200n8"; 61*860fbdd4SHans de Goede }; 62*860fbdd4SHans de Goede 63*860fbdd4SHans de Goede leds { 64*860fbdd4SHans de Goede compatible = "gpio-leds"; 65*860fbdd4SHans de Goede pinctrl-names = "default"; 66*860fbdd4SHans de Goede pinctrl-0 = <&led_pins_bpi_m1p>; 67*860fbdd4SHans de Goede 68*860fbdd4SHans de Goede green { 69*860fbdd4SHans de Goede label = "bananapi-m1-plus:green:usr"; 70*860fbdd4SHans de Goede gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>; 71*860fbdd4SHans de Goede }; 72*860fbdd4SHans de Goede 73*860fbdd4SHans de Goede pwr { 74*860fbdd4SHans de Goede label = "bananapi-m1-plus:pwr:usr"; 75*860fbdd4SHans de Goede gpios = <&pio 7 25 GPIO_ACTIVE_HIGH>; 76*860fbdd4SHans de Goede default-state = "on"; 77*860fbdd4SHans de Goede }; 78*860fbdd4SHans de Goede }; 79*860fbdd4SHans de Goede 80*860fbdd4SHans de Goede mmc3_pwrseq: mmc3_pwrseq { 81*860fbdd4SHans de Goede compatible = "mmc-pwrseq-simple"; 82*860fbdd4SHans de Goede pinctrl-names = "default"; 83*860fbdd4SHans de Goede pinctrl-0 = <&mmc3_pwrseq_pin_bpi_m1p>; 84*860fbdd4SHans de Goede reset-gpios = <&pio 7 22 GPIO_ACTIVE_LOW>; /* PH22 WL-PMU-EN */ 85*860fbdd4SHans de Goede }; 86*860fbdd4SHans de Goede 87*860fbdd4SHans de Goede reg_gmac_3v3: gmac-3v3 { 88*860fbdd4SHans de Goede compatible = "regulator-fixed"; 89*860fbdd4SHans de Goede pinctrl-names = "default"; 90*860fbdd4SHans de Goede pinctrl-0 = <&gmac_power_pin_bpi_m1p>; 91*860fbdd4SHans de Goede regulator-name = "gmac-3v3"; 92*860fbdd4SHans de Goede regulator-min-microvolt = <3300000>; 93*860fbdd4SHans de Goede regulator-max-microvolt = <3300000>; 94*860fbdd4SHans de Goede startup-delay-us = <100000>; 95*860fbdd4SHans de Goede enable-active-high; 96*860fbdd4SHans de Goede gpio = <&pio 7 23 GPIO_ACTIVE_HIGH>; 97*860fbdd4SHans de Goede }; 98*860fbdd4SHans de Goede}; 99*860fbdd4SHans de Goede 100*860fbdd4SHans de Goede&ahci { 101*860fbdd4SHans de Goede status = "okay"; 102*860fbdd4SHans de Goede}; 103*860fbdd4SHans de Goede 104*860fbdd4SHans de Goede&codec { 105*860fbdd4SHans de Goede status = "okay"; 106*860fbdd4SHans de Goede}; 107*860fbdd4SHans de Goede 108*860fbdd4SHans de Goede&ehci0 { 109*860fbdd4SHans de Goede status = "okay"; 110*860fbdd4SHans de Goede}; 111*860fbdd4SHans de Goede 112*860fbdd4SHans de Goede&ehci1 { 113*860fbdd4SHans de Goede status = "okay"; 114*860fbdd4SHans de Goede}; 115*860fbdd4SHans de Goede 116*860fbdd4SHans de Goede&gmac { 117*860fbdd4SHans de Goede pinctrl-names = "default"; 118*860fbdd4SHans de Goede pinctrl-0 = <&gmac_pins_rgmii_a>; 119*860fbdd4SHans de Goede phy = <&phy1>; 120*860fbdd4SHans de Goede phy-mode = "rgmii"; 121*860fbdd4SHans de Goede phy-supply = <®_gmac_3v3>; 122*860fbdd4SHans de Goede status = "okay"; 123*860fbdd4SHans de Goede 124*860fbdd4SHans de Goede phy1: ethernet-phy@1 { 125*860fbdd4SHans de Goede reg = <1>; 126*860fbdd4SHans de Goede }; 127*860fbdd4SHans de Goede}; 128*860fbdd4SHans de Goede 129*860fbdd4SHans de Goede&i2c0 { 130*860fbdd4SHans de Goede pinctrl-names = "default"; 131*860fbdd4SHans de Goede pinctrl-0 = <&i2c0_pins_a>; 132*860fbdd4SHans de Goede status = "okay"; 133*860fbdd4SHans de Goede 134*860fbdd4SHans de Goede axp209: pmic@34 { 135*860fbdd4SHans de Goede compatible = "x-powers,axp209"; 136*860fbdd4SHans de Goede reg = <0x34>; 137*860fbdd4SHans de Goede interrupt-parent = <&nmi_intc>; 138*860fbdd4SHans de Goede interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 139*860fbdd4SHans de Goede 140*860fbdd4SHans de Goede interrupt-controller; 141*860fbdd4SHans de Goede #interrupt-cells = <1>; 142*860fbdd4SHans de Goede }; 143*860fbdd4SHans de Goede}; 144*860fbdd4SHans de Goede 145*860fbdd4SHans de Goede&ir0 { 146*860fbdd4SHans de Goede pinctrl-names = "default"; 147*860fbdd4SHans de Goede pinctrl-0 = <&ir0_rx_pins_a>; 148*860fbdd4SHans de Goede status = "okay"; 149*860fbdd4SHans de Goede}; 150*860fbdd4SHans de Goede 151*860fbdd4SHans de Goede&mmc0 { 152*860fbdd4SHans de Goede pinctrl-names = "default"; 153*860fbdd4SHans de Goede pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_bpi_m1p>; 154*860fbdd4SHans de Goede vmmc-supply = <®_vcc3v3>; 155*860fbdd4SHans de Goede bus-width = <4>; 156*860fbdd4SHans de Goede cd-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */ 157*860fbdd4SHans de Goede cd-inverted; 158*860fbdd4SHans de Goede status = "okay"; 159*860fbdd4SHans de Goede}; 160*860fbdd4SHans de Goede 161*860fbdd4SHans de Goede&mmc3 { 162*860fbdd4SHans de Goede #address-cells = <1>; 163*860fbdd4SHans de Goede #size-cells = <0>; 164*860fbdd4SHans de Goede pinctrl-names = "default"; 165*860fbdd4SHans de Goede pinctrl-0 = <&mmc3_pins_a>; 166*860fbdd4SHans de Goede vmmc-supply = <®_vcc3v3>; 167*860fbdd4SHans de Goede mmc-pwrseq = <&mmc3_pwrseq>; 168*860fbdd4SHans de Goede bus-width = <4>; 169*860fbdd4SHans de Goede non-removable; 170*860fbdd4SHans de Goede enable-sdio-wakeup; 171*860fbdd4SHans de Goede status = "okay"; 172*860fbdd4SHans de Goede 173*860fbdd4SHans de Goede brcmf: bcrmf@1 { 174*860fbdd4SHans de Goede reg = <1>; 175*860fbdd4SHans de Goede compatible = "brcm,bcm4329-fmac"; 176*860fbdd4SHans de Goede interrupt-parent = <&pio>; 177*860fbdd4SHans de Goede interrupts = <7 15 IRQ_TYPE_LEVEL_LOW>; 178*860fbdd4SHans de Goede interrupt-names = "host-wake"; 179*860fbdd4SHans de Goede }; 180*860fbdd4SHans de Goede}; 181*860fbdd4SHans de Goede 182*860fbdd4SHans de Goede&mmc3_pins_a { 183*860fbdd4SHans de Goede /* AP6210 requires pull-up */ 184*860fbdd4SHans de Goede allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 185*860fbdd4SHans de Goede}; 186*860fbdd4SHans de Goede 187*860fbdd4SHans de Goede&ohci0 { 188*860fbdd4SHans de Goede status = "okay"; 189*860fbdd4SHans de Goede}; 190*860fbdd4SHans de Goede 191*860fbdd4SHans de Goede&ohci1 { 192*860fbdd4SHans de Goede status = "okay"; 193*860fbdd4SHans de Goede}; 194*860fbdd4SHans de Goede 195*860fbdd4SHans de Goede&pio { 196*860fbdd4SHans de Goede gmac_power_pin_bpi_m1p: gmac_power_pin@0 { 197*860fbdd4SHans de Goede allwinner,pins = "PH23"; 198*860fbdd4SHans de Goede allwinner,function = "gpio_out"; 199*860fbdd4SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 200*860fbdd4SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 201*860fbdd4SHans de Goede }; 202*860fbdd4SHans de Goede 203*860fbdd4SHans de Goede led_pins_bpi_m1p: led_pins@0 { 204*860fbdd4SHans de Goede allwinner,pins = "PH24", "PH25"; 205*860fbdd4SHans de Goede allwinner,function = "gpio_out"; 206*860fbdd4SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 207*860fbdd4SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 208*860fbdd4SHans de Goede }; 209*860fbdd4SHans de Goede 210*860fbdd4SHans de Goede mmc0_cd_pin_bpi_m1p: mmc0_cd_pin@0 { 211*860fbdd4SHans de Goede allwinner,pins = "PH10"; 212*860fbdd4SHans de Goede allwinner,function = "gpio_in"; 213*860fbdd4SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 214*860fbdd4SHans de Goede allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 215*860fbdd4SHans de Goede }; 216*860fbdd4SHans de Goede 217*860fbdd4SHans de Goede mmc3_pwrseq_pin_bpi_m1p: mmc3_pwrseq_pin@0 { 218*860fbdd4SHans de Goede allwinner,pins = "PH22"; 219*860fbdd4SHans de Goede allwinner,function = "gpio_out"; 220*860fbdd4SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 221*860fbdd4SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 222*860fbdd4SHans de Goede }; 223*860fbdd4SHans de Goede}; 224*860fbdd4SHans de Goede 225*860fbdd4SHans de Goede&uart0 { 226*860fbdd4SHans de Goede pinctrl-names = "default"; 227*860fbdd4SHans de Goede pinctrl-0 = <&uart0_pins_a>; 228*860fbdd4SHans de Goede status = "okay"; 229*860fbdd4SHans de Goede}; 230