14969efb2SJagan Teki/*
24969efb2SJagan Teki * Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
34969efb2SJagan Teki *
44969efb2SJagan Teki * This file is dual-licensed: you can use it either under the terms
54969efb2SJagan Teki * of the GPL or the X11 license, at your option. Note that this dual
64969efb2SJagan Teki * licensing only applies to this file, and not this project as a
74969efb2SJagan Teki * whole.
84969efb2SJagan Teki *
94969efb2SJagan Teki *  a) This library is free software; you can redistribute it and/or
104969efb2SJagan Teki *     modify it under the terms of the GNU General Public License as
114969efb2SJagan Teki *     published by the Free Software Foundation; either version 2 of the
124969efb2SJagan Teki *     License, or (at your option) any later version.
134969efb2SJagan Teki *
144969efb2SJagan Teki *     This library is distributed in the hope that it will be useful,
154969efb2SJagan Teki *     but WITHOUT ANY WARRANTY; without even the implied warranty of
164969efb2SJagan Teki *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
174969efb2SJagan Teki *     GNU General Public License for more details.
184969efb2SJagan Teki *
194969efb2SJagan Teki * Or, alternatively,
204969efb2SJagan Teki *
214969efb2SJagan Teki *  b) Permission is hereby granted, free of charge, to any person
224969efb2SJagan Teki *     obtaining a copy of this software and associated documentation
234969efb2SJagan Teki *     files (the "Software"), to deal in the Software without
244969efb2SJagan Teki *     restriction, including without limitation the rights to use,
254969efb2SJagan Teki *     copy, modify, merge, publish, distribute, sublicense, and/or
264969efb2SJagan Teki *     sell copies of the Software, and to permit persons to whom the
274969efb2SJagan Teki *     Software is furnished to do so, subject to the following
284969efb2SJagan Teki *     conditions:
294969efb2SJagan Teki *
304969efb2SJagan Teki *     The above copyright notice and this permission notice shall be
314969efb2SJagan Teki *     included in all copies or substantial portions of the Software.
324969efb2SJagan Teki *
334969efb2SJagan Teki *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
344969efb2SJagan Teki *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
354969efb2SJagan Teki *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
364969efb2SJagan Teki *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
374969efb2SJagan Teki *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
384969efb2SJagan Teki *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
394969efb2SJagan Teki *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
404969efb2SJagan Teki *     OTHER DEALINGS IN THE SOFTWARE.
414969efb2SJagan Teki */
424969efb2SJagan Teki
434969efb2SJagan Teki/dts-v1/;
444969efb2SJagan Teki
454969efb2SJagan Teki#include "sun50i-a64.dtsi"
464969efb2SJagan Teki
474969efb2SJagan Teki#include <dt-bindings/gpio/gpio.h>
484969efb2SJagan Teki
494969efb2SJagan Teki/ {
504969efb2SJagan Teki	model = "Olimex A64-Olinuxino";
514969efb2SJagan Teki	compatible = "olimex,a64-olinuxino", "allwinner,sun50i-a64";
524969efb2SJagan Teki
534969efb2SJagan Teki	aliases {
5421eac6f3SAndre Przywara		ethernet0 = &emac;
554969efb2SJagan Teki		serial0 = &uart0;
564969efb2SJagan Teki	};
574969efb2SJagan Teki
584969efb2SJagan Teki	chosen {
594969efb2SJagan Teki		stdout-path = "serial0:115200n8";
604969efb2SJagan Teki	};
61916b68cfSJagan Teki
62f4e4453aSJagan Teki	hdmi-connector {
63f4e4453aSJagan Teki		compatible = "hdmi-connector";
64f4e4453aSJagan Teki		type = "a";
65f4e4453aSJagan Teki
66f4e4453aSJagan Teki		port {
67f4e4453aSJagan Teki			hdmi_con_in: endpoint {
68f4e4453aSJagan Teki				remote-endpoint = <&hdmi_out_con>;
69f4e4453aSJagan Teki			};
70f4e4453aSJagan Teki		};
71f4e4453aSJagan Teki	};
72f4e4453aSJagan Teki
73aa9cbe94SAndre Przywara	reg_usb1_vbus: usb1-vbus {
74aa9cbe94SAndre Przywara		compatible = "regulator-fixed";
75aa9cbe94SAndre Przywara		regulator-name = "usb1-vbus";
76aa9cbe94SAndre Przywara		regulator-min-microvolt = <5000000>;
77aa9cbe94SAndre Przywara		regulator-max-microvolt = <5000000>;
78aa9cbe94SAndre Przywara		regulator-boot-on;
79aa9cbe94SAndre Przywara		enable-active-high;
80aa9cbe94SAndre Przywara		gpio = <&pio 6 9 GPIO_ACTIVE_HIGH>; /* PG9 */
81aa9cbe94SAndre Przywara		status = "okay";
82aa9cbe94SAndre Przywara	};
83aa9cbe94SAndre Przywara
84916b68cfSJagan Teki	wifi_pwrseq: wifi_pwrseq {
85916b68cfSJagan Teki		compatible = "mmc-pwrseq-simple";
86916b68cfSJagan Teki		reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
87916b68cfSJagan Teki	};
884969efb2SJagan Teki};
894969efb2SJagan Teki
90f4e4453aSJagan Teki&de {
91f4e4453aSJagan Teki	status = "okay";
92f4e4453aSJagan Teki};
93f4e4453aSJagan Teki
94aa9cbe94SAndre Przywara&ehci0 {
95aa9cbe94SAndre Przywara	status = "okay";
96aa9cbe94SAndre Przywara};
97aa9cbe94SAndre Przywara
98aa9cbe94SAndre Przywara&ehci1 {
99aa9cbe94SAndre Przywara	status = "okay";
100aa9cbe94SAndre Przywara};
101aa9cbe94SAndre Przywara
10221eac6f3SAndre Przywara&emac {
10321eac6f3SAndre Przywara	pinctrl-names = "default";
10421eac6f3SAndre Przywara	pinctrl-0 = <&rgmii_pins>;
10521eac6f3SAndre Przywara	phy-mode = "rgmii";
10621eac6f3SAndre Przywara	phy-handle = <&ext_rgmii_phy>;
10721eac6f3SAndre Przywara	phy-supply = <&reg_dcdc1>;
10867929449SRodrigo Exterckötter Tjäder	allwinner,tx-delay-ps = <600>;
10921eac6f3SAndre Przywara	status = "okay";
11021eac6f3SAndre Przywara};
11121eac6f3SAndre Przywara
112f4e4453aSJagan Teki&hdmi {
113f4e4453aSJagan Teki	hvcc-supply = <&reg_dldo1>;
114f4e4453aSJagan Teki	status = "okay";
115f4e4453aSJagan Teki};
116f4e4453aSJagan Teki
117f4e4453aSJagan Teki&hdmi_out {
118f4e4453aSJagan Teki	hdmi_out_con: endpoint {
119f4e4453aSJagan Teki		remote-endpoint = <&hdmi_con_in>;
120f4e4453aSJagan Teki	};
121f4e4453aSJagan Teki};
122f4e4453aSJagan Teki
12321eac6f3SAndre Przywara&mdio {
12421eac6f3SAndre Przywara	ext_rgmii_phy: ethernet-phy@1 {
12521eac6f3SAndre Przywara		compatible = "ethernet-phy-ieee802.3-c22";
12621eac6f3SAndre Przywara		reg = <1>;
12721eac6f3SAndre Przywara	};
12821eac6f3SAndre Przywara};
12921eac6f3SAndre Przywara
1304969efb2SJagan Teki&mmc0 {
1314969efb2SJagan Teki	pinctrl-names = "default";
1324969efb2SJagan Teki	pinctrl-0 = <&mmc0_pins>;
1334969efb2SJagan Teki	vmmc-supply = <&reg_dcdc1>;
134b75cb68dSTuomas Tynkkynen	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
1354969efb2SJagan Teki	disable-wp;
1364969efb2SJagan Teki	bus-width = <4>;
1374969efb2SJagan Teki	status = "okay";
1384969efb2SJagan Teki};
1394969efb2SJagan Teki
140916b68cfSJagan Teki&mmc1 {
141916b68cfSJagan Teki	pinctrl-names = "default";
142916b68cfSJagan Teki	pinctrl-0 = <&mmc1_pins>;
1433d615c2fSStefan Mavrodiev	vmmc-supply = <&reg_dcdc1>;
144916b68cfSJagan Teki	vqmmc-supply = <&reg_dldo4>;
145916b68cfSJagan Teki	mmc-pwrseq = <&wifi_pwrseq>;
146916b68cfSJagan Teki	bus-width = <4>;
147916b68cfSJagan Teki	non-removable;
148916b68cfSJagan Teki	status = "okay";
149916b68cfSJagan Teki
150916b68cfSJagan Teki	rtl8723bs: wifi@1 {
151916b68cfSJagan Teki		reg = <1>;
152916b68cfSJagan Teki		interrupt-parent = <&r_pio>;
153916b68cfSJagan Teki		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
154916b68cfSJagan Teki		interrupt-names = "host-wake";
155916b68cfSJagan Teki	};
156916b68cfSJagan Teki};
157916b68cfSJagan Teki
158aa9cbe94SAndre Przywara&ohci0 {
159aa9cbe94SAndre Przywara	status = "okay";
160aa9cbe94SAndre Przywara};
161aa9cbe94SAndre Przywara
162aa9cbe94SAndre Przywara&ohci1 {
163aa9cbe94SAndre Przywara	status = "okay";
164aa9cbe94SAndre Przywara};
165aa9cbe94SAndre Przywara
1664969efb2SJagan Teki&r_rsb {
1674969efb2SJagan Teki	status = "okay";
1684969efb2SJagan Teki
1694969efb2SJagan Teki	axp803: pmic@3a3 {
1704969efb2SJagan Teki		compatible = "x-powers,axp803";
1714969efb2SJagan Teki		reg = <0x3a3>;
1724969efb2SJagan Teki		interrupt-parent = <&r_intc>;
1734969efb2SJagan Teki		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
174aa9cbe94SAndre Przywara		x-powers,drive-vbus-en;	/* set N_VBUSEN as output pin */
1754969efb2SJagan Teki	};
1764969efb2SJagan Teki};
1774969efb2SJagan Teki
1784969efb2SJagan Teki#include "axp803.dtsi"
1794969efb2SJagan Teki
180a24270afSChen-Yu Tsai&ac_power_supply {
181a24270afSChen-Yu Tsai	status = "okay";
182a24270afSChen-Yu Tsai};
183a24270afSChen-Yu Tsai
184a24270afSChen-Yu Tsai&battery_power_supply {
185a24270afSChen-Yu Tsai	status = "okay";
186a24270afSChen-Yu Tsai};
187a24270afSChen-Yu Tsai
1884969efb2SJagan Teki&reg_aldo1 {
1894969efb2SJagan Teki	regulator-always-on;
1904969efb2SJagan Teki	regulator-min-microvolt = <2800000>;
1914969efb2SJagan Teki	regulator-max-microvolt = <2800000>;
1924969efb2SJagan Teki	regulator-name = "vcc-pe";
1934969efb2SJagan Teki};
1944969efb2SJagan Teki
1954969efb2SJagan Teki&reg_aldo2 {
1964969efb2SJagan Teki	regulator-always-on;
1974969efb2SJagan Teki	regulator-min-microvolt = <3300000>;
1984969efb2SJagan Teki	regulator-max-microvolt = <3300000>;
1994969efb2SJagan Teki	regulator-name = "vcc-pl";
2004969efb2SJagan Teki};
2014969efb2SJagan Teki
2024969efb2SJagan Teki&reg_aldo3 {
2034969efb2SJagan Teki	regulator-always-on;
2044969efb2SJagan Teki	regulator-min-microvolt = <3000000>;
2054969efb2SJagan Teki	regulator-max-microvolt = <3000000>;
2064969efb2SJagan Teki	regulator-name = "vcc-pll-avcc";
2074969efb2SJagan Teki};
2084969efb2SJagan Teki
2094969efb2SJagan Teki&reg_dcdc1 {
2104969efb2SJagan Teki	regulator-always-on;
2114969efb2SJagan Teki	regulator-min-microvolt = <3300000>;
2124969efb2SJagan Teki	regulator-max-microvolt = <3300000>;
2134969efb2SJagan Teki	regulator-name = "vcc-3v3";
2144969efb2SJagan Teki};
2154969efb2SJagan Teki
2164969efb2SJagan Teki&reg_dcdc2 {
2174969efb2SJagan Teki	regulator-always-on;
2184969efb2SJagan Teki	regulator-min-microvolt = <1040000>;
2194969efb2SJagan Teki	regulator-max-microvolt = <1300000>;
2204969efb2SJagan Teki	regulator-name = "vdd-cpux";
2214969efb2SJagan Teki};
2224969efb2SJagan Teki
2234969efb2SJagan Teki/* DCDC3 is polyphased with DCDC2 */
2244969efb2SJagan Teki
22593366b49SAndre Przywara/*
22693366b49SAndre Przywara * The board uses DDR3L DRAM chips. 1.36V is the closest to the nominal
22793366b49SAndre Przywara * 1.35V that the PMIC can drive.
22893366b49SAndre Przywara */
2294969efb2SJagan Teki&reg_dcdc5 {
2304969efb2SJagan Teki	regulator-always-on;
23193366b49SAndre Przywara	regulator-min-microvolt = <1360000>;
23293366b49SAndre Przywara	regulator-max-microvolt = <1360000>;
2334969efb2SJagan Teki	regulator-name = "vcc-ddr3";
2344969efb2SJagan Teki};
2354969efb2SJagan Teki
2364969efb2SJagan Teki&reg_dcdc6 {
2374969efb2SJagan Teki	regulator-always-on;
2384969efb2SJagan Teki	regulator-min-microvolt = <1100000>;
2394969efb2SJagan Teki	regulator-max-microvolt = <1100000>;
2404969efb2SJagan Teki	regulator-name = "vdd-sys";
2414969efb2SJagan Teki};
2424969efb2SJagan Teki
2434969efb2SJagan Teki&reg_dldo1 {
2444969efb2SJagan Teki	regulator-min-microvolt = <3300000>;
2454969efb2SJagan Teki	regulator-max-microvolt = <3300000>;
2464969efb2SJagan Teki	regulator-name = "vcc-hdmi";
2474969efb2SJagan Teki};
2484969efb2SJagan Teki
2494969efb2SJagan Teki&reg_dldo2 {
2504969efb2SJagan Teki	regulator-min-microvolt = <3300000>;
2514969efb2SJagan Teki	regulator-max-microvolt = <3300000>;
2524969efb2SJagan Teki	regulator-name = "vcc-mipi";
2534969efb2SJagan Teki};
2544969efb2SJagan Teki
2554969efb2SJagan Teki&reg_dldo3 {
2564969efb2SJagan Teki	regulator-min-microvolt = <2800000>;
2574969efb2SJagan Teki	regulator-max-microvolt = <2800000>;
2584969efb2SJagan Teki	regulator-name = "vcc-avdd-csi";
2594969efb2SJagan Teki};
2604969efb2SJagan Teki
2614969efb2SJagan Teki&reg_dldo4 {
2624969efb2SJagan Teki	regulator-min-microvolt = <3300000>;
2634969efb2SJagan Teki	regulator-max-microvolt = <3300000>;
2644969efb2SJagan Teki	regulator-name = "vcc-wifi-io";
2654969efb2SJagan Teki};
2664969efb2SJagan Teki
267aa9cbe94SAndre Przywara&reg_drivevbus {
268aa9cbe94SAndre Przywara	regulator-name = "usb0-vbus";
269aa9cbe94SAndre Przywara	status = "okay";
270aa9cbe94SAndre Przywara};
271aa9cbe94SAndre Przywara
2724969efb2SJagan Teki&reg_eldo1 {
2734969efb2SJagan Teki	regulator-min-microvolt = <1800000>;
2744969efb2SJagan Teki	regulator-max-microvolt = <1800000>;
2754969efb2SJagan Teki	regulator-name = "cpvdd";
2764969efb2SJagan Teki};
2774969efb2SJagan Teki
2784969efb2SJagan Teki&reg_eldo2 {
2794969efb2SJagan Teki	regulator-min-microvolt = <1800000>;
2804969efb2SJagan Teki	regulator-max-microvolt = <1800000>;
2814969efb2SJagan Teki	regulator-name = "vcc-dvdd-csi";
2824969efb2SJagan Teki};
2834969efb2SJagan Teki
2844969efb2SJagan Teki&reg_fldo1 {
2854969efb2SJagan Teki	regulator-min-microvolt = <1200000>;
2864969efb2SJagan Teki	regulator-max-microvolt = <1200000>;
2874969efb2SJagan Teki	regulator-name = "vcc-1v2-hsic";
2884969efb2SJagan Teki};
2894969efb2SJagan Teki
2904969efb2SJagan Teki/*
2914969efb2SJagan Teki * The A64 chip cannot work without this regulator off, although
2924969efb2SJagan Teki * it seems to be only driving the AR100 core.
2934969efb2SJagan Teki * Maybe we don't still know well about CPUs domain.
2944969efb2SJagan Teki */
2954969efb2SJagan Teki&reg_fldo2 {
2964969efb2SJagan Teki	regulator-always-on;
2974969efb2SJagan Teki	regulator-min-microvolt = <1100000>;
2984969efb2SJagan Teki	regulator-max-microvolt = <1100000>;
2994969efb2SJagan Teki	regulator-name = "vdd-cpus";
3004969efb2SJagan Teki};
3014969efb2SJagan Teki
3024969efb2SJagan Teki&reg_rtc_ldo {
3034969efb2SJagan Teki	regulator-name = "vcc-rtc";
3044969efb2SJagan Teki};
3054969efb2SJagan Teki
3065cbef9f9SIcenowy Zheng&simplefb_hdmi {
3075cbef9f9SIcenowy Zheng	vcc-hdmi-supply = <&reg_dldo1>;
3085cbef9f9SIcenowy Zheng};
3095cbef9f9SIcenowy Zheng
3104969efb2SJagan Teki&uart0 {
3114969efb2SJagan Teki	pinctrl-names = "default";
312d91ebb95SChen-Yu Tsai	pinctrl-0 = <&uart0_pb_pins>;
3134969efb2SJagan Teki	status = "okay";
3144969efb2SJagan Teki};
315aa9cbe94SAndre Przywara
316aa9cbe94SAndre Przywara&usb_otg {
317aa9cbe94SAndre Przywara	dr_mode = "otg";
318aa9cbe94SAndre Przywara	status = "okay";
319aa9cbe94SAndre Przywara};
320aa9cbe94SAndre Przywara
321aa9cbe94SAndre Przywara&usbphy {
322aa9cbe94SAndre Przywara	status = "okay";
323aa9cbe94SAndre Przywara	usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
324aa9cbe94SAndre Przywara	usb0_vbus-supply = <&reg_drivevbus>;
325aa9cbe94SAndre Przywara	usb1_vbus-supply = <&reg_usb1_vbus>;
326aa9cbe94SAndre Przywara};
327