1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Copyright (C) 2015 Freescale Semiconductor, Inc.
4  * Copyright (C) 2019 reMarkable AS - http://www.remarkable.com/
5  *
6  */
7 
8 /dts-v1/;
9 
10 #include "imx7d.dtsi"
11 #include <dt-bindings/input/linux-event-codes.h>
12 
13 / {
14 	model = "reMarkable 2.0";
15 	compatible = "remarkable,imx7d-remarkable2", "fsl,imx7d";
16 
17 	chosen {
18 		stdout-path = &uart6;
19 	};
20 
21 	memory@80000000 {
22 		device_type = "memory";
23 		reg = <0x80000000 0x40000000>;
24 	};
25 
26 	thermal-zones {
27 		epd-thermal {
28 			thermal-sensors = <&sy7636a>;
29 			polling-delay-passive = <30000>;
30 			polling-delay = <30000>;
31 
32 			trips {
33 				trip0 {
34 					temperature = <49000>;
35 					hysteresis = <2000>;
36 					type = "passive";
37 				};
38 
39 				trip1 {
40 					temperature = <50000>;
41 					hysteresis = <2000>;
42 					type = "critical";
43 				};
44 			};
45 		};
46 	};
47 
48 	reg_brcm: regulator-brcm {
49 		compatible = "regulator-fixed";
50 		regulator-name = "brcm_reg";
51 		regulator-min-microvolt = <3300000>;
52 		regulator-max-microvolt = <3300000>;
53 		pinctrl-names = "default";
54 		pinctrl-0 = <&pinctrl_brcm_reg>;
55 		gpio = <&gpio6 13 GPIO_ACTIVE_HIGH>;
56 		enable-active-high;
57 		startup-delay-us = <150>;
58 	};
59 
60 	reg_digitizer: regulator-digitizer {
61 		compatible = "regulator-fixed";
62 		regulator-name = "VDD_3V3_DIGITIZER";
63 		regulator-min-microvolt = <3300000>;
64 		regulator-max-microvolt = <3300000>;
65 		pinctrl-names = "default", "sleep";
66 		pinctrl-0 = <&pinctrl_digitizer_reg>;
67 		pinctrl-1 = <&pinctrl_digitizer_reg>;
68 		gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
69 		enable-active-high;
70 		startup-delay-us = <100000>; /* 100 ms */
71 	};
72 
73 	reg_touch: regulator-touch {
74 		compatible = "regulator-fixed";
75 		regulator-name = "VDD_3V3_TOUCH";
76 		regulator-min-microvolt = <3300000>;
77 		regulator-max-microvolt = <3300000>;
78 		pinctrl-names = "default";
79 		pinctrl-0 = <&pinctrl_touch_reg>;
80 		gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
81 		enable-active-high;
82 	};
83 
84 	wifi_pwrseq: wifi_pwrseq {
85 		compatible = "mmc-pwrseq-simple";
86 		pinctrl-names = "default";
87 		pinctrl-0 = <&pinctrl_wifi>;
88 		reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
89 		clocks = <&clks IMX7D_CLKO2_ROOT_DIV>;
90 		clock-names = "ext_clock";
91 	};
92 };
93 
94 &cpu0 {
95 	cpu-supply = <&buck1>;
96 };
97 
98 &clks {
99 	assigned-clocks = <&clks IMX7D_CLKO2_ROOT_SRC>,
100 			  <&clks IMX7D_CLKO2_ROOT_DIV>;
101 	assigned-clock-parents = <&clks IMX7D_CKIL>;
102 	assigned-clock-rates = <0>, <32768>;
103 };
104 
105 &i2c1 {
106 	clock-frequency = <400000>;
107 	pinctrl-names = "default";
108 	pinctrl-0 = <&pinctrl_i2c1>;
109 	status = "okay";
110 
111 	wacom_digitizer: digitizer@9 {
112 		compatible = "hid-over-i2c";
113 		reg = <0x09>;
114 		hid-descr-addr = <0x01>;
115 		pinctrl-names = "default";
116 		pinctrl-0 = <&pinctrl_wacom>;
117 		interrupt-parent = <&gpio1>;
118 		interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
119 		touchscreen-inverted-x;
120 		touchscreen-inverted-y;
121 		vdd-supply = <&reg_digitizer>;
122 	};
123 };
124 
125 &i2c2 {
126 	clock-frequency = <100000>;
127 	pinctrl-names = "default";
128 	pinctrl-0 = <&pinctrl_i2c2>;
129 	status = "okay";
130 
131 	bd71815: pmic@4b {
132 		compatible = "rohm,bd71815";
133 		reg = <0x4b>;
134 		pinctrl-names = "default";
135 		pinctrl-0 = <&pinctrl_bd71815>;
136 		interrupt-parent = <&gpio6>; /* PMIC_INT_B GPIO6_IO16 */
137 		interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
138 		gpio-controller;
139 		clocks = <&clks IMX7D_CLKO2_ROOT_SRC>;
140 		clock-output-names = "bd71815-32k-out";
141 		#clock-cells = <0>;
142 		#gpio-cells = <2>;
143 
144 		regulators {
145 			buck1: buck1 {
146 				regulator-name = "buck1";
147 				regulator-min-microvolt = <800000>;
148 				regulator-max-microvolt = <2000000>;
149 				regulator-boot-on;
150 				regulator-always-on;
151 				regulator-ramp-delay = <1250>;
152 			};
153 
154 			buck2: buck2 {
155 				regulator-name = "buck2";
156 				regulator-min-microvolt = <800000>;
157 				regulator-max-microvolt = <2000000>;
158 				regulator-boot-on;
159 				regulator-always-on;
160 				regulator-ramp-delay = <1250>;
161 			};
162 
163 			buck3: buck3 {
164 				regulator-name = "buck3";
165 				regulator-min-microvolt = <1200000>;
166 				regulator-max-microvolt = <2700000>;
167 				regulator-boot-on;
168 				regulator-always-on;
169 			};
170 
171 			buck4: buck4 {
172 				regulator-name = "buck4";
173 				regulator-min-microvolt = <1100000>;
174 				regulator-max-microvolt = <1850000>;
175 				regulator-boot-on;
176 				regulator-always-on;
177 			};
178 
179 			buck5: buck5 {
180 				regulator-name = "buck5";
181 				regulator-min-microvolt = <1800000>;
182 				regulator-max-microvolt = <3300000>;
183 				regulator-boot-on;
184 				regulator-always-on;
185 			};
186 
187 			ldo1: ldo1 {
188 				regulator-name = "ldo1";
189 				regulator-min-microvolt = <800000>;
190 				regulator-max-microvolt = <3300000>;
191 				regulator-boot-on;
192 				regulator-always-on;
193 			};
194 
195 			ldo2: ldo2 {
196 				regulator-name = "ldo2";
197 				regulator-min-microvolt = <800000>;
198 				regulator-max-microvolt = <3300000>;
199 				regulator-boot-on;
200 				regulator-always-on;
201 			};
202 
203 			ldo3: ldo3 {
204 				regulator-name = "ldo3";
205 				regulator-min-microvolt = <800000>;
206 				regulator-max-microvolt = <3300000>;
207 				regulator-boot-on;
208 				regulator-always-on;
209 			};
210 
211 			ldo4: ldo4 {
212 				regulator-name = "ldo4";
213 				regulator-min-microvolt = <800000>;
214 				regulator-max-microvolt = <3300000>;
215 				regulator-boot-on;
216 				regulator-always-on;
217 			};
218 
219 			ldo5: ldo5 {
220 				regulator-name = "ldo5";
221 				regulator-min-microvolt = <800000>;
222 				regulator-max-microvolt = <3300000>;
223 				regulator-boot-on;
224 				regulator-always-on;
225 			};
226 
227 			ldo6: ldodvref {
228 				regulator-name = "ldodvref";
229 				regulator-boot-on;
230 				regulator-always-on;
231 			};
232 
233 			ldo7: ldolpsr {
234 				regulator-name = "ldolpsr";
235 				regulator-boot-on;
236 				regulator-always-on;
237 			};
238 
239 			boost: wled {
240 				regulator-name = "wled";
241 				regulator-min-microamp = <10>;
242 				regulator-max-microamp = <25000>;
243 				regulator-boot-on;
244 				regulator-always-on;
245 			};
246 		};
247 	};
248 };
249 
250 &i2c3 {
251 	clock-frequency = <100000>;
252 	pinctrl-names = "default";
253 	pinctrl-0 = <&pinctrl_i2c3>;
254 	status = "okay";
255 
256 	touchscreen@24 {
257 		compatible = "cypress,tt21000";
258 		reg = <0x24>;
259 		pinctrl-names = "default";
260 		pinctrl-0 = <&pinctrl_touch>;
261 		interrupt-parent = <&gpio1>;
262 		interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
263 		reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
264 		vdd-supply = <&reg_touch>;
265 		touchscreen-size-x = <880>;
266 		touchscreen-size-y = <1280>;
267 		#address-cells = <1>;
268 		#size-cells = <0>;
269 
270 		button@0 {
271 			reg = <0>;
272 			linux,keycodes = <KEY_HOMEPAGE>;
273 		};
274 
275 		button@1 {
276 			reg = <1>;
277 			linux,keycodes = <KEY_MENU>;
278 		};
279 
280 		button@2 {
281 			reg = <2>;
282 			linux,keycodes = <KEY_BACK>;
283 		};
284 
285 		button@3 {
286 			reg = <3>;
287 			linux,keycodes = <KEY_SEARCH>;
288 		};
289 
290 		button@4 {
291 			reg = <4>;
292 			linux,keycodes = <KEY_VOLUMEDOWN>;
293 		};
294 
295 		button@5 {
296 			reg = <5>;
297 			linux,keycodes = <KEY_VOLUMEUP>;
298 		};
299 
300 		button@6 {
301 			reg = <6>;
302 			linux,keycodes = <KEY_CAMERA>;
303 		};
304 
305 		button@7 {
306 			reg = <7>;
307 			linux,keycodes = <KEY_POWER>;
308 		};
309 	};
310 };
311 
312 &i2c4 {
313 	clock-frequency = <100000>;
314 	pinctrl-names = "default", "sleep";
315 	pinctrl-0 = <&pinctrl_i2c4>;
316 	pinctrl-1 = <&pinctrl_i2c4>;
317 	status = "okay";
318 
319 	sy7636a: pmic@62 {
320 		compatible = "silergy,sy7636a";
321 		reg = <0x62>;
322 		pinctrl-names = "default";
323 		pinctrl-0 = <&pinctrl_epdpmic>;
324 		#thermal-sensor-cells = <0>;
325 		epd-pwr-good-gpios = <&gpio6 21 GPIO_ACTIVE_HIGH>;
326 
327 		regulators {
328 			reg_epdpmic: vcom {
329 				regulator-name = "vcom";
330 				regulator-boot-on;
331 			};
332 		};
333 	};
334 };
335 
336 &snvs_pwrkey {
337 	status = "okay";
338 };
339 
340 &uart1 {
341 	pinctrl-names = "default";
342 	pinctrl-0 = <&pinctrl_uart1>;
343 	assigned-clocks = <&clks IMX7D_UART1_ROOT_SRC>;
344 	assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
345 	status = "okay";
346 };
347 
348 &uart6 {
349 	pinctrl-names = "default";
350 	pinctrl-0 = <&pinctrl_uart6>;
351 	assigned-clocks = <&clks IMX7D_UART6_ROOT_SRC>;
352 	assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
353 	status = "okay";
354 };
355 
356 &usbotg2 {
357 	srp-disable;
358 	hnp-disable;
359 	status = "okay";
360 };
361 
362 &usdhc2 {
363 	#address-cells = <1>;
364 	#size-cells = <0>;
365 	pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
366 	pinctrl-0 = <&pinctrl_usdhc2>;
367 	pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
368 	pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
369 	mmc-pwrseq = <&wifi_pwrseq>;
370 	vmmc-supply = <&reg_brcm>;
371 	bus-width = <4>;
372 	non-removable;
373 	keep-power-in-suspend;
374 	cap-power-off-card;
375 	status = "okay";
376 
377 	brcmf: bcrmf@1 {
378 		reg = <1>;
379 		compatible = "brcm,bcm4329-fmac";
380 	};
381 };
382 
383 &usdhc3 {
384 	pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
385 	pinctrl-0 = <&pinctrl_usdhc3>;
386 	pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
387 	pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
388 	pinctrl-3 = <&pinctrl_usdhc3>;
389 	assigned-clocks = <&clks IMX7D_USDHC3_ROOT_CLK>;
390 	assigned-clock-rates = <400000000>;
391 	bus-width = <8>;
392 	non-removable;
393 	status = "okay";
394 };
395 
396 &wdog1 {
397 	pinctrl-names = "default";
398 	pinctrl-0 = <&pinctrl_wdog>;
399 	fsl,ext-reset-output;
400 };
401 
402 &iomuxc_lpsr {
403 	pinctrl_digitizer_reg: digitizerreggrp {
404 		fsl,pins = <
405 			/* DIGITIZER_PWR_EN */
406 			MX7D_PAD_LPSR_GPIO1_IO06__GPIO1_IO6	0x14
407 		>;
408 	};
409 
410 	pinctrl_wacom: wacomgrp {
411 		fsl,pins = <
412 			/*MX7D_PAD_LPSR_GPIO1_IO05__GPIO1_IO5	0x00000014 FWE */
413 			MX7D_PAD_LPSR_GPIO1_IO04__GPIO1_IO4	0x00000074 /* PDCTB */
414 			MX7D_PAD_LPSR_GPIO1_IO01__GPIO1_IO1	0x00000034 /* WACOM INT */
415 			/*MX7D_PAD_LPSR_GPIO1_IO06__GPIO1_IO6	0x00000014 WACOM PWR ENABLE */
416 			/*MX7D_PAD_LPSR_GPIO1_IO00__GPIO1_IO0	0x00000074 WACOM RESET */
417 		>;
418 	};
419 };
420 
421 &iomuxc {
422 	pinctrl_bd71815: bd71815grp {
423 		fsl,pins = <
424 			MX7D_PAD_SAI1_RX_SYNC__GPIO6_IO16	0x59
425 		>;
426 	};
427 
428 	pinctrl_brcm_reg: brcmreggrp {
429 		fsl,pins = <
430 			/* WIFI_PWR_EN */
431 			MX7D_PAD_SAI1_TX_BCLK__GPIO6_IO13	0x14
432 		>;
433 	};
434 
435 	pinctrl_epdpmic: epdpmicgrp {
436 		fsl,pins = <
437 			MX7D_PAD_SAI2_RX_DATA__GPIO6_IO21	0x00000074
438 			MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11	0x00000014
439 		>;
440 	};
441 
442 	pinctrl_touch: touchgrp {
443 		fsl,pins = <
444 			/* CYTTSP interrupt */
445 			MX7D_PAD_GPIO1_IO14__GPIO1_IO14		0x54
446 			/* CYTTSP reset */
447 			MX7D_PAD_GPIO1_IO13__GPIO1_IO13		0x04
448 		>;
449 	};
450 
451 	pinctrl_i2c1: i2c1grp {
452 		fsl,pins = <
453 			MX7D_PAD_I2C1_SDA__I2C1_SDA		0x4000007f
454 			MX7D_PAD_I2C1_SCL__I2C1_SCL		0x4000007f
455 		>;
456 	};
457 
458 	pinctrl_i2c2: i2c2grp {
459 		fsl,pins = <
460 			MX7D_PAD_I2C2_SDA__I2C2_SDA		0x4000007f
461 			MX7D_PAD_I2C2_SCL__I2C2_SCL		0x4000007f
462 		>;
463 	};
464 
465 	pinctrl_i2c3: i2c3grp {
466 		fsl,pins = <
467 			MX7D_PAD_I2C3_SDA__I2C3_SDA		0x4000007f
468 			MX7D_PAD_I2C3_SCL__I2C3_SCL		0x4000007f
469 		>;
470 	};
471 
472 	pinctrl_i2c4: i2c4grp {
473 		fsl,pins = <
474 			MX7D_PAD_I2C4_SDA__I2C4_SDA		0x4000007f
475 			MX7D_PAD_I2C4_SCL__I2C4_SCL		0x4000007f
476 		>;
477 	};
478 
479 	pinctrl_touch_reg: touchreggrp {
480 		fsl,pins = <
481 			/* TOUCH_PWR_EN */
482 			MX7D_PAD_GPIO1_IO11__GPIO1_IO11		0x14
483 		>;
484 	};
485 
486 	pinctrl_uart1: uart1grp {
487 		fsl,pins = <
488 			MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX	0x79
489 			MX7D_PAD_UART1_RX_DATA__UART1_DCE_RX	0x79
490 		>;
491 	};
492 
493 	pinctrl_uart6: uart6grp {
494 		fsl,pins = <
495 			MX7D_PAD_EPDC_DATA09__UART6_DCE_TX		0x79
496 			MX7D_PAD_EPDC_DATA08__UART6_DCE_RX		0x79
497 		>;
498 	};
499 
500 	pinctrl_usdhc2: usdhc2grp {
501 		fsl,pins = <
502 			MX7D_PAD_SD2_CMD__SD2_CMD		0x59
503 			MX7D_PAD_SD2_CLK__SD2_CLK		0x19
504 			MX7D_PAD_SD2_DATA0__SD2_DATA0		0x59
505 			MX7D_PAD_SD2_DATA1__SD2_DATA1		0x59
506 			MX7D_PAD_SD2_DATA2__SD2_DATA2		0x59
507 			MX7D_PAD_SD2_DATA3__SD2_DATA3		0x59
508 		>;
509 	};
510 
511 	pinctrl_usdhc2_100mhz: usdhc2-100mhz-grp {
512 		fsl,pins = <
513 			MX7D_PAD_SD2_CMD__SD2_CMD		0x5a
514 			MX7D_PAD_SD2_CLK__SD2_CLK		0x1a
515 			MX7D_PAD_SD2_DATA0__SD2_DATA0		0x5a
516 			MX7D_PAD_SD2_DATA1__SD2_DATA1		0x5a
517 			MX7D_PAD_SD2_DATA2__SD2_DATA2		0x5a
518 			MX7D_PAD_SD2_DATA3__SD2_DATA3		0x5a
519 		>;
520 	};
521 
522 	pinctrl_usdhc2_200mhz: usdhc2-200mhz-grp {
523 		fsl,pins = <
524 			MX7D_PAD_SD2_CMD__SD2_CMD		0x5b
525 			MX7D_PAD_SD2_CLK__SD2_CLK		0x1b
526 			MX7D_PAD_SD2_DATA0__SD2_DATA0		0x5b
527 			MX7D_PAD_SD2_DATA1__SD2_DATA1		0x5b
528 			MX7D_PAD_SD2_DATA2__SD2_DATA2		0x5b
529 			MX7D_PAD_SD2_DATA3__SD2_DATA3		0x5b
530 		>;
531 	};
532 
533 	pinctrl_usdhc3: usdhc3grp {
534 		fsl,pins = <
535 			MX7D_PAD_SD3_CMD__SD3_CMD		0x59
536 			MX7D_PAD_SD3_CLK__SD3_CLK		0x19
537 			MX7D_PAD_SD3_DATA0__SD3_DATA0		0x59
538 			MX7D_PAD_SD3_DATA1__SD3_DATA1		0x59
539 			MX7D_PAD_SD3_DATA2__SD3_DATA2		0x59
540 			MX7D_PAD_SD3_DATA3__SD3_DATA3		0x59
541 			MX7D_PAD_SD3_DATA4__SD3_DATA4		0x59
542 			MX7D_PAD_SD3_DATA5__SD3_DATA5		0x59
543 			MX7D_PAD_SD3_DATA6__SD3_DATA6		0x59
544 			MX7D_PAD_SD3_DATA7__SD3_DATA7		0x59
545 			MX7D_PAD_SD3_STROBE__SD3_STROBE		0x19
546 		>;
547 	};
548 
549 	pinctrl_usdhc3_100mhz: usdhc3-100mhz-grp {
550 		fsl,pins = <
551 			MX7D_PAD_SD3_CMD__SD3_CMD		0x5a
552 			MX7D_PAD_SD3_CLK__SD3_CLK		0x1a
553 			MX7D_PAD_SD3_DATA0__SD3_DATA0		0x5a
554 			MX7D_PAD_SD3_DATA1__SD3_DATA1		0x5a
555 			MX7D_PAD_SD3_DATA2__SD3_DATA2		0x5a
556 			MX7D_PAD_SD3_DATA3__SD3_DATA3		0x5a
557 			MX7D_PAD_SD3_DATA4__SD3_DATA4		0x5a
558 			MX7D_PAD_SD3_DATA5__SD3_DATA5		0x5a
559 			MX7D_PAD_SD3_DATA6__SD3_DATA6		0x5a
560 			MX7D_PAD_SD3_DATA7__SD3_DATA7		0x5a
561 			MX7D_PAD_SD3_STROBE__SD3_STROBE		0x1a
562 		>;
563 	};
564 
565 	pinctrl_usdhc3_200mhz: usdhc3-200mhz-grp {
566 		fsl,pins = <
567 			MX7D_PAD_SD3_CMD__SD3_CMD		0x5b
568 			MX7D_PAD_SD3_CLK__SD3_CLK		0x1b
569 			MX7D_PAD_SD3_DATA0__SD3_DATA0		0x5b
570 			MX7D_PAD_SD3_DATA1__SD3_DATA1		0x5b
571 			MX7D_PAD_SD3_DATA2__SD3_DATA2		0x5b
572 			MX7D_PAD_SD3_DATA3__SD3_DATA3		0x5b
573 			MX7D_PAD_SD3_DATA4__SD3_DATA4		0x5b
574 			MX7D_PAD_SD3_DATA5__SD3_DATA5		0x5b
575 			MX7D_PAD_SD3_DATA6__SD3_DATA6		0x5b
576 			MX7D_PAD_SD3_DATA7__SD3_DATA7		0x5b
577 			MX7D_PAD_SD3_STROBE__SD3_STROBE		0x1b
578 		>;
579 	};
580 
581 	pinctrl_wdog: wdoggrp {
582 		fsl,pins = <
583 			MX7D_PAD_ENET1_COL__WDOG1_WDOG_ANY	0x74
584 		>;
585 	};
586 
587 	pinctrl_wifi: wifigrp {
588 		fsl,pins = <
589 			/* WiFi Reg On */
590 			MX7D_PAD_SD2_CD_B__GPIO5_IO9		0x00000014
591 			/* WiFi Sleep 32k */
592 			MX7D_PAD_SD1_WP__CCM_CLKO2		0x00000014
593 		>;
594 	};
595 };
596