17514069aSMaxime Ripard/* 27514069aSMaxime Ripard * Copyright (c) 2017 Free Electrons <maxime.ripard@free-electrons.com> 37514069aSMaxime Ripard * 47514069aSMaxime Ripard * This file is dual-licensed: you can use it either under the terms 57514069aSMaxime Ripard * of the GPL or the X11 license, at your option. Note that this dual 67514069aSMaxime Ripard * licensing only applies to this file, and not this project as a 77514069aSMaxime Ripard * whole. 87514069aSMaxime Ripard * 97514069aSMaxime Ripard * a) This file is free software; you can redistribute it and/or 107514069aSMaxime Ripard * modify it under the terms of the GNU General Public License as 117514069aSMaxime Ripard * published by the Free Software Foundation; either version 2 of the 127514069aSMaxime Ripard * License, or (at your option) any later version. 137514069aSMaxime Ripard * 147514069aSMaxime Ripard * This file is distributed in the hope that it will be useful, 157514069aSMaxime Ripard * but WITHOUT ANY WARRANTY; without even the implied warranty of 167514069aSMaxime Ripard * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 177514069aSMaxime Ripard * GNU General Public License for more details. 187514069aSMaxime Ripard * 197514069aSMaxime Ripard * Or, alternatively, 207514069aSMaxime Ripard * 217514069aSMaxime Ripard * b) Permission is hereby granted, free of charge, to any person 227514069aSMaxime Ripard * obtaining a copy of this software and associated documentation 237514069aSMaxime Ripard * files (the "Software"), to deal in the Software without 247514069aSMaxime Ripard * restriction, including without limitation the rights to use, 257514069aSMaxime Ripard * copy, modify, merge, publish, distribute, sublicense, and/or 267514069aSMaxime Ripard * sell copies of the Software, and to permit persons to whom the 277514069aSMaxime Ripard * Software is furnished to do so, subject to the following 287514069aSMaxime Ripard * conditions: 297514069aSMaxime Ripard * 307514069aSMaxime Ripard * The above copyright notice and this permission notice shall be 317514069aSMaxime Ripard * included in all copies or substantial portions of the Software. 327514069aSMaxime Ripard * 337514069aSMaxime Ripard * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 347514069aSMaxime Ripard * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 357514069aSMaxime Ripard * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 367514069aSMaxime Ripard * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 377514069aSMaxime Ripard * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 387514069aSMaxime Ripard * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 397514069aSMaxime Ripard * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 407514069aSMaxime Ripard * OTHER DEALINGS IN THE SOFTWARE. 417514069aSMaxime Ripard */ 427514069aSMaxime Ripard 437514069aSMaxime Ripard/dts-v1/; 447514069aSMaxime Ripard#include "sun8i-a33.dtsi" 457514069aSMaxime Ripard 467514069aSMaxime Ripard#include <dt-bindings/gpio/gpio.h> 477514069aSMaxime Ripard 487514069aSMaxime Ripard/ { 497514069aSMaxime Ripard model = "BananaPi M2 Magic"; 507514069aSMaxime Ripard compatible = "sinovoip,bananapi-m2m", "allwinner,sun8i-a33"; 517514069aSMaxime Ripard 527514069aSMaxime Ripard aliases { 537514069aSMaxime Ripard i2c0 = &i2c0; 547514069aSMaxime Ripard i2c1 = &i2c1; 557514069aSMaxime Ripard i2c2 = &i2c2; 567514069aSMaxime Ripard serial0 = &uart0; 577514069aSMaxime Ripard serial1 = &uart1; 587514069aSMaxime Ripard }; 597514069aSMaxime Ripard 607514069aSMaxime Ripard chosen { 617514069aSMaxime Ripard stdout-path = "serial0:115200n8"; 627514069aSMaxime Ripard }; 637514069aSMaxime Ripard 647514069aSMaxime Ripard leds { 657514069aSMaxime Ripard compatible = "gpio-leds"; 667514069aSMaxime Ripard 677514069aSMaxime Ripard blue { 687514069aSMaxime Ripard label = "bpi-m2m:blue:usr"; 697514069aSMaxime Ripard gpios = <&pio 2 7 GPIO_ACTIVE_LOW>; 707514069aSMaxime Ripard }; 717514069aSMaxime Ripard 727514069aSMaxime Ripard green { 737514069aSMaxime Ripard label = "bpi-m2m:green:usr"; 747514069aSMaxime Ripard gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; 757514069aSMaxime Ripard }; 767514069aSMaxime Ripard 777514069aSMaxime Ripard red { 787514069aSMaxime Ripard label = "bpi-m2m:red:power"; 797514069aSMaxime Ripard gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; 807514069aSMaxime Ripard default-state = "on"; 817514069aSMaxime Ripard }; 827514069aSMaxime Ripard }; 837514069aSMaxime Ripard 847514069aSMaxime Ripard reg_vcc5v0: vcc5v0 { 857514069aSMaxime Ripard compatible = "regulator-fixed"; 867514069aSMaxime Ripard regulator-name = "vcc5v0"; 877514069aSMaxime Ripard regulator-min-microvolt = <5000000>; 887514069aSMaxime Ripard regulator-max-microvolt = <5000000>; 897514069aSMaxime Ripard }; 907514069aSMaxime Ripard 917514069aSMaxime Ripard wifi_pwrseq: wifi_pwrseq { 927514069aSMaxime Ripard compatible = "mmc-pwrseq-simple"; 937514069aSMaxime Ripard reset-gpios = <&r_pio 0 6 GPIO_ACTIVE_LOW>; /* PL06 */ 947514069aSMaxime Ripard }; 957514069aSMaxime Ripard}; 967514069aSMaxime Ripard 977514069aSMaxime Ripard&codec { 987514069aSMaxime Ripard status = "okay"; 997514069aSMaxime Ripard}; 1007514069aSMaxime Ripard 1017514069aSMaxime Ripard&cpu0 { 1027514069aSMaxime Ripard cpu-supply = <®_dcdc3>; 1037514069aSMaxime Ripard}; 1047514069aSMaxime Ripard 1057514069aSMaxime Ripard&cpu0_opp_table { 1067514069aSMaxime Ripard opp@1104000000 { 1077514069aSMaxime Ripard opp-hz = /bits/ 64 <1104000000>; 1087514069aSMaxime Ripard opp-microvolt = <1320000>; 1097514069aSMaxime Ripard clock-latency-ns = <244144>; /* 8 32k periods */ 1107514069aSMaxime Ripard }; 1117514069aSMaxime Ripard 1127514069aSMaxime Ripard opp@1200000000 { 1137514069aSMaxime Ripard opp-hz = /bits/ 64 <1200000000>; 1147514069aSMaxime Ripard opp-microvolt = <1320000>; 1157514069aSMaxime Ripard clock-latency-ns = <244144>; /* 8 32k periods */ 1167514069aSMaxime Ripard }; 1177514069aSMaxime Ripard}; 1187514069aSMaxime Ripard 1197514069aSMaxime Ripard&dai { 1207514069aSMaxime Ripard status = "okay"; 1217514069aSMaxime Ripard}; 1227514069aSMaxime Ripard 1237514069aSMaxime Ripard&ehci0 { 1247514069aSMaxime Ripard status = "okay"; 1257514069aSMaxime Ripard}; 1267514069aSMaxime Ripard 1277514069aSMaxime Ripard/* This is the i2c bus exposed on the DSI connector for the touch panel */ 1287514069aSMaxime Ripard&i2c0 { 1297514069aSMaxime Ripard pinctrl-names = "default"; 1307514069aSMaxime Ripard pinctrl-0 = <&i2c0_pins_a>; 1317514069aSMaxime Ripard status = "disabled"; 1327514069aSMaxime Ripard}; 1337514069aSMaxime Ripard 1347514069aSMaxime Ripard/* This is the i2c bus exposed on the GPIO header */ 1357514069aSMaxime Ripard&i2c1 { 1367514069aSMaxime Ripard pinctrl-names = "default"; 1377514069aSMaxime Ripard pinctrl-0 = <&i2c1_pins_a>; 1387514069aSMaxime Ripard status = "disabled"; 1397514069aSMaxime Ripard}; 1407514069aSMaxime Ripard 1417514069aSMaxime Ripard/* This is the i2c bus exposed on the CSI connector to control the sensor */ 1427514069aSMaxime Ripard&i2c2 { 1437514069aSMaxime Ripard pinctrl-names = "default"; 1447514069aSMaxime Ripard pinctrl-0 = <&i2c2_pins_a>; 1457514069aSMaxime Ripard status = "disabled"; 1467514069aSMaxime Ripard}; 1477514069aSMaxime Ripard 1487514069aSMaxime Ripard&mmc0 { 1497514069aSMaxime Ripard pinctrl-names = "default"; 1507514069aSMaxime Ripard pinctrl-0 = <&mmc0_pins_a>; 1517514069aSMaxime Ripard vmmc-supply = <®_dcdc1>; 1527514069aSMaxime Ripard bus-width = <4>; 153*9ad93c0cSJagan Teki cd-gpios = <&pio 1 4 GPIO_ACTIVE_LOW>; /* PB4 */ 1547514069aSMaxime Ripard status = "okay"; 1557514069aSMaxime Ripard}; 1567514069aSMaxime Ripard 1577514069aSMaxime Ripard&mmc1 { 1587514069aSMaxime Ripard pinctrl-names = "default"; 1597514069aSMaxime Ripard pinctrl-0 = <&mmc1_pins_a>; 1607514069aSMaxime Ripard vmmc-supply = <®_aldo1>; 1617514069aSMaxime Ripard mmc-pwrseq = <&wifi_pwrseq>; 1627514069aSMaxime Ripard bus-width = <4>; 1637514069aSMaxime Ripard non-removable; 1647514069aSMaxime Ripard status = "okay"; 1657514069aSMaxime Ripard}; 1667514069aSMaxime Ripard 1677514069aSMaxime Ripard&mmc2 { 1687514069aSMaxime Ripard pinctrl-names = "default"; 1697514069aSMaxime Ripard pinctrl-0 = <&mmc2_8bit_pins>; 1707514069aSMaxime Ripard vmmc-supply = <®_dcdc1>; 1717514069aSMaxime Ripard bus-width = <8>; 1727514069aSMaxime Ripard non-removable; 1737514069aSMaxime Ripard cap-mmc-hw-reset; 1747514069aSMaxime Ripard status = "okay"; 1757514069aSMaxime Ripard}; 1767514069aSMaxime Ripard 1777514069aSMaxime Ripard&ohci0 { 1787514069aSMaxime Ripard status = "okay"; 1797514069aSMaxime Ripard}; 1807514069aSMaxime Ripard 1817514069aSMaxime Ripard&r_rsb { 1827514069aSMaxime Ripard status = "okay"; 1837514069aSMaxime Ripard 1847514069aSMaxime Ripard axp22x: pmic@3a3 { 1857514069aSMaxime Ripard compatible = "x-powers,axp223"; 1867514069aSMaxime Ripard reg = <0x3a3>; 1877514069aSMaxime Ripard interrupt-parent = <&nmi_intc>; 1887514069aSMaxime Ripard interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 1897514069aSMaxime Ripard eldoin-supply = <®_dcdc1>; 1907514069aSMaxime Ripard x-powers,drive-vbus-en; 1917514069aSMaxime Ripard }; 1927514069aSMaxime Ripard}; 1937514069aSMaxime Ripard 1947514069aSMaxime Ripard#include "axp223.dtsi" 1957514069aSMaxime Ripard 1967514069aSMaxime Ripard&ac_power_supply { 1977514069aSMaxime Ripard status = "okay"; 1987514069aSMaxime Ripard}; 1997514069aSMaxime Ripard 2007514069aSMaxime Ripard®_aldo1 { 2017514069aSMaxime Ripard regulator-always-on; 2027514069aSMaxime Ripard regulator-min-microvolt = <3000000>; 2037514069aSMaxime Ripard regulator-max-microvolt = <3000000>; 2047514069aSMaxime Ripard regulator-name = "vcc-io"; 2057514069aSMaxime Ripard}; 2067514069aSMaxime Ripard 2077514069aSMaxime Ripard®_aldo2 { 2087514069aSMaxime Ripard regulator-always-on; 2097514069aSMaxime Ripard regulator-min-microvolt = <2500000>; 2107514069aSMaxime Ripard regulator-max-microvolt = <2500000>; 2117514069aSMaxime Ripard regulator-name = "vdd-dll"; 2127514069aSMaxime Ripard}; 2137514069aSMaxime Ripard 2147514069aSMaxime Ripard®_aldo3 { 2157514069aSMaxime Ripard regulator-always-on; 2167514069aSMaxime Ripard regulator-min-microvolt = <3000000>; 2177514069aSMaxime Ripard regulator-max-microvolt = <3000000>; 2187514069aSMaxime Ripard regulator-name = "avcc"; 2197514069aSMaxime Ripard}; 2207514069aSMaxime Ripard 2217514069aSMaxime Ripard®_dc1sw { 2227514069aSMaxime Ripard regulator-name = "vcc-lcd"; 2237514069aSMaxime Ripard}; 2247514069aSMaxime Ripard 2257514069aSMaxime Ripard®_dc5ldo { 2267514069aSMaxime Ripard regulator-always-on; 2277514069aSMaxime Ripard regulator-min-microvolt = <900000>; 2287514069aSMaxime Ripard regulator-max-microvolt = <1400000>; 2297514069aSMaxime Ripard regulator-name = "vdd-cpus"; 2307514069aSMaxime Ripard}; 2317514069aSMaxime Ripard 2327514069aSMaxime Ripard®_dcdc1 { 2337514069aSMaxime Ripard regulator-always-on; 2347514069aSMaxime Ripard regulator-min-microvolt = <3000000>; 2357514069aSMaxime Ripard regulator-max-microvolt = <3000000>; 2367514069aSMaxime Ripard regulator-name = "vcc-3v0"; 2377514069aSMaxime Ripard}; 2387514069aSMaxime Ripard 2397514069aSMaxime Ripard®_dcdc2 { 2407514069aSMaxime Ripard regulator-always-on; 2417514069aSMaxime Ripard regulator-min-microvolt = <900000>; 2427514069aSMaxime Ripard regulator-max-microvolt = <1400000>; 2437514069aSMaxime Ripard regulator-name = "vdd-sys"; 2447514069aSMaxime Ripard}; 2457514069aSMaxime Ripard 2467514069aSMaxime Ripard®_dcdc3 { 2477514069aSMaxime Ripard regulator-always-on; 2487514069aSMaxime Ripard regulator-min-microvolt = <900000>; 2497514069aSMaxime Ripard regulator-max-microvolt = <1400000>; 2507514069aSMaxime Ripard regulator-name = "vdd-cpu"; 2517514069aSMaxime Ripard}; 2527514069aSMaxime Ripard 2537514069aSMaxime Ripard®_dcdc5 { 2547514069aSMaxime Ripard regulator-always-on; 2557514069aSMaxime Ripard regulator-min-microvolt = <1500000>; 2567514069aSMaxime Ripard regulator-max-microvolt = <1500000>; 2577514069aSMaxime Ripard regulator-name = "vcc-dram"; 2587514069aSMaxime Ripard}; 2597514069aSMaxime Ripard 2607514069aSMaxime Ripard/* 2617514069aSMaxime Ripard * Our WiFi chip needs both DLDO1 and DLDO2 to be powered at the same 2627514069aSMaxime Ripard * time, with the two being in sync. Since this is not really 2637514069aSMaxime Ripard * supported right now, just use the two as always on, and we will fix 2647514069aSMaxime Ripard * it later. 2657514069aSMaxime Ripard */ 2667514069aSMaxime Ripard®_dldo1 { 2677514069aSMaxime Ripard regulator-always-on; 2687514069aSMaxime Ripard regulator-min-microvolt = <3300000>; 2697514069aSMaxime Ripard regulator-max-microvolt = <3300000>; 2707514069aSMaxime Ripard regulator-name = "vcc-wifi0"; 2717514069aSMaxime Ripard}; 2727514069aSMaxime Ripard 2737514069aSMaxime Ripard®_dldo2 { 2747514069aSMaxime Ripard regulator-always-on; 2757514069aSMaxime Ripard regulator-min-microvolt = <3300000>; 2767514069aSMaxime Ripard regulator-max-microvolt = <3300000>; 2777514069aSMaxime Ripard regulator-name = "vcc-wifi1"; 2787514069aSMaxime Ripard}; 2797514069aSMaxime Ripard 2807514069aSMaxime Ripard®_drivevbus { 2817514069aSMaxime Ripard regulator-name = "usb0-vbus"; 2827514069aSMaxime Ripard status = "okay"; 2837514069aSMaxime Ripard}; 2847514069aSMaxime Ripard 2857514069aSMaxime Ripard®_rtc_ldo { 2867514069aSMaxime Ripard regulator-name = "vcc-rtc"; 2877514069aSMaxime Ripard}; 2887514069aSMaxime Ripard 2897514069aSMaxime Ripard&sound { 2907514069aSMaxime Ripard status = "okay"; 2917514069aSMaxime Ripard}; 2927514069aSMaxime Ripard 2937514069aSMaxime Ripard&uart0 { 2947514069aSMaxime Ripard pinctrl-names = "default"; 2957514069aSMaxime Ripard pinctrl-0 = <&uart0_pins_b>; 2967514069aSMaxime Ripard status = "okay"; 2977514069aSMaxime Ripard}; 2987514069aSMaxime Ripard 2997514069aSMaxime Ripard&uart1 { 3007514069aSMaxime Ripard pinctrl-names = "default"; 3017514069aSMaxime Ripard pinctrl-0 = <&uart1_pins_a>, <&uart1_pins_cts_rts_a>; 3027514069aSMaxime Ripard status = "okay"; 3037514069aSMaxime Ripard}; 3047514069aSMaxime Ripard 3057514069aSMaxime Ripard&usb_otg { 3067514069aSMaxime Ripard dr_mode = "otg"; 3077514069aSMaxime Ripard status = "okay"; 3087514069aSMaxime Ripard}; 3097514069aSMaxime Ripard 3107514069aSMaxime Ripard&usb_power_supply { 3117514069aSMaxime Ripard status = "okay"; 3127514069aSMaxime Ripard}; 3137514069aSMaxime Ripard 3147514069aSMaxime Ripard&usbphy { 3157514069aSMaxime Ripard usb0_id_det-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */ 3167514069aSMaxime Ripard usb0_vbus_power-supply = <&usb_power_supply>; 3177514069aSMaxime Ripard usb0_vbus-supply = <®_drivevbus>; 3187514069aSMaxime Ripard usb1_vbus-supply = <®_vcc5v0>; 3197514069aSMaxime Ripard status = "okay"; 3207514069aSMaxime Ripard}; 321