blob: 7fd22e888602c7e7bc7897a96e25e90d7ace1d80 [file] [log] [blame]
Hans de Goededb325e82015-04-15 19:03:49 +02001/*
2 * Copyright 2014 Chen-Yu Tsai
3 *
4 * Chen-Yu Tsai <wens@csie.org>
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This file is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This file is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
Hans de Goededb325e82015-04-15 19:03:49 +020021 * Or, alternatively,
22 *
23 * b) Permission is hereby granted, free of charge, to any person
24 * obtaining a copy of this software and associated documentation
25 * files (the "Software"), to deal in the Software without
26 * restriction, including without limitation the rights to use,
27 * copy, modify, merge, publish, distribute, sublicense, and/or
28 * sell copies of the Software, and to permit persons to whom the
29 * Software is furnished to do so, subject to the following
30 * conditions:
31 *
32 * The above copyright notice and this permission notice shall be
33 * included in all copies or substantial portions of the Software.
34 *
35 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42 * OTHER DEALINGS IN THE SOFTWARE.
43 */
44
45/dts-v1/;
46#include "sun9i-a80.dtsi"
Hans de Goededb325e82015-04-15 19:03:49 +020047
48#include <dt-bindings/gpio/gpio.h>
49#include <dt-bindings/pinctrl/sun4i-a10.h>
50
51/ {
52 model = "Merrii A80 Optimus Board";
53 compatible = "merrii,a80-optimus", "allwinner,sun9i-a80";
54
55 aliases {
56 serial0 = &uart0;
57 serial1 = &uart4;
58 };
59
60 chosen {
61 stdout-path = "serial0:115200n8";
62 };
63
64 leds {
65 compatible = "gpio-leds";
66 pinctrl-names = "default";
Hans de Goede19888a42016-03-14 17:37:09 +010067 pinctrl-0 = <&led_pins_optimus>, <&led_r_pins_optimus>;
Hans de Goededb325e82015-04-15 19:03:49 +020068
69 /* The LED names match those found on the board */
70
71 led2 {
72 label = "optimus:led2:usr";
73 gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>;
74 };
75
Hans de Goede19888a42016-03-14 17:37:09 +010076 led3 {
77 label = "optimus:led3:usr";
78 gpios = <&r_pio 1 15 GPIO_ACTIVE_HIGH>; /* PM15 */
79 };
Hans de Goededb325e82015-04-15 19:03:49 +020080
81 led4 {
82 label = "optimus:led4:usr";
83 gpios = <&pio 7 0 GPIO_ACTIVE_HIGH>;
84 };
85 };
86
Hans de Goede6ebb4d02016-08-18 20:51:12 +020087 reg_usb1_vbus: usb1-vbus {
88 compatible = "regulator-fixed";
89 pinctrl-names = "default";
90 pinctrl-0 = <&usb1_vbus_pin_optimus>;
91 regulator-name = "usb1-vbus";
92 regulator-min-microvolt = <5000000>;
93 regulator-max-microvolt = <5000000>;
94 enable-active-high;
95 gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
96 };
97
Hans de Goededb325e82015-04-15 19:03:49 +020098 reg_usb3_vbus: usb3-vbus {
99 compatible = "regulator-fixed";
100 pinctrl-names = "default";
101 pinctrl-0 = <&usb3_vbus_pin_optimus>;
102 regulator-name = "usb3-vbus";
103 regulator-min-microvolt = <5000000>;
104 regulator-max-microvolt = <5000000>;
105 enable-active-high;
106 gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
107 };
108};
109
110&ehci0 {
111 status = "okay";
112};
113
114&ehci1 {
115 status = "okay";
116};
117
118&ehci2 {
119 status = "okay";
120};
121
Hans de Goede6ebb4d02016-08-18 20:51:12 +0200122&mmc0 {
123 pinctrl-names = "default";
124 pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_optimus>;
125 vmmc-supply = <&reg_dcdc1>;
126 bus-width = <4>;
127 cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH8 */
128 cd-inverted;
129 status = "okay";
130};
131
132&mmc2 {
133 pinctrl-names = "default";
134 pinctrl-0 = <&mmc2_8bit_pins>;
135 vmmc-supply = <&reg_dcdc1>;
136 bus-width = <8>;
137 non-removable;
138 cap-mmc-hw-reset;
139 status = "okay";
140};
141
142&mmc2_8bit_pins {
143 /* Increase drive strength for DDR modes */
144 allwinner,drive = <SUN4I_PINCTRL_40_MA>;
145};
146
Hans de Goededb325e82015-04-15 19:03:49 +0200147&ohci0 {
148 status = "okay";
149};
150
151&ohci2 {
152 status = "okay";
153};
154
155&pio {
156 led_pins_optimus: led-pins@0 {
157 allwinner,pins = "PH0", "PH1";
158 allwinner,function = "gpio_out";
159 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
160 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
161 };
162
163 mmc0_cd_pin_optimus: mmc0_cd_pin@0 {
164 allwinner,pins = "PH18";
165 allwinner,function = "gpio_in";
166 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
167 allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
168 };
169
170 usb1_vbus_pin_optimus: usb1_vbus_pin@1 {
171 allwinner,pins = "PH4";
172 allwinner,function = "gpio_out";
173 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
174 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
175 };
176
177 usb3_vbus_pin_optimus: usb3_vbus_pin@1 {
178 allwinner,pins = "PH5";
179 allwinner,function = "gpio_out";
180 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
181 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
182 };
183};
184
Hans de Goede19888a42016-03-14 17:37:09 +0100185&r_ir {
Hans de Goededb325e82015-04-15 19:03:49 +0200186 status = "okay";
187};
188
Hans de Goede19888a42016-03-14 17:37:09 +0100189&r_pio {
190 led_r_pins_optimus: led-pins@1 {
191 allwinner,pins = "PM15";
192 allwinner,function = "gpio_out";
193 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
194 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
195 };
196};
197
198&r_rsb {
Hans de Goededb325e82015-04-15 19:03:49 +0200199 status = "okay";
Hans de Goede6ebb4d02016-08-18 20:51:12 +0200200
201 axp809: pmic@3a3 {
202 reg = <0x3a3>;
203 interrupt-parent = <&nmi_intc>;
204 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
205
206 regulators {
207 reg_aldo1: aldo1 {
208 /*
209 * TODO: This should be handled by the
210 * USB PHY driver.
211 */
212 regulator-always-on;
213 regulator-min-microvolt = <3000000>;
214 regulator-max-microvolt = <3000000>;
215 regulator-name = "vcc33-usbh";
216 };
217
218 reg_aldo2: aldo2 {
219 regulator-min-microvolt = <1800000>;
220 regulator-max-microvolt = <1800000>;
221 regulator-name = "vcc-pb-io-cam";
222 };
223
224 aldo3 {
225 /* unused */
226 };
227
228 reg_dc5ldo: dc5ldo {
229 regulator-always-on;
230 regulator-min-microvolt = <800000>;
231 regulator-max-microvolt = <1100000>;
232 regulator-name = "vdd-cpus-09-usbh";
233 };
234
235 reg_dcdc1: dcdc1 {
236 regulator-always-on;
237 regulator-min-microvolt = <3000000>;
238 regulator-max-microvolt = <3000000>;
239 regulator-name = "vcc-3v";
240 };
241
242 reg_dcdc2: dcdc2 {
243 regulator-min-microvolt = <800000>;
244 regulator-max-microvolt = <1100000>;
245 regulator-name = "vdd-gpu";
246 };
247
248 reg_dcdc3: dcdc3 {
249 regulator-always-on;
250 regulator-min-microvolt = <800000>;
251 regulator-max-microvolt = <1100000>;
252 regulator-name = "vdd-cpua";
253 };
254
255 reg_dcdc4: dcdc4 {
256 regulator-always-on;
257 regulator-min-microvolt = <800000>;
258 regulator-max-microvolt = <1100000>;
259 regulator-name = "vdd-sys-usb0-hdmi";
260 };
261
262 reg_dcdc5: dcdc5 {
263 regulator-always-on;
264 regulator-min-microvolt = <1425000>;
265 regulator-max-microvolt = <1575000>;
266 regulator-name = "vcc-dram";
267 };
268
269 reg_dldo1: dldo1 {
270 /*
271 * The WiFi chip supports a wide range
272 * (3.0 ~ 4.8V) of voltages, and so does
273 * this regulator (3.0 ~ 4.2V), but
274 * Allwinner SDK always sets it to 3.3V.
275 */
276 regulator-min-microvolt = <3300000>;
277 regulator-max-microvolt = <3300000>;
278 regulator-name = "vcc-wifi";
279 };
280
281 reg_dldo2: dldo2 {
282 regulator-always-on;
283 regulator-min-microvolt = <3000000>;
284 regulator-max-microvolt = <3000000>;
285 regulator-name = "vcc-pl";
286 };
287
288 reg_eldo1: eldo1 {
289 regulator-min-microvolt = <1200000>;
290 regulator-max-microvolt = <1200000>;
291 regulator-name = "vcc-dvdd-cam";
292 };
293
294 reg_eldo2: eldo2 {
295 regulator-min-microvolt = <1800000>;
296 regulator-max-microvolt = <1800000>;
297 regulator-name = "vcc-pe";
298 };
299
300 reg_eldo3: eldo3 {
301 regulator-always-on;
302 regulator-min-microvolt = <3000000>;
303 regulator-max-microvolt = <3000000>;
304 regulator-name = "vcc-pm-codec-io1";
305 };
306
307 reg_ldo_io0: ldo_io0 {
308 regulator-always-on;
309 regulator-min-microvolt = <3000000>;
310 regulator-max-microvolt = <3000000>;
311 regulator-name = "vcc-pg";
312 };
313
314 reg_ldo_io1: ldo_io1 {
315 regulator-min-microvolt = <2500000>;
316 regulator-max-microvolt = <2500000>;
317 regulator-name = "vcc-pa-gmac-2v5";
318 };
319
320 reg_rtc_ldo: rtc_ldo {
321 regulator-name = "vcc-rtc-vdd1v8-io";
322 };
323 };
324 };
Hans de Goededb325e82015-04-15 19:03:49 +0200325};
326
Hans de Goede6ebb4d02016-08-18 20:51:12 +0200327#include "axp809.dtsi"
328
Hans de Goede19888a42016-03-14 17:37:09 +0100329&uart0 {
330 pinctrl-names = "default";
331 pinctrl-0 = <&uart0_pins_a>;
332 status = "okay";
Hans de Goededb325e82015-04-15 19:03:49 +0200333};
334
335&usbphy1 {
336 phy-supply = <&reg_usb1_vbus>;
337 status = "okay";
338};
339
340&usbphy2 {
341 status = "okay";
342};
343
344&usbphy3 {
345 phy-supply = <&reg_usb3_vbus>;
346 status = "okay";
347};