Home | History | Annotate | Line # | Download | only in dts
      1 /*
      2  * Copyright (C) 2016 Icenowy Zheng <icenowy (at) aosc.xyz>
      3  *
      4  * Based on sun8i-h3-orangepi-one.dts, which is:
      5  *   Copyright (C) 2016 Hans de Goede <hdegoede (at) redhat.com>
      6  *
      7  * This file is dual-licensed: you can use it either under the terms
      8  * of the GPL or the X11 license, at your option. Note that this dual
      9  * licensing only applies to this file, and not this project as a
     10  * whole.
     11  *
     12  *  a) This file is free software; you can redistribute it and/or
     13  *     modify it under the terms of the GNU General Public License as
     14  *     published by the Free Software Foundation; either version 2 of the
     15  *     License, or (at your option) any later version.
     16  *
     17  *     This file is distributed in the hope that it will be useful,
     18  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
     19  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     20  *     GNU General Public License for more details.
     21  *
     22  * Or, alternatively,
     23  *
     24  *  b) Permission is hereby granted, free of charge, to any person
     25  *     obtaining a copy of this software and associated documentation
     26  *     files (the "Software"), to deal in the Software without
     27  *     restriction, including without limitation the rights to use,
     28  *     copy, modify, merge, publish, distribute, sublicense, and/or
     29  *     sell copies of the Software, and to permit persons to whom the
     30  *     Software is furnished to do so, subject to the following
     31  *     conditions:
     32  *
     33  *     The above copyright notice and this permission notice shall be
     34  *     included in all copies or substantial portions of the Software.
     35  *
     36  *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     37  *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
     38  *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     39  *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
     40  *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
     41  *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     42  *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     43  *     OTHER DEALINGS IN THE SOFTWARE.
     44  */
     45 
     46 /dts-v1/;
     47 #include "sun8i-h3.dtsi"
     48 #include "sunxi-common-regulators.dtsi"
     49 
     50 #include <dt-bindings/gpio/gpio.h>
     51 #include <dt-bindings/input/input.h>
     52 
     53 / {
     54 	model = "Xunlong Orange Pi Zero";
     55 	compatible = "xunlong,orangepi-zero", "allwinner,sun8i-h2-plus";
     56 
     57 	aliases {
     58 		serial0 = &uart0;
     59 		/* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */
     60 		ethernet0 = &emac;
     61 		ethernet1 = &xr819;
     62 	};
     63 
     64 	chosen {
     65 		stdout-path = "serial0:115200n8";
     66 	};
     67 
     68 	leds {
     69 		compatible = "gpio-leds";
     70 
     71 		pwr_led {
     72 			label = "orangepi:green:pwr";
     73 			gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
     74 			default-state = "on";
     75 		};
     76 
     77 		status_led {
     78 			label = "orangepi:red:status";
     79 			gpios = <&pio 0 17 GPIO_ACTIVE_HIGH>;
     80 		};
     81 	};
     82 
     83 	reg_vcc_wifi: reg_vcc_wifi {
     84 		compatible = "regulator-fixed";
     85 		regulator-min-microvolt = <3300000>;
     86 		regulator-max-microvolt = <3300000>;
     87 		regulator-name = "vcc-wifi";
     88 		enable-active-high;
     89 		gpio = <&pio 0 20 GPIO_ACTIVE_HIGH>;
     90 	};
     91 
     92 	reg_vdd_cpux: vdd-cpux-regulator {
     93 		compatible = "regulator-gpio";
     94 		regulator-name = "vdd-cpux";
     95 		regulator-type = "voltage";
     96 		regulator-boot-on;
     97 		regulator-always-on;
     98 		regulator-min-microvolt = <1100000>;
     99 		regulator-max-microvolt = <1300000>;
    100 		regulator-ramp-delay = <50>; /* 4ms */
    101 
    102 		gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
    103 		enable-active-high;
    104 		gpios-states = <1>;
    105 		states = <1100000 0>, <1300000 1>;
    106 	};
    107 
    108 	wifi_pwrseq: wifi_pwrseq {
    109 		compatible = "mmc-pwrseq-simple";
    110 		reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>;
    111 		post-power-on-delay-ms = <200>;
    112 	};
    113 };
    114 
    115 &cpu0 {
    116 	cpu-supply = <&reg_vdd_cpux>;
    117 };
    118 
    119 &ehci0 {
    120 	status = "okay";
    121 };
    122 
    123 &ehci1 {
    124 	status = "okay";
    125 };
    126 
    127 &emac {
    128 	phy-handle = <&int_mii_phy>;
    129 	phy-mode = "mii";
    130 	allwinner,leds-active-low;
    131 	status = "okay";
    132 };
    133 
    134 &mmc0 {
    135 	vmmc-supply = <&reg_vcc3v3>;
    136 	bus-width = <4>;
    137 	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
    138 	status = "okay";
    139 };
    140 
    141 &mmc1 {
    142 	vmmc-supply = <&reg_vcc_wifi>;
    143 	mmc-pwrseq = <&wifi_pwrseq>;
    144 	bus-width = <4>;
    145 	non-removable;
    146 	status = "okay";
    147 
    148 	/*
    149 	 * Explicitly define the sdio device, so that we can add an ethernet
    150 	 * alias for it (which e.g. makes u-boot set a mac-address).
    151 	 */
    152 	xr819: sdio_wifi@1 {
    153 		reg = <1>;
    154 	};
    155 };
    156 
    157 &ohci0 {
    158 	status = "okay";
    159 };
    160 
    161 &ohci1 {
    162 	status = "okay";
    163 };
    164 
    165 &spi0 {
    166 	/* Disable SPI NOR by default: it optional on Orange Pi Zero boards */
    167 	status = "disabled";
    168 
    169 	flash@0 {
    170 		#address-cells = <1>;
    171 		#size-cells = <1>;
    172 		compatible = "mxicy,mx25l1606e", "winbond,w25q128";
    173 		reg = <0>;
    174 		spi-max-frequency = <40000000>;
    175 	};
    176 };
    177 
    178 &uart0 {
    179 	pinctrl-names = "default";
    180 	pinctrl-0 = <&uart0_pa_pins>;
    181 	status = "okay";
    182 };
    183 
    184 &uart1 {
    185 	pinctrl-names = "default";
    186 	pinctrl-0 = <&uart1_pins>;
    187 	status = "disabled";
    188 };
    189 
    190 &uart2 {
    191 	pinctrl-names = "default";
    192 	pinctrl-0 = <&uart2_pins>;
    193 	status = "disabled";
    194 };
    195 
    196 &usb_otg {
    197 	dr_mode = "peripheral";
    198 	status = "okay";
    199 };
    200 
    201 &usbphy {
    202 	/*
    203 	 * USB Type-A port VBUS is always on. However, MicroUSB VBUS can only
    204 	 * power up the board; when it's used as OTG port, this VBUS is
    205 	 * always off even if the board is powered via GPIO pins.
    206 	 */
    207 	status = "okay";
    208 	usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
    209 };
    210