xref: /openbmc/u-boot/arch/arm/dts/sun5i-gr8-chip-pro.dts (revision cc49e2bdb8fbd47af28cb7e47696322586e9fff1)
16a3a226eSMaxime Ripard/*
26a3a226eSMaxime Ripard * Copyright 2016 Free Electrons
36a3a226eSMaxime Ripard * Copyright 2016 NextThing Co
46a3a226eSMaxime Ripard *
56a3a226eSMaxime Ripard * Maxime Ripard <maxime.ripard@free-electrons.com>
66a3a226eSMaxime Ripard *
76a3a226eSMaxime Ripard * This file is dual-licensed: you can use it either under the terms
86a3a226eSMaxime Ripard * of the GPL or the X11 license, at your option. Note that this dual
96a3a226eSMaxime Ripard * licensing only applies to this file, and not this project as a
106a3a226eSMaxime Ripard * whole.
116a3a226eSMaxime Ripard *
126a3a226eSMaxime Ripard *  a) This file is free software; you can redistribute it and/or
136a3a226eSMaxime Ripard *     modify it under the terms of the GNU General Public License as
146a3a226eSMaxime Ripard *     published by the Free Software Foundation; either version 2 of the
156a3a226eSMaxime Ripard *     License, or (at your option) any later version.
166a3a226eSMaxime Ripard *
176a3a226eSMaxime Ripard *     This file is distributed in the hope that it will be useful,
186a3a226eSMaxime Ripard *     but WITHOUT ANY WARRANTY; without even the implied warranty of
196a3a226eSMaxime Ripard *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
206a3a226eSMaxime Ripard *     GNU General Public License for more details.
216a3a226eSMaxime Ripard *
226a3a226eSMaxime Ripard * Or, alternatively,
236a3a226eSMaxime Ripard *
246a3a226eSMaxime Ripard *  b) Permission is hereby granted, free of charge, to any person
256a3a226eSMaxime Ripard *     obtaining a copy of this software and associated documentation
266a3a226eSMaxime Ripard *     files (the "Software"), to deal in the Software without
276a3a226eSMaxime Ripard *     restriction, including without limitation the rights to use,
286a3a226eSMaxime Ripard *     copy, modify, merge, publish, distribute, sublicense, and/or
296a3a226eSMaxime Ripard *     sell copies of the Software, and to permit persons to whom the
306a3a226eSMaxime Ripard *     Software is furnished to do so, subject to the following
316a3a226eSMaxime Ripard *     conditions:
326a3a226eSMaxime Ripard *
336a3a226eSMaxime Ripard *     The above copyright notice and this permission notice shall be
346a3a226eSMaxime Ripard *     included in all copies or substantial portions of the Software.
356a3a226eSMaxime Ripard *
366a3a226eSMaxime Ripard *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
376a3a226eSMaxime Ripard *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
386a3a226eSMaxime Ripard *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
396a3a226eSMaxime Ripard *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
406a3a226eSMaxime Ripard *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
416a3a226eSMaxime Ripard *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
426a3a226eSMaxime Ripard *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
436a3a226eSMaxime Ripard *     OTHER DEALINGS IN THE SOFTWARE.
446a3a226eSMaxime Ripard */
456a3a226eSMaxime Ripard
466a3a226eSMaxime Ripard/dts-v1/;
476a3a226eSMaxime Ripard#include "sun5i-gr8.dtsi"
486a3a226eSMaxime Ripard#include "sunxi-common-regulators.dtsi"
496a3a226eSMaxime Ripard
506a3a226eSMaxime Ripard#include <dt-bindings/gpio/gpio.h>
516a3a226eSMaxime Ripard#include <dt-bindings/input/input.h>
526a3a226eSMaxime Ripard#include <dt-bindings/interrupt-controller/irq.h>
536a3a226eSMaxime Ripard
546a3a226eSMaxime Ripard/ {
556a3a226eSMaxime Ripard	model = "NextThing C.H.I.P. Pro";
566a3a226eSMaxime Ripard	compatible = "nextthing,chip-pro", "nextthing,gr8";
576a3a226eSMaxime Ripard
586a3a226eSMaxime Ripard	aliases {
596a3a226eSMaxime Ripard		i2c0 = &i2c0;
606a3a226eSMaxime Ripard		i2c1 = &i2c1;
616a3a226eSMaxime Ripard		serial0 = &uart1;
626a3a226eSMaxime Ripard		serial1 = &uart2;
636a3a226eSMaxime Ripard		serial2 = &uart3;
646a3a226eSMaxime Ripard	};
656a3a226eSMaxime Ripard
666a3a226eSMaxime Ripard	chosen {
676a3a226eSMaxime Ripard		stdout-path = "serial0:115200n8";
686a3a226eSMaxime Ripard	};
696a3a226eSMaxime Ripard
706a3a226eSMaxime Ripard	leds {
716a3a226eSMaxime Ripard		compatible = "gpio-leds";
726a3a226eSMaxime Ripard
736a3a226eSMaxime Ripard		status {
746a3a226eSMaxime Ripard			label = "chip-pro:white:status";
756a3a226eSMaxime Ripard			gpios = <&axp_gpio 2 GPIO_ACTIVE_HIGH>;
766a3a226eSMaxime Ripard			default-state = "on";
776a3a226eSMaxime Ripard		};
786a3a226eSMaxime Ripard	};
796a3a226eSMaxime Ripard
806a3a226eSMaxime Ripard	mmc0_pwrseq: mmc0_pwrseq {
816a3a226eSMaxime Ripard		compatible = "mmc-pwrseq-simple";
826a3a226eSMaxime Ripard		pinctrl-names = "default";
836a3a226eSMaxime Ripard		pinctrl-0 = <&wifi_reg_on_pin_chip_pro>;
846a3a226eSMaxime Ripard		reset-gpios = <&pio 1 10 GPIO_ACTIVE_LOW>; /* PB10 */
856a3a226eSMaxime Ripard	};
866a3a226eSMaxime Ripard};
876a3a226eSMaxime Ripard
886a3a226eSMaxime Ripard&codec {
896a3a226eSMaxime Ripard	status = "okay";
906a3a226eSMaxime Ripard};
916a3a226eSMaxime Ripard
926a3a226eSMaxime Ripard&ehci0 {
936a3a226eSMaxime Ripard	status = "okay";
946a3a226eSMaxime Ripard};
956a3a226eSMaxime Ripard
966a3a226eSMaxime Ripard&i2c0 {
976a3a226eSMaxime Ripard	pinctrl-names = "default";
986a3a226eSMaxime Ripard	pinctrl-0 = <&i2c0_pins_a>;
996a3a226eSMaxime Ripard	status = "okay";
1006a3a226eSMaxime Ripard
1016a3a226eSMaxime Ripard	axp209: pmic@34 {
1026a3a226eSMaxime Ripard		reg = <0x34>;
1036a3a226eSMaxime Ripard
1046a3a226eSMaxime Ripard		/*
1056a3a226eSMaxime Ripard		* The interrupt is routed through the "External Fast
1066a3a226eSMaxime Ripard		* Interrupt Request" pin (ball G13 of the module)
1076a3a226eSMaxime Ripard		* directly to the main interrupt controller, without
1086a3a226eSMaxime Ripard		* any other controller interfering.
1096a3a226eSMaxime Ripard		*/
1106a3a226eSMaxime Ripard		interrupts = <0>;
1116a3a226eSMaxime Ripard	};
1126a3a226eSMaxime Ripard};
1136a3a226eSMaxime Ripard
1146a3a226eSMaxime Ripard#include "axp209.dtsi"
1156a3a226eSMaxime Ripard
1166a3a226eSMaxime Ripard&i2c1 {
1176a3a226eSMaxime Ripard	pinctrl-names = "default";
1186a3a226eSMaxime Ripard	pinctrl-0 = <&i2c1_pins_a>;
1196a3a226eSMaxime Ripard	status = "disabled";
1206a3a226eSMaxime Ripard};
1216a3a226eSMaxime Ripard
1226a3a226eSMaxime Ripard&i2s0 {
1236a3a226eSMaxime Ripard	pinctrl-names = "default";
1246a3a226eSMaxime Ripard	pinctrl-0 = <&i2s0_mclk_pins_a>, <&i2s0_data_pins_a>;
1256a3a226eSMaxime Ripard	status = "disabled";
1266a3a226eSMaxime Ripard};
1276a3a226eSMaxime Ripard
1286a3a226eSMaxime Ripard&mmc0 {
1296a3a226eSMaxime Ripard	pinctrl-names = "default";
1306a3a226eSMaxime Ripard	pinctrl-0 = <&mmc0_pins_a>;
1316a3a226eSMaxime Ripard	vmmc-supply = <&reg_vcc3v3>;
1326a3a226eSMaxime Ripard	mmc-pwrseq = <&mmc0_pwrseq>;
1336a3a226eSMaxime Ripard	bus-width = <4>;
1346a3a226eSMaxime Ripard	non-removable;
1356a3a226eSMaxime Ripard	status = "okay";
1366a3a226eSMaxime Ripard};
1376a3a226eSMaxime Ripard
1386a3a226eSMaxime Ripard&nfc {
1396a3a226eSMaxime Ripard	pinctrl-names = "default";
1406a3a226eSMaxime Ripard	pinctrl-0 = <&nand_pins_a &nand_cs0_pins_a &nand_rb0_pins_a>;
1416a3a226eSMaxime Ripard	status = "okay";
1426a3a226eSMaxime Ripard
1436a3a226eSMaxime Ripard	nand@0 {
1446a3a226eSMaxime Ripard		#address-cells = <2>;
1456a3a226eSMaxime Ripard		#size-cells = <2>;
1466a3a226eSMaxime Ripard		reg = <0>;
1476a3a226eSMaxime Ripard		allwinner,rb = <0>;
1486a3a226eSMaxime Ripard		nand-ecc-mode = "hw";
1496a3a226eSMaxime Ripard	};
1506a3a226eSMaxime Ripard};
1516a3a226eSMaxime Ripard
1526a3a226eSMaxime Ripard&ohci0 {
1536a3a226eSMaxime Ripard	status = "okay";
1546a3a226eSMaxime Ripard};
1556a3a226eSMaxime Ripard
1566a3a226eSMaxime Ripard&otg_sram {
1576a3a226eSMaxime Ripard	status = "okay";
1586a3a226eSMaxime Ripard};
1596a3a226eSMaxime Ripard
1606a3a226eSMaxime Ripard&pio {
1616a3a226eSMaxime Ripard	usb0_id_pin_chip_pro: usb0-id-pin@0 {
162*13b36facSJagan Teki		pins = "PG2";
163*13b36facSJagan Teki		function = "gpio_in";
1646a3a226eSMaxime Ripard	};
1656a3a226eSMaxime Ripard
1666a3a226eSMaxime Ripard	wifi_reg_on_pin_chip_pro: wifi-reg-on-pin@0 {
167*13b36facSJagan Teki		pins = "PB10";
168*13b36facSJagan Teki		function = "gpio_out";
1696a3a226eSMaxime Ripard	};
1706a3a226eSMaxime Ripard};
1716a3a226eSMaxime Ripard
1726a3a226eSMaxime Ripard&pwm {
1736a3a226eSMaxime Ripard	pinctrl-names = "default";
174*13b36facSJagan Teki	pinctrl-0 = <&pwm0_pins>, <&pwm1_pins>;
1756a3a226eSMaxime Ripard	status = "disabled";
1766a3a226eSMaxime Ripard};
1776a3a226eSMaxime Ripard
1786a3a226eSMaxime Ripard&reg_dcdc2 {
1796a3a226eSMaxime Ripard	regulator-min-microvolt = <1000000>;
1806a3a226eSMaxime Ripard	regulator-max-microvolt = <1400000>;
1816a3a226eSMaxime Ripard	regulator-name = "vdd-cpu";
1826a3a226eSMaxime Ripard	regulator-always-on;
1836a3a226eSMaxime Ripard};
1846a3a226eSMaxime Ripard
1856a3a226eSMaxime Ripard&reg_dcdc3 {
1866a3a226eSMaxime Ripard	regulator-min-microvolt = <1000000>;
1876a3a226eSMaxime Ripard	regulator-max-microvolt = <1300000>;
1886a3a226eSMaxime Ripard	regulator-name = "vdd-sys";
1896a3a226eSMaxime Ripard	regulator-always-on;
1906a3a226eSMaxime Ripard};
1916a3a226eSMaxime Ripard
1926a3a226eSMaxime Ripard&reg_ldo1 {
1936a3a226eSMaxime Ripard	regulator-name = "vdd-rtc";
1946a3a226eSMaxime Ripard};
1956a3a226eSMaxime Ripard
1966a3a226eSMaxime Ripard&reg_ldo2 {
1976a3a226eSMaxime Ripard	regulator-min-microvolt = <2700000>;
1986a3a226eSMaxime Ripard	regulator-max-microvolt = <3300000>;
1996a3a226eSMaxime Ripard	regulator-name = "avcc";
2006a3a226eSMaxime Ripard	regulator-always-on;
2016a3a226eSMaxime Ripard};
2026a3a226eSMaxime Ripard
2036a3a226eSMaxime Ripard/*
2046a3a226eSMaxime Ripard * Both LDO3 and LDO4 are used in parallel to power up the
2056a3a226eSMaxime Ripard * WiFi/BT chip.
2066a3a226eSMaxime Ripard */
2076a3a226eSMaxime Ripard&reg_ldo3 {
2086a3a226eSMaxime Ripard	regulator-min-microvolt = <3300000>;
2096a3a226eSMaxime Ripard	regulator-max-microvolt = <3300000>;
2106a3a226eSMaxime Ripard	regulator-name = "vcc-wifi-1";
2116a3a226eSMaxime Ripard	regulator-always-on;
2126a3a226eSMaxime Ripard};
2136a3a226eSMaxime Ripard
2146a3a226eSMaxime Ripard&reg_ldo4 {
2156a3a226eSMaxime Ripard	regulator-min-microvolt = <3300000>;
2166a3a226eSMaxime Ripard	regulator-max-microvolt = <3300000>;
2176a3a226eSMaxime Ripard	regulator-name = "vcc-wifi-2";
2186a3a226eSMaxime Ripard	regulator-always-on;
2196a3a226eSMaxime Ripard};
2206a3a226eSMaxime Ripard
2216a3a226eSMaxime Ripard&uart1 {
2226a3a226eSMaxime Ripard	pinctrl-names = "default";
223*13b36facSJagan Teki	pinctrl-0 = <&uart1_pins_b>, <&uart1_cts_rts_pins_a>;
2246a3a226eSMaxime Ripard	status = "okay";
2256a3a226eSMaxime Ripard};
2266a3a226eSMaxime Ripard
2276a3a226eSMaxime Ripard&uart2 {
2286a3a226eSMaxime Ripard	pinctrl-names = "default";
2296a3a226eSMaxime Ripard	pinctrl-0 = <&uart2_pins_a>, <&uart2_cts_rts_pins_a>;
2306a3a226eSMaxime Ripard	status = "disabled";
2316a3a226eSMaxime Ripard};
2326a3a226eSMaxime Ripard
2336a3a226eSMaxime Ripard&uart3 {
2346a3a226eSMaxime Ripard	pinctrl-names = "default";
2356a3a226eSMaxime Ripard	pinctrl-0 = <&uart3_pins_a>, <&uart3_cts_rts_pins_a>;
2366a3a226eSMaxime Ripard	status = "okay";
2376a3a226eSMaxime Ripard};
2386a3a226eSMaxime Ripard
2396a3a226eSMaxime Ripard&usb_otg {
2406a3a226eSMaxime Ripard	/*
2416a3a226eSMaxime Ripard	 * The CHIP Pro doesn't have a controllable VBUS, nor does it
2426a3a226eSMaxime Ripard	 * have any 5v rail on the board itself.
2436a3a226eSMaxime Ripard	 *
2446a3a226eSMaxime Ripard	 * If one wants to use it as a true OTG port, it should be
2456a3a226eSMaxime Ripard	 * done in the baseboard, and its DT / overlay will add it.
2466a3a226eSMaxime Ripard	 */
2476a3a226eSMaxime Ripard	dr_mode = "otg";
2486a3a226eSMaxime Ripard	status = "okay";
2496a3a226eSMaxime Ripard};
2506a3a226eSMaxime Ripard
2516a3a226eSMaxime Ripard&usb_power_supply {
2526a3a226eSMaxime Ripard	status = "okay";
2536a3a226eSMaxime Ripard};
2546a3a226eSMaxime Ripard
2556a3a226eSMaxime Ripard&usbphy {
2566a3a226eSMaxime Ripard	pinctrl-names = "default";
2576a3a226eSMaxime Ripard	pinctrl-0 = <&usb0_id_pin_chip_pro>;
2586a3a226eSMaxime Ripard	usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */
2596a3a226eSMaxime Ripard	usb0_vbus_power-supply = <&usb_power_supply>;
2606a3a226eSMaxime Ripard	usb1_vbus-supply = <&reg_vcc5v0>;
2616a3a226eSMaxime Ripard	status = "okay";
2626a3a226eSMaxime Ripard};
263