1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Device Tree for the TVK1281618 R2 user interface board (UIB)
4 */
5
6#include <dt-bindings/interrupt-controller/irq.h>
7#include <dt-bindings/input/input.h>
8
9/ {
10	gpio_keys {
11		compatible = "gpio-keys";
12		#address-cells = <1>;
13		#size-cells = <0>;
14		vdd-supply = <&ab8500_ldo_aux1_reg>;
15		pinctrl-names = "default";
16		pinctrl-0 = <&prox_tvk_mode>, <&hall_tvk_mode>;
17
18		button@139 {
19			/* Proximity sensor */
20			gpios = <&gpio6 25 GPIO_ACTIVE_HIGH>;
21			linux,code = <11>; /* SW_FRONT_PROXIMITY */
22			label = "SFH7741 Proximity Sensor";
23		};
24		button@145 {
25			/* Hall sensor */
26			gpios = <&gpio4 17 GPIO_ACTIVE_HIGH>;
27			linux,code = <0>; /* SW_LID */
28			label = "HED54XXU11 Hall Effect Sensor";
29		};
30	};
31
32	soc {
33		i2c@80004000 {
34			tc35893@44 {
35				compatible = "toshiba,tc35893";
36				reg = <0x44>;
37				interrupt-parent = <&gpio6>;
38				interrupts = <26 IRQ_TYPE_EDGE_RISING>;
39				pinctrl-names = "default";
40				pinctrl-0 = <&tc35893_tvk_mode>;
41
42				interrupt-controller;
43				#interrupt-cells = <1>;
44				status = "disabled";
45
46				tc3589x_gpio {
47					compatible = "toshiba,tc3589x-gpio";
48					interrupts = <0>;
49
50					interrupt-controller;
51					#interrupt-cells = <2>;
52					gpio-controller;
53					#gpio-cells = <2>;
54				};
55				tc3589x_keypad {
56					compatible = "toshiba,tc3589x-keypad";
57					interrupts = <6>;
58					debounce-delay-ms = <4>;
59					keypad,num-columns = <8>;
60					keypad,num-rows = <8>;
61					linux,no-autorepeat;
62					wakeup-source;
63					linux,keymap = <MATRIX_KEY(3, 1, KEY_END)>,
64						       <MATRIX_KEY(4, 1, KEY_HOME)>,
65						       <MATRIX_KEY(6, 4, KEY_VOLUMEDOWN)>,
66						       <MATRIX_KEY(4, 2, KEY_EMAIL)>,
67						       <MATRIX_KEY(3, 3, KEY_RIGHT)>,
68						       <MATRIX_KEY(2, 5, KEY_BACKSPACE)>,
69						       <MATRIX_KEY(6, 7, KEY_MENU)>,
70						       <MATRIX_KEY(5, 0, KEY_ENTER)>,
71						       <MATRIX_KEY(4, 3, KEY_0)>,
72						       <MATRIX_KEY(3, 4, KEY_DOT)>,
73						       <MATRIX_KEY(5, 2, KEY_UP)>,
74						       <MATRIX_KEY(3, 5, KEY_DOWN)>,
75						       <MATRIX_KEY(4, 5, KEY_SEND)>,
76						       <MATRIX_KEY(0, 5, KEY_BACK)>,
77						       <MATRIX_KEY(6, 2, KEY_VOLUMEUP)>,
78						       <MATRIX_KEY(1, 3, KEY_SPACE)>,
79						       <MATRIX_KEY(7, 6, KEY_LEFT)>,
80						       <MATRIX_KEY(5, 5, KEY_SEARCH)>;
81				};
82			};
83		};
84
85		i2c@80128000 {
86			accelerometer@18 {
87				/* Accelerometer */
88				compatible = "st,lsm303dlh-accel";
89				st,drdy-int-pin = <1>;
90				drive-open-drain;
91				reg = <0x18>;
92				vdd-supply = <&ab8500_ldo_aux1_reg>;
93				vddio-supply = <&db8500_vsmps2_reg>;
94				pinctrl-names = "default";
95				pinctrl-0 = <&accel_tvk_mode>;
96				/*
97				 * These interrupts cannot be used: the other component
98				 * ST-Micro L3D4200D gyro that is connected to the same lines
99				 * cannot set its DRDY line to open drain, so it cannot be
100				 * shared with other peripherals. The should be defined for
101				 * the falling edge if they could be wired together.
102				 *
103				 * interrupts-extended =
104				 * <&gpio1 0 IRQ_TYPE_EDGE_FALLING>,
105				 * <&gpio2 19 IRQ_TYPE_EDGE_FALLING>;
106				 */
107			};
108			magnetometer@1e {
109				/* Magnetometer */
110				compatible = "st,lsm303dlh-magn";
111				reg = <0x1e>;
112				vdd-supply = <&ab8500_ldo_aux1_reg>;
113				vddio-supply = <&db8500_vsmps2_reg>;
114				/*
115				 * These interrupts cannot be used: the other component
116				 * ST-Micro L3D4200D gyro that is connected to the same lines
117				 * cannot set its DRDY line to open drain, so it cannot be
118				 * shared with other peripherals. The should be defined for
119				 * the falling edge if they could be wired together.
120				 *
121				 * interrupts-extended =
122				 * <&gpio1 0 IRQ_TYPE_EDGE_FALLING>,
123				 * <&gpio2 19 IRQ_TYPE_EDGE_FALLING>;
124				 */
125			};
126			accelerometer@1c {
127				/* Accelerometer */
128				compatible = "st,lis331dl-accel";
129				st,drdy-int-pin = <1>;
130				reg = <0x1c>;
131				vdd-supply = <&ab8500_ldo_aux1_reg>;
132				vddio-supply = <&db8500_vsmps2_reg>;
133				pinctrl-names = "default";
134				pinctrl-0 = <&accel_tvk_mode>;
135				interrupt-parent = <&gpio2>;
136				/* INT2 would need to be open drain */
137				interrupts = <18 IRQ_TYPE_EDGE_RISING>,
138					     <19 IRQ_TYPE_EDGE_RISING>;
139			};
140			magnetometer@f {
141				/* Magnetometer */
142				compatible = "asahi-kasei,ak8974";
143				reg = <0x0f>;
144				avdd-supply = <&ab8500_ldo_aux1_reg>;
145				dvdd-supply = <&db8500_vsmps2_reg>;
146				pinctrl-names = "default";
147				pinctrl-0 = <&gyro_magn_tvk_mode>;
148				/*
149				 * These interrupts cannot be used: the other component
150				 * ST-Micro L3D4200D gyro that is connected to the same lines
151				 * cannot set its DRDY line to open drain, so it cannot be
152				 * shared with other peripherals. The should be defined for
153				 * the falling edge if they could be wired together.
154				 *
155				 * interrupts-extended =
156				 * <&gpio1 0 IRQ_TYPE_EDGE_FALLING>,
157				 * <&gpio0 31 IRQ_TYPE_EDGE_FALLING>;
158				 */
159			};
160			gyroscope@68 {
161				/* Gyroscope */
162				compatible = "st,l3g4200d-gyro";
163				st,drdy-int-pin = <2>;
164				reg = <0x68>;
165				vdd-supply = <&ab8500_ldo_aux1_reg>;
166				vddio-supply = <&db8500_vsmps2_reg>;
167				pinctrl-names = "default";
168				pinctrl-0 = <&gyro_magn_tvk_mode>;
169				interrupts-extended =
170				<&gpio1 0 IRQ_TYPE_EDGE_RISING>,
171				<&gpio0 31 IRQ_TYPE_EDGE_RISING>;
172			};
173			pressure@5c {
174				/* Barometer/pressure sensor */
175				compatible = "st,lps001wp-press";
176				reg = <0x5c>;
177				vdd-supply = <&ab8500_ldo_aux1_reg>;
178				vddio-supply = <&db8500_vsmps2_reg>;
179			};
180		};
181		i2c@80110000 {
182			synaptics@4b {
183				/* Synaptics RMI4 TM1217 touchscreen */
184				compatible = "syna,rmi4-i2c";
185				#address-cells = <1>;
186				#size-cells = <0>;
187				reg = <0x4b>;
188				vdd-supply = <&ab8500_ldo_aux1_reg>;
189				vddio-supply = <&db8500_vsmps2_reg>;
190				pinctrl-names = "default";
191				pinctrl-0 = <&synaptics_tvk_mode>;
192				interrupt-parent = <&gpio2>;
193				interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
194
195				rmi4-f01@1 {
196					reg = <0x1>;
197					syna,nosleep = <1>;
198				};
199				rmi4-f11@11 {
200					reg = <0x11>;
201					syna,sensor-type = <1>;
202					/* This is a landscape display */
203					touchscreen-swapped-x-y;
204				};
205			};
206		};
207		mcde@a0350000 {
208			status = "okay";
209
210			dsi@a0351000 {
211				panel {
212					compatible = "samsung,s6d16d0";
213					reg = <0>;
214					vdd1-supply = <&ab8500_ldo_aux1_reg>;
215					reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
216				};
217			};
218		};
219		pinctrl {
220			prox {
221				prox_tvk_mode: prox_tvk {
222					tvk_cfg {
223						pins = "GPIO217_AH12";
224						ste,config = <&gpio_in_pu>;
225					};
226				};
227			};
228			hall {
229				hall_tvk_mode: hall_tvk {
230					tvk_cfg {
231						pins = "GPIO145_C13";
232						ste,config = <&gpio_in_pu>;
233					};
234				};
235			};
236			tc35893 {
237				/* IRQ from the TC35893 */
238				tc35893_tvk_mode: tc35893_tvk {
239					tvk_cfg {
240						pins = "GPIO218_AH11";
241						ste,config = <&gpio_in_pu>;
242					};
243				};
244			};
245			accelerometer {
246				accel_tvk_mode: accel_tvk {
247					/* Accelerometer interrupt lines 1 & 2 */
248					tvk_cfg {
249						pins = "GPIO82_C1", "GPIO83_D3";
250						ste,config = <&gpio_in_pd>;
251					};
252				};
253			};
254			gyroscope {
255				/*
256				 * These lines are shared between Gyroscope l3g400dh
257				 * and AK8974 magnetometer.
258				 */
259				gyro_magn_tvk_mode: gyro_magn_tvk {
260					 /* GPIO 31 used for INT pull down the line */
261					tvk_cfg1 {
262						pins = "GPIO31_V3";
263						ste,config = <&gpio_in_pd>;
264					};
265					/* GPIO 32 used for DRDY, pull this down */
266					tvk_cfg2 {
267						pins = "GPIO32_V2";
268						ste,config = <&gpio_in_pd>;
269					};
270				};
271			};
272			synaptics {
273				synaptics_tvk_mode: synaptics_tvk {
274					/* Touchscreen uses GPIO 84 */
275					tvk_cfg1 {
276						pins = "GPIO84_C2";
277						ste,config = <&gpio_in_pu>;
278					};
279				};
280			};
281		};
282	};
283};
284