1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright 2012 ST-Ericsson AB
4 *
5 * Device Tree for the TVK1281618 UIB
6 */
7
8#include <dt-bindings/interrupt-controller/irq.h>
9
10/ {
11	gpio_keys {
12		compatible = "gpio-keys";
13		#address-cells = <1>;
14		#size-cells = <0>;
15		vdd-supply = <&ab8500_ldo_aux1_reg>;
16		pinctrl-names = "default";
17		pinctrl-0 = <&prox_tvk_mode>, <&hall_tvk_mode>;
18
19		button@139 {
20			/* Proximity sensor */
21			gpios = <&gpio6 25 GPIO_ACTIVE_HIGH>;
22			linux,code = <11>; /* SW_FRONT_PROXIMITY */
23			label = "SFH7741 Proximity Sensor";
24		};
25		button@145 {
26			/* Hall sensor */
27			gpios = <&gpio4 17 GPIO_ACTIVE_HIGH>;
28			linux,code = <0>; /* SW_LID */
29			label = "HED54XXU11 Hall Effect Sensor";
30		};
31	};
32
33	soc {
34		i2c@80004000 {
35			tc35893@44 {
36				compatible = "toshiba,tc35893";
37				reg = <0x44>;
38				interrupt-parent = <&gpio6>;
39				interrupts = <26 IRQ_TYPE_EDGE_RISING>;
40				pinctrl-names = "default";
41				pinctrl-0 = <&tc35893_tvk_mode>;
42
43				interrupt-controller;
44				#interrupt-cells = <1>;
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 = <0x0301006b
64						        0x04010066
65							0x06040072
66							0x040200d7
67							0x0303006a
68							0x0205000e
69							0x0607008b
70							0x0500001c
71							0x0403000b
72							0x03040034
73							0x05020067
74							0x0305006c
75							0x040500e7
76							0x0005009e
77							0x06020073
78							0x01030039
79							0x07060069
80							0x050500d9>;
81				};
82			};
83		};
84		/* Sensors mounted on this board variant */
85		i2c@80128000 {
86			lsm303dlh@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			lsm303dlh@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			lis331dl@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			ak8974@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			l3g4200d@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			lsp001wm@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
182		i2c@80110000 {
183			synaptics@4b {
184				/* Synaptics RMI4 TM1217 touchscreen */
185				compatible = "syna,rmi4-i2c";
186				#address-cells = <1>;
187				#size-cells = <0>;
188				reg = <0x4b>;
189				vdd-supply = <&ab8500_ldo_aux1_reg>;
190				vddio-supply = <&db8500_vsmps2_reg>;
191				pinctrl-names = "default";
192				pinctrl-0 = <&synaptics_tvk_mode>;
193				interrupt-parent = <&gpio2>;
194				interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
195
196				rmi-f01@1 {
197					reg = <0x1>;
198					syna,nosleep = <1>;
199				};
200				rmi-f11@11 {
201					reg = <0x11>;
202					touchscreen-inverted-x;
203					syna,sensor-type = <1>;
204				};
205			};
206		};
207
208		pinctrl {
209			/* Pull up this GPIO pin */
210			tc35893 {
211				tc35893_tvk_mode: tc35893_tvk {
212					tvk_cfg {
213						pins = "GPIO218_AH11";
214						ste,config = <&gpio_in_pu>;
215					};
216				};
217			};
218			prox {
219				prox_tvk_mode: prox_tvk {
220					tvk_cfg {
221						pins = "GPIO217_AH12";
222						ste,config = <&gpio_in_pu>;
223					};
224				};
225			};
226			hall {
227				hall_tvk_mode: hall_tvk {
228					tvk_cfg {
229						pins = "GPIO145_C13";
230						ste,config = <&gpio_in_pu>;
231					};
232				};
233			};
234			accelerometer {
235				accel_tvk_mode: accel_tvk {
236					/* Accelerometer interrupt lines 1 & 2 */
237					tvk_cfg {
238						pins = "GPIO82_C1", "GPIO83_D3";
239						ste,config = <&gpio_in_pd>;
240					};
241				};
242			};
243			gyroscope {
244				/*
245				 * These lines are shared between Gyroscope l3g400dh
246				 * and AK8974 magnetometer.
247				 */
248				gyro_magn_tvk_mode: gyro_magn_tvk {
249					 /* GPIO 31 used for INT pull down the line */
250					tvk_cfg1 {
251						pins = "GPIO31_V3";
252						ste,config = <&gpio_in_pd>;
253					};
254					/* GPIO 32 used for DRDY, pull this down */
255					tvk_cfg2 {
256						pins = "GPIO32_V2";
257						ste,config = <&gpio_in_pd>;
258					};
259				};
260			};
261			synaptics {
262				synaptics_tvk_mode: synaptics_tvk {
263					/* Touchscreen uses GPIO 84 */
264					tvk_cfg1 {
265						pins = "GPIO84_C2";
266						ste,config = <&gpio_in_pu>;
267					};
268				};
269			};
270		};
271
272		mcde@a0350000 {
273			status = "okay";
274
275			dsi@a0351000 {
276				panel {
277					compatible = "samsung,s6d16d0";
278					reg = <0>;
279					vdd1-supply = <&ab8500_ldo_aux1_reg>;
280					reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
281				};
282			};
283		};
284	};
285};
286