1*ca5c3702SStefan Mavrodiev/*
2*ca5c3702SStefan Mavrodiev * Copyright 2016 - Stefan Mavrodiev <stefan.mavrodiev@gmail.com>
3*ca5c3702SStefan Mavrodiev *                  Olimex LTD. <support@olimex.com>
4*ca5c3702SStefan Mavrodiev *
5*ca5c3702SStefan Mavrodiev * This file is dual-licensed: you can use it either under the terms
6*ca5c3702SStefan Mavrodiev * of the GPL or the X11 license, at your option. Note that this dual
7*ca5c3702SStefan Mavrodiev * licensing only applies to this file, and not this project as a
8*ca5c3702SStefan Mavrodiev * whole.
9*ca5c3702SStefan Mavrodiev *
10*ca5c3702SStefan Mavrodiev *  a) This file is free software; you can redistribute it and/or
11*ca5c3702SStefan Mavrodiev *     modify it under the terms of the GNU General Public License as
12*ca5c3702SStefan Mavrodiev *     published by the Free Software Foundation; either version 2 of the
13*ca5c3702SStefan Mavrodiev *     License, or (at your option) any later version.
14*ca5c3702SStefan Mavrodiev *
15*ca5c3702SStefan Mavrodiev *     This file is distributed in the hope that it will be useful,
16*ca5c3702SStefan Mavrodiev *     but WITHOUT ANY WARRANTY; without even the implied warranty of
17*ca5c3702SStefan Mavrodiev *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*ca5c3702SStefan Mavrodiev *     GNU General Public License for more details.
19*ca5c3702SStefan Mavrodiev *
20*ca5c3702SStefan Mavrodiev * Or, alternatively,
21*ca5c3702SStefan Mavrodiev *
22*ca5c3702SStefan Mavrodiev *  b) Permission is hereby granted, free of charge, to any person
23*ca5c3702SStefan Mavrodiev *     obtaining a copy of this software and associated documentation
24*ca5c3702SStefan Mavrodiev *     files (the "Software"), to deal in the Software without
25*ca5c3702SStefan Mavrodiev *     restriction, including without limitation the rights to use,
26*ca5c3702SStefan Mavrodiev *     copy, modify, merge, publish, distribute, sublicense, and/or
27*ca5c3702SStefan Mavrodiev *     sell copies of the Software, and to permit persons to whom the
28*ca5c3702SStefan Mavrodiev *     Software is furnished to do so, subject to the following
29*ca5c3702SStefan Mavrodiev *     conditions:
30*ca5c3702SStefan Mavrodiev *
31*ca5c3702SStefan Mavrodiev *     The above copyright notice and this permission notice shall be
32*ca5c3702SStefan Mavrodiev *     included in all copies or substantial portions of the Software.
33*ca5c3702SStefan Mavrodiev *
34*ca5c3702SStefan Mavrodiev *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
35*ca5c3702SStefan Mavrodiev *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
36*ca5c3702SStefan Mavrodiev *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
37*ca5c3702SStefan Mavrodiev *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
38*ca5c3702SStefan Mavrodiev *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
39*ca5c3702SStefan Mavrodiev *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
40*ca5c3702SStefan Mavrodiev *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
41*ca5c3702SStefan Mavrodiev *     OTHER DEALINGS IN THE SOFTWARE.
42*ca5c3702SStefan Mavrodiev */
43*ca5c3702SStefan Mavrodiev
44*ca5c3702SStefan Mavrodiev/dts-v1/;
45*ca5c3702SStefan Mavrodiev#include "sun8i-a33.dtsi"
46*ca5c3702SStefan Mavrodiev#include "sunxi-common-regulators.dtsi"
47*ca5c3702SStefan Mavrodiev
48*ca5c3702SStefan Mavrodiev#include <dt-bindings/gpio/gpio.h>
49*ca5c3702SStefan Mavrodiev#include <dt-bindings/input/input.h>
50*ca5c3702SStefan Mavrodiev
51*ca5c3702SStefan Mavrodiev/ {
52*ca5c3702SStefan Mavrodiev	model = "Olimex A33-OLinuXino";
53*ca5c3702SStefan Mavrodiev	compatible = "olimex,a33-olinuxino","allwinner,sun8i-a33";
54*ca5c3702SStefan Mavrodiev
55*ca5c3702SStefan Mavrodiev	aliases {
56*ca5c3702SStefan Mavrodiev		serial0 = &uart0;
57*ca5c3702SStefan Mavrodiev	};
58*ca5c3702SStefan Mavrodiev
59*ca5c3702SStefan Mavrodiev	chosen {
60*ca5c3702SStefan Mavrodiev		stdout-path = "serial0:115200n8";
61*ca5c3702SStefan Mavrodiev	};
62*ca5c3702SStefan Mavrodiev
63*ca5c3702SStefan Mavrodiev	leds {
64*ca5c3702SStefan Mavrodiev		compatible = "gpio-leds";
65*ca5c3702SStefan Mavrodiev		pinctrl-names = "default";
66*ca5c3702SStefan Mavrodiev		pinctrl-0 = <&led_pin_olinuxino>;
67*ca5c3702SStefan Mavrodiev
68*ca5c3702SStefan Mavrodiev		green {
69*ca5c3702SStefan Mavrodiev			label = "a33-olinuxino:green:usr";
70*ca5c3702SStefan Mavrodiev			gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>;
71*ca5c3702SStefan Mavrodiev		};
72*ca5c3702SStefan Mavrodiev	};
73*ca5c3702SStefan Mavrodiev};
74*ca5c3702SStefan Mavrodiev
75*ca5c3702SStefan Mavrodiev&ehci0 {
76*ca5c3702SStefan Mavrodiev	status = "okay";
77*ca5c3702SStefan Mavrodiev};
78*ca5c3702SStefan Mavrodiev
79*ca5c3702SStefan Mavrodiev&mmc0 {
80*ca5c3702SStefan Mavrodiev	pinctrl-names = "default";
81*ca5c3702SStefan Mavrodiev	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_olinuxino>;
82*ca5c3702SStefan Mavrodiev	vmmc-supply = <&reg_dcdc1>;
83*ca5c3702SStefan Mavrodiev	bus-width = <4>;
84*ca5c3702SStefan Mavrodiev	cd-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */
85*ca5c3702SStefan Mavrodiev	cd-inverted;
86*ca5c3702SStefan Mavrodiev	status = "okay";
87*ca5c3702SStefan Mavrodiev};
88*ca5c3702SStefan Mavrodiev
89*ca5c3702SStefan Mavrodiev&ohci0 {
90*ca5c3702SStefan Mavrodiev	status = "okay";
91*ca5c3702SStefan Mavrodiev};
92*ca5c3702SStefan Mavrodiev
93*ca5c3702SStefan Mavrodiev&pio {
94*ca5c3702SStefan Mavrodiev	led_pin_olinuxino: led_pins@0 {
95*ca5c3702SStefan Mavrodiev		allwinner,pins = "PB7";
96*ca5c3702SStefan Mavrodiev		allwinner,function = "gpio_out";
97*ca5c3702SStefan Mavrodiev		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
98*ca5c3702SStefan Mavrodiev		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
99*ca5c3702SStefan Mavrodiev	};
100*ca5c3702SStefan Mavrodiev
101*ca5c3702SStefan Mavrodiev	mmc0_cd_pin_olinuxino: mmc0_cd_pin@0 {
102*ca5c3702SStefan Mavrodiev		allwinner,pins = "PB4";
103*ca5c3702SStefan Mavrodiev		allwinner,function = "gpio_in";
104*ca5c3702SStefan Mavrodiev		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
105*ca5c3702SStefan Mavrodiev		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
106*ca5c3702SStefan Mavrodiev	};
107*ca5c3702SStefan Mavrodiev
108*ca5c3702SStefan Mavrodiev	usb0_id_detect_pin: usb0_id_detect_pin@0 {
109*ca5c3702SStefan Mavrodiev		allwinner,pins = "PB3";
110*ca5c3702SStefan Mavrodiev		allwinner,function = "gpio_in";
111*ca5c3702SStefan Mavrodiev		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
112*ca5c3702SStefan Mavrodiev		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
113*ca5c3702SStefan Mavrodiev	};
114*ca5c3702SStefan Mavrodiev};
115*ca5c3702SStefan Mavrodiev
116*ca5c3702SStefan Mavrodiev&r_rsb {
117*ca5c3702SStefan Mavrodiev	status = "okay";
118*ca5c3702SStefan Mavrodiev
119*ca5c3702SStefan Mavrodiev	axp22x: pmic@3a3 {
120*ca5c3702SStefan Mavrodiev		compatible = "x-powers,axp223";
121*ca5c3702SStefan Mavrodiev		reg = <0x3a3>;
122*ca5c3702SStefan Mavrodiev		interrupt-parent = <&nmi_intc>;
123*ca5c3702SStefan Mavrodiev		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
124*ca5c3702SStefan Mavrodiev		eldoin-supply = <&reg_dcdc1>;
125*ca5c3702SStefan Mavrodiev		x-powers,drive-vbus-en;
126*ca5c3702SStefan Mavrodiev	};
127*ca5c3702SStefan Mavrodiev};
128*ca5c3702SStefan Mavrodiev
129*ca5c3702SStefan Mavrodiev#include "axp22x.dtsi"
130*ca5c3702SStefan Mavrodiev
131*ca5c3702SStefan Mavrodiev&reg_aldo1 {
132*ca5c3702SStefan Mavrodiev	regulator-always-on;
133*ca5c3702SStefan Mavrodiev	regulator-min-microvolt = <3300000>;
134*ca5c3702SStefan Mavrodiev	regulator-max-microvolt = <3300000>;
135*ca5c3702SStefan Mavrodiev	regulator-name = "vcc-io";
136*ca5c3702SStefan Mavrodiev};
137*ca5c3702SStefan Mavrodiev
138*ca5c3702SStefan Mavrodiev&reg_aldo2 {
139*ca5c3702SStefan Mavrodiev	regulator-always-on;
140*ca5c3702SStefan Mavrodiev	regulator-min-microvolt = <2350000>;
141*ca5c3702SStefan Mavrodiev	regulator-max-microvolt = <2650000>;
142*ca5c3702SStefan Mavrodiev	regulator-name = "vdd-dll";
143*ca5c3702SStefan Mavrodiev};
144*ca5c3702SStefan Mavrodiev
145*ca5c3702SStefan Mavrodiev&reg_aldo3 {
146*ca5c3702SStefan Mavrodiev	regulator-always-on;
147*ca5c3702SStefan Mavrodiev	regulator-min-microvolt = <3300000>;
148*ca5c3702SStefan Mavrodiev	regulator-max-microvolt = <3300000>;
149*ca5c3702SStefan Mavrodiev	regulator-name = "vcc-avcc";
150*ca5c3702SStefan Mavrodiev};
151*ca5c3702SStefan Mavrodiev
152*ca5c3702SStefan Mavrodiev&reg_dc1sw {
153*ca5c3702SStefan Mavrodiev	regulator-name = "vcc-lcd";
154*ca5c3702SStefan Mavrodiev};
155*ca5c3702SStefan Mavrodiev
156*ca5c3702SStefan Mavrodiev&reg_dc5ldo {
157*ca5c3702SStefan Mavrodiev	regulator-always-on;
158*ca5c3702SStefan Mavrodiev	regulator-min-microvolt = <900000>;
159*ca5c3702SStefan Mavrodiev	regulator-max-microvolt = <1400000>;
160*ca5c3702SStefan Mavrodiev	regulator-name = "vdd-cpus";
161*ca5c3702SStefan Mavrodiev};
162*ca5c3702SStefan Mavrodiev
163*ca5c3702SStefan Mavrodiev&reg_dcdc1 {
164*ca5c3702SStefan Mavrodiev	regulator-always-on;
165*ca5c3702SStefan Mavrodiev	regulator-min-microvolt = <3300000>;
166*ca5c3702SStefan Mavrodiev	regulator-max-microvolt = <3300000>;
167*ca5c3702SStefan Mavrodiev	regulator-name = "vcc-3v3";
168*ca5c3702SStefan Mavrodiev};
169*ca5c3702SStefan Mavrodiev
170*ca5c3702SStefan Mavrodiev&reg_dcdc2 {
171*ca5c3702SStefan Mavrodiev	regulator-always-on;
172*ca5c3702SStefan Mavrodiev	regulator-min-microvolt = <900000>;
173*ca5c3702SStefan Mavrodiev	regulator-max-microvolt = <1400000>;
174*ca5c3702SStefan Mavrodiev	regulator-name = "vdd-sys";
175*ca5c3702SStefan Mavrodiev};
176*ca5c3702SStefan Mavrodiev
177*ca5c3702SStefan Mavrodiev&reg_dcdc3 {
178*ca5c3702SStefan Mavrodiev	regulator-always-on;
179*ca5c3702SStefan Mavrodiev	regulator-min-microvolt = <900000>;
180*ca5c3702SStefan Mavrodiev	regulator-max-microvolt = <1400000>;
181*ca5c3702SStefan Mavrodiev	regulator-name = "vdd-cpu";
182*ca5c3702SStefan Mavrodiev};
183*ca5c3702SStefan Mavrodiev
184*ca5c3702SStefan Mavrodiev&reg_dcdc5 {
185*ca5c3702SStefan Mavrodiev	regulator-always-on;
186*ca5c3702SStefan Mavrodiev	regulator-min-microvolt = <1500000>;
187*ca5c3702SStefan Mavrodiev	regulator-max-microvolt = <1500000>;
188*ca5c3702SStefan Mavrodiev	regulator-name = "vcc-dram";
189*ca5c3702SStefan Mavrodiev};
190*ca5c3702SStefan Mavrodiev
191*ca5c3702SStefan Mavrodiev&reg_drivevbus {
192*ca5c3702SStefan Mavrodiev	regulator-name = "usb0-vbus";
193*ca5c3702SStefan Mavrodiev	status = "okay";
194*ca5c3702SStefan Mavrodiev};
195*ca5c3702SStefan Mavrodiev
196*ca5c3702SStefan Mavrodiev&reg_rtc_ldo {
197*ca5c3702SStefan Mavrodiev	regulator-name = "vcc-rtc";
198*ca5c3702SStefan Mavrodiev};
199*ca5c3702SStefan Mavrodiev
200*ca5c3702SStefan Mavrodiev&simplefb_lcd {
201*ca5c3702SStefan Mavrodiev	vcc-lcd-supply = <&reg_dc1sw>;
202*ca5c3702SStefan Mavrodiev};
203*ca5c3702SStefan Mavrodiev
204*ca5c3702SStefan Mavrodiev&uart0 {
205*ca5c3702SStefan Mavrodiev	pinctrl-names = "default";
206*ca5c3702SStefan Mavrodiev	pinctrl-0 = <&uart0_pins_b>;
207*ca5c3702SStefan Mavrodiev	status = "okay";
208*ca5c3702SStefan Mavrodiev};
209*ca5c3702SStefan Mavrodiev
210*ca5c3702SStefan Mavrodiev&usb_otg {
211*ca5c3702SStefan Mavrodiev	dr_mode = "otg";
212*ca5c3702SStefan Mavrodiev	status = "okay";
213*ca5c3702SStefan Mavrodiev};
214*ca5c3702SStefan Mavrodiev
215*ca5c3702SStefan Mavrodiev&usb_power_supply {
216*ca5c3702SStefan Mavrodiev	status = "okay";
217*ca5c3702SStefan Mavrodiev};
218*ca5c3702SStefan Mavrodiev
219*ca5c3702SStefan Mavrodiev&usbphy {
220*ca5c3702SStefan Mavrodiev	pinctrl-names = "default";
221*ca5c3702SStefan Mavrodiev	pinctrl-0 = <&usb0_id_detect_pin>;
222*ca5c3702SStefan Mavrodiev	usb0_id_det-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>; /* PB3 */
223*ca5c3702SStefan Mavrodiev	usb0_vbus_power-supply = <&usb_power_supply>;
224*ca5c3702SStefan Mavrodiev	usb0_vbus-supply = <&reg_drivevbus>;
225*ca5c3702SStefan Mavrodiev	status = "okay";
226*ca5c3702SStefan Mavrodiev};
227