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