1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree for the ST Microelectronics Nomadik NHK8815 board
4 */
5
6/dts-v1/;
7#include <dt-bindings/interrupt-controller/irq.h>
8#include <dt-bindings/gpio/gpio.h>
9#include "ste-nomadik-stn8815.dtsi"
10
11/ {
12	model = "Nomadik STN8815NHK";
13	compatible = "st,nomadik-nhk-15";
14
15	chosen {
16		bootargs = "root=/dev/ram0 console=ttyAMA1,115200n8 earlyprintk";
17	};
18
19	aliases {
20		serial0 = &uart0;
21		serial1 = &uart1;
22		stmpe-i2c0 = &stmpe0;
23		stmpe-i2c1 = &stmpe1;
24	};
25
26	pinctrl {
27		uart0 {
28			uart0_nhk_mode: uart0_mux {
29				u0_default_mux {
30					function = "u0";
31					groups = "u0txrx_a_1", "u0ctsrts_a_1";
32				};
33			};
34		};
35
36		stmpe2401_1 {
37			stmpe2401_1_nhk_mode: stmpe2401_1_nhk {
38				nhk_cfg1 {
39					pins = "GPIO76_B20"; // IRQ line
40					ste,input = <0>;
41				};
42				nhk_cfg2 {
43					pins = "GPIO77_B8"; // reset line
44					ste,output = <1>;
45				};
46			};
47		};
48		stmpe2401_2 {
49			stmpe2401_2_nhk_mode: stmpe2401_2_nhk {
50				nhk_cfg1 {
51					pins = "GPIO78_A8"; // IRQ line
52					ste,input = <0>;
53				};
54				nhk_cfg2 {
55					pins = "GPIO79_C9"; // reset line
56					ste,output = <1>;
57				};
58			};
59		};
60		lis3lv02dl {
61			lis3lv02dl_nhk_mode: lis3lv02dl_nhk {
62				nhk_cfg1 {
63					pins = "GPIO82_C10"; // IRQ line
64					ste,input = <0>;
65				};
66			};
67		};
68	};
69	src@101e0000 {
70		/* These chrystal outputs are not used on this board */
71		disable-sxtalo;
72		disable-mxtalo;
73	};
74
75	/* This is where the interrupt is routed on the NHK-15 debug board */
76	external-bus@34000000 {
77		compatible = "simple-bus";
78		reg = <0x34000000 0x1000000>;
79		#address-cells = <1>;
80		#size-cells = <1>;
81		ranges = <0 0x34000000 0x1000000>;
82		ethernet@300 {
83			compatible = "smsc,lan91c111";
84			reg = <0x300 0x0fd00>;
85			reg-io-width = <2>;
86			reset-gpios = <&stmpe_gpio44 10 GPIO_ACTIVE_HIGH>;
87			interrupt-parent = <&stmpe_gpio44>;
88			interrupts = <11 IRQ_TYPE_EDGE_RISING>;
89		};
90	};
91
92	i2c0 {
93		lis3lv02dl@1d {
94			/* Accelerometer */
95			compatible = "st,lis3lv02dl-accel";
96			interrupt-parent = <&gpio2>;
97			interrupts = <18 IRQ_TYPE_EDGE_RISING>; // GPIO 82
98			pinctrl-0 = <&lis3lv02dl_nhk_mode>;
99			pinctrl-names = "default";
100			reg = <0x1d>;
101		};
102		stmpe0: stmpe2401@43 {
103			compatible = "st,stmpe2401";
104			reg = <0x43>;
105			reset-gpios = <&gpio2 13 GPIO_ACTIVE_LOW>; // GPIO77
106			interrupts = <12 IRQ_TYPE_EDGE_FALLING>; // GPIO76
107			interrupt-parent = <&gpio2>;
108			interrupt-controller;
109			wakeup-source;
110			pinctrl-names = "default";
111			pinctrl-0 = <&stmpe2401_1_nhk_mode>;
112			stmpe_gpio43: stmpe_gpio {
113				compatible = "st,stmpe-gpio";
114				gpio-controller;
115				#gpio-cells = <2>;
116				interrupt-controller;
117				#interrupt-cells = <2>;
118				/* Some pins in alternate functions */
119				st,norequest-mask = <0xf0f002>;
120			};
121			stmpe_keypad {
122				compatible = "st,stmpe-keypad";
123				debounce-interval = <64>;
124				st,scan-count = <8>;
125				st,no-autorepeat;
126				keypad,num-rows = <8>;
127				keypad,num-columns = <8>;
128				linux,keymap = <0x00020072 // Vol down
129						0x00030073 // Vol up
130						0x0100009e // Back
131						0x010100e3 // TV out
132						0x01020098 // Lock
133						0x0103013b // Start
134						0x020000a3 // Next
135						0x020100a4 // Play
136						0x020200a5 // Prev
137						0x02030160 // OK
138						0x03000069 // Left
139						0x0301006a // Right
140						0x03020067 // Up
141						0x0303006c>; // Down
142			};
143			stmpe0_pwm: stmpe_pwm {
144				compatible = "st,stmpe-pwm";
145				#pwm-cells = <2>;
146			};
147		};
148		stmpe1: stmpe2401@44 {
149			compatible = "st,stmpe2401";
150			reg = <0x44>;
151			reset-gpios = <&gpio2 15 GPIO_ACTIVE_LOW>; // GPIO79
152			interrupts = <14 IRQ_TYPE_EDGE_FALLING>; // GPIO78
153			interrupt-parent = <&gpio2>;
154			interrupt-controller;
155			wakeup-source;
156			pinctrl-names = "default";
157			pinctrl-0 = <&stmpe2401_2_nhk_mode>;
158			stmpe_gpio44: stmpe_gpio {
159				compatible = "st,stmpe-gpio";
160				gpio-controller;
161				#gpio-cells = <2>;
162				interrupt-controller;
163				#interrupt-cells = <2>;
164				/*
165				 * This will turn off SATA so that MMC/SD
166				 * can thrive
167				 */
168				mmcsd-gpio {
169					gpio-hog;
170					gpios = <2 0x0>;
171					output-low;
172					line-name = "SATA EN";
173				};
174			};
175		};
176	};
177
178	amba {
179		clcd@10120000 {
180			status = "okay";
181			pinctrl-names = "default";
182			pinctrl-0 = <&clcd_24bit_mux>;
183			port {
184				nomadik_clcd: endpoint {
185					remote-endpoint = <&nomadik_clcd_panel>;
186					arm,pl11x,tft-r0g0b0-pads = <16 8 0>;
187				};
188			};
189
190		};
191
192		/* Activate RX/TX and CTS/RTS on UART 0 */
193		uart0: uart@101fd000 {
194			pinctrl-names = "default";
195			pinctrl-0 = <&uart0_nhk_mode>;
196			status = "okay";
197		};
198		mmcsd: mmc@101f6000 {
199			cd-gpios = <&stmpe_gpio44 7 GPIO_ACTIVE_LOW>;
200			wp-gpios = <&stmpe_gpio44 18 GPIO_ACTIVE_HIGH>;
201		};
202	};
203
204	spi {
205		compatible = "spi-gpio";
206		#address-cells = <1>;
207		#size-cells = <0>;
208
209		/*
210		 * As we're dealing with 3wire SPI, we only define SCK
211		 * and MOSI (in the spec MOSI is called "SDA").
212		 */
213		gpio-sck = <&gpio0 5 GPIO_ACTIVE_HIGH>;
214		gpio-mosi = <&gpio0 4 GPIO_ACTIVE_HIGH>;
215		cs-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
216		num-chipselects = <1>;
217
218		/*
219		 * WVGA connector 21
220		 * WVGA (800x480): 4.3" TPG110 TDO43MTEA2 24-bit RGB
221		 * with TPO touch screen.
222		  */
223		panel: display@0 {
224			/*
225			 * The TPO display driver is connected to a
226			 * 5.7" OSD OSD057VA01CT TFT display.
227			 */
228			compatible = "tpo,tpg110";
229			reg = <0>;
230			spi-3wire;
231			/* 320 ns min period ~= 3 MHz */
232			spi-max-frequency = <3000000>;
233			/* Width and height from the OSD data sheet */
234			width-mm = <116>;
235			height-mm = <87>;
236			grestb-gpios = <&stmpe_gpio44 5 GPIO_ACTIVE_LOW>;
237			backlight = <&bl>;
238
239			port {
240				nomadik_clcd_panel: endpoint {
241					remote-endpoint = <&nomadik_clcd>;
242				};
243			};
244		};
245	};
246
247	bl: backlight {
248		compatible = "pwm-backlight";
249		pwms = <&stmpe0_pwm 0 500000>;
250		pwm-names = "backlight";
251		brightness-levels = <
252			0  1  2  3  4  5  6  7  8  9
253			10 11 12 13 14 15 16 17 18 19
254			20 21 22 23 24 25 26 27 28 29
255			30 31 32 33 34 35 36 37 38 39
256			40 41 42 43 44 45 46 47 48 49
257			50 51 52 53 54 55 56 57 58 59
258			60 61 62 63 64 65 66 67 68 69
259			70 71 72 73 74 75 76 77 78 79
260			80 81 82 83 84 85 86 87 88 89
261			90 91 92 93 94 95 96 97 98 99
262			100
263		>;
264		default-brightness-level = <100>;
265	};
266};
267