1aa56cb37SJelle de Jong/*
2aa56cb37SJelle de Jong * Copyright 2015 Jelle de Jong <jelledejong@powercraft.nl>
3aa56cb37SJelle de Jong *
4aa56cb37SJelle de Jong * This file is dual-licensed: you can use it either under the terms
5aa56cb37SJelle de Jong * of the GPL or the X11 license, at your option. Note that this dual
6aa56cb37SJelle de Jong * licensing only applies to this file, and not this project as a
7aa56cb37SJelle de Jong * whole.
8aa56cb37SJelle de Jong *
9aa56cb37SJelle de Jong *  a) This file is free software; you can redistribute it and/or
10aa56cb37SJelle de Jong *     modify it under the terms of the GNU General Public License as
11aa56cb37SJelle de Jong *     published by the Free Software Foundation; either version 2 of the
12aa56cb37SJelle de Jong *     License, or (at your option) any later version.
13aa56cb37SJelle de Jong *
14aa56cb37SJelle de Jong *     This file is distributed in the hope that it will be useful,
15aa56cb37SJelle de Jong *     but WITHOUT ANY WARRANTY; without even the implied warranty of
16aa56cb37SJelle de Jong *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17aa56cb37SJelle de Jong *     GNU General Public License for more details.
18aa56cb37SJelle de Jong *
19aa56cb37SJelle de Jong * Or, alternatively,
20aa56cb37SJelle de Jong *
21aa56cb37SJelle de Jong *  b) Permission is hereby granted, free of charge, to any person
22aa56cb37SJelle de Jong *     obtaining a copy of this software and associated documentation
23aa56cb37SJelle de Jong *     files (the "Software"), to deal in the Software without
24aa56cb37SJelle de Jong *     restriction, including without limitation the rights to use,
25aa56cb37SJelle de Jong *     copy, modify, merge, publish, distribute, sublicense, and/or
26aa56cb37SJelle de Jong *     sell copies of the Software, and to permit persons to whom the
27aa56cb37SJelle de Jong *     Software is furnished to do so, subject to the following
28aa56cb37SJelle de Jong *     conditions:
29aa56cb37SJelle de Jong *
30aa56cb37SJelle de Jong *     The above copyright notice and this permission notice shall be
31aa56cb37SJelle de Jong *     included in all copies or substantial portions of the Software.
32aa56cb37SJelle de Jong *
33aa56cb37SJelle de Jong *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34aa56cb37SJelle de Jong *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35aa56cb37SJelle de Jong *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36aa56cb37SJelle de Jong *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37aa56cb37SJelle de Jong *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38aa56cb37SJelle de Jong *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39aa56cb37SJelle de Jong *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40aa56cb37SJelle de Jong *     OTHER DEALINGS IN THE SOFTWARE.
41aa56cb37SJelle de Jong */
42aa56cb37SJelle de Jong
43aa56cb37SJelle de Jong/dts-v1/;
44aa56cb37SJelle de Jong#include "sun7i-a20.dtsi"
45aa56cb37SJelle de Jong#include "sunxi-common-regulators.dtsi"
46aa56cb37SJelle de Jong
47aa56cb37SJelle de Jong#include <dt-bindings/gpio/gpio.h>
48aa56cb37SJelle de Jong#include <dt-bindings/interrupt-controller/irq.h>
49aa56cb37SJelle de Jong
50aa56cb37SJelle de Jong/ {
51aa56cb37SJelle de Jong	model = "Lamobo R1";
52aa56cb37SJelle de Jong	compatible = "lamobo,lamobo-r1", "allwinner,sun7i-a20";
53aa56cb37SJelle de Jong
54aa56cb37SJelle de Jong	aliases {
55aa56cb37SJelle de Jong		serial0 = &uart0;
56aa56cb37SJelle de Jong		serial1 = &uart3;
57aa56cb37SJelle de Jong		serial2 = &uart7;
58aa56cb37SJelle de Jong	};
59aa56cb37SJelle de Jong
60aa56cb37SJelle de Jong	chosen {
61aa56cb37SJelle de Jong		stdout-path = "serial0:115200n8";
62aa56cb37SJelle de Jong	};
63aa56cb37SJelle de Jong
64*b9d59d08SJagan Teki	hdmi-connector {
65*b9d59d08SJagan Teki		compatible = "hdmi-connector";
66*b9d59d08SJagan Teki		type = "a";
67*b9d59d08SJagan Teki
68*b9d59d08SJagan Teki		port {
69*b9d59d08SJagan Teki			hdmi_con_in: endpoint {
70*b9d59d08SJagan Teki				remote-endpoint = <&hdmi_out_con>;
71*b9d59d08SJagan Teki			};
72*b9d59d08SJagan Teki		};
73*b9d59d08SJagan Teki	};
74*b9d59d08SJagan Teki
75aa56cb37SJelle de Jong	leds {
76aa56cb37SJelle de Jong		compatible = "gpio-leds";
77aa56cb37SJelle de Jong		pinctrl-names = "default";
78aa56cb37SJelle de Jong		pinctrl-0 = <&led_pins_lamobo_r1>;
79aa56cb37SJelle de Jong
80aa56cb37SJelle de Jong		green {
81aa56cb37SJelle de Jong			label = "lamobo_r1:green:usr";
82aa56cb37SJelle de Jong			gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
83aa56cb37SJelle de Jong		};
84aa56cb37SJelle de Jong	};
85aa56cb37SJelle de Jong
86aa56cb37SJelle de Jong	reg_gmac_3v3: gmac-3v3 {
87aa56cb37SJelle de Jong		compatible = "regulator-fixed";
88aa56cb37SJelle de Jong		pinctrl-names = "default";
89aa56cb37SJelle de Jong		pinctrl-0 = <&gmac_power_pin_lamobo_r1>;
90aa56cb37SJelle de Jong		regulator-name = "gmac-3v3";
91aa56cb37SJelle de Jong		regulator-min-microvolt = <3300000>;
92aa56cb37SJelle de Jong		regulator-max-microvolt = <3300000>;
93aa56cb37SJelle de Jong		startup-delay-us = <100000>;
94aa56cb37SJelle de Jong		enable-active-high;
95aa56cb37SJelle de Jong		gpio = <&pio 7 23 GPIO_ACTIVE_HIGH>; /* PH23 */
96aa56cb37SJelle de Jong	};
97aa56cb37SJelle de Jong};
98aa56cb37SJelle de Jong
99aa56cb37SJelle de Jong&ahci {
100aa56cb37SJelle de Jong	target-supply = <&reg_ahci_5v>;
101aa56cb37SJelle de Jong	status = "okay";
102aa56cb37SJelle de Jong};
103aa56cb37SJelle de Jong
104860fbdd4SHans de Goede&codec {
105860fbdd4SHans de Goede	status = "okay";
106860fbdd4SHans de Goede};
107860fbdd4SHans de Goede
108aa56cb37SJelle de Jong&cpu0 {
109aa56cb37SJelle de Jong	cpu-supply = <&reg_dcdc2>;
110aa56cb37SJelle de Jong};
111aa56cb37SJelle de Jong
112*b9d59d08SJagan Teki&de {
113*b9d59d08SJagan Teki	status = "okay";
114*b9d59d08SJagan Teki};
115*b9d59d08SJagan Teki
116aa56cb37SJelle de Jong&ehci0 {
117aa56cb37SJelle de Jong	status = "okay";
118aa56cb37SJelle de Jong};
119aa56cb37SJelle de Jong
120aa56cb37SJelle de Jong&ehci1 {
121aa56cb37SJelle de Jong	status = "okay";
122aa56cb37SJelle de Jong};
123aa56cb37SJelle de Jong
124aa56cb37SJelle de Jong&gmac {
125aa56cb37SJelle de Jong	pinctrl-names = "default";
126aa56cb37SJelle de Jong	pinctrl-0 = <&gmac_pins_rgmii_a>;
127aa56cb37SJelle de Jong	phy-mode = "rgmii";
128aa56cb37SJelle de Jong	phy-supply = <&reg_gmac_3v3>;
129aa56cb37SJelle de Jong	status = "okay";
130aa56cb37SJelle de Jong
131860fbdd4SHans de Goede	fixed-link {
132860fbdd4SHans de Goede		speed = <1000>;
133860fbdd4SHans de Goede		full-duplex;
134860fbdd4SHans de Goede	};
135860fbdd4SHans de Goede
136860fbdd4SHans de Goede	mdio {
137860fbdd4SHans de Goede		compatible = "snps,dwmac-mdio";
138860fbdd4SHans de Goede		#address-cells = <1>;
139860fbdd4SHans de Goede		#size-cells = <0>;
140860fbdd4SHans de Goede
141860fbdd4SHans de Goede		switch: ethernet-switch@1e {
142860fbdd4SHans de Goede			compatible = "brcm,bcm53125";
143860fbdd4SHans de Goede			reg = <30>;
144860fbdd4SHans de Goede			#address-cells = <1>;
145860fbdd4SHans de Goede			#size-cells = <0>;
146860fbdd4SHans de Goede
147860fbdd4SHans de Goede			ports {
148860fbdd4SHans de Goede				#address-cells = <1>;
149860fbdd4SHans de Goede				#size-cells = <0>;
150860fbdd4SHans de Goede
151860fbdd4SHans de Goede				port0: port@0 {
152860fbdd4SHans de Goede					reg = <0>;
153860fbdd4SHans de Goede					label = "lan2";
154860fbdd4SHans de Goede				};
155860fbdd4SHans de Goede
156860fbdd4SHans de Goede				port1: port@1 {
157aa56cb37SJelle de Jong					reg = <1>;
158860fbdd4SHans de Goede					label = "lan3";
159860fbdd4SHans de Goede				};
160860fbdd4SHans de Goede
161860fbdd4SHans de Goede				port2: port@2 {
162860fbdd4SHans de Goede					reg = <2>;
163860fbdd4SHans de Goede					label = "lan4";
164860fbdd4SHans de Goede				};
165860fbdd4SHans de Goede
166860fbdd4SHans de Goede				port3: port@3 {
167860fbdd4SHans de Goede					reg = <3>;
168860fbdd4SHans de Goede					label = "wan";
169860fbdd4SHans de Goede				};
170860fbdd4SHans de Goede
171860fbdd4SHans de Goede				port4: port@4 {
172860fbdd4SHans de Goede					reg = <4>;
173860fbdd4SHans de Goede					label = "lan1";
174860fbdd4SHans de Goede				};
175860fbdd4SHans de Goede
176860fbdd4SHans de Goede				port8: port@8 {
177860fbdd4SHans de Goede					reg = <8>;
178860fbdd4SHans de Goede					label = "cpu";
179860fbdd4SHans de Goede					ethernet = <&gmac>;
180*b9d59d08SJagan Teki					phy-mode = "rgmii-txid";
181860fbdd4SHans de Goede					fixed-link {
182860fbdd4SHans de Goede						speed = <1000>;
183860fbdd4SHans de Goede						full-duplex;
184860fbdd4SHans de Goede					};
185860fbdd4SHans de Goede				};
186860fbdd4SHans de Goede			};
187860fbdd4SHans de Goede		};
188aa56cb37SJelle de Jong	};
189aa56cb37SJelle de Jong};
190aa56cb37SJelle de Jong
191*b9d59d08SJagan Teki&hdmi {
192*b9d59d08SJagan Teki	status = "okay";
193*b9d59d08SJagan Teki};
194*b9d59d08SJagan Teki
195*b9d59d08SJagan Teki&hdmi_out {
196*b9d59d08SJagan Teki	hdmi_out_con: endpoint {
197*b9d59d08SJagan Teki		remote-endpoint = <&hdmi_con_in>;
198*b9d59d08SJagan Teki	};
199*b9d59d08SJagan Teki};
200*b9d59d08SJagan Teki
201aa56cb37SJelle de Jong&i2c0 {
202aa56cb37SJelle de Jong	pinctrl-names = "default";
203aa56cb37SJelle de Jong	pinctrl-0 = <&i2c0_pins_a>;
204aa56cb37SJelle de Jong	status = "okay";
205aa56cb37SJelle de Jong
206aa56cb37SJelle de Jong	axp209: pmic@34 {
207aa56cb37SJelle de Jong		reg = <0x34>;
208aa56cb37SJelle de Jong		interrupt-parent = <&nmi_intc>;
209aa56cb37SJelle de Jong		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
210aa56cb37SJelle de Jong	};
211aa56cb37SJelle de Jong};
212aa56cb37SJelle de Jong
213aa56cb37SJelle de Jong&i2c2 {
214aa56cb37SJelle de Jong	pinctrl-names = "default";
215aa56cb37SJelle de Jong	pinctrl-0 = <&i2c2_pins_a>;
216aa56cb37SJelle de Jong	status = "okay";
217aa56cb37SJelle de Jong};
218aa56cb37SJelle de Jong
219aa56cb37SJelle de Jong&ir0 {
220aa56cb37SJelle de Jong	pinctrl-names = "default";
221aa56cb37SJelle de Jong	pinctrl-0 = <&ir0_rx_pins_a>;
222aa56cb37SJelle de Jong	status = "okay";
223aa56cb37SJelle de Jong};
224aa56cb37SJelle de Jong
225aa56cb37SJelle de Jong&mmc0 {
226aa56cb37SJelle de Jong	pinctrl-names = "default";
227aa56cb37SJelle de Jong	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_lamobo_r1>;
228aa56cb37SJelle de Jong	vmmc-supply = <&reg_vcc3v3>;
229aa56cb37SJelle de Jong	bus-width = <4>;
230*b9d59d08SJagan Teki	cd-gpios = <&pio 7 10 GPIO_ACTIVE_LOW>; /* PH10 */
231aa56cb37SJelle de Jong	status = "okay";
232aa56cb37SJelle de Jong};
233aa56cb37SJelle de Jong
234aa56cb37SJelle de Jong&ohci0 {
235aa56cb37SJelle de Jong	status = "okay";
236aa56cb37SJelle de Jong};
237aa56cb37SJelle de Jong
238aa56cb37SJelle de Jong&otg_sram {
239aa56cb37SJelle de Jong	status = "okay";
240aa56cb37SJelle de Jong};
241aa56cb37SJelle de Jong
242aa56cb37SJelle de Jong&pio {
243aa56cb37SJelle de Jong	usb0_id_detect_pin: usb0_id_detect_pin@0 {
244*b9d59d08SJagan Teki		pins = "PH4";
245*b9d59d08SJagan Teki		function = "gpio_in";
246*b9d59d08SJagan Teki		bias-pull-up;
247aa56cb37SJelle de Jong	};
248aa56cb37SJelle de Jong
249aa56cb37SJelle de Jong	mmc0_cd_pin_lamobo_r1: mmc0_cd_pin@0 {
250*b9d59d08SJagan Teki		pins = "PH10";
251*b9d59d08SJagan Teki		function = "gpio_in";
252*b9d59d08SJagan Teki		bias-pull-up;
253aa56cb37SJelle de Jong	};
254aa56cb37SJelle de Jong
255aa56cb37SJelle de Jong	gmac_power_pin_lamobo_r1: gmac_power_pin@0 {
256*b9d59d08SJagan Teki		pins = "PH23";
257*b9d59d08SJagan Teki		function = "gpio_out";
258aa56cb37SJelle de Jong	};
259aa56cb37SJelle de Jong
260aa56cb37SJelle de Jong	led_pins_lamobo_r1: led_pins@0 {
261*b9d59d08SJagan Teki		pins = "PH24";
262*b9d59d08SJagan Teki		function = "gpio_out";
263aa56cb37SJelle de Jong	};
264aa56cb37SJelle de Jong};
265aa56cb37SJelle de Jong
266aa56cb37SJelle de Jong#include "axp209.dtsi"
267aa56cb37SJelle de Jong
268*b9d59d08SJagan Teki&ac_power_supply {
269*b9d59d08SJagan Teki	status = "okay";
270*b9d59d08SJagan Teki};
271*b9d59d08SJagan Teki
272*b9d59d08SJagan Teki&battery_power_supply {
273*b9d59d08SJagan Teki	status = "okay";
274*b9d59d08SJagan Teki};
275*b9d59d08SJagan Teki
276aa56cb37SJelle de Jong&reg_ahci_5v {
277860fbdd4SHans de Goede	gpio = <&pio 1 3 GPIO_ACTIVE_HIGH>; /* PB3 */
278aa56cb37SJelle de Jong	status = "okay";
279aa56cb37SJelle de Jong};
280aa56cb37SJelle de Jong
281aa56cb37SJelle de Jong&reg_dcdc2 {
282aa56cb37SJelle de Jong	regulator-always-on;
283aa56cb37SJelle de Jong	regulator-min-microvolt = <1000000>;
284aa56cb37SJelle de Jong	regulator-max-microvolt = <1400000>;
285aa56cb37SJelle de Jong	regulator-name = "vdd-cpu";
286aa56cb37SJelle de Jong};
287aa56cb37SJelle de Jong
288aa56cb37SJelle de Jong&reg_dcdc3 {
289aa56cb37SJelle de Jong	regulator-always-on;
290aa56cb37SJelle de Jong	regulator-min-microvolt = <1000000>;
291aa56cb37SJelle de Jong	regulator-max-microvolt = <1400000>;
292aa56cb37SJelle de Jong	regulator-name = "vdd-int-dll";
293aa56cb37SJelle de Jong};
294aa56cb37SJelle de Jong
295aa56cb37SJelle de Jong&reg_ldo1 {
296aa56cb37SJelle de Jong	regulator-name = "vdd-rtc";
297aa56cb37SJelle de Jong};
298aa56cb37SJelle de Jong
299aa56cb37SJelle de Jong&reg_ldo2 {
300aa56cb37SJelle de Jong	regulator-always-on;
301aa56cb37SJelle de Jong	regulator-min-microvolt = <3000000>;
302aa56cb37SJelle de Jong	regulator-max-microvolt = <3000000>;
303aa56cb37SJelle de Jong	regulator-name = "avcc";
304aa56cb37SJelle de Jong};
305aa56cb37SJelle de Jong
306aa56cb37SJelle de Jong&reg_usb0_vbus {
307aa56cb37SJelle de Jong	status = "okay";
308aa56cb37SJelle de Jong};
309aa56cb37SJelle de Jong
310aa56cb37SJelle de Jong&reg_usb2_vbus {
311860fbdd4SHans de Goede	gpio = <&pio 7 12 GPIO_ACTIVE_HIGH>; /* PH12 */
312aa56cb37SJelle de Jong	status = "okay";
313aa56cb37SJelle de Jong};
314aa56cb37SJelle de Jong
315aa56cb37SJelle de Jong&spi0 {
316aa56cb37SJelle de Jong	pinctrl-names = "default";
317aa56cb37SJelle de Jong	pinctrl-0 = <&spi0_pins_a>,
318aa56cb37SJelle de Jong		    <&spi0_cs0_pins_a>,
319aa56cb37SJelle de Jong		    <&spi0_cs1_pins_a>;
320aa56cb37SJelle de Jong	status = "okay";
321aa56cb37SJelle de Jong};
322aa56cb37SJelle de Jong
323aa56cb37SJelle de Jong&uart0 {
324aa56cb37SJelle de Jong	pinctrl-names = "default";
325aa56cb37SJelle de Jong	pinctrl-0 = <&uart0_pins_a>;
326aa56cb37SJelle de Jong	status = "okay";
327aa56cb37SJelle de Jong};
328aa56cb37SJelle de Jong
329aa56cb37SJelle de Jong&uart3 {
330aa56cb37SJelle de Jong	pinctrl-names = "default";
331aa56cb37SJelle de Jong	pinctrl-0 = <&uart3_pins_b>;
332aa56cb37SJelle de Jong	status = "okay";
333aa56cb37SJelle de Jong};
334aa56cb37SJelle de Jong
335aa56cb37SJelle de Jong&uart7 {
336aa56cb37SJelle de Jong	pinctrl-names = "default";
337aa56cb37SJelle de Jong	pinctrl-0 = <&uart7_pins_a>;
338aa56cb37SJelle de Jong	status = "okay";
339aa56cb37SJelle de Jong};
340aa56cb37SJelle de Jong
341aa56cb37SJelle de Jong&usb_otg {
342aa56cb37SJelle de Jong	dr_mode = "otg";
343aa56cb37SJelle de Jong	status = "okay";
344aa56cb37SJelle de Jong};
345aa56cb37SJelle de Jong
346aa56cb37SJelle de Jong&usb_power_supply {
347aa56cb37SJelle de Jong	status = "okay";
348aa56cb37SJelle de Jong};
349aa56cb37SJelle de Jong
350aa56cb37SJelle de Jong&usbphy {
351aa56cb37SJelle de Jong	pinctrl-names = "default";
352aa56cb37SJelle de Jong	pinctrl-0 = <&usb0_id_detect_pin>;
353aa56cb37SJelle de Jong	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
354aa56cb37SJelle de Jong	usb0_vbus_power-supply = <&usb_power_supply>;
355aa56cb37SJelle de Jong	usb0_vbus-supply = <&reg_usb0_vbus>;
356aa56cb37SJelle de Jong	usb2_vbus-supply = <&reg_usb2_vbus>;
357aa56cb37SJelle de Jong	status = "okay";
358aa56cb37SJelle de Jong};
359