xref: /linux/scripts/dtc/include-prefixes/mips/ingenic/gcw0.dts (revision 4f9786035f9e519db41375818e1d0b5f20da2f10)
1590c1f0fSPaul Cercueil// SPDX-License-Identifier: GPL-2.0
2590c1f0fSPaul Cercueil/dts-v1/;
3590c1f0fSPaul Cercueil
4590c1f0fSPaul Cercueil#include "jz4770.dtsi"
5967a7100SPaul Cercueil#include <dt-bindings/clock/ingenic,tcu.h>
6590c1f0fSPaul Cercueil
7b1bfdb66SPaul Cercueil#include <dt-bindings/gpio/gpio.h>
8b1bfdb66SPaul Cercueil#include <dt-bindings/iio/adc/ingenic,adc.h>
9b1bfdb66SPaul Cercueil#include <dt-bindings/input/input.h>
10b1bfdb66SPaul Cercueil
11590c1f0fSPaul Cercueil/ {
12590c1f0fSPaul Cercueil	compatible = "gcw,zero", "ingenic,jz4770";
13590c1f0fSPaul Cercueil	model = "GCW Zero";
14590c1f0fSPaul Cercueil
15590c1f0fSPaul Cercueil	aliases {
16590c1f0fSPaul Cercueil		serial0 = &uart0;
17590c1f0fSPaul Cercueil		serial1 = &uart1;
18590c1f0fSPaul Cercueil		serial2 = &uart2;
19590c1f0fSPaul Cercueil		serial3 = &uart3;
20590c1f0fSPaul Cercueil	};
21590c1f0fSPaul Cercueil
22963287e4SPaul Cercueil	memory: memory {
23963287e4SPaul Cercueil		device_type = "memory";
24963287e4SPaul Cercueil		reg = <0x0 0x10000000>,
25963287e4SPaul Cercueil		      <0x30000000 0x10000000>;
26963287e4SPaul Cercueil	};
27963287e4SPaul Cercueil
28590c1f0fSPaul Cercueil	chosen {
29590c1f0fSPaul Cercueil		stdout-path = "serial2:57600n8";
30590c1f0fSPaul Cercueil	};
31590c1f0fSPaul Cercueil
32b1bfdb66SPaul Cercueil	vcc: regulator@0 {
33b1bfdb66SPaul Cercueil		compatible = "regulator-fixed";
34b1bfdb66SPaul Cercueil		regulator-name = "vcc";
35590c1f0fSPaul Cercueil
36b1bfdb66SPaul Cercueil		regulator-min-microvolt = <3300000>;
37b1bfdb66SPaul Cercueil		regulator-max-microvolt = <3300000>;
38b1bfdb66SPaul Cercueil		regulator-always-on;
39b1bfdb66SPaul Cercueil	};
40b1bfdb66SPaul Cercueil
41b1bfdb66SPaul Cercueil	mmc1_power: regulator@1 {
42b1bfdb66SPaul Cercueil		compatible = "regulator-fixed";
43b1bfdb66SPaul Cercueil		regulator-name = "mmc1_vcc";
44b1bfdb66SPaul Cercueil		gpio = <&gpe 9 0>;
45b1bfdb66SPaul Cercueil
46b1bfdb66SPaul Cercueil		regulator-min-microvolt = <3300000>;
47b1bfdb66SPaul Cercueil		regulator-max-microvolt = <3300000>;
48b1bfdb66SPaul Cercueil		vin-supply = <&vcc>;
49b1bfdb66SPaul Cercueil	};
50b1bfdb66SPaul Cercueil
51b1bfdb66SPaul Cercueil	headphones_amp: analog-amplifier@0 {
52b1bfdb66SPaul Cercueil		compatible = "simple-audio-amplifier";
53b1bfdb66SPaul Cercueil		enable-gpios = <&gpf 3 GPIO_ACTIVE_LOW>;
54b1bfdb66SPaul Cercueil		enable-delay-ms = <50>;
55b1bfdb66SPaul Cercueil
56b1bfdb66SPaul Cercueil		VCC-supply = <&ldo5>;
57b1bfdb66SPaul Cercueil		sound-name-prefix = "Headphones Amp";
58b1bfdb66SPaul Cercueil	};
59b1bfdb66SPaul Cercueil
60b1bfdb66SPaul Cercueil	speaker_amp: analog-amplifier@1 {
61b1bfdb66SPaul Cercueil		compatible = "simple-audio-amplifier";
62b1bfdb66SPaul Cercueil		enable-gpios = <&gpf 20 GPIO_ACTIVE_HIGH>;
63b1bfdb66SPaul Cercueil
64b1bfdb66SPaul Cercueil		VCC-supply = <&ldo5>;
65b1bfdb66SPaul Cercueil		sound-name-prefix = "Speaker Amp";
66b1bfdb66SPaul Cercueil	};
67b1bfdb66SPaul Cercueil
68b1bfdb66SPaul Cercueil	sound {
69b1bfdb66SPaul Cercueil		compatible = "simple-audio-card";
70b1bfdb66SPaul Cercueil
71b1bfdb66SPaul Cercueil		simple-audio-card,name = "gcw0-audio";
72b1bfdb66SPaul Cercueil		simple-audio-card,format = "i2s";
73b1bfdb66SPaul Cercueil
74b1bfdb66SPaul Cercueil		simple-audio-card,widgets =
75b1bfdb66SPaul Cercueil			"Speaker", "Speaker",
76b1bfdb66SPaul Cercueil			"Headphone", "Headphones",
77b1bfdb66SPaul Cercueil			"Microphone", "Built-in Mic";
78b1bfdb66SPaul Cercueil		simple-audio-card,routing =
79b1bfdb66SPaul Cercueil			"Headphones Amp INL", "LHPOUT",
80b1bfdb66SPaul Cercueil			"Headphones Amp INR", "RHPOUT",
81b1bfdb66SPaul Cercueil			"Headphones", "Headphones Amp OUTL",
82b1bfdb66SPaul Cercueil			"Headphones", "Headphones Amp OUTR",
83b1bfdb66SPaul Cercueil			"Speaker Amp INL", "LOUT",
84b1bfdb66SPaul Cercueil			"Speaker Amp INR", "ROUT",
85b1bfdb66SPaul Cercueil			"Speaker", "Speaker Amp OUTL",
86b1bfdb66SPaul Cercueil			"Speaker", "Speaker Amp OUTR",
875e82cf98SPaul Cercueil			"LLINEIN", "Cap-less",
885e82cf98SPaul Cercueil			"RLINEIN", "Cap-less",
89b1bfdb66SPaul Cercueil			"Built-in Mic", "MICBIAS",
90b1bfdb66SPaul Cercueil			"MIC1P", "Built-in Mic",
91b1bfdb66SPaul Cercueil			"MIC1N", "Built-in Mic";
92b1bfdb66SPaul Cercueil		simple-audio-card,pin-switches = "Speaker", "Headphones";
93b1bfdb66SPaul Cercueil
94*2398902fSGeert Uytterhoeven		simple-audio-card,hp-det-gpios = <&gpf 21 GPIO_ACTIVE_LOW>;
95b1bfdb66SPaul Cercueil		simple-audio-card,aux-devs = <&speaker_amp>, <&headphones_amp>;
96b1bfdb66SPaul Cercueil
97b1bfdb66SPaul Cercueil		simple-audio-card,bitclock-master = <&dai_codec>;
98b1bfdb66SPaul Cercueil		simple-audio-card,frame-master = <&dai_codec>;
99b1bfdb66SPaul Cercueil
100b1bfdb66SPaul Cercueil		dai_cpu: simple-audio-card,cpu {
101b1bfdb66SPaul Cercueil			sound-dai = <&aic>;
102b1bfdb66SPaul Cercueil		};
103b1bfdb66SPaul Cercueil
104b1bfdb66SPaul Cercueil		dai_codec: simple-audio-card,codec {
105b1bfdb66SPaul Cercueil			sound-dai = <&codec>;
106b1bfdb66SPaul Cercueil		};
107b1bfdb66SPaul Cercueil	};
108b1bfdb66SPaul Cercueil
109b1bfdb66SPaul Cercueil	rumble {
110b1bfdb66SPaul Cercueil		compatible = "pwm-vibrator";
111b1bfdb66SPaul Cercueil		pwms = <&pwm 4 2000000 0>;
112b1bfdb66SPaul Cercueil		pwm-names = "enable";
113b1bfdb66SPaul Cercueil
114b1bfdb66SPaul Cercueil		pinctrl-names = "default";
115b1bfdb66SPaul Cercueil		pinctrl-0 = <&pins_pwm4>;
116b1bfdb66SPaul Cercueil	};
117b1bfdb66SPaul Cercueil
118b1bfdb66SPaul Cercueil	backlight: backlight {
119b1bfdb66SPaul Cercueil		compatible = "pwm-backlight";
120b1bfdb66SPaul Cercueil		pwms = <&pwm 1 40000 0>;
121b1bfdb66SPaul Cercueil		power-supply = <&vcc>;
122b1bfdb66SPaul Cercueil
123b1bfdb66SPaul Cercueil		brightness-levels = <0 16 32 48 64 80 96 112 128
124b1bfdb66SPaul Cercueil				     144 160 176 192 208 224 240 255>;
125b1bfdb66SPaul Cercueil		default-brightness-level = <12>;
126b1bfdb66SPaul Cercueil
127b1bfdb66SPaul Cercueil		pinctrl-names = "default";
128b1bfdb66SPaul Cercueil		pinctrl-0 = <&pins_pwm1>;
129b1bfdb66SPaul Cercueil	};
130b1bfdb66SPaul Cercueil
131b1bfdb66SPaul Cercueil	gpio-keys {
132b1bfdb66SPaul Cercueil		compatible = "gpio-keys";
133b1bfdb66SPaul Cercueil		autorepeat;
134b1bfdb66SPaul Cercueil
1355ee46bfbSKrzysztof Kozlowski		button-0 {
136b1bfdb66SPaul Cercueil			label = "D-pad up";
137b1bfdb66SPaul Cercueil			linux,code = <KEY_UP>;
138b1bfdb66SPaul Cercueil			linux,can-disable;
139b1bfdb66SPaul Cercueil			gpios = <&gpe 21 GPIO_ACTIVE_LOW>;
140b1bfdb66SPaul Cercueil		};
141b1bfdb66SPaul Cercueil
1425ee46bfbSKrzysztof Kozlowski		button-1 {
143b1bfdb66SPaul Cercueil			label = "D-pad down";
144b1bfdb66SPaul Cercueil			linux,code = <KEY_DOWN>;
145b1bfdb66SPaul Cercueil			linux,can-disable;
146b1bfdb66SPaul Cercueil			gpios = <&gpe 25 GPIO_ACTIVE_LOW>;
147b1bfdb66SPaul Cercueil		};
148b1bfdb66SPaul Cercueil
1495ee46bfbSKrzysztof Kozlowski		button-2 {
150b1bfdb66SPaul Cercueil			label = "D-pad left";
151b1bfdb66SPaul Cercueil			linux,code = <KEY_LEFT>;
152b1bfdb66SPaul Cercueil			linux,can-disable;
153b1bfdb66SPaul Cercueil			gpios = <&gpe 23 GPIO_ACTIVE_LOW>;
154b1bfdb66SPaul Cercueil		};
155b1bfdb66SPaul Cercueil
1565ee46bfbSKrzysztof Kozlowski		button-3 {
157b1bfdb66SPaul Cercueil			label = "D-pad right";
158b1bfdb66SPaul Cercueil			linux,code = <KEY_RIGHT>;
159b1bfdb66SPaul Cercueil			linux,can-disable;
160b1bfdb66SPaul Cercueil			gpios = <&gpe 24 GPIO_ACTIVE_LOW>;
161b1bfdb66SPaul Cercueil		};
162b1bfdb66SPaul Cercueil
1635ee46bfbSKrzysztof Kozlowski		button-4 {
164b1bfdb66SPaul Cercueil			label = "Button A";
165b1bfdb66SPaul Cercueil			linux,code = <KEY_LEFTCTRL>;
166b1bfdb66SPaul Cercueil			linux,can-disable;
167b1bfdb66SPaul Cercueil			gpios = <&gpe 29 GPIO_ACTIVE_LOW>;
168b1bfdb66SPaul Cercueil		};
169b1bfdb66SPaul Cercueil
1705ee46bfbSKrzysztof Kozlowski		button-5 {
171b1bfdb66SPaul Cercueil			label = "Button B";
172b1bfdb66SPaul Cercueil			linux,code = <KEY_LEFTALT>;
173b1bfdb66SPaul Cercueil			linux,can-disable;
174b1bfdb66SPaul Cercueil			gpios = <&gpe 20 GPIO_ACTIVE_LOW>;
175b1bfdb66SPaul Cercueil		};
176b1bfdb66SPaul Cercueil
1775ee46bfbSKrzysztof Kozlowski		button-6 {
178b1bfdb66SPaul Cercueil			label = "Button Y";
179b1bfdb66SPaul Cercueil			linux,code = <KEY_SPACE>;
180b1bfdb66SPaul Cercueil			linux,can-disable;
181b1bfdb66SPaul Cercueil			gpios = <&gpe 27 GPIO_ACTIVE_LOW>;
182b1bfdb66SPaul Cercueil		};
183b1bfdb66SPaul Cercueil
1845ee46bfbSKrzysztof Kozlowski		button-7 {
185b1bfdb66SPaul Cercueil			label = "Button X";
186b1bfdb66SPaul Cercueil			linux,code = <KEY_LEFTSHIFT>;
187b1bfdb66SPaul Cercueil			linux,can-disable;
188b1bfdb66SPaul Cercueil			gpios = <&gpe 28 GPIO_ACTIVE_LOW>;
189b1bfdb66SPaul Cercueil		};
190b1bfdb66SPaul Cercueil
1915ee46bfbSKrzysztof Kozlowski		button-8 {
192b1bfdb66SPaul Cercueil			label = "Left shoulder button";
193b1bfdb66SPaul Cercueil			linux,code = <KEY_TAB>;
194b1bfdb66SPaul Cercueil			linux,can-disable;
195b1bfdb66SPaul Cercueil			gpios = <&gpb 20 GPIO_ACTIVE_LOW>;
196b1bfdb66SPaul Cercueil		};
197b1bfdb66SPaul Cercueil
1985ee46bfbSKrzysztof Kozlowski		button-9 {
199b1bfdb66SPaul Cercueil			label = "Right shoulder button";
200b1bfdb66SPaul Cercueil			linux,code = <KEY_BACKSPACE>;
201b1bfdb66SPaul Cercueil			linux,can-disable;
202b1bfdb66SPaul Cercueil			gpios = <&gpe 26 GPIO_ACTIVE_LOW>;
203b1bfdb66SPaul Cercueil		};
204b1bfdb66SPaul Cercueil
2055ee46bfbSKrzysztof Kozlowski		button-10 {
206b1bfdb66SPaul Cercueil			label = "Start button";
207b1bfdb66SPaul Cercueil			linux,code = <KEY_ENTER>;
208b1bfdb66SPaul Cercueil			linux,can-disable;
209b1bfdb66SPaul Cercueil			gpios = <&gpb 21 GPIO_ACTIVE_LOW>;
210b1bfdb66SPaul Cercueil		};
211b1bfdb66SPaul Cercueil
2125ee46bfbSKrzysztof Kozlowski		button-11 {
213b1bfdb66SPaul Cercueil			label = "Select button";
214b1bfdb66SPaul Cercueil			linux,code = <KEY_ESC>;
215b1bfdb66SPaul Cercueil			linux,can-disable;
216b1bfdb66SPaul Cercueil			/*
217b1bfdb66SPaul Cercueil			 * This is the only button that is active high,
218b1bfdb66SPaul Cercueil			 * since it doubles as BOOT_SEL1.
219b1bfdb66SPaul Cercueil			 */
220b1bfdb66SPaul Cercueil			gpios = <&gpd 18 GPIO_ACTIVE_HIGH>;
221b1bfdb66SPaul Cercueil		};
222b1bfdb66SPaul Cercueil
2235ee46bfbSKrzysztof Kozlowski		button-12 {
224b1bfdb66SPaul Cercueil			label = "Power slider";
225b1bfdb66SPaul Cercueil			linux,code = <KEY_POWER>;
226b1bfdb66SPaul Cercueil			linux,can-disable;
227b1bfdb66SPaul Cercueil			gpios = <&gpa 30 GPIO_ACTIVE_LOW>;
228b1bfdb66SPaul Cercueil			wakeup-source;
229b1bfdb66SPaul Cercueil		};
230b1bfdb66SPaul Cercueil
2315ee46bfbSKrzysztof Kozlowski		button-13 {
232b1bfdb66SPaul Cercueil			label = "Power hold";
233b1bfdb66SPaul Cercueil			linux,code = <KEY_PAUSE>;
234b1bfdb66SPaul Cercueil			linux,can-disable;
235b1bfdb66SPaul Cercueil			gpios = <&gpf 11 GPIO_ACTIVE_LOW>;
236b1bfdb66SPaul Cercueil		};
237b1bfdb66SPaul Cercueil	};
238b1bfdb66SPaul Cercueil
239b1bfdb66SPaul Cercueil	i2c3: i2c-controller@3 {
240b1bfdb66SPaul Cercueil		compatible = "i2c-gpio";
241b1bfdb66SPaul Cercueil		#address-cells = <1>;
242b1bfdb66SPaul Cercueil		#size-cells = <0>;
243b1bfdb66SPaul Cercueil
244b1bfdb66SPaul Cercueil		sda-gpios = <&gpd 5 GPIO_ACTIVE_HIGH>;
245b1bfdb66SPaul Cercueil		scl-gpios = <&gpd 4 GPIO_ACTIVE_HIGH>;
246b1bfdb66SPaul Cercueil		i2c-gpio,delay-us = <2>; /* 250 kHz */
247b1bfdb66SPaul Cercueil
248b1bfdb66SPaul Cercueil		act8600: pmic@5a {
249b1bfdb66SPaul Cercueil			compatible = "active-semi,act8600";
250b1bfdb66SPaul Cercueil			reg = <0x5a>;
251b1bfdb66SPaul Cercueil
252b1bfdb66SPaul Cercueil			regulators {
253b1bfdb66SPaul Cercueil				/* USB OTG */
254b1bfdb66SPaul Cercueil				otg_vbus: SUDCDC_REG4 {
255b1bfdb66SPaul Cercueil					/*
256b1bfdb66SPaul Cercueil					 * 5.3V instead of 5.0V to compensate
257b1bfdb66SPaul Cercueil					 * for the voltage drop of a diode
258b1bfdb66SPaul Cercueil					 * between the regulator and the
259b1bfdb66SPaul Cercueil					 * connector.
260b1bfdb66SPaul Cercueil					 */
261b1bfdb66SPaul Cercueil					regulator-min-microvolt = <5300000>;
262b1bfdb66SPaul Cercueil					regulator-max-microvolt = <5300000>;
263b1bfdb66SPaul Cercueil					inl-supply = <&vcc>;
264b1bfdb66SPaul Cercueil				};
265b1bfdb66SPaul Cercueil
266b1bfdb66SPaul Cercueil				/*
267b1bfdb66SPaul Cercueil				 * When this is off, there is no sound, but also
268b1bfdb66SPaul Cercueil				 * no USB networking.
269b1bfdb66SPaul Cercueil				 */
270b1bfdb66SPaul Cercueil				ldo5: LDO5 {
271b1bfdb66SPaul Cercueil					regulator-min-microvolt = <2500000>;
272b1bfdb66SPaul Cercueil					regulator-max-microvolt = <2500000>;
273b1bfdb66SPaul Cercueil					inl-supply = <&vcc>;
274b1bfdb66SPaul Cercueil				};
275b1bfdb66SPaul Cercueil
276b1bfdb66SPaul Cercueil				/* LCD panel and FM radio */
277b1bfdb66SPaul Cercueil				ldo6: LDO6 {
278b1bfdb66SPaul Cercueil					regulator-min-microvolt = <3300000>;
279b1bfdb66SPaul Cercueil					regulator-max-microvolt = <3300000>;
280b1bfdb66SPaul Cercueil					inl-supply = <&vcc>;
281b1bfdb66SPaul Cercueil				};
282b1bfdb66SPaul Cercueil
283b1bfdb66SPaul Cercueil				/* ??? */
284b1bfdb66SPaul Cercueil				LDO7 {
285b1bfdb66SPaul Cercueil					regulator-min-microvolt = <3300000>;
286b1bfdb66SPaul Cercueil					regulator-max-microvolt = <3300000>;
287b1bfdb66SPaul Cercueil					/*regulator-always-on;*/
288b1bfdb66SPaul Cercueil					inl-supply = <&vcc>;
289b1bfdb66SPaul Cercueil				};
290b1bfdb66SPaul Cercueil
291b1bfdb66SPaul Cercueil				/*
292b1bfdb66SPaul Cercueil				 * The colors on the LCD are wrong when this is
293b1bfdb66SPaul Cercueil				 * off. Which is strange, since the LCD panel
294b1bfdb66SPaul Cercueil				 * data sheet only mentions a 3.3V input.
295b1bfdb66SPaul Cercueil				 */
296b1bfdb66SPaul Cercueil				LDO8 {
297b1bfdb66SPaul Cercueil					regulator-min-microvolt = <1800000>;
298b1bfdb66SPaul Cercueil					regulator-max-microvolt = <1800000>;
299b1bfdb66SPaul Cercueil					regulator-always-on;
300b1bfdb66SPaul Cercueil					inl-supply = <&vcc>;
301b1bfdb66SPaul Cercueil				};
302b1bfdb66SPaul Cercueil
303b1bfdb66SPaul Cercueil				/* RTC fixed 3.3V */
304b1bfdb66SPaul Cercueil				LDO_REG9 {
305b1bfdb66SPaul Cercueil					regulator-min-microvolt = <3300000>;
306b1bfdb66SPaul Cercueil					regulator-max-microvolt = <3300000>;
307b1bfdb66SPaul Cercueil					regulator-always-on;
308b1bfdb66SPaul Cercueil					inl-supply = <&vcc>;
309b1bfdb66SPaul Cercueil				};
310b1bfdb66SPaul Cercueil
311b1bfdb66SPaul Cercueil				/* Unused fixed 1.2V */
312b1bfdb66SPaul Cercueil				LDO_REG10 {
313b1bfdb66SPaul Cercueil					inl-supply = <&vcc>;
314b1bfdb66SPaul Cercueil				};
315b1bfdb66SPaul Cercueil			};
316b1bfdb66SPaul Cercueil		};
317b1bfdb66SPaul Cercueil	};
318b1bfdb66SPaul Cercueil
319b1bfdb66SPaul Cercueil	leds {
320b1bfdb66SPaul Cercueil		compatible = "gpio-leds";
321b1bfdb66SPaul Cercueil
322b1bfdb66SPaul Cercueil		led {
323b1bfdb66SPaul Cercueil			gpios = <&gpb 30 GPIO_ACTIVE_LOW>;
324b1bfdb66SPaul Cercueil			default-state = "on";
325b1bfdb66SPaul Cercueil		};
326b1bfdb66SPaul Cercueil	};
327b1bfdb66SPaul Cercueil
328b1bfdb66SPaul Cercueil	spi {
329b1bfdb66SPaul Cercueil		compatible = "spi-gpio";
330b1bfdb66SPaul Cercueil		#address-cells = <1>;
331b1bfdb66SPaul Cercueil		#size-cells = <0>;
332b1bfdb66SPaul Cercueil
333b1bfdb66SPaul Cercueil		sck-gpios = <&gpe 15 GPIO_ACTIVE_HIGH>;
334b1bfdb66SPaul Cercueil		mosi-gpios = <&gpe 17 GPIO_ACTIVE_HIGH>;
335b1bfdb66SPaul Cercueil		cs-gpios = <&gpe 16 GPIO_ACTIVE_HIGH>;
336b1bfdb66SPaul Cercueil		num-chipselects = <1>;
337b1bfdb66SPaul Cercueil
338b1bfdb66SPaul Cercueil		nt39016@0 {
339b1bfdb66SPaul Cercueil			compatible = "kingdisplay,kd035g6-54nt";
340b1bfdb66SPaul Cercueil			reg = <0>;
341b1bfdb66SPaul Cercueil
342b1bfdb66SPaul Cercueil			spi-max-frequency = <3125000>;
343b1bfdb66SPaul Cercueil			spi-3wire;
344b1bfdb66SPaul Cercueil
345b1bfdb66SPaul Cercueil			reset-gpios = <&gpe 2 GPIO_ACTIVE_LOW>;
346b1bfdb66SPaul Cercueil
347b1bfdb66SPaul Cercueil			backlight = <&backlight>;
348b1bfdb66SPaul Cercueil			power-supply = <&ldo6>;
349b1bfdb66SPaul Cercueil
350b1bfdb66SPaul Cercueil			port {
351b1bfdb66SPaul Cercueil				panel_input: endpoint {
352b1bfdb66SPaul Cercueil					remote-endpoint = <&panel_output>;
353b1bfdb66SPaul Cercueil				};
354b1bfdb66SPaul Cercueil			};
355b1bfdb66SPaul Cercueil		};
356b1bfdb66SPaul Cercueil	};
357b1bfdb66SPaul Cercueil
358b1bfdb66SPaul Cercueil	connector {
359b1bfdb66SPaul Cercueil		compatible = "gpio-usb-b-connector", "usb-b-connector";
360b1bfdb66SPaul Cercueil		label = "mini-USB";
361b1bfdb66SPaul Cercueil		type = "mini";
362b1bfdb66SPaul Cercueil
363b1bfdb66SPaul Cercueil		/*
364b1bfdb66SPaul Cercueil		 * USB OTG is not yet working reliably, the ID detection
365b1bfdb66SPaul Cercueil		 * mechanism tends to fry easily for unknown reasons.
366b1bfdb66SPaul Cercueil		 * Until this is fixed, disable OTG by not providing the
367b1bfdb66SPaul Cercueil		 * ID GPIO to the driver.
368b1bfdb66SPaul Cercueil		 */
369b1bfdb66SPaul Cercueil		//id-gpios = <&gpf 18 GPIO_ACTIVE_LOW>;
370b1bfdb66SPaul Cercueil
371b1bfdb66SPaul Cercueil		vbus-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
372b1bfdb66SPaul Cercueil		vbus-supply = <&otg_vbus>;
373b1bfdb66SPaul Cercueil
374b1bfdb66SPaul Cercueil		pinctrl-names = "default";
375b1bfdb66SPaul Cercueil		pinctrl-0 = <&pins_otg>;
376b1bfdb66SPaul Cercueil
377b1bfdb66SPaul Cercueil		port {
378b1bfdb66SPaul Cercueil			usb_ep: endpoint {
379b1bfdb66SPaul Cercueil				remote-endpoint = <&usb_otg_ep>;
380b1bfdb66SPaul Cercueil			};
381590c1f0fSPaul Cercueil		};
382590c1f0fSPaul Cercueil	};
383590c1f0fSPaul Cercueil};
384590c1f0fSPaul Cercueil
385590c1f0fSPaul Cercueil&ext {
386590c1f0fSPaul Cercueil	clock-frequency = <12000000>;
387590c1f0fSPaul Cercueil};
388590c1f0fSPaul Cercueil
389b1bfdb66SPaul Cercueil&pinctrl {
390b1bfdb66SPaul Cercueil	pins_lcd: lcd {
391b1bfdb66SPaul Cercueil		function = "lcd";
392b1bfdb66SPaul Cercueil		groups = "lcd-24bit";
393b1bfdb66SPaul Cercueil	};
394b1bfdb66SPaul Cercueil
395b1bfdb66SPaul Cercueil	pins_uart2: uart2 {
396b1bfdb66SPaul Cercueil		function = "uart2";
397b1bfdb66SPaul Cercueil		groups = "uart2-data";
398b1bfdb66SPaul Cercueil	};
399b1bfdb66SPaul Cercueil
400b1bfdb66SPaul Cercueil	pins_mmc0: mmc0 {
401b1bfdb66SPaul Cercueil		function = "mmc0";
402b1bfdb66SPaul Cercueil		groups = "mmc0-1bit-a", "mmc0-4bit-a";
403b1bfdb66SPaul Cercueil	};
404b1bfdb66SPaul Cercueil
405b1bfdb66SPaul Cercueil	pins_mmc1: mmc1 {
406b1bfdb66SPaul Cercueil		function = "mmc1";
407b1bfdb66SPaul Cercueil		groups = "mmc1-1bit-d", "mmc1-4bit-d";
408b1bfdb66SPaul Cercueil	};
409b1bfdb66SPaul Cercueil
410b1bfdb66SPaul Cercueil	pins_otg: otg {
411b1bfdb66SPaul Cercueil		otg-vbus-pin {
412b1bfdb66SPaul Cercueil			function = "otg";
413b1bfdb66SPaul Cercueil			groups = "otg-vbus";
414b1bfdb66SPaul Cercueil		};
415b1bfdb66SPaul Cercueil
416b1bfdb66SPaul Cercueil		vbus-pin {
417b1bfdb66SPaul Cercueil			pins = "PB5";
418b1bfdb66SPaul Cercueil			bias-disable;
419b1bfdb66SPaul Cercueil		};
420b1bfdb66SPaul Cercueil	};
421b1bfdb66SPaul Cercueil
422b1bfdb66SPaul Cercueil	pins_pwm1: pwm1 {
423b1bfdb66SPaul Cercueil		function = "pwm1";
424b1bfdb66SPaul Cercueil		groups = "pwm1";
425b1bfdb66SPaul Cercueil	};
426b1bfdb66SPaul Cercueil
427b1bfdb66SPaul Cercueil	pins_pwm4: pwm4 {
428b1bfdb66SPaul Cercueil		function = "pwm4";
429b1bfdb66SPaul Cercueil		groups = "pwm4";
430b1bfdb66SPaul Cercueil	};
431b1bfdb66SPaul Cercueil};
432b1bfdb66SPaul Cercueil
433590c1f0fSPaul Cercueil&uart2 {
434b1bfdb66SPaul Cercueil	pinctrl-names = "default";
435b1bfdb66SPaul Cercueil	pinctrl-0 = <&pins_uart2>;
436b1bfdb66SPaul Cercueil
437590c1f0fSPaul Cercueil	status = "okay";
438590c1f0fSPaul Cercueil};
439590c1f0fSPaul Cercueil
440590c1f0fSPaul Cercueil&cgu {
441b1bfdb66SPaul Cercueil	/*
442b1bfdb66SPaul Cercueil	 * Put high-speed peripherals under PLL1, such that we can change the
443590c1f0fSPaul Cercueil	 * PLL0 frequency on demand without having to suspend peripherals.
444590c1f0fSPaul Cercueil	 * We use a rate of 432 MHz, which is the least common multiple of
445590c1f0fSPaul Cercueil	 * 27 MHz (required by TV encoder) and 48 MHz (required by USB host).
446b1bfdb66SPaul Cercueil	 * Put the GPU under PLL0 since we want a higher frequency.
447b1bfdb66SPaul Cercueil	 * Use the 32 kHz oscillator as the parent of the RTC for a higher
448b1bfdb66SPaul Cercueil	 * precision.
449590c1f0fSPaul Cercueil	 */
450590c1f0fSPaul Cercueil	assigned-clocks =
451590c1f0fSPaul Cercueil		<&cgu JZ4770_CLK_PLL1>,
452b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_GPU>,
453b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_RTC>,
454b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_UHC>,
455b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_LPCLK_MUX>,
456b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_MMC0_MUX>,
457b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_MMC1_MUX>;
458590c1f0fSPaul Cercueil	assigned-clock-parents =
459590c1f0fSPaul Cercueil		<0>,
460b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_PLL0>,
461b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_OSC32K>,
462b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_PLL1>,
463b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_PLL1>,
464b1bfdb66SPaul Cercueil		<&cgu JZ4770_CLK_PLL1>,
465590c1f0fSPaul Cercueil		<&cgu JZ4770_CLK_PLL1>;
466590c1f0fSPaul Cercueil	assigned-clock-rates =
467b1bfdb66SPaul Cercueil		<432000000>,
468b1bfdb66SPaul Cercueil		<600000000>;
469590c1f0fSPaul Cercueil};
470590c1f0fSPaul Cercueil
471590c1f0fSPaul Cercueil&uhc {
472590c1f0fSPaul Cercueil	/* The WiFi module is connected to the UHC. */
473590c1f0fSPaul Cercueil	status = "okay";
474590c1f0fSPaul Cercueil};
475967a7100SPaul Cercueil
476967a7100SPaul Cercueil&tcu {
477b1bfdb66SPaul Cercueil	/*
478b1bfdb66SPaul Cercueil	 * 750 kHz for the system timer and clocksource, 12 MHz for the OST,
479b1bfdb66SPaul Cercueil	 * and use RTC as the parent for the watchdog clock
480b1bfdb66SPaul Cercueil	 */
481b1bfdb66SPaul Cercueil	assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER2>,
482b1bfdb66SPaul Cercueil			  <&tcu TCU_CLK_OST>, <&tcu TCU_CLK_WDT>;
483b1bfdb66SPaul Cercueil	assigned-clock-parents = <0>, <0>, <0>, <&cgu JZ4770_CLK_RTC>;
484b1bfdb66SPaul Cercueil	assigned-clock-rates = <750000>, <750000>, <12000000>;
485967a7100SPaul Cercueil
486b1bfdb66SPaul Cercueil	/* PWM1 is in use, so use channel #2 for the clocksource */
487967a7100SPaul Cercueil	ingenic,pwm-channels-mask = <0xfa>;
488967a7100SPaul Cercueil};
489b1bfdb66SPaul Cercueil
490b1bfdb66SPaul Cercueil&usb_otg {
491b1bfdb66SPaul Cercueil	port {
492b1bfdb66SPaul Cercueil		usb_otg_ep: endpoint {
493b1bfdb66SPaul Cercueil			remote-endpoint = <&usb_ep>;
494b1bfdb66SPaul Cercueil		};
495b1bfdb66SPaul Cercueil	};
496b1bfdb66SPaul Cercueil};
497b1bfdb66SPaul Cercueil
498b1bfdb66SPaul Cercueil&otg_phy {
499b1bfdb66SPaul Cercueil	vcc-supply = <&ldo5>;
500b1bfdb66SPaul Cercueil};
501b1bfdb66SPaul Cercueil
502b1bfdb66SPaul Cercueil&rtc {
503b1bfdb66SPaul Cercueil	clocks = <&cgu JZ4770_CLK_RTC>;
504b1bfdb66SPaul Cercueil	clock-names = "rtc";
505b1bfdb66SPaul Cercueil
506b1bfdb66SPaul Cercueil	system-power-controller;
507b1bfdb66SPaul Cercueil};
508b1bfdb66SPaul Cercueil
509b1bfdb66SPaul Cercueil&mmc0 {
510b1bfdb66SPaul Cercueil	status = "okay";
511b1bfdb66SPaul Cercueil
512b1bfdb66SPaul Cercueil	bus-width = <4>;
513b1bfdb66SPaul Cercueil	max-frequency = <48000000>;
514b1bfdb66SPaul Cercueil	vmmc-supply = <&vcc>;
515b1bfdb66SPaul Cercueil	non-removable;
516b1bfdb66SPaul Cercueil
517b1bfdb66SPaul Cercueil	pinctrl-names = "default";
518b1bfdb66SPaul Cercueil	pinctrl-0 = <&pins_mmc0>;
519b1bfdb66SPaul Cercueil};
520b1bfdb66SPaul Cercueil
521b1bfdb66SPaul Cercueil&mmc1 {
522b1bfdb66SPaul Cercueil	status = "okay";
523b1bfdb66SPaul Cercueil
524b1bfdb66SPaul Cercueil	bus-width = <4>;
525b1bfdb66SPaul Cercueil	max-frequency = <48000000>;
526b1bfdb66SPaul Cercueil	cd-gpios = <&gpb 2 GPIO_ACTIVE_LOW>;
527b1bfdb66SPaul Cercueil	vmmc-supply = <&mmc1_power>;
528b1bfdb66SPaul Cercueil
529b1bfdb66SPaul Cercueil	pinctrl-names = "default";
530b1bfdb66SPaul Cercueil	pinctrl-0 = <&pins_mmc1>;
531b1bfdb66SPaul Cercueil};
532b1bfdb66SPaul Cercueil
533b1bfdb66SPaul Cercueil&lcd {
534b1bfdb66SPaul Cercueil	pinctrl-names = "default";
535b1bfdb66SPaul Cercueil	pinctrl-0 = <&pins_lcd>;
536b1bfdb66SPaul Cercueil
537b1bfdb66SPaul Cercueil	port {
538b1bfdb66SPaul Cercueil		panel_output: endpoint {
539b1bfdb66SPaul Cercueil			remote-endpoint = <&panel_input>;
540b1bfdb66SPaul Cercueil		};
541b1bfdb66SPaul Cercueil	};
542b1bfdb66SPaul Cercueil};
543