Home | History | Annotate | Download | only in dts
      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 = <&reg_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 = <&reg_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 = <&reg_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 = <&reg_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 &reg_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 &reg_dcdc2 {
    251 	regulator-always-on;
    252 	regulator-min-microvolt = <1000000>;
    253 	regulator-max-microvolt = <1400000>;
    254 	regulator-name = "vdd-cpu";
    255 };
    256 
    257 &reg_dcdc3 {
    258 	regulator-always-on;
    259 	regulator-min-microvolt = <1000000>;
    260 	regulator-max-microvolt = <1400000>;
    261 	regulator-name = "vdd-int-dll";
    262 };
    263 
    264 &reg_ldo1 {
    265 	regulator-name = "vdd-rtc";
    266 };
    267 
    268 &reg_ldo2 {
    269 	regulator-always-on;
    270 	regulator-min-microvolt = <3000000>;
    271 	regulator-max-microvolt = <3000000>;
    272 	regulator-name = "avcc";
    273 };
    274 
    275 &reg_usb0_vbus {
    276 	status = "okay";
    277 };
    278 
    279 &reg_usb1_vbus {
    280 	status = "okay";
    281 };
    282 
    283 &reg_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 = <&reg_usb0_vbus>;
    304 	usb1_vbus-supply = <&reg_usb1_vbus>;
    305 	usb2_vbus-supply = <&reg_usb2_vbus>;
    306 	status = "okay";
    307 };
    308