xref: /OK3568_Linux_fs/kernel/arch/mips/boot/dts/ingenic/rs90.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun/dts-v1/;
3*4882a593Smuzhiyun
4*4882a593Smuzhiyun#include "jz4725b.dtsi"
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
7*4882a593Smuzhiyun#include <dt-bindings/iio/adc/ingenic,adc.h>
8*4882a593Smuzhiyun#include <dt-bindings/input/linux-event-codes.h>
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun/ {
11*4882a593Smuzhiyun	compatible = "ylm,rs90", "ingenic,jz4725b";
12*4882a593Smuzhiyun	model = "RS-90";
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun	memory {
15*4882a593Smuzhiyun		device_type = "memory";
16*4882a593Smuzhiyun		reg = <0x0 0x2000000>;
17*4882a593Smuzhiyun	};
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	vcc: regulator {
20*4882a593Smuzhiyun		compatible = "regulator-fixed";
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun		regulator-name = "vcc";
23*4882a593Smuzhiyun		regulaor-min-microvolt = <3300000>;
24*4882a593Smuzhiyun		regulaor-max-microvolt = <3300000>;
25*4882a593Smuzhiyun		regulator-always-on;
26*4882a593Smuzhiyun	};
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun	backlight: backlight {
29*4882a593Smuzhiyun		compatible = "pwm-backlight";
30*4882a593Smuzhiyun		pwms = <&pwm 3 40000 0>;
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun		brightness-levels = <0 16 32 48 64 80 112 144 192 255>;
33*4882a593Smuzhiyun		default-brightness-level = <8>;
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun		pinctrl-names = "default";
36*4882a593Smuzhiyun		pinctrl-0 = <&pins_pwm3>;
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun		power-supply = <&vcc>;
39*4882a593Smuzhiyun	};
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun	keys@0 {
42*4882a593Smuzhiyun		compatible = "gpio-keys";
43*4882a593Smuzhiyun		#address-cells = <1>;
44*4882a593Smuzhiyun		#size-cells = <0>;
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun		key@0 {
47*4882a593Smuzhiyun			label = "D-pad up";
48*4882a593Smuzhiyun			linux,code = <KEY_UP>;
49*4882a593Smuzhiyun			gpios = <&gpc 10 GPIO_ACTIVE_LOW>;
50*4882a593Smuzhiyun		};
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun		key@1 {
53*4882a593Smuzhiyun			label = "D-pad down";
54*4882a593Smuzhiyun			linux,code = <KEY_DOWN>;
55*4882a593Smuzhiyun			gpios = <&gpc 11 GPIO_ACTIVE_LOW>;
56*4882a593Smuzhiyun		};
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun		key@2 {
59*4882a593Smuzhiyun			label = "D-pad left";
60*4882a593Smuzhiyun			linux,code = <KEY_LEFT>;
61*4882a593Smuzhiyun			gpios = <&gpb 31 GPIO_ACTIVE_LOW>;
62*4882a593Smuzhiyun		};
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun		key@3 {
65*4882a593Smuzhiyun			label = "D-pad right";
66*4882a593Smuzhiyun			linux,code = <KEY_RIGHT>;
67*4882a593Smuzhiyun			gpios = <&gpd 21 GPIO_ACTIVE_LOW>;
68*4882a593Smuzhiyun		};
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun		key@4 {
71*4882a593Smuzhiyun			label = "Button A";
72*4882a593Smuzhiyun			linux,code = <KEY_LEFTCTRL>;
73*4882a593Smuzhiyun			gpios = <&gpc 31 GPIO_ACTIVE_LOW>;
74*4882a593Smuzhiyun		};
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun		key@5 {
77*4882a593Smuzhiyun			label = "Button B";
78*4882a593Smuzhiyun			linux,code = <KEY_LEFTALT>;
79*4882a593Smuzhiyun			gpios = <&gpc 30 GPIO_ACTIVE_LOW>;
80*4882a593Smuzhiyun		};
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun		key@6 {
83*4882a593Smuzhiyun			label = "Right shoulder button";
84*4882a593Smuzhiyun			linux,code = <KEY_BACKSPACE>;
85*4882a593Smuzhiyun			gpios = <&gpc 12 GPIO_ACTIVE_LOW>;
86*4882a593Smuzhiyun			debounce-interval = <10>;
87*4882a593Smuzhiyun		};
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun		key@7 {
90*4882a593Smuzhiyun			label = "Start button";
91*4882a593Smuzhiyun			linux,code = <KEY_ENTER>;
92*4882a593Smuzhiyun			gpios = <&gpd 17 GPIO_ACTIVE_LOW>;
93*4882a593Smuzhiyun		};
94*4882a593Smuzhiyun	};
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun	keys@1 {
97*4882a593Smuzhiyun		compatible = "adc-keys";
98*4882a593Smuzhiyun		io-channels = <&adc INGENIC_ADC_AUX>;
99*4882a593Smuzhiyun		io-channel-names = "buttons";
100*4882a593Smuzhiyun		keyup-threshold-microvolt = <1400000>;
101*4882a593Smuzhiyun		poll-interval = <30>;
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun		key@0 {
104*4882a593Smuzhiyun			label = "Left shoulder button";
105*4882a593Smuzhiyun			linux,code = <KEY_TAB>;
106*4882a593Smuzhiyun			press-threshold-microvolt = <800000>;
107*4882a593Smuzhiyun		};
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun		key@1 {
110*4882a593Smuzhiyun			label = "Select button";
111*4882a593Smuzhiyun			linux,code = <KEY_ESC>;
112*4882a593Smuzhiyun			press-threshold-microvolt = <1100000>;
113*4882a593Smuzhiyun		};
114*4882a593Smuzhiyun	};
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun	amp: analog-amplifier {
117*4882a593Smuzhiyun		compatible = "simple-audio-amplifier";
118*4882a593Smuzhiyun		enable-gpios = <&gpc 15 GPIO_ACTIVE_HIGH>;
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun		VCC-supply = <&vcc>;
121*4882a593Smuzhiyun	};
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun	sound {
124*4882a593Smuzhiyun		compatible = "simple-audio-card";
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun		simple-audio-card,name = "rs90-audio";
127*4882a593Smuzhiyun		simple-audio-card,format = "i2s";
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun		simple-audio-card,widgets =
130*4882a593Smuzhiyun			"Speaker", "Speaker",
131*4882a593Smuzhiyun			"Headphone", "Headphones";
132*4882a593Smuzhiyun		simple-audio-card,routing =
133*4882a593Smuzhiyun			"INL", "LHPOUT",
134*4882a593Smuzhiyun			"INR", "RHPOUT",
135*4882a593Smuzhiyun			"Headphones", "LHPOUT",
136*4882a593Smuzhiyun			"Headphones", "RHPOUT",
137*4882a593Smuzhiyun			"Speaker", "OUTL",
138*4882a593Smuzhiyun			"Speaker", "OUTR";
139*4882a593Smuzhiyun		simple-audio-card,pin-switches = "Speaker";
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun		simple-audio-card,hp-det-gpio = <&gpd 16 GPIO_ACTIVE_LOW>;
142*4882a593Smuzhiyun		simple-audio-card,aux-devs = <&amp>;
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun		simple-audio-card,bitclock-master = <&dai_codec>;
145*4882a593Smuzhiyun		simple-audio-card,frame-master = <&dai_codec>;
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun		dai_cpu: simple-audio-card,cpu {
148*4882a593Smuzhiyun			sound-dai = <&aic>;
149*4882a593Smuzhiyun		};
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun		dai_codec: simple-audio-card,codec {
152*4882a593Smuzhiyun			sound-dai = <&codec>;
153*4882a593Smuzhiyun		};
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun	};
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun	usb_phy: usb-phy {
158*4882a593Smuzhiyun		compatible = "usb-nop-xceiv";
159*4882a593Smuzhiyun		#phy-cells = <0>;
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun		clocks = <&cgu JZ4725B_CLK_UDC_PHY>;
162*4882a593Smuzhiyun		clock-names = "main_clk";
163*4882a593Smuzhiyun		vcc-supply = <&vcc>;
164*4882a593Smuzhiyun	};
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun	panel {
167*4882a593Smuzhiyun		compatible = "sharp,ls020b1dd01d";
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun		backlight = <&backlight>;
170*4882a593Smuzhiyun		power-supply = <&vcc>;
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun		port {
173*4882a593Smuzhiyun			panel_input: endpoint {
174*4882a593Smuzhiyun				remote-endpoint = <&panel_output>;
175*4882a593Smuzhiyun			};
176*4882a593Smuzhiyun		};
177*4882a593Smuzhiyun	};
178*4882a593Smuzhiyun};
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun&ext {
181*4882a593Smuzhiyun	clock-frequency = <12000000>;
182*4882a593Smuzhiyun};
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun&rtc_dev {
185*4882a593Smuzhiyun	system-power-controller;
186*4882a593Smuzhiyun};
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun&udc {
189*4882a593Smuzhiyun	phys = <&usb_phy>;
190*4882a593Smuzhiyun};
191*4882a593Smuzhiyun
192*4882a593Smuzhiyun&pinctrl {
193*4882a593Smuzhiyun	pins_mmc1: mmc1 {
194*4882a593Smuzhiyun		function = "mmc1";
195*4882a593Smuzhiyun		groups = "mmc1-1bit";
196*4882a593Smuzhiyun	};
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun	pins_nemc: nemc {
199*4882a593Smuzhiyun		function = "nand";
200*4882a593Smuzhiyun		groups = "nand-cs1", "nand-cle-ale", "nand-fre-fwe";
201*4882a593Smuzhiyun	};
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun	pins_pwm3: pwm3 {
204*4882a593Smuzhiyun		function = "pwm3";
205*4882a593Smuzhiyun		groups = "pwm3";
206*4882a593Smuzhiyun		bias-disable;
207*4882a593Smuzhiyun	};
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun	pins_lcd: lcd {
210*4882a593Smuzhiyun		function = "lcd";
211*4882a593Smuzhiyun		groups = "lcd-8bit", "lcd-16bit", "lcd-special";
212*4882a593Smuzhiyun	};
213*4882a593Smuzhiyun};
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun&mmc0 {
216*4882a593Smuzhiyun	status = "disabled";
217*4882a593Smuzhiyun};
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun&mmc1 {
220*4882a593Smuzhiyun	bus-width = <1>;
221*4882a593Smuzhiyun	max-frequency = <48000000>;
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun	pinctrl-names = "default";
224*4882a593Smuzhiyun	pinctrl-0 = <&pins_mmc1>;
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun	cd-gpios = <&gpc 20 GPIO_ACTIVE_LOW>;
227*4882a593Smuzhiyun};
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun&uart {
230*4882a593Smuzhiyun	/*
231*4882a593Smuzhiyun	 * The pins for RX/TX are used for the right shoulder button and
232*4882a593Smuzhiyun	 * backlight PWM.
233*4882a593Smuzhiyun	 */
234*4882a593Smuzhiyun	status = "disabled";
235*4882a593Smuzhiyun};
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun&nemc {
238*4882a593Smuzhiyun	nandc: nand-controller@1 {
239*4882a593Smuzhiyun		compatible = "ingenic,jz4725b-nand";
240*4882a593Smuzhiyun		reg = <1 0 0x4000000>;
241*4882a593Smuzhiyun
242*4882a593Smuzhiyun		#address-cells = <1>;
243*4882a593Smuzhiyun		#size-cells = <0>;
244*4882a593Smuzhiyun
245*4882a593Smuzhiyun		ecc-engine = <&bch>;
246*4882a593Smuzhiyun
247*4882a593Smuzhiyun		ingenic,nemc-tAS = <10>;
248*4882a593Smuzhiyun		ingenic,nemc-tAH = <5>;
249*4882a593Smuzhiyun		ingenic,nemc-tBP = <10>;
250*4882a593Smuzhiyun		ingenic,nemc-tAW = <15>;
251*4882a593Smuzhiyun		ingenic,nemc-tSTRV = <100>;
252*4882a593Smuzhiyun
253*4882a593Smuzhiyun		pinctrl-names = "default";
254*4882a593Smuzhiyun		pinctrl-0 = <&pins_nemc>;
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun		rb-gpios = <&gpc 27 GPIO_ACTIVE_HIGH>;
257*4882a593Smuzhiyun
258*4882a593Smuzhiyun		nand@1 {
259*4882a593Smuzhiyun			reg = <1>;
260*4882a593Smuzhiyun
261*4882a593Smuzhiyun			nand-ecc-step-size = <512>;
262*4882a593Smuzhiyun			nand-ecc-strength = <8>;
263*4882a593Smuzhiyun			nand-ecc-mode = "hw";
264*4882a593Smuzhiyun			nand-is-boot-medium;
265*4882a593Smuzhiyun			nand-on-flash-bbt;
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun			partitions {
268*4882a593Smuzhiyun				compatible = "fixed-partitions";
269*4882a593Smuzhiyun				#address-cells = <1>;
270*4882a593Smuzhiyun				#size-cells = <1>;
271*4882a593Smuzhiyun
272*4882a593Smuzhiyun				partition@0 {
273*4882a593Smuzhiyun					label = "bootloader";
274*4882a593Smuzhiyun					reg = <0x0 0x20000>;
275*4882a593Smuzhiyun				};
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun				partition@20000 {
278*4882a593Smuzhiyun					label = "system";
279*4882a593Smuzhiyun					reg = <0x20000 0x0>;
280*4882a593Smuzhiyun				};
281*4882a593Smuzhiyun			};
282*4882a593Smuzhiyun		};
283*4882a593Smuzhiyun	};
284*4882a593Smuzhiyun};
285*4882a593Smuzhiyun
286*4882a593Smuzhiyun&cgu {
287*4882a593Smuzhiyun	/* Use 32kHz oscillator as the parent of the RTC clock */
288*4882a593Smuzhiyun	assigned-clocks = <&cgu JZ4725B_CLK_RTC>;
289*4882a593Smuzhiyun	assigned-clock-parents = <&cgu JZ4725B_CLK_OSC32K>;
290*4882a593Smuzhiyun};
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun&tcu {
293*4882a593Smuzhiyun	/*
294*4882a593Smuzhiyun	 * 750 kHz for the system timer and clocksource, and use RTC as the
295*4882a593Smuzhiyun	 * parent for the watchdog clock.
296*4882a593Smuzhiyun	 */
297*4882a593Smuzhiyun	assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>, <&tcu TCU_CLK_WDT>;
298*4882a593Smuzhiyun	assigned-clock-parents = <0>, <0>, <&cgu JZ4725B_CLK_RTC>;
299*4882a593Smuzhiyun	assigned-clock-rates = <750000>, <750000>;
300*4882a593Smuzhiyun};
301*4882a593Smuzhiyun
302*4882a593Smuzhiyun&lcd {
303*4882a593Smuzhiyun	pinctrl-names = "default";
304*4882a593Smuzhiyun	pinctrl-0 = <&pins_lcd>;
305*4882a593Smuzhiyun};
306*4882a593Smuzhiyun
307*4882a593Smuzhiyun&lcd_ports {
308*4882a593Smuzhiyun	port@0 {
309*4882a593Smuzhiyun		reg = <0>;
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun		panel_output: endpoint {
312*4882a593Smuzhiyun			remote-endpoint = <&panel_input>;
313*4882a593Smuzhiyun		};
314*4882a593Smuzhiyun	};
315*4882a593Smuzhiyun};
316