1 /* 2 * Copyright 2015 - Marcus Cooper <codekipper (at) gmail.com> 3 * Copyright 2015 - Karsten Merker <merker (at) debian.org> 4 * 5 * This file is dual-licensed: you can use it either under the terms 6 * of the GPL or the X11 license, at your option. Note that this dual 7 * licensing only applies to this file, and not this project as a 8 * whole. 9 * 10 * a) This file is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU General Public License as 12 * published by the Free Software Foundation; either version 2 of the 13 * License, or (at your option) any later version. 14 * 15 * This file is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * Or, alternatively, 21 * 22 * b) Permission is hereby granted, free of charge, to any person 23 * obtaining a copy of this software and associated documentation 24 * files (the "Software"), to deal in the Software without 25 * restriction, including without limitation the rights to use, 26 * copy, modify, merge, publish, distribute, sublicense, and/or 27 * sell copies of the Software, and to permit persons to whom the 28 * Software is furnished to do so, subject to the following 29 * conditions: 30 * 31 * The above copyright notice and this permission notice shall be 32 * included in all copies or substantial portions of the Software. 33 * 34 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 35 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 36 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 37 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 38 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 39 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 40 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 41 * OTHER DEALINGS IN THE SOFTWARE. 42 */ 43 44 /dts-v1/; 45 #include "sun7i-a20.dtsi" 46 #include "sunxi-common-regulators.dtsi" 47 48 #include <dt-bindings/gpio/gpio.h> 49 #include <dt-bindings/input/input.h> 50 #include <dt-bindings/interrupt-controller/irq.h> 51 #include <dt-bindings/pinctrl/sun4i-a10.h> 52 53 / { 54 model = "Olimex A20-Olimex-SOM-EVB"; 55 compatible = "olimex,a20-olimex-som-evb", "allwinner,sun7i-a20"; 56 57 aliases { 58 serial0 = &uart0; 59 }; 60 61 chosen { 62 stdout-path = "serial0:115200n8"; 63 }; 64 65 leds { 66 compatible = "gpio-leds"; 67 pinctrl-names = "default"; 68 pinctrl-0 = <&led_pins_olimex_som_evb>; 69 70 green { 71 label = "a20-olimex-som-evb:green:usr"; 72 gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; 73 default-state = "on"; 74 }; 75 }; 76 }; 77 78 &ahci { 79 target-supply = <®_ahci_5v>; 80 status = "okay"; 81 }; 82 83 &ehci0 { 84 status = "okay"; 85 }; 86 87 &ehci1 { 88 status = "okay"; 89 }; 90 91 &codec { 92 status = "okay"; 93 }; 94 95 &gmac { 96 pinctrl-names = "default"; 97 pinctrl-0 = <&gmac_pins_rgmii_a>; 98 phy = <&phy1>; 99 phy-mode = "rgmii"; 100 status = "okay"; 101 102 phy1: ethernet-phy@1 { 103 reg = <1>; 104 }; 105 }; 106 107 &i2c0 { 108 pinctrl-names = "default"; 109 pinctrl-0 = <&i2c0_pins_a>; 110 status = "okay"; 111 112 axp209: pmic@34 { 113 reg = <0x34>; 114 interrupt-parent = <&nmi_intc>; 115 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 116 }; 117 }; 118 119 &lradc { 120 vref-supply = <®_vcc3v0>; 121 status = "okay"; 122 123 button@190 { 124 label = "Volume Up"; 125 linux,code = <KEY_VOLUMEUP>; 126 channel = <0>; 127 voltage = <190000>; 128 }; 129 130 button@390 { 131 label = "Volume Down"; 132 linux,code = <KEY_VOLUMEDOWN>; 133 channel = <0>; 134 voltage = <390000>; 135 }; 136 137 button@600 { 138 label = "Menu"; 139 linux,code = <KEY_MENU>; 140 channel = <0>; 141 voltage = <600000>; 142 }; 143 144 button@800 { 145 label = "Search"; 146 linux,code = <KEY_SEARCH>; 147 channel = <0>; 148 voltage = <800000>; 149 }; 150 151 button@980 { 152 label = "Home"; 153 linux,code = <KEY_HOMEPAGE>; 154 channel = <0>; 155 voltage = <980000>; 156 }; 157 158 button@1180 { 159 label = "Esc"; 160 linux,code = <KEY_ESC>; 161 channel = <0>; 162 voltage = <1180000>; 163 }; 164 165 button@1400 { 166 label = "Enter"; 167 linux,code = <KEY_ENTER>; 168 channel = <0>; 169 voltage = <1400000>; 170 }; 171 }; 172 173 &mmc0 { 174 pinctrl-names = "default"; 175 pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>; 176 vmmc-supply = <®_vcc3v3>; 177 bus-width = <4>; 178 cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */ 179 cd-inverted; 180 status = "okay"; 181 }; 182 183 &mmc3 { 184 pinctrl-names = "default"; 185 pinctrl-0 = <&mmc3_pins_a>, <&mmc3_cd_pin_olimex_som_evb>; 186 vmmc-supply = <®_vcc3v3>; 187 bus-width = <4>; 188 cd-gpios = <&pio 7 0 GPIO_ACTIVE_HIGH>; /* PH0 */ 189 cd-inverted; 190 status = "okay"; 191 }; 192 193 &ohci0 { 194 status = "okay"; 195 }; 196 197 &ohci1 { 198 status = "okay"; 199 }; 200 201 &otg_sram { 202 status = "okay"; 203 }; 204 205 &pio { 206 ahci_pwr_pin_olimex_som_evb: ahci_pwr_pin@1 { 207 allwinner,pins = "PC3"; 208 allwinner,function = "gpio_out"; 209 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 210 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 211 }; 212 213 led_pins_olimex_som_evb: led_pins@0 { 214 allwinner,pins = "PH2"; 215 allwinner,function = "gpio_out"; 216 allwinner,drive = <SUN4I_PINCTRL_20_MA>; 217 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 218 }; 219 220 mmc3_cd_pin_olimex_som_evb: mmc3_cd_pin@0 { 221 allwinner,pins = "PH0"; 222 allwinner,function = "gpio_in"; 223 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 224 allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 225 }; 226 227 usb0_id_detect_pin: usb0_id_detect_pin@0 { 228 allwinner,pins = "PH4"; 229 allwinner,function = "gpio_in"; 230 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 231 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 232 }; 233 234 usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 { 235 allwinner,pins = "PH5"; 236 allwinner,function = "gpio_in"; 237 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 238 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 239 }; 240 }; 241 242 ®_ahci_5v { 243 pinctrl-0 = <&ahci_pwr_pin_olimex_som_evb>; 244 gpio = <&pio 2 3 GPIO_ACTIVE_HIGH>; 245 status = "okay"; 246 }; 247 248 #include "axp209.dtsi" 249 250 ®_dcdc2 { 251 regulator-always-on; 252 regulator-min-microvolt = <1000000>; 253 regulator-max-microvolt = <1400000>; 254 regulator-name = "vdd-cpu"; 255 }; 256 257 ®_dcdc3 { 258 regulator-always-on; 259 regulator-min-microvolt = <1000000>; 260 regulator-max-microvolt = <1400000>; 261 regulator-name = "vdd-int-dll"; 262 }; 263 264 ®_ldo1 { 265 regulator-name = "vdd-rtc"; 266 }; 267 268 ®_ldo2 { 269 regulator-always-on; 270 regulator-min-microvolt = <3000000>; 271 regulator-max-microvolt = <3000000>; 272 regulator-name = "avcc"; 273 }; 274 275 ®_usb0_vbus { 276 status = "okay"; 277 }; 278 279 ®_usb1_vbus { 280 status = "okay"; 281 }; 282 283 ®_usb2_vbus { 284 status = "okay"; 285 }; 286 287 &uart0 { 288 pinctrl-names = "default"; 289 pinctrl-0 = <&uart0_pins_a>; 290 status = "okay"; 291 }; 292 293 &usb_otg { 294 dr_mode = "otg"; 295 status = "okay"; 296 }; 297 298 &usbphy { 299 pinctrl-names = "default"; 300 pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; 301 usb0_id_det-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH04 */ 302 usb0_vbus_det-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH05 */ 303 usb0_vbus-supply = <®_usb0_vbus>; 304 usb1_vbus-supply = <®_usb1_vbus>; 305 usb2_vbus-supply = <®_usb2_vbus>; 306 status = "okay"; 307 }; 308