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