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