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: port-expander@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			wakeup-source;
109			pinctrl-names = "default";
110			pinctrl-0 = <&stmpe2401_1_nhk_mode>;
111			stmpe_gpio43: gpio {
112				compatible = "st,stmpe-gpio";
113				gpio-controller;
114				#gpio-cells = <2>;
115				interrupt-controller;
116				#interrupt-cells = <2>;
117				/* Some pins in alternate functions */
118				st,norequest-mask = <0xf0f002>;
119			};
120			keyboard-controller {
121				compatible = "st,stmpe-keypad";
122				debounce-interval = <64>;
123				st,scan-count = <8>;
124				st,no-autorepeat;
125				keypad,num-rows = <8>;
126				keypad,num-columns = <8>;
127				linux,keymap = <0x00020072 // Vol down
128						0x00030073 // Vol up
129						0x0100009e // Back
130						0x010100e3 // TV out
131						0x01020098 // Lock
132						0x0103013b // Start
133						0x020000a3 // Next
134						0x020100a4 // Play
135						0x020200a5 // Prev
136						0x02030160 // OK
137						0x03000069 // Left
138						0x0301006a // Right
139						0x03020067 // Up
140						0x0303006c>; // Down
141			};
142			stmpe0_pwm: pwm {
143				compatible = "st,stmpe-pwm";
144				#pwm-cells = <2>;
145			};
146		};
147		stmpe1: port-expander@44 {
148			compatible = "st,stmpe2401";
149			reg = <0x44>;
150			reset-gpios = <&gpio2 15 GPIO_ACTIVE_LOW>; // GPIO79
151			interrupts = <14 IRQ_TYPE_EDGE_FALLING>; // GPIO78
152			interrupt-parent = <&gpio2>;
153			wakeup-source;
154			pinctrl-names = "default";
155			pinctrl-0 = <&stmpe2401_2_nhk_mode>;
156			stmpe_gpio44: gpio {
157				compatible = "st,stmpe-gpio";
158				gpio-controller;
159				#gpio-cells = <2>;
160				interrupt-controller;
161				#interrupt-cells = <2>;
162				/*
163				 * This will turn off SATA so that MMC/SD
164				 * can thrive
165				 */
166				mmcsd-hog {
167					gpio-hog;
168					gpios = <2 0x0>;
169					output-low;
170					line-name = "SATA EN";
171				};
172			};
173		};
174	};
175
176	amba {
177		clcd@10120000 {
178			status = "okay";
179			pinctrl-names = "default";
180			pinctrl-0 = <&clcd_24bit_mux>;
181			port {
182				nomadik_clcd: endpoint {
183					remote-endpoint = <&nomadik_clcd_panel>;
184					arm,pl11x,tft-r0g0b0-pads = <16 8 0>;
185				};
186			};
187
188		};
189
190		/* Activate RX/TX and CTS/RTS on UART 0 */
191		uart0: serial@101fd000 {
192			pinctrl-names = "default";
193			pinctrl-0 = <&uart0_nhk_mode>;
194			status = "okay";
195		};
196		mmcsd: mmc@101f6000 {
197			cd-gpios = <&stmpe_gpio44 7 GPIO_ACTIVE_LOW>;
198			wp-gpios = <&stmpe_gpio44 18 GPIO_ACTIVE_HIGH>;
199		};
200	};
201
202	spi {
203		compatible = "spi-gpio";
204		#address-cells = <1>;
205		#size-cells = <0>;
206
207		/*
208		 * As we're dealing with 3wire SPI, we only define SCK
209		 * and MOSI (in the spec MOSI is called "SDA").
210		 */
211		sck-gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
212		mosi-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
213		cs-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
214		num-chipselects = <1>;
215
216		/*
217		 * WVGA connector 21
218		 * WVGA (800x480): 4.3" TPG110 TDO43MTEA2 24-bit RGB
219		 * with TPO touch screen.
220		  */
221		panel: display@0 {
222			/*
223			 * The TPO display driver is connected to a
224			 * 5.7" OSD OSD057VA01CT TFT display.
225			 */
226			compatible = "tpo,tpg110";
227			reg = <0>;
228			spi-3wire;
229			/* 320 ns min period ~= 3 MHz */
230			spi-max-frequency = <3000000>;
231			/* Width and height from the OSD data sheet */
232			width-mm = <116>;
233			height-mm = <87>;
234			grestb-gpios = <&stmpe_gpio44 5 GPIO_ACTIVE_LOW>;
235			backlight = <&bl>;
236
237			port {
238				nomadik_clcd_panel: endpoint {
239					remote-endpoint = <&nomadik_clcd>;
240				};
241			};
242		};
243	};
244
245	bl: backlight {
246		compatible = "pwm-backlight";
247		pwms = <&stmpe0_pwm 0 500000>;
248		pwm-names = "backlight";
249		brightness-levels = <
250			0  1  2  3  4  5  6  7  8  9
251			10 11 12 13 14 15 16 17 18 19
252			20 21 22 23 24 25 26 27 28 29
253			30 31 32 33 34 35 36 37 38 39
254			40 41 42 43 44 45 46 47 48 49
255			50 51 52 53 54 55 56 57 58 59
256			60 61 62 63 64 65 66 67 68 69
257			70 71 72 73 74 75 76 77 78 79
258			80 81 82 83 84 85 86 87 88 89
259			90 91 92 93 94 95 96 97 98 99
260			100
261		>;
262		default-brightness-level = <100>;
263	};
264};
265