1/* 2 * Copyright 2015 - Marcus Cooper <codekipper@gmail.com> 3 * Copyright 2015 - Karsten Merker <merker@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