blob: 2694fe18a91b12718c756c015ba99589073bbf07 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device tree for the Tolino Vison ebook reader
4 *
5 * Name on mainboard is: 37NB-E60Q30+4A3
6 * Serials start with: 6032
7 *
8 * Copyright 2023 Andreas Kemnade
9 */
10
11/dts-v1/;
12
13#include <dt-bindings/leds/common.h>
14#include <dt-bindings/input/input.h>
15#include <dt-bindings/gpio/gpio.h>
16#include "imx6sl.dtsi"
17
18/ {
19 model = "Tolino Vision";
20 compatible = "kobo,tolino-vision", "fsl,imx6sl";
21
22 aliases {
23 mmc0 = &usdhc4;
24 mmc1 = &usdhc2;
25 };
26
27 backlight {
28 compatible = "pwm-backlight";
29 pwms = <&ec 0 50000>;
30 power-supply = <&backlight_regulator>;
31 };
32
33 backlight_regulator: regulator-backlight {
34 compatible = "regulator-fixed";
35 pinctrl-names = "default";
36 pinctrl-0 = <&pinctrl_backlight_power>;
37 regulator-name = "backlight";
38 gpio = <&gpio2 10 GPIO_ACTIVE_HIGH>;
39 enable-active-high;
40 };
41
42 chosen {
43 stdout-path = &uart1;
44 };
45
46 gpio_keys: gpio-keys {
47 compatible = "gpio-keys";
48 pinctrl-names = "default";
49 pinctrl-0 = <&pinctrl_gpio_keys>;
50
51 key-cover {
52 /* magnetic sensor in the corner next to the uSD slot */
53 label = "Cover";
54 gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
55 linux,code = <SW_LID>;
56 linux,input-type = <EV_SW>;
57 wakeup-source;
58 };
59
60 key-fl {
61 label = "Frontlight";
62 gpios = <&gpio3 26 GPIO_ACTIVE_LOW>;
63 linux,code = <KEY_BRIGHTNESS_CYCLE>;
64 };
65
66 key-power {
67 label = "Power";
68 gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
69 linux,code = <KEY_POWER>;
70 wakeup-source;
71 };
72 };
73
74 leds: leds {
75 compatible = "gpio-leds";
76 pinctrl-names = "default";
77 pinctrl-0 = <&pinctrl_leds>;
78
79 led-0 {
80 /* LED on home button */
81 color = <LED_COLOR_ID_WHITE>;
82 function = LED_FUNCTION_STATUS;
83 gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
84 };
85
86 led-1 {
87 /* LED on power button */
88 color = <LED_COLOR_ID_WHITE>;
89 function = LED_FUNCTION_POWER;
90 gpios = <&gpio5 7 GPIO_ACTIVE_LOW>;
91 linux,default-trigger = "timer";
92 };
93 };
94
95 memory@80000000 {
96 device_type = "memory";
97 reg = <0x80000000 0x20000000>;
98 };
99
100 reg_wifi: regulator-wifi {
101 compatible = "regulator-fixed";
102 pinctrl-names = "default";
103 pinctrl-0 = <&pinctrl_wifi_power>;
104 regulator-name = "SD3_SPWR";
105 regulator-min-microvolt = <3000000>;
106 regulator-max-microvolt = <3000000>;
107 gpio = <&gpio4 29 GPIO_ACTIVE_LOW>;
108 };
109
110
111 wifi_pwrseq: wifi_pwrseq {
112 compatible = "mmc-pwrseq-simple";
113 pinctrl-names = "default";
114 pinctrl-0 = <&pinctrl_wifi_reset>;
115 post-power-on-delay-ms = <20>;
116 reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
117 };
118};
119
120&i2c1 {
121 pinctrl-names = "default","sleep";
122 pinctrl-0 = <&pinctrl_i2c1>;
123 pinctrl-1 = <&pinctrl_i2c1_sleep>;
124 status = "okay";
125
126 touchscreen@15 {
127 compatible = "elan,ektf2132";
128 reg = <0x15>;
129 pinctrl-names = "default";
130 pinctrl-0 = <&pinctrl_ts>;
131 power-gpios = <&gpio5 13 GPIO_ACTIVE_HIGH>;
132 interrupts-extended = <&gpio5 6 IRQ_TYPE_EDGE_FALLING>;
133 };
134
135 accelerometer@1d {
136 compatible = "fsl,mma8652";
137 reg = <0x1d>;
138 };
139};
140
141&i2c2 {
142 pinctrl-names = "default","sleep";
143 pinctrl-0 = <&pinctrl_i2c2>;
144 pinctrl-1 = <&pinctrl_i2c2_sleep>;
145 clock-frequency = <100000>;
146 status = "okay";
147};
148
149&i2c3 {
150 pinctrl-names = "default";
151 pinctrl-0 = <&pinctrl_i2c3>;
152 clock-frequency = <100000>;
153 status = "okay";
154
155 ec: embedded-controller@43 {
156 compatible = "netronix,ntxec";
157 reg = <0x43>;
158 #pwm-cells = <2>;
159 pinctrl-names = "default";
160 pinctrl-0 = <&pinctrl_ec>;
161 interrupts-extended = <&gpio5 11 IRQ_TYPE_EDGE_FALLING>;
162 system-power-controller;
163 };
164};
165
166&snvs_rtc {
167 /*
168 * We are using the RTC in the PMIC, but this one is not disabled
169 * in imx6sl.dtsi.
170 */
171 status = "disabled";
172};
173
174&uart1 {
175 /* J4 */
176 pinctrl-names = "default";
177 pinctrl-0 = <&pinctrl_uart1>;
178 status = "okay";
179};
180
181&uart4 {
182 /* J9 */
183 pinctrl-names = "default";
184 pinctrl-0 = <&pinctrl_uart4>;
185 status = "okay";
186};
187
188&usdhc2 {
189 pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
190 pinctrl-0 = <&pinctrl_usdhc2>;
191 pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
192 pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
193 pinctrl-3 = <&pinctrl_usdhc2_sleep>;
194 cd-gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
195 status = "okay";
196
197 /* removable uSD card */
198};
199
200&usdhc3 {
201 pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
202 pinctrl-0 = <&pinctrl_usdhc3>;
203 pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
204 pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
205 pinctrl-3 = <&pinctrl_usdhc3_sleep>;
206 vmmc-supply = <&reg_wifi>;
207 mmc-pwrseq = <&wifi_pwrseq>;
208 cap-power-off-card;
209 non-removable;
210 status = "okay";
211
212 /* CyberTan WC121 (BCM43362) SDIO WiFi */
213};
214
215&usdhc4 {
216 pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
217 pinctrl-0 = <&pinctrl_usdhc4>;
218 pinctrl-1 = <&pinctrl_usdhc4_100mhz>;
219 pinctrl-2 = <&pinctrl_usdhc4_200mhz>;
220 pinctrl-3 = <&pinctrl_usdhc4_sleep>;
221 bus-width = <8>;
222 no-1-8-v;
223 non-removable;
224 status = "okay";
225
226 /* internal eMMC */
227};
228
229&usbotg1 {
230 pinctrl-names = "default";
231 disable-over-current;
232 srp-disable;
233 hnp-disable;
234 adp-disable;
235 status = "okay";
236};
237
238&iomuxc {
239 pinctrl_backlight_power: backlight-powergrp {
240 fsl,pins = <
241 MX6SL_PAD_EPDC_PWRCTRL3__GPIO2_IO10 0x10059
242 >;
243 };
244
245 pinctrl_ec: ecgrp {
246 fsl,pins = <
247 MX6SL_PAD_SD1_DAT0__GPIO5_IO11 0x17000
248 >;
249 };
250
251 pinctrl_gpio_keys: gpio-keysgrp {
252 fsl,pins = <
253 MX6SL_PAD_SD1_DAT1__GPIO5_IO08 0x110B0
254 MX6SL_PAD_SD1_DAT4__GPIO5_IO12 0x110B0
255 MX6SL_PAD_KEY_COL1__GPIO3_IO26 0x11030
256 >;
257 };
258
259 pinctrl_i2c1: i2c1grp {
260 fsl,pins = <
261 MX6SL_PAD_I2C1_SCL__I2C1_SCL 0x4001f8b1
262 MX6SL_PAD_I2C1_SDA__I2C1_SDA 0x4001f8b1
263 >;
264 };
265
266 pinctrl_i2c1_sleep: i2c1-sleepgrp {
267 fsl,pins = <
268 MX6SL_PAD_I2C1_SCL__I2C1_SCL 0x400108b1
269 MX6SL_PAD_I2C1_SDA__I2C1_SDA 0x400108b1
270 >;
271 };
272
273 pinctrl_i2c2: i2c2grp {
274 fsl,pins = <
275 MX6SL_PAD_I2C2_SCL__I2C2_SCL 0x4001f8b1
276 MX6SL_PAD_I2C2_SDA__I2C2_SDA 0x4001f8b1
277 >;
278 };
279
280 pinctrl_i2c2_sleep: i2c2-sleepgrp {
281 fsl,pins = <
282 MX6SL_PAD_I2C2_SCL__I2C2_SCL 0x400108b1
283 MX6SL_PAD_I2C2_SDA__I2C2_SDA 0x400108b1
284 >;
285 };
286
287 pinctrl_i2c3: i2c3grp {
288 fsl,pins = <
289 MX6SL_PAD_REF_CLK_24M__I2C3_SCL 0x4001f8b1
290 MX6SL_PAD_REF_CLK_32K__I2C3_SDA 0x4001f8b1
291 >;
292 };
293
294 pinctrl_leds: ledsgrp {
295 fsl,pins = <
296 MX6SL_PAD_SD1_DAT6__GPIO5_IO07 0x17059
297 MX6SL_PAD_SD1_DAT7__GPIO5_IO10 0x17059
298 MX6SL_PAD_EPDC_SDCE2__GPIO1_IO29 0x17059
299 >;
300 };
301
302 pinctrl_ts: tsgrp {
303 fsl,pins = <
304 MX6SL_PAD_SD1_DAT2__GPIO5_IO13 0x110B0
305 MX6SL_PAD_SD1_DAT3__GPIO5_IO06 0x1B0B1
306 >;
307 };
308
309 pinctrl_uart1: uart1grp {
310 fsl,pins = <
311 MX6SL_PAD_UART1_TXD__UART1_TX_DATA 0x1b0b1
312 MX6SL_PAD_UART1_RXD__UART1_RX_DATA 0x1b0b1
313 >;
314 };
315
316 pinctrl_uart4: uart4grp {
317 fsl,pins = <
318 MX6SL_PAD_KEY_ROW6__UART4_TX_DATA 0x1b0b1
319 MX6SL_PAD_KEY_COL6__UART4_RX_DATA 0x1b0b1
320 >;
321 };
322
323 pinctrl_usbotg1: usbotg1grp {
324 fsl,pins = <
325 MX6SL_PAD_EPDC_PWRCOM__USB_OTG1_ID 0x17059
326 >;
327 };
328
329 pinctrl_usdhc2: usdhc2grp {
330 fsl,pins = <
331 MX6SL_PAD_SD2_CMD__SD2_CMD 0x17059
332 MX6SL_PAD_SD2_CLK__SD2_CLK 0x13059
333 MX6SL_PAD_SD2_DAT0__SD2_DATA0 0x17059
334 MX6SL_PAD_SD2_DAT1__SD2_DATA1 0x17059
335 MX6SL_PAD_SD2_DAT2__SD2_DATA2 0x17059
336 MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x17059
337 MX6SL_PAD_SD2_DAT4__GPIO5_IO02 0x1b0b1
338 >;
339 };
340
341 pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
342 fsl,pins = <
343 MX6SL_PAD_SD2_CMD__SD2_CMD 0x170b9
344 MX6SL_PAD_SD2_CLK__SD2_CLK 0x130b9
345 MX6SL_PAD_SD2_DAT0__SD2_DATA0 0x170b9
346 MX6SL_PAD_SD2_DAT1__SD2_DATA1 0x170b9
347 MX6SL_PAD_SD2_DAT2__SD2_DATA2 0x170b9
348 MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x170b9
349 >;
350 };
351
352 pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
353 fsl,pins = <
354 MX6SL_PAD_SD2_CMD__SD2_CMD 0x170f9
355 MX6SL_PAD_SD2_CLK__SD2_CLK 0x130f9
356 MX6SL_PAD_SD2_DAT0__SD2_DATA0 0x170f9
357 MX6SL_PAD_SD2_DAT1__SD2_DATA1 0x170f9
358 MX6SL_PAD_SD2_DAT2__SD2_DATA2 0x170f9
359 MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x170f9
360 >;
361 };
362
363 pinctrl_usdhc2_sleep: usdhc2-sleepgrp {
364 fsl,pins = <
365 MX6SL_PAD_SD2_CMD__GPIO5_IO04 0x100f9
366 MX6SL_PAD_SD2_CLK__GPIO5_IO05 0x100f9
367 MX6SL_PAD_SD2_DAT0__GPIO5_IO01 0x100f9
368 MX6SL_PAD_SD2_DAT1__GPIO4_IO30 0x100f9
369 MX6SL_PAD_SD2_DAT2__GPIO5_IO03 0x100f9
370 MX6SL_PAD_SD2_DAT3__GPIO4_IO28 0x100f9
371 >;
372 };
373
374 pinctrl_usdhc3: usdhc3grp {
375 fsl,pins = <
376 MX6SL_PAD_SD3_CMD__SD3_CMD 0x11059
377 MX6SL_PAD_SD3_CLK__SD3_CLK 0x11059
378 MX6SL_PAD_SD3_DAT0__SD3_DATA0 0x11059
379 MX6SL_PAD_SD3_DAT1__SD3_DATA1 0x11059
380 MX6SL_PAD_SD3_DAT2__SD3_DATA2 0x11059
381 MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x11059
382 >;
383 };
384
385 pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
386 fsl,pins = <
387 MX6SL_PAD_SD3_CMD__SD3_CMD 0x170b9
388 MX6SL_PAD_SD3_CLK__SD3_CLK 0x170b9
389 MX6SL_PAD_SD3_DAT0__SD3_DATA0 0x170b9
390 MX6SL_PAD_SD3_DAT1__SD3_DATA1 0x170b9
391 MX6SL_PAD_SD3_DAT2__SD3_DATA2 0x170b9
392 MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x170b9
393 >;
394 };
395
396 pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
397 fsl,pins = <
398 MX6SL_PAD_SD3_CMD__SD3_CMD 0x170f9
399 MX6SL_PAD_SD3_CLK__SD3_CLK 0x170f9
400 MX6SL_PAD_SD3_DAT0__SD3_DATA0 0x170f9
401 MX6SL_PAD_SD3_DAT1__SD3_DATA1 0x170f9
402 MX6SL_PAD_SD3_DAT2__SD3_DATA2 0x170f9
403 MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x170f9
404 >;
405 };
406
407 pinctrl_usdhc3_sleep: usdhc3-sleepgrp {
408 fsl,pins = <
409 MX6SL_PAD_SD3_CMD__GPIO5_IO21 0x100c1
410 MX6SL_PAD_SD3_CLK__GPIO5_IO18 0x100c1
411 MX6SL_PAD_SD3_DAT0__GPIO5_IO19 0x100c1
412 MX6SL_PAD_SD3_DAT1__GPIO5_IO20 0x100c1
413 MX6SL_PAD_SD3_DAT2__GPIO5_IO16 0x100c1
414 MX6SL_PAD_SD3_DAT3__GPIO5_IO17 0x100c1
415 >;
416 };
417
418 pinctrl_usdhc4: usdhc4grp {
419 fsl,pins = <
420 MX6SL_PAD_FEC_TX_CLK__SD4_CMD 0x17059
421 MX6SL_PAD_FEC_MDIO__SD4_CLK 0x13059
422 MX6SL_PAD_FEC_RX_ER__SD4_DATA0 0x17059
423 MX6SL_PAD_FEC_CRS_DV__SD4_DATA1 0x17059
424 MX6SL_PAD_FEC_RXD1__SD4_DATA2 0x17059
425 MX6SL_PAD_FEC_TXD0__SD4_DATA3 0x17059
426 MX6SL_PAD_FEC_MDC__SD4_DATA4 0x17059
427 MX6SL_PAD_FEC_RXD0__SD4_DATA5 0x17059
428 MX6SL_PAD_FEC_TX_EN__SD4_DATA6 0x17059
429 MX6SL_PAD_FEC_TXD1__SD4_DATA7 0x17059
430 MX6SL_PAD_FEC_REF_CLK__SD4_RESET 0x17068
431 >;
432 };
433
434 pinctrl_usdhc4_100mhz: usdhc4-100mhzgrp {
435 fsl,pins = <
436 MX6SL_PAD_FEC_TX_CLK__SD4_CMD 0x170b9
437 MX6SL_PAD_FEC_MDIO__SD4_CLK 0x130b9
438 MX6SL_PAD_FEC_RX_ER__SD4_DATA0 0x170b9
439 MX6SL_PAD_FEC_CRS_DV__SD4_DATA1 0x170b9
440 MX6SL_PAD_FEC_RXD1__SD4_DATA2 0x170b9
441 MX6SL_PAD_FEC_TXD0__SD4_DATA3 0x170b9
442 MX6SL_PAD_FEC_MDC__SD4_DATA4 0x170b9
443 MX6SL_PAD_FEC_RXD0__SD4_DATA5 0x170b9
444 MX6SL_PAD_FEC_TX_EN__SD4_DATA6 0x170b9
445 MX6SL_PAD_FEC_TXD1__SD4_DATA7 0x170b9
446 >;
447 };
448
449 pinctrl_usdhc4_200mhz: usdhc4-200mhzgrp {
450 fsl,pins = <
451 MX6SL_PAD_FEC_TX_CLK__SD4_CMD 0x170f9
452 MX6SL_PAD_FEC_MDIO__SD4_CLK 0x130f9
453 MX6SL_PAD_FEC_RX_ER__SD4_DATA0 0x170f9
454 MX6SL_PAD_FEC_CRS_DV__SD4_DATA1 0x170f9
455 MX6SL_PAD_FEC_RXD1__SD4_DATA2 0x170f9
456 MX6SL_PAD_FEC_TXD0__SD4_DATA3 0x170f9
457 MX6SL_PAD_FEC_MDC__SD4_DATA4 0x170f9
458 MX6SL_PAD_FEC_RXD0__SD4_DATA5 0x170f9
459 MX6SL_PAD_FEC_TX_EN__SD4_DATA6 0x170f9
460 MX6SL_PAD_FEC_TXD1__SD4_DATA7 0x170f9
461 >;
462 };
463
464 pinctrl_usdhc4_sleep: usdhc4-sleepgrp {
465 fsl,pins = <
466 MX6SL_PAD_FEC_TX_CLK__GPIO4_IO21 0x100c1
467 MX6SL_PAD_FEC_MDIO__GPIO4_IO20 0x100c1
468 MX6SL_PAD_FEC_RX_ER__GPIO4_IO19 0x100c1
469 MX6SL_PAD_FEC_CRS_DV__GPIO4_IO25 0x100c1
470 MX6SL_PAD_FEC_RXD1__GPIO4_IO18 0x100c1
471 MX6SL_PAD_FEC_TXD0__GPIO4_IO24 0x100c1
472 MX6SL_PAD_FEC_MDC__GPIO4_IO23 0x100c1
473 MX6SL_PAD_FEC_RXD0__GPIO4_IO17 0x100c1
474 MX6SL_PAD_FEC_TX_EN__GPIO4_IO22 0x100c1
475 MX6SL_PAD_FEC_TXD1__GPIO4_IO16 0x100c1
476 >;
477 };
478
479 pinctrl_wifi_power: wifi-powergrp {
480 fsl,pins = <
481 MX6SL_PAD_SD2_DAT6__GPIO4_IO29 0x10059 /* WIFI_3V3_ON */
482 >;
483 };
484
485 pinctrl_wifi_reset: wifi-resetgrp {
486 fsl,pins = <
487 MX6SL_PAD_SD2_DAT7__GPIO5_IO00 0x10059 /* WIFI_RST */
488 >;
489 };
490};