1*7761eb5bSChen-Yu Tsai/* 2*7761eb5bSChen-Yu Tsai * Copyright (C) 2016 Chen-Yu Tsai <wens@csie.org> 3*7761eb5bSChen-Yu Tsai * 4*7761eb5bSChen-Yu Tsai * This file is dual-licensed: you can use it either under the terms 5*7761eb5bSChen-Yu Tsai * of the GPL or the X11 license, at your option. Note that this dual 6*7761eb5bSChen-Yu Tsai * licensing only applies to this file, and not this project as a 7*7761eb5bSChen-Yu Tsai * whole. 8*7761eb5bSChen-Yu Tsai * 9*7761eb5bSChen-Yu Tsai * a) This file is free software; you can redistribute it and/or 10*7761eb5bSChen-Yu Tsai * modify it under the terms of the GNU General Public License as 11*7761eb5bSChen-Yu Tsai * published by the Free Software Foundation; either version 2 of the 12*7761eb5bSChen-Yu Tsai * License, or (at your option) any later version. 13*7761eb5bSChen-Yu Tsai * 14*7761eb5bSChen-Yu Tsai * This file is distributed in the hope that it will be useful, 15*7761eb5bSChen-Yu Tsai * but WITHOUT ANY WARRANTY; without even the implied warranty of 16*7761eb5bSChen-Yu Tsai * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*7761eb5bSChen-Yu Tsai * GNU General Public License for more details. 18*7761eb5bSChen-Yu Tsai * 19*7761eb5bSChen-Yu Tsai * Or, alternatively, 20*7761eb5bSChen-Yu Tsai * 21*7761eb5bSChen-Yu Tsai * b) Permission is hereby granted, free of charge, to any person 22*7761eb5bSChen-Yu Tsai * obtaining a copy of this software and associated documentation 23*7761eb5bSChen-Yu Tsai * files (the "Software"), to deal in the Software without 24*7761eb5bSChen-Yu Tsai * restriction, including without limitation the rights to use, 25*7761eb5bSChen-Yu Tsai * copy, modify, merge, publish, distribute, sublicense, and/or 26*7761eb5bSChen-Yu Tsai * sell copies of the Software, and to permit persons to whom the 27*7761eb5bSChen-Yu Tsai * Software is furnished to do so, subject to the following 28*7761eb5bSChen-Yu Tsai * conditions: 29*7761eb5bSChen-Yu Tsai * 30*7761eb5bSChen-Yu Tsai * The above copyright notice and this permission notice shall be 31*7761eb5bSChen-Yu Tsai * included in all copies or substantial portions of the Software. 32*7761eb5bSChen-Yu Tsai * 33*7761eb5bSChen-Yu Tsai * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34*7761eb5bSChen-Yu Tsai * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35*7761eb5bSChen-Yu Tsai * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36*7761eb5bSChen-Yu Tsai * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37*7761eb5bSChen-Yu Tsai * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38*7761eb5bSChen-Yu Tsai * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39*7761eb5bSChen-Yu Tsai * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40*7761eb5bSChen-Yu Tsai * OTHER DEALINGS IN THE SOFTWARE. 41*7761eb5bSChen-Yu Tsai */ 42*7761eb5bSChen-Yu Tsai 43*7761eb5bSChen-Yu Tsai#include "sunxi-common-regulators.dtsi" 44*7761eb5bSChen-Yu Tsai 45*7761eb5bSChen-Yu Tsai#include <dt-bindings/gpio/gpio.h> 46*7761eb5bSChen-Yu Tsai#include <dt-bindings/input/input.h> 47*7761eb5bSChen-Yu Tsai 48*7761eb5bSChen-Yu Tsai/ { 49*7761eb5bSChen-Yu Tsai aliases { 50*7761eb5bSChen-Yu Tsai ethernet0 = &emac; 51*7761eb5bSChen-Yu Tsai serial0 = &uart0; 52*7761eb5bSChen-Yu Tsai serial1 = &uart1; 53*7761eb5bSChen-Yu Tsai }; 54*7761eb5bSChen-Yu Tsai 55*7761eb5bSChen-Yu Tsai chosen { 56*7761eb5bSChen-Yu Tsai stdout-path = "serial0:115200n8"; 57*7761eb5bSChen-Yu Tsai }; 58*7761eb5bSChen-Yu Tsai 59*7761eb5bSChen-Yu Tsai connector { 60*7761eb5bSChen-Yu Tsai compatible = "hdmi-connector"; 61*7761eb5bSChen-Yu Tsai type = "a"; 62*7761eb5bSChen-Yu Tsai 63*7761eb5bSChen-Yu Tsai port { 64*7761eb5bSChen-Yu Tsai hdmi_con_in: endpoint { 65*7761eb5bSChen-Yu Tsai remote-endpoint = <&hdmi_out_con>; 66*7761eb5bSChen-Yu Tsai }; 67*7761eb5bSChen-Yu Tsai }; 68*7761eb5bSChen-Yu Tsai }; 69*7761eb5bSChen-Yu Tsai 70*7761eb5bSChen-Yu Tsai leds { 71*7761eb5bSChen-Yu Tsai compatible = "gpio-leds"; 72*7761eb5bSChen-Yu Tsai pinctrl-names = "default"; 73*7761eb5bSChen-Yu Tsai 74*7761eb5bSChen-Yu Tsai pwr_led { 75*7761eb5bSChen-Yu Tsai label = "bananapi-m2-plus:red:pwr"; 76*7761eb5bSChen-Yu Tsai gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */ 77*7761eb5bSChen-Yu Tsai default-state = "on"; 78*7761eb5bSChen-Yu Tsai }; 79*7761eb5bSChen-Yu Tsai }; 80*7761eb5bSChen-Yu Tsai 81*7761eb5bSChen-Yu Tsai gpio_keys { 82*7761eb5bSChen-Yu Tsai compatible = "gpio-keys"; 83*7761eb5bSChen-Yu Tsai pinctrl-names = "default"; 84*7761eb5bSChen-Yu Tsai 85*7761eb5bSChen-Yu Tsai sw4 { 86*7761eb5bSChen-Yu Tsai label = "power"; 87*7761eb5bSChen-Yu Tsai linux,code = <BTN_0>; 88*7761eb5bSChen-Yu Tsai gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; 89*7761eb5bSChen-Yu Tsai }; 90*7761eb5bSChen-Yu Tsai }; 91*7761eb5bSChen-Yu Tsai 92*7761eb5bSChen-Yu Tsai reg_gmac_3v3: gmac-3v3 { 93*7761eb5bSChen-Yu Tsai compatible = "regulator-fixed"; 94*7761eb5bSChen-Yu Tsai regulator-name = "gmac-3v3"; 95*7761eb5bSChen-Yu Tsai regulator-min-microvolt = <3300000>; 96*7761eb5bSChen-Yu Tsai regulator-max-microvolt = <3300000>; 97*7761eb5bSChen-Yu Tsai startup-delay-us = <100000>; 98*7761eb5bSChen-Yu Tsai enable-active-high; 99*7761eb5bSChen-Yu Tsai gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; 100*7761eb5bSChen-Yu Tsai }; 101*7761eb5bSChen-Yu Tsai 102*7761eb5bSChen-Yu Tsai wifi_pwrseq: wifi_pwrseq { 103*7761eb5bSChen-Yu Tsai compatible = "mmc-pwrseq-simple"; 104*7761eb5bSChen-Yu Tsai pinctrl-names = "default"; 105*7761eb5bSChen-Yu Tsai reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */ 106*7761eb5bSChen-Yu Tsai clocks = <&rtc 1>; 107*7761eb5bSChen-Yu Tsai clock-names = "ext_clock"; 108*7761eb5bSChen-Yu Tsai }; 109*7761eb5bSChen-Yu Tsai}; 110*7761eb5bSChen-Yu Tsai 111*7761eb5bSChen-Yu Tsai&de { 112*7761eb5bSChen-Yu Tsai status = "okay"; 113*7761eb5bSChen-Yu Tsai}; 114*7761eb5bSChen-Yu Tsai 115*7761eb5bSChen-Yu Tsai&ehci0 { 116*7761eb5bSChen-Yu Tsai status = "okay"; 117*7761eb5bSChen-Yu Tsai}; 118*7761eb5bSChen-Yu Tsai 119*7761eb5bSChen-Yu Tsai&ehci1 { 120*7761eb5bSChen-Yu Tsai status = "okay"; 121*7761eb5bSChen-Yu Tsai}; 122*7761eb5bSChen-Yu Tsai 123*7761eb5bSChen-Yu Tsai&ehci2 { 124*7761eb5bSChen-Yu Tsai status = "okay"; 125*7761eb5bSChen-Yu Tsai}; 126*7761eb5bSChen-Yu Tsai 127*7761eb5bSChen-Yu Tsai&emac { 128*7761eb5bSChen-Yu Tsai pinctrl-names = "default"; 129*7761eb5bSChen-Yu Tsai pinctrl-0 = <&emac_rgmii_pins>; 130*7761eb5bSChen-Yu Tsai phy-supply = <®_gmac_3v3>; 131*7761eb5bSChen-Yu Tsai phy-handle = <&ext_rgmii_phy>; 132*7761eb5bSChen-Yu Tsai phy-mode = "rgmii"; 133*7761eb5bSChen-Yu Tsai 134*7761eb5bSChen-Yu Tsai status = "okay"; 135*7761eb5bSChen-Yu Tsai}; 136*7761eb5bSChen-Yu Tsai 137*7761eb5bSChen-Yu Tsai&external_mdio { 138*7761eb5bSChen-Yu Tsai ext_rgmii_phy: ethernet-phy@1 { 139*7761eb5bSChen-Yu Tsai compatible = "ethernet-phy-ieee802.3-c22"; 140*7761eb5bSChen-Yu Tsai reg = <1>; 141*7761eb5bSChen-Yu Tsai }; 142*7761eb5bSChen-Yu Tsai}; 143*7761eb5bSChen-Yu Tsai 144*7761eb5bSChen-Yu Tsai&hdmi { 145*7761eb5bSChen-Yu Tsai status = "okay"; 146*7761eb5bSChen-Yu Tsai}; 147*7761eb5bSChen-Yu Tsai 148*7761eb5bSChen-Yu Tsai&hdmi_out { 149*7761eb5bSChen-Yu Tsai hdmi_out_con: endpoint { 150*7761eb5bSChen-Yu Tsai remote-endpoint = <&hdmi_con_in>; 151*7761eb5bSChen-Yu Tsai }; 152*7761eb5bSChen-Yu Tsai}; 153*7761eb5bSChen-Yu Tsai 154*7761eb5bSChen-Yu Tsai&ir { 155*7761eb5bSChen-Yu Tsai pinctrl-names = "default"; 156*7761eb5bSChen-Yu Tsai pinctrl-0 = <&ir_pins_a>; 157*7761eb5bSChen-Yu Tsai status = "okay"; 158*7761eb5bSChen-Yu Tsai}; 159*7761eb5bSChen-Yu Tsai 160*7761eb5bSChen-Yu Tsai&mmc0 { 161*7761eb5bSChen-Yu Tsai vmmc-supply = <®_vcc3v3>; 162*7761eb5bSChen-Yu Tsai bus-width = <4>; 163*7761eb5bSChen-Yu Tsai cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 164*7761eb5bSChen-Yu Tsai status = "okay"; 165*7761eb5bSChen-Yu Tsai}; 166*7761eb5bSChen-Yu Tsai 167*7761eb5bSChen-Yu Tsai&mmc1 { 168*7761eb5bSChen-Yu Tsai vmmc-supply = <®_vcc3v3>; 169*7761eb5bSChen-Yu Tsai vqmmc-supply = <®_vcc3v3>; 170*7761eb5bSChen-Yu Tsai mmc-pwrseq = <&wifi_pwrseq>; 171*7761eb5bSChen-Yu Tsai bus-width = <4>; 172*7761eb5bSChen-Yu Tsai non-removable; 173*7761eb5bSChen-Yu Tsai status = "okay"; 174*7761eb5bSChen-Yu Tsai 175*7761eb5bSChen-Yu Tsai brcmf: wifi@1 { 176*7761eb5bSChen-Yu Tsai reg = <1>; 177*7761eb5bSChen-Yu Tsai compatible = "brcm,bcm4329-fmac"; 178*7761eb5bSChen-Yu Tsai interrupt-parent = <&pio>; 179*7761eb5bSChen-Yu Tsai interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 / EINT10 */ 180*7761eb5bSChen-Yu Tsai interrupt-names = "host-wake"; 181*7761eb5bSChen-Yu Tsai }; 182*7761eb5bSChen-Yu Tsai}; 183*7761eb5bSChen-Yu Tsai 184*7761eb5bSChen-Yu Tsai&mmc2 { 185*7761eb5bSChen-Yu Tsai pinctrl-names = "default"; 186*7761eb5bSChen-Yu Tsai pinctrl-0 = <&mmc2_8bit_pins>; 187*7761eb5bSChen-Yu Tsai vmmc-supply = <®_vcc3v3>; 188*7761eb5bSChen-Yu Tsai vqmmc-supply = <®_vcc3v3>; 189*7761eb5bSChen-Yu Tsai bus-width = <8>; 190*7761eb5bSChen-Yu Tsai non-removable; 191*7761eb5bSChen-Yu Tsai status = "okay"; 192*7761eb5bSChen-Yu Tsai}; 193*7761eb5bSChen-Yu Tsai 194*7761eb5bSChen-Yu Tsai&ohci0 { 195*7761eb5bSChen-Yu Tsai status = "okay"; 196*7761eb5bSChen-Yu Tsai}; 197*7761eb5bSChen-Yu Tsai 198*7761eb5bSChen-Yu Tsai&ohci1 { 199*7761eb5bSChen-Yu Tsai status = "okay"; 200*7761eb5bSChen-Yu Tsai}; 201*7761eb5bSChen-Yu Tsai 202*7761eb5bSChen-Yu Tsai&ohci2 { 203*7761eb5bSChen-Yu Tsai status = "okay"; 204*7761eb5bSChen-Yu Tsai}; 205*7761eb5bSChen-Yu Tsai 206*7761eb5bSChen-Yu Tsai®_usb0_vbus { 207*7761eb5bSChen-Yu Tsai gpio = <&pio 3 11 GPIO_ACTIVE_HIGH>; /* PD11 */ 208*7761eb5bSChen-Yu Tsai status = "okay"; 209*7761eb5bSChen-Yu Tsai}; 210*7761eb5bSChen-Yu Tsai 211*7761eb5bSChen-Yu Tsai&uart0 { 212*7761eb5bSChen-Yu Tsai pinctrl-names = "default"; 213*7761eb5bSChen-Yu Tsai pinctrl-0 = <&uart0_pins_a>; 214*7761eb5bSChen-Yu Tsai status = "okay"; 215*7761eb5bSChen-Yu Tsai}; 216*7761eb5bSChen-Yu Tsai 217*7761eb5bSChen-Yu Tsai&uart1 { 218*7761eb5bSChen-Yu Tsai pinctrl-names = "default"; 219*7761eb5bSChen-Yu Tsai pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 220*7761eb5bSChen-Yu Tsai uart-has-rtscts; 221*7761eb5bSChen-Yu Tsai status = "okay"; 222*7761eb5bSChen-Yu Tsai 223*7761eb5bSChen-Yu Tsai bluetooth { 224*7761eb5bSChen-Yu Tsai compatible = "brcm,bcm43438-bt"; 225*7761eb5bSChen-Yu Tsai clocks = <&rtc 1>; 226*7761eb5bSChen-Yu Tsai clock-names = "lpo"; 227*7761eb5bSChen-Yu Tsai vbat-supply = <®_vcc3v3>; 228*7761eb5bSChen-Yu Tsai vddio-supply = <®_vcc3v3>; 229*7761eb5bSChen-Yu Tsai device-wakeup-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */ 230*7761eb5bSChen-Yu Tsai host-wakeup-gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */ 231*7761eb5bSChen-Yu Tsai shutdown-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */ 232*7761eb5bSChen-Yu Tsai }; 233*7761eb5bSChen-Yu Tsai}; 234*7761eb5bSChen-Yu Tsai 235*7761eb5bSChen-Yu Tsai&usb_otg { 236*7761eb5bSChen-Yu Tsai dr_mode = "otg"; 237*7761eb5bSChen-Yu Tsai status = "okay"; 238*7761eb5bSChen-Yu Tsai}; 239*7761eb5bSChen-Yu Tsai 240*7761eb5bSChen-Yu Tsai&usbphy { 241*7761eb5bSChen-Yu Tsai usb0_id_det-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ 242*7761eb5bSChen-Yu Tsai usb0_vbus-supply = <®_usb0_vbus>; 243*7761eb5bSChen-Yu Tsai /* USB host VBUS is on as long as VCC-IO is on */ 244*7761eb5bSChen-Yu Tsai status = "okay"; 245*7761eb5bSChen-Yu Tsai}; 246