Home | History | Annotate | Line # | Download | only in dts
      1 /*
      2  * Copyright (C) 2017 Chen-Yu Tsai <wens (at) csie.org>
      3  * Copyright (C) 2017 Icenowy Zheng <icenowy (at) aosc.io>
      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 "sun8i-r40.dtsi"
     46 
     47 #include <dt-bindings/gpio/gpio.h>
     48 
     49 / {
     50 	model = "Banana Pi BPI-M2-Ultra";
     51 	compatible = "sinovoip,bpi-m2-ultra", "allwinner,sun8i-r40";
     52 
     53 	aliases {
     54 		ethernet0 = &gmac;
     55 		serial0 = &uart0;
     56 	};
     57 
     58 	chosen {
     59 		stdout-path = "serial0:115200n8";
     60 	};
     61 
     62 	connector {
     63 		compatible = "hdmi-connector";
     64 		type = "a";
     65 
     66 		port {
     67 			hdmi_con_in: endpoint {
     68 				remote-endpoint = <&hdmi_out_con>;
     69 			};
     70 		};
     71 	};
     72 
     73 	leds {
     74 		compatible = "gpio-leds";
     75 
     76 		pwr-led {
     77 			label = "bananapi:red:pwr";
     78 			gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
     79 			default-state = "on";
     80 		};
     81 
     82 		user-led-green {
     83 			label = "bananapi:green:user";
     84 			gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>;
     85 		};
     86 
     87 		user-led-blue {
     88 			label = "bananapi:blue:user";
     89 			gpios = <&pio 7 22 GPIO_ACTIVE_HIGH>;
     90 		};
     91 	};
     92 
     93 	reg_vcc5v0: vcc5v0 {
     94 		compatible = "regulator-fixed";
     95 		regulator-name = "vcc5v0";
     96 		regulator-min-microvolt = <5000000>;
     97 		regulator-max-microvolt = <5000000>;
     98 		gpio = <&pio 7 23 GPIO_ACTIVE_HIGH>; /* PH23 */
     99 		enable-active-high;
    100 	};
    101 
    102 	wifi_pwrseq: wifi_pwrseq {
    103 		compatible = "mmc-pwrseq-simple";
    104 		reset-gpios = <&pio 6 10 GPIO_ACTIVE_LOW>; /* PG10 WIFI_EN */
    105 		clocks = <&ccu CLK_OUTA>;
    106 		clock-names = "ext_clock";
    107 	};
    108 };
    109 
    110 &ahci {
    111 	ahci-supply = <&reg_dldo4>;
    112 	phy-supply = <&reg_eldo3>;
    113 	status = "okay";
    114 };
    115 
    116 &de {
    117 	status = "okay";
    118 };
    119 
    120 &ehci1 {
    121 	status = "okay";
    122 };
    123 
    124 &ehci2 {
    125 	status = "okay";
    126 };
    127 
    128 &gmac {
    129 	pinctrl-names = "default";
    130 	pinctrl-0 = <&gmac_rgmii_pins>;
    131 	phy-handle = <&phy1>;
    132 	phy-mode = "rgmii-id";
    133 	phy-supply = <&reg_dc1sw>;
    134 	status = "okay";
    135 };
    136 
    137 &gmac_mdio {
    138 	phy1: ethernet-phy@1 {
    139 		compatible = "ethernet-phy-ieee802.3-c22";
    140 		reg = <1>;
    141 	};
    142 };
    143 
    144 &hdmi {
    145 	status = "okay";
    146 };
    147 
    148 &hdmi_out {
    149 	hdmi_out_con: endpoint {
    150 		remote-endpoint = <&hdmi_con_in>;
    151 	};
    152 };
    153 
    154 &i2c0 {
    155 	status = "okay";
    156 
    157 	axp22x: pmic@34 {
    158 		compatible = "x-powers,axp221";
    159 		reg = <0x34>;
    160 		interrupt-parent = <&nmi_intc>;
    161 		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
    162 	};
    163 };
    164 
    165 #include "axp22x.dtsi"
    166 
    167 &ir0 {
    168 	status = "okay";
    169 };
    170 
    171 &mmc0 {
    172 	vmmc-supply = <&reg_dcdc1>;
    173 	bus-width = <4>;
    174 	cd-gpios = <&pio 7 13 GPIO_ACTIVE_LOW>; /* PH13 */
    175 	status = "okay";
    176 };
    177 
    178 &mmc1 {
    179 	pinctrl-names = "default";
    180 	pinctrl-0 = <&mmc1_pg_pins>;
    181 	vmmc-supply = <&reg_dldo2>;
    182 	vqmmc-supply = <&reg_dldo1>;
    183 	mmc-pwrseq = <&wifi_pwrseq>;
    184 	bus-width = <4>;
    185 	non-removable;
    186 	status = "okay";
    187 };
    188 
    189 &mmc2 {
    190 	vmmc-supply = <&reg_dcdc1>;
    191 	vqmmc-supply = <&reg_dcdc1>;
    192 	bus-width = <8>;
    193 	non-removable;
    194 	status = "okay";
    195 };
    196 
    197 &ohci1 {
    198 	status = "okay";
    199 };
    200 
    201 &ohci2 {
    202 	status = "okay";
    203 };
    204 
    205 &pio {
    206 	pinctrl-names = "default";
    207 	pinctrl-0 = <&clk_out_a_pin>;
    208 	vcc-pa-supply = <&reg_aldo2>;
    209 	vcc-pc-supply = <&reg_dcdc1>;
    210 	vcc-pd-supply = <&reg_dcdc1>;
    211 	vcc-pe-supply = <&reg_eldo1>;
    212 	vcc-pf-supply = <&reg_dcdc1>;
    213 	vcc-pg-supply = <&reg_dldo1>;
    214 };
    215 
    216 &reg_aldo2 {
    217 	regulator-min-microvolt = <2500000>;
    218 	regulator-max-microvolt = <2500000>;
    219 	regulator-name = "vcc-pa";
    220 };
    221 
    222 &reg_aldo3 {
    223 	regulator-always-on;
    224 	regulator-min-microvolt = <2700000>;
    225 	regulator-max-microvolt = <3300000>;
    226 	regulator-name = "avcc";
    227 };
    228 
    229 &reg_dc1sw {
    230 	regulator-min-microvolt = <3300000>;
    231 	regulator-max-microvolt = <3300000>;
    232 	regulator-name = "vcc-gmac-phy";
    233 };
    234 
    235 &reg_dcdc1 {
    236 	regulator-always-on;
    237 	regulator-min-microvolt = <3300000>;
    238 	regulator-max-microvolt = <3300000>;
    239 	regulator-name = "vcc-3v3";
    240 };
    241 
    242 &reg_dcdc2 {
    243 	regulator-always-on;
    244 	regulator-min-microvolt = <1000000>;
    245 	regulator-max-microvolt = <1300000>;
    246 	regulator-name = "vdd-cpu";
    247 };
    248 
    249 &reg_dcdc3 {
    250 	regulator-always-on;
    251 	regulator-min-microvolt = <1000000>;
    252 	regulator-max-microvolt = <1300000>;
    253 	regulator-name = "vdd-sys";
    254 };
    255 
    256 &reg_dcdc5 {
    257 	regulator-always-on;
    258 	regulator-min-microvolt = <1500000>;
    259 	regulator-max-microvolt = <1500000>;
    260 	regulator-name = "vcc-dram";
    261 };
    262 
    263 &reg_dldo1 {
    264 	regulator-min-microvolt = <1800000>;
    265 	regulator-max-microvolt = <3300000>;
    266 	regulator-name = "vcc-wifi-io";
    267 };
    268 
    269 /*
    270  * Our WiFi chip needs both DLDO2 and DLDO3 to be powered at the same
    271  * time, with the two being in sync, to be able to meet maximum power
    272  * consumption during transmits. Since this is not really supported
    273  * right now, just use the two as always on, and we will fix it later.
    274  */
    275 
    276 &reg_dldo2 {
    277 	regulator-always-on;
    278 	regulator-min-microvolt = <3300000>;
    279 	regulator-max-microvolt = <3300000>;
    280 	regulator-name = "vcc-wifi";
    281 };
    282 
    283 &reg_dldo3 {
    284 	regulator-always-on;
    285 	regulator-min-microvolt = <3300000>;
    286 	regulator-max-microvolt = <3300000>;
    287 	regulator-name = "vcc-wifi-2";
    288 };
    289 
    290 &reg_dldo4 {
    291 	regulator-min-microvolt = <2500000>;
    292 	regulator-max-microvolt = <2500000>;
    293 	regulator-name = "vdd2v5-sata";
    294 };
    295 
    296 &reg_eldo3 {
    297 	regulator-min-microvolt = <1200000>;
    298 	regulator-max-microvolt = <1200000>;
    299 	regulator-name = "vdd1v2-sata";
    300 };
    301 
    302 &tcon_tv0 {
    303 	status = "okay";
    304 };
    305 
    306 &uart0 {
    307 	pinctrl-names = "default";
    308 	pinctrl-0 = <&uart0_pb_pins>;
    309 	status = "okay";
    310 };
    311 
    312 &uart3 {
    313 	pinctrl-names = "default";
    314 	pinctrl-0 = <&uart3_pg_pins>, <&uart3_rts_cts_pg_pins>;
    315 	uart-has-rtscts;
    316 	status = "okay";
    317 
    318 	bluetooth {
    319 		compatible = "brcm,bcm43438-bt";
    320 		clocks = <&ccu CLK_OUTA>;
    321 		clock-names = "lpo";
    322 		vbat-supply = <&reg_dldo2>;
    323 		vddio-supply = <&reg_dldo1>;
    324 		device-wakeup-gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
    325 		/* TODO host wake line connected to PMIC GPIO pins */
    326 		shutdown-gpios = <&pio 7 12 GPIO_ACTIVE_HIGH>; /* PH12 */
    327 		max-speed = <1500000>;
    328 	};
    329 };
    330 
    331 &usbphy {
    332 	usb1_vbus-supply = <&reg_vcc5v0>;
    333 	usb2_vbus-supply = <&reg_vcc5v0>;
    334 	status = "okay";
    335 };
    336