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