1*3551b24fSHans de Goede/*
2*3551b24fSHans de Goede * Copyright 2016 Hans de Goede <hdegoede@redhat.com>
3*3551b24fSHans de Goede *
4*3551b24fSHans de Goede * This file is dual-licensed: you can use it either under the terms
5*3551b24fSHans de Goede * of the GPL or the X11 license, at your option. Note that this dual
6*3551b24fSHans de Goede * licensing only applies to this file, and not this project as a
7*3551b24fSHans de Goede * whole.
8*3551b24fSHans de Goede *
9*3551b24fSHans de Goede *  a) This file is free software; you can redistribute it and/or
10*3551b24fSHans de Goede *     modify it under the terms of the GNU General Public License as
11*3551b24fSHans de Goede *     published by the Free Software Foundation; either version 2 of the
12*3551b24fSHans de Goede *     License, or (at your option) any later version.
13*3551b24fSHans de Goede *
14*3551b24fSHans de Goede *     This file is distributed in the hope that it will be useful,
15*3551b24fSHans de Goede *     but WITHOUT ANY WARRANTY; without even the implied warranty of
16*3551b24fSHans de Goede *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17*3551b24fSHans de Goede *     GNU General Public License for more details.
18*3551b24fSHans de Goede *
19*3551b24fSHans de Goede * Or, alternatively,
20*3551b24fSHans de Goede *
21*3551b24fSHans de Goede *  b) Permission is hereby granted, free of charge, to any person
22*3551b24fSHans de Goede *     obtaining a copy of this software and associated documentation
23*3551b24fSHans de Goede *     files (the "Software"), to deal in the Software without
24*3551b24fSHans de Goede *     restriction, including without limitation the rights to use,
25*3551b24fSHans de Goede *     copy, modify, merge, publish, distribute, sublicense, and/or
26*3551b24fSHans de Goede *     sell copies of the Software, and to permit persons to whom the
27*3551b24fSHans de Goede *     Software is furnished to do so, subject to the following
28*3551b24fSHans de Goede *     conditions:
29*3551b24fSHans de Goede *
30*3551b24fSHans de Goede *     The above copyright notice and this permission notice shall be
31*3551b24fSHans de Goede *     included in all copies or substantial portions of the Software.
32*3551b24fSHans de Goede *
33*3551b24fSHans de Goede *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34*3551b24fSHans de Goede *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35*3551b24fSHans de Goede *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36*3551b24fSHans de Goede *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37*3551b24fSHans de Goede *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38*3551b24fSHans de Goede *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39*3551b24fSHans de Goede *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40*3551b24fSHans de Goede *     OTHER DEALINGS IN THE SOFTWARE.
41*3551b24fSHans de Goede */
42*3551b24fSHans de Goede
43*3551b24fSHans de Goede/dts-v1/;
44*3551b24fSHans de Goede#include "sun8i-a23.dtsi"
45*3551b24fSHans de Goede#include "sunxi-common-regulators.dtsi"
46*3551b24fSHans de Goede
47*3551b24fSHans de Goede#include <dt-bindings/gpio/gpio.h>
48*3551b24fSHans de Goede#include <dt-bindings/input/input.h>
49*3551b24fSHans de Goede#include <dt-bindings/pinctrl/sun4i-a10.h>
50*3551b24fSHans de Goede#include <dt-bindings/pwm/pwm.h>
51*3551b24fSHans de Goede
52*3551b24fSHans de Goede/ {
53*3551b24fSHans de Goede	model = "INet-86DZ Rev 01";
54*3551b24fSHans de Goede	compatible = "primux,inet86dz", "allwinner,sun8i-a23";
55*3551b24fSHans de Goede
56*3551b24fSHans de Goede	aliases {
57*3551b24fSHans de Goede		serial0 = &r_uart;
58*3551b24fSHans de Goede	};
59*3551b24fSHans de Goede
60*3551b24fSHans de Goede	backlight: backlight {
61*3551b24fSHans de Goede		compatible = "pwm-backlight";
62*3551b24fSHans de Goede		pinctrl-names = "default";
63*3551b24fSHans de Goede		pinctrl-0 = <&bl_en_pin_inet86dz>;
64*3551b24fSHans de Goede		pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
65*3551b24fSHans de Goede		brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
66*3551b24fSHans de Goede		default-brightness-level = <8>;
67*3551b24fSHans de Goede		enable-gpios = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
68*3551b24fSHans de Goede	};
69*3551b24fSHans de Goede
70*3551b24fSHans de Goede	chosen {
71*3551b24fSHans de Goede		stdout-path = "serial0:115200n8";
72*3551b24fSHans de Goede	};
73*3551b24fSHans de Goede};
74*3551b24fSHans de Goede
75*3551b24fSHans de Goede&ehci0 {
76*3551b24fSHans de Goede	status = "okay";
77*3551b24fSHans de Goede};
78*3551b24fSHans de Goede
79*3551b24fSHans de Goede&i2c0 {
80*3551b24fSHans de Goede	pinctrl-names = "default";
81*3551b24fSHans de Goede	pinctrl-0 = <&i2c0_pins_a>;
82*3551b24fSHans de Goede	status = "okay";
83*3551b24fSHans de Goede	/*
84*3551b24fSHans de Goede	 * The gsl1680 is rated at 400KHz and it will not work reliable at
85*3551b24fSHans de Goede	 * 100KHz, this has been confirmed on multiple different tablets.
86*3551b24fSHans de Goede	 * The gsl1680 is the only device on this bus.
87*3551b24fSHans de Goede	 */
88*3551b24fSHans de Goede	clock-frequency = <400000>;
89*3551b24fSHans de Goede
90*3551b24fSHans de Goede	gsl1680: touchscreen@40 {
91*3551b24fSHans de Goede		compatible = "silead,gsl1680";
92*3551b24fSHans de Goede		reg = <0x40>;
93*3551b24fSHans de Goede		interrupt-parent = <&pio>;
94*3551b24fSHans de Goede		interrupts = <1 5 IRQ_TYPE_EDGE_FALLING>; /* PB5 */
95*3551b24fSHans de Goede		pinctrl-names = "default";
96*3551b24fSHans de Goede		pinctrl-0 = <&ts_power_pin_inet86dz>;
97*3551b24fSHans de Goede		power-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
98*3551b24fSHans de Goede		touchscreen-size-x = <960>;
99*3551b24fSHans de Goede		touchscreen-size-y = <640>;
100*3551b24fSHans de Goede		touchscreen-max-fingers = <5>;
101*3551b24fSHans de Goede		touchscreen-fw-name = "silead/gsl1680-inet86dz.fw";
102*3551b24fSHans de Goede	};
103*3551b24fSHans de Goede};
104*3551b24fSHans de Goede
105*3551b24fSHans de Goede&i2c1 {
106*3551b24fSHans de Goede	pinctrl-names = "default";
107*3551b24fSHans de Goede	pinctrl-0 = <&i2c1_pins_a>;
108*3551b24fSHans de Goede	status = "okay";
109*3551b24fSHans de Goede};
110*3551b24fSHans de Goede
111*3551b24fSHans de Goede&lradc {
112*3551b24fSHans de Goede	vref-supply = <&reg_vcc3v0>;
113*3551b24fSHans de Goede	status = "okay";
114*3551b24fSHans de Goede
115*3551b24fSHans de Goede	button@200 {
116*3551b24fSHans de Goede		label = "Volume Up";
117*3551b24fSHans de Goede		linux,code = <KEY_VOLUMEUP>;
118*3551b24fSHans de Goede		channel = <0>;
119*3551b24fSHans de Goede		voltage = <200000>;
120*3551b24fSHans de Goede	};
121*3551b24fSHans de Goede
122*3551b24fSHans de Goede	button@400 {
123*3551b24fSHans de Goede		label = "Volume Down";
124*3551b24fSHans de Goede		linux,code = <KEY_VOLUMEDOWN>;
125*3551b24fSHans de Goede		channel = <0>;
126*3551b24fSHans de Goede		voltage = <400000>;
127*3551b24fSHans de Goede	};
128*3551b24fSHans de Goede};
129*3551b24fSHans de Goede
130*3551b24fSHans de Goede&mmc0 {
131*3551b24fSHans de Goede	pinctrl-names = "default";
132*3551b24fSHans de Goede	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_inet86dz>;
133*3551b24fSHans de Goede	vmmc-supply = <&reg_dcdc1>;
134*3551b24fSHans de Goede	bus-width = <4>;
135*3551b24fSHans de Goede	cd-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */
136*3551b24fSHans de Goede	cd-inverted;
137*3551b24fSHans de Goede	status = "okay";
138*3551b24fSHans de Goede};
139*3551b24fSHans de Goede
140*3551b24fSHans de Goede&pio {
141*3551b24fSHans de Goede	bl_en_pin_inet86dz: bl_en_pin@0 {
142*3551b24fSHans de Goede		allwinner,pins = "PH6";
143*3551b24fSHans de Goede		allwinner,function = "gpio_in";
144*3551b24fSHans de Goede		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
145*3551b24fSHans de Goede		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
146*3551b24fSHans de Goede	};
147*3551b24fSHans de Goede
148*3551b24fSHans de Goede	mmc0_cd_pin_inet86dz: mmc0_cd_pin@0 {
149*3551b24fSHans de Goede		allwinner,pins = "PB4";
150*3551b24fSHans de Goede		allwinner,function = "gpio_in";
151*3551b24fSHans de Goede		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
152*3551b24fSHans de Goede		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
153*3551b24fSHans de Goede	};
154*3551b24fSHans de Goede
155*3551b24fSHans de Goede	ts_power_pin_inet86dz: ts_power_pin@0 {
156*3551b24fSHans de Goede		allwinner,pins = "PH1";
157*3551b24fSHans de Goede		allwinner,function = "gpio_out";
158*3551b24fSHans de Goede		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
159*3551b24fSHans de Goede		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
160*3551b24fSHans de Goede	};
161*3551b24fSHans de Goede
162*3551b24fSHans de Goede	usb0_id_detect_pin: usb0_id_detect_pin@0 {
163*3551b24fSHans de Goede		allwinner,pins = "PH8";
164*3551b24fSHans de Goede		allwinner,function = "gpio_in";
165*3551b24fSHans de Goede		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
166*3551b24fSHans de Goede		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
167*3551b24fSHans de Goede	};
168*3551b24fSHans de Goede};
169*3551b24fSHans de Goede
170*3551b24fSHans de Goede&pwm {
171*3551b24fSHans de Goede	pinctrl-names = "default";
172*3551b24fSHans de Goede	pinctrl-0 = <&pwm0_pins>;
173*3551b24fSHans de Goede	status = "okay";
174*3551b24fSHans de Goede};
175*3551b24fSHans de Goede
176*3551b24fSHans de Goede&r_rsb {
177*3551b24fSHans de Goede	status = "okay";
178*3551b24fSHans de Goede
179*3551b24fSHans de Goede	axp22x: pmic@3a3 {
180*3551b24fSHans de Goede		compatible = "x-powers,axp223";
181*3551b24fSHans de Goede		reg = <0x3a3>;
182*3551b24fSHans de Goede		interrupt-parent = <&nmi_intc>;
183*3551b24fSHans de Goede		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
184*3551b24fSHans de Goede		eldoin-supply = <&reg_dcdc1>;
185*3551b24fSHans de Goede		x-powers,drive-vbus-en;
186*3551b24fSHans de Goede	};
187*3551b24fSHans de Goede};
188*3551b24fSHans de Goede
189*3551b24fSHans de Goede&r_uart {
190*3551b24fSHans de Goede	pinctrl-names = "default";
191*3551b24fSHans de Goede	pinctrl-0 = <&r_uart_pins_a>;
192*3551b24fSHans de Goede	status = "okay";
193*3551b24fSHans de Goede};
194*3551b24fSHans de Goede
195*3551b24fSHans de Goede#include "axp22x.dtsi"
196*3551b24fSHans de Goede
197*3551b24fSHans de Goede&reg_aldo1 {
198*3551b24fSHans de Goede	regulator-always-on;
199*3551b24fSHans de Goede	regulator-min-microvolt = <3000000>;
200*3551b24fSHans de Goede	regulator-max-microvolt = <3000000>;
201*3551b24fSHans de Goede	regulator-name = "vcc-io";
202*3551b24fSHans de Goede};
203*3551b24fSHans de Goede
204*3551b24fSHans de Goede&reg_aldo2 {
205*3551b24fSHans de Goede	regulator-always-on;
206*3551b24fSHans de Goede	regulator-min-microvolt = <2350000>;
207*3551b24fSHans de Goede	regulator-max-microvolt = <2650000>;
208*3551b24fSHans de Goede	regulator-name = "vdd-dll";
209*3551b24fSHans de Goede};
210*3551b24fSHans de Goede
211*3551b24fSHans de Goede&reg_aldo3 {
212*3551b24fSHans de Goede	regulator-always-on;
213*3551b24fSHans de Goede	regulator-min-microvolt = <2700000>;
214*3551b24fSHans de Goede	regulator-max-microvolt = <3300000>;
215*3551b24fSHans de Goede	regulator-name = "vcc-pll-avcc";
216*3551b24fSHans de Goede};
217*3551b24fSHans de Goede
218*3551b24fSHans de Goede&reg_dc1sw {
219*3551b24fSHans de Goede	regulator-name = "vcc-lcd";
220*3551b24fSHans de Goede};
221*3551b24fSHans de Goede
222*3551b24fSHans de Goede&reg_dc5ldo {
223*3551b24fSHans de Goede	regulator-always-on;
224*3551b24fSHans de Goede	regulator-min-microvolt = <900000>;
225*3551b24fSHans de Goede	regulator-max-microvolt = <1400000>;
226*3551b24fSHans de Goede	regulator-name = "vdd-cpus";
227*3551b24fSHans de Goede};
228*3551b24fSHans de Goede
229*3551b24fSHans de Goede&reg_dcdc1 {
230*3551b24fSHans de Goede	regulator-always-on;
231*3551b24fSHans de Goede	regulator-min-microvolt = <3000000>;
232*3551b24fSHans de Goede	regulator-max-microvolt = <3000000>;
233*3551b24fSHans de Goede	regulator-name = "vcc-3v0";
234*3551b24fSHans de Goede};
235*3551b24fSHans de Goede
236*3551b24fSHans de Goede&reg_dcdc2 {
237*3551b24fSHans de Goede	regulator-always-on;
238*3551b24fSHans de Goede	regulator-min-microvolt = <900000>;
239*3551b24fSHans de Goede	regulator-max-microvolt = <1400000>;
240*3551b24fSHans de Goede	regulator-name = "vdd-sys";
241*3551b24fSHans de Goede};
242*3551b24fSHans de Goede
243*3551b24fSHans de Goede&reg_dcdc3 {
244*3551b24fSHans de Goede	regulator-always-on;
245*3551b24fSHans de Goede	regulator-min-microvolt = <900000>;
246*3551b24fSHans de Goede	regulator-max-microvolt = <1400000>;
247*3551b24fSHans de Goede	regulator-name = "vdd-cpu";
248*3551b24fSHans de Goede};
249*3551b24fSHans de Goede
250*3551b24fSHans de Goede&reg_dcdc5 {
251*3551b24fSHans de Goede	regulator-always-on;
252*3551b24fSHans de Goede	regulator-min-microvolt = <1500000>;
253*3551b24fSHans de Goede	regulator-max-microvolt = <1500000>;
254*3551b24fSHans de Goede	regulator-name = "vcc-dram";
255*3551b24fSHans de Goede};
256*3551b24fSHans de Goede
257*3551b24fSHans de Goede&reg_dldo1 {
258*3551b24fSHans de Goede	regulator-min-microvolt = <3300000>;
259*3551b24fSHans de Goede	regulator-max-microvolt = <3300000>;
260*3551b24fSHans de Goede	regulator-name = "vcc-wifi";
261*3551b24fSHans de Goede};
262*3551b24fSHans de Goede
263*3551b24fSHans de Goede&reg_drivevbus {
264*3551b24fSHans de Goede	regulator-name = "usb0-vbus";
265*3551b24fSHans de Goede	status = "okay";
266*3551b24fSHans de Goede};
267*3551b24fSHans de Goede
268*3551b24fSHans de Goede&reg_rtc_ldo {
269*3551b24fSHans de Goede	regulator-name = "vcc-rtc";
270*3551b24fSHans de Goede};
271*3551b24fSHans de Goede
272*3551b24fSHans de Goede&simplefb_lcd {
273*3551b24fSHans de Goede	vcc-lcd-supply = <&reg_dc1sw>;
274*3551b24fSHans de Goede};
275*3551b24fSHans de Goede
276*3551b24fSHans de Goede&usb_otg {
277*3551b24fSHans de Goede	dr_mode = "otg";
278*3551b24fSHans de Goede	status = "okay";
279*3551b24fSHans de Goede};
280*3551b24fSHans de Goede
281*3551b24fSHans de Goede&usb_power_supply {
282*3551b24fSHans de Goede	status = "okay";
283*3551b24fSHans de Goede};
284*3551b24fSHans de Goede
285*3551b24fSHans de Goede&usbphy {
286*3551b24fSHans de Goede	pinctrl-names = "default";
287*3551b24fSHans de Goede	pinctrl-0 = <&usb0_id_detect_pin>;
288*3551b24fSHans de Goede	usb0_id_det-gpio = <&pio 7 8 GPIO_ACTIVE_HIGH>; /* PH8 */
289*3551b24fSHans de Goede	usb0_vbus_power-supply = <&usb_power_supply>;
290*3551b24fSHans de Goede	usb0_vbus-supply = <&reg_drivevbus>;
291*3551b24fSHans de Goede	usb1_vbus-supply = <&reg_dldo1>;
292*3551b24fSHans de Goede	status = "okay";
293*3551b24fSHans de Goede};
294