1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Device Tree for the TVK1281618 R3 user interface board (UIB)
4 * also known as the "CYTTSP board"
5 */
6
7#include <dt-bindings/interrupt-controller/irq.h>
8#include <dt-bindings/input/input.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 = <&hall_tvk_mode>;
18
19		button@145 {
20			/* Hall sensor */
21			gpios = <&gpio4 17 GPIO_ACTIVE_HIGH>;
22			linux,code = <0>; /* SW_LID */
23			label = "HED54XXU11 Hall Effect Sensor";
24		};
25	};
26
27	soc {
28		i2c@80004000 {
29			tc35893@44 {
30				compatible = "toshiba,tc35893";
31				reg = <0x44>;
32				interrupt-parent = <&gpio2>;
33				interrupts = <0 IRQ_TYPE_EDGE_RISING>;
34				pinctrl-names = "default";
35				pinctrl-0 = <&tc35893_tvk_mode>;
36
37				interrupt-controller;
38				#interrupt-cells = <1>;
39				status = "disabled";
40
41				tc3589x_gpio {
42					compatible = "toshiba,tc3589x-gpio";
43					interrupts = <0>;
44
45					interrupt-controller;
46					#interrupt-cells = <2>;
47					gpio-controller;
48					#gpio-cells = <2>;
49				};
50				tc3589x_keypad {
51					compatible = "toshiba,tc3589x-keypad";
52					interrupts = <6>;
53					debounce-delay-ms = <4>;
54					keypad,num-columns = <8>;
55					keypad,num-rows = <8>;
56					linux,no-autorepeat;
57					wakeup-source;
58					linux,keymap = <MATRIX_KEY(3, 1, KEY_END)>,
59						       <MATRIX_KEY(4, 1, KEY_HOME)>,
60						       <MATRIX_KEY(6, 4, KEY_VOLUMEDOWN)>,
61						       <MATRIX_KEY(4, 2, KEY_EMAIL)>,
62						       <MATRIX_KEY(3, 3, KEY_RIGHT)>,
63						       <MATRIX_KEY(2, 5, KEY_BACKSPACE)>,
64						       <MATRIX_KEY(6, 7, KEY_MENU)>,
65						       <MATRIX_KEY(5, 0, KEY_ENTER)>,
66						       <MATRIX_KEY(4, 3, KEY_0)>,
67						       <MATRIX_KEY(3, 4, KEY_DOT)>,
68						       <MATRIX_KEY(5, 2, KEY_UP)>,
69						       <MATRIX_KEY(3, 5, KEY_DOWN)>,
70						       <MATRIX_KEY(4, 5, KEY_SEND)>,
71						       <MATRIX_KEY(0, 5, KEY_BACK)>,
72						       <MATRIX_KEY(6, 2, KEY_VOLUMEUP)>,
73						       <MATRIX_KEY(1, 3, KEY_SPACE)>,
74						       <MATRIX_KEY(7, 6, KEY_LEFT)>,
75						       <MATRIX_KEY(5, 5, KEY_SEARCH)>;
76				};
77			};
78		};
79
80		i2c@80128000 {
81			accelerometer@19 {
82				compatible = "st,lsm303dlhc-accel";
83				st,drdy-int-pin = <1>;
84				reg = <0x19>;
85				vdd-supply = <&ab8500_ldo_aux1_reg>;
86				vddio-supply = <&db8500_vsmps2_reg>;
87				interrupt-parent = <&gpio2>;
88				interrupts = <18 IRQ_TYPE_EDGE_RISING>,
89					     <19 IRQ_TYPE_EDGE_RISING>;
90				pinctrl-names = "default";
91				pinctrl-0 = <&accel_tvk_mode>;
92			};
93			magnetometer@1e {
94				compatible = "st,lsm303dlm-magn";
95				st,drdy-int-pin = <1>;
96				reg = <0x1e>;
97				vdd-supply = <&ab8500_ldo_aux1_reg>;
98				vddio-supply = <&db8500_vsmps2_reg>;
99				// This interrupt is not properly working with the driver
100				// interrupt-parent = <&gpio1>;
101				// interrupts = <0 IRQ_TYPE_EDGE_RISING>;
102				pinctrl-names = "default";
103				pinctrl-0 = <&magn_tvk_mode>;
104			};
105			gyroscope@68 {
106				/* Gyroscope */
107				compatible = "st,l3g4200d-gyro";
108				reg = <0x68>;
109				vdd-supply = <&ab8500_ldo_aux1_reg>;
110				vddio-supply = <&db8500_vsmps2_reg>;
111			};
112			pressure@5c {
113				/* Barometer/pressure sensor */
114				compatible = "st,lps001wp-press";
115				reg = <0x5c>;
116				vdd-supply = <&ab8500_ldo_aux1_reg>;
117				vddio-supply = <&db8500_vsmps2_reg>;
118			};
119		};
120
121		spi@80111000 {
122			num-cs = <1>;
123			cs-gpios = <&gpio6 24 GPIO_ACTIVE_LOW>;
124			pinctrl-names = "default";
125			pinctrl-0 = <&spi2_default_mode>;
126			status = "okay";
127
128			touchscreen@0 {
129				compatible = "cypress,cy8ctma340";
130				/*
131				 * Actually the max frequency is 6 MHz, but over 2 MHz the
132				 * data rate needs to be restricted to max 2Mbps which the
133				 * SPI framework cannot handle.
134				 */
135				spi-max-frequency = <2000000>;
136				reg = <0>;
137				interrupt-parent = <&gpio2>;
138				interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
139				vcpin-supply = <&ab8500_ldo_aux1_reg>;
140				vdd-supply = <&db8500_vsmps2_reg>;
141				reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
142				touchscreen-size-x = <480>;
143				touchscreen-size-y = <854>;
144				active-interval-ms = <0>;
145				touch-timeout-ms = <255>;
146				lowpower-interval-ms = <10>;
147				bootloader-key = /bits/ 8 <0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07>;
148				pinctrl-names = "default";
149				pinctrl-0 = <&cyttsp_tvk_mode>;
150			};
151		};
152
153		mcde@a0350000 {
154			status = "okay";
155
156			dsi@a0351000 {
157				panel {
158					compatible = "sony,acx424akp";
159					reg = <0>;
160					vddi-supply = <&ab8500_ldo_aux1_reg>;
161					reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
162				};
163			};
164		};
165
166		pinctrl {
167			hall {
168				hall_tvk_mode: hall_tvk {
169					tvk_cfg {
170						pins = "GPIO145_C13";
171						ste,config = <&gpio_in_pu>;
172					};
173				};
174			};
175			tc35893 {
176				/* IRQ from the TC35893 */
177				tc35893_tvk_mode: tc35893_tvk {
178					tvk_cfg {
179						pins = "GPIO64_F3";
180						ste,config = <&gpio_in_pu>;
181					};
182				};
183			};
184			accelerometer {
185				accel_tvk_mode: accel_tvk {
186					/* Accelerometer interrupt lines 1 & 2 */
187					tvk_cfg {
188						pins = "GPIO82_C1", "GPIO83_D3";
189						ste,config = <&gpio_in_pd>;
190					};
191				};
192			};
193			magnetometer {
194				magn_tvk_mode: magn_tvk {
195					/* GPIO 32 used for DRDY, pull this down */
196					tvk_cfg {
197						pins = "GPIO32_V2";
198						ste,config = <&gpio_in_pd>;
199					};
200				};
201			};
202			cyttsp {
203				cyttsp_tvk_mode: cyttsp_tvk {
204					/* Touchscreen uses GPIO84 for IRQ */
205					tvk_cfg1 {
206						pins = "GPIO84_C2";
207						ste,config = <&gpio_in_pu>;
208					};
209					/* GPIO143 is reset */
210					tvk_cfg2 {
211						pins = "GPIO143_D12";
212						ste,config = <&gpio_out_hi>;
213					};
214				};
215			};
216		};
217	};
218};
219