blob: 339e52ba3614b63a0a65afb70a9c9d3966ba0ce1 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2023 Andreas Kemnade
4 */
5/dts-v1/;
6
7#include <dt-bindings/leds/common.h>
8#include <dt-bindings/input/input.h>
9#include "omap4460.dtsi"
10
11/ {
12 model = "Epson Moverio BT-200";
13 compatible = "epson,embt2ws", "ti,omap4460", "ti,omap4";
14
15 memory@80000000 {
16 device_type = "memory";
17 reg = <0x80000000 0x40000000>; /* 1024M */
18 };
19
20 backlight-left {
21 compatible = "pwm-backlight";
22 pwms = <&twl_pwm 1 7812500>;
23 power-supply = <&unknown_supply>;
24 };
25
26 backlight-right {
27 compatible = "pwm-backlight";
28 pwms = <&twl_pwm 0 7812500>;
29 power-supply = <&unknown_supply>;
30 };
31
32 chosen {
33 stdout-path = &uart3;
34 };
35
36 gpio-keys {
37 compatible = "gpio-keys";
38 pinctrl-names = "default";
39 pinctrl-0 = <&gpio_keys_pins>;
40
41 key-lock {
42 label = "Lock";
43 gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
44 linux,code = <SW_ROTATE_LOCK>; /* SW_TOUCHPAD_LOCK */
45 linux,input-type = <EV_SW>;
46 };
47 };
48
49 unknown_supply: unknown-supply {
50 compatible = "regulator-fixed";
51 regulator-name = "unknown";
52 };
53
Tom Rini93743d22024-04-01 09:08:13 -040054 wl12xx_pwrseq: wl12xx-pwrseq {
55 compatible = "mmc-pwrseq-simple";
56 clocks = <&twl 1>;
57 clock-names = "ext_clock";
58 };
59
Tom Rini53633a82024-02-29 12:33:36 -050060 /* regulator for wl12xx on sdio2 */
61 wl12xx_vmmc: wl12xx-vmmc {
62 pinctrl-names = "default";
63 pinctrl-0 = <&wl12xx_gpio>;
64 compatible = "regulator-fixed";
65 regulator-name = "vwl1271";
66 regulator-min-microvolt = <1800000>;
67 regulator-max-microvolt = <1800000>;
68 gpio = <&gpio1 24 GPIO_ACTIVE_HIGH>;
69 startup-delay-us = <70000>;
70 enable-active-high;
71 };
72};
73
74&i2c1 {
75 pinctrl-names = "default";
76 pinctrl-0 = <&i2c1_pins>;
77
78 clock-frequency = <400000>;
79
80 twl: pmic@48 {
81 compatible = "ti,twl6032";
82 reg = <0x48>;
Tom Rini93743d22024-04-01 09:08:13 -040083 #clock-cells = <1>;
Tom Rini53633a82024-02-29 12:33:36 -050084 /* IRQ# = 7 */
85 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_1N cascaded to gic */
86 interrupt-controller;
87 #interrupt-cells = <1>;
Tom Rini6bb92fc2024-05-20 09:54:58 -060088 system-power-controller;
Tom Rini53633a82024-02-29 12:33:36 -050089
90 rtc {
91 compatible = "ti,twl4030-rtc";
92 interrupts = <11>;
93 };
94
95 ldo2: regulator-ldo2 {
96 compatible = "ti,twl6032-ldo2";
97 regulator-min-microvolt = <1000000>;
98 regulator-max-microvolt = <3000000>;
99 };
100
101 ldo4: regulator-ldo4 {
102 compatible = "ti,twl6032-ldo4";
103 regulator-min-microvolt = <1200000>;
104 regulator-max-microvolt = <2800000>;
105 };
106
107 ldo3: regulator-ldo3 {
108 compatible = "ti,twl6032-ldo3";
109 regulator-min-microvolt = <1000000>;
110 regulator-max-microvolt = <3000000>;
111 };
112
113 ldo5: regulator-ldo5 {
114 compatible = "ti,twl6032-ldo5";
115 regulator-min-microvolt = <1200000>;
116 regulator-max-microvolt = <3000000>;
117 ti,retain-on-reset;
118 };
119
120 ldo1: regulator-ldo1 {
121 compatible = "ti,twl6032-ldo1";
122 regulator-min-microvolt = <1800000>;
123 regulator-max-microvolt = <2500000>;
124 };
125
126 ldo7: regulator-ldo7 {
127 compatible = "ti,twl6032-ldo7";
128 regulator-min-microvolt = <1200000>;
129 regulator-max-microvolt = <2900000>;
130 };
131
132 ldoln: regulator-ldoln {
133 compatible = "ti,twl6032-ldoln";
134 regulator-always-on;
135 };
136
137 ldo6: regulator-ldo6 {
138 compatible = "ti,twl6032-ldo6";
139 regulator-always-on;
140 };
141
142 ldousb: regulator-ldousb {
143 compatible = "ti,twl6032-ldousb";
144 regulator-always-on;
145 };
146
147 vio: regulator-vio {
148 compatible = "ti,twl6032-vio";
149 regulator-always-on;
150 };
151
152 twl_usb_comparator: usb-comparator {
153 compatible = "ti,twl6030-usb";
154 interrupts = <4>, <10>;
155 };
156
157 twl_pwm: pwm {
158 /* provides two PWMs (id 0, 1 for PWM1 and PWM2) */
159 compatible = "ti,twl6030-pwm";
160 #pwm-cells = <2>;
161 };
162
163 twl_pwmled: pwmled {
164 /* provides one PWM (id 0 for Charging indicator LED) */
165 compatible = "ti,twl6030-pwmled";
166 #pwm-cells = <2>;
167 };
168
169 gpadc {
170 compatible = "ti,twl6032-gpadc";
171 interrupts = <3>;
172 #io-channel-cells = <1>;
173 };
174
175 };
176};
177
178#include "twl6030_omap4.dtsi"
179
180&twl_usb_comparator {
181 usb-supply = <&ldousb>;
182};
183
184
185&i2c2 {
186 pinctrl-names = "default";
187 pinctrl-0 = <&i2c2_pins>;
188
189 clock-frequency = <200000>;
190
191 /* at head/glasses */
192 mpu9150h: imu@68 {
193 compatible = "invensense,mpu9150";
194 reg = <0x68>;
195
196 pinctrl-names = "default";
197 pinctrl-0 = <&mpu9150h_pins>;
198 interrupt-parent = <&gpio2>;
199 interrupt = <19 IRQ_TYPE_LEVEL_HIGH>;
200 };
201};
202
203&i2c3 {
204 pinctrl-names = "default";
205 pinctrl-0 = <&i2c3_pins>;
206
207 clock-frequency = <100000>;
208
209 led-controller@66 {
210 compatible = "rohm,bd2606mvv";
211 reg = <0x66>;
212
213 #address-cells = <1>;
214 #size-cells = <0>;
215
216 led@0 {
217 reg = <0>;
218 color = <LED_COLOR_ID_GREEN>;
219 function = LED_FUNCTION_STATUS;
220 };
221
222 led@2 {
223 reg = <2>;
224 color = <LED_COLOR_ID_BLUE>;
225 function = LED_FUNCTION_STATUS;
226 };
227
228 led@4 {
229 reg = <4>;
230 color = <LED_COLOR_ID_RED>;
231 function = LED_FUNCTION_STATUS;
232 };
233 };
234};
235
236&i2c4 {
237 pinctrl-names = "default";
238 pinctrl-0 = <&i2c4_pins>;
239
240 clock-frequency = <360000>;
241
242 /* TODO: KXTI9 at 0xf */
243
244 tlv320aic3x: codec@18 {
245 compatible = "ti,tlv320aic3x";
246 reg = <0x18>;
247 pinctrl-names = "default";
248 pinctrl-0 = <&tlv320aic3x_pins>;
249 #sound-dai-cells = <0>;
250
251 reset-gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
252 };
253
254 mpu9150: imu@68 {
255 compatible = "invensense,mpu9150";
256 reg = <0x68>;
257
258 pinctrl-names = "default";
259 pinctrl-0 = <&mpu9150_pins>;
260 interrupt-parent = <&gpio2>;
261 interrupt = <7 IRQ_TYPE_LEVEL_HIGH>;
262 invensense,level-shifter;
263 };
264};
265
266&keypad {
267 pinctrl-names = "default";
268 pinctrl-0 = <&keypad_pins>;
269 keypad,num-rows = <2>;
270 keypad,num-columns = <3>;
271 linux,keymap = <MATRIX_KEY(0, 0, KEY_MENU)
272 MATRIX_KEY(0, 1, KEY_HOME)
273 MATRIX_KEY(0, 2, KEY_BACK)
274 MATRIX_KEY(1, 0, KEY_ESC)
275 MATRIX_KEY(1, 1, KEY_VOLUMEDOWN)
276 MATRIX_KEY(1, 2, KEY_VOLUMEUP)>;
277 linux,input-no-autorepeat;
278};
279
280&mcbsp2 {
281 #sound-dai-cells = <0>;
282 pinctrl-names = "default";
283 pinctrl-0 = <&mcbsp2_pins>;
284 status = "okay";
285};
286
287
288&mmc1 {
289 /* sdcard */
290 vmmc-supply = <&ldo5>;
291 broken-cd;
292 bus-width = <4>;
293};
294
295&mmc2 {
296 /* emmc */
297 vmmc-supply = <&ldo2>;
298 bus-width = <8>;
299};
300
301&mmc3 {
302 pinctrl-names = "default";
303 pinctrl-0 = <&wl12xx_pins>;
304 vmmc-supply = <&wl12xx_vmmc>;
Tom Rini93743d22024-04-01 09:08:13 -0400305 mmc-pwrseq = <&wl12xx_pwrseq>;
Tom Rini53633a82024-02-29 12:33:36 -0500306 interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
307 &omap4_pmx_core 0x12e>;
308 non-removable;
309 bus-width = <4>;
310 cap-power-off-card;
311
312 #address-cells = <1>;
313 #size-cells = <0>;
314 wlcore: wlcore@2 {
315 compatible = "ti,wl1283";
316 reg = <2>;
317 interrupts-extended = <&gpio1 23 IRQ_TYPE_LEVEL_HIGH>;
318 interrupt-names = "irq";
319 ref-clock-frequency = <26000000>;
320 tcxo-clock-frequency = <26000000>;
321 };
322};
323
324&mmc4 {
325 status = "disabled";
326};
327
328&mmc5 {
329 status = "disabled";
330};
331
332&omap4_pmx_core {
333 bt_pins: pinmux-bt-pins {
334 pinctrl-single,pins = <
335 OMAP4_IOPAD(0x1ca, PIN_OUTPUT | MUX_MODE3) /* gpio25 */
336 >;
337 };
338
339 gpio_keys_pins: pinmux-gpio-key-pins {
340 pinctrl-single,pins = <
341 OMAP4_IOPAD(0x56, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio35 */
342 >;
343 };
344
345 i2c1_pins: pinmux-i2c1-pins {
346 pinctrl-single,pins = <
347 OMAP4_IOPAD(0x122, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c1_scl */
348 OMAP4_IOPAD(0x124, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c1_sda */
349 >;
350 };
351
352 i2c2_pins: pinmux-i2c2-pins {
353 pinctrl-single,pins = <
354 OMAP4_IOPAD(0x126, PIN_INPUT | MUX_MODE0) /* i2c2_scl */
355 OMAP4_IOPAD(0x128, PIN_INPUT | MUX_MODE0) /* i2c2_sda */
356 >;
357 };
358
359 i2c3_pins: pinmux-i2c3-pins {
360 pinctrl-single,pins = <
361 OMAP4_IOPAD(0x12a, PIN_INPUT | MUX_MODE0) /* i2c3_scl */
362 OMAP4_IOPAD(0x12c, PIN_INPUT | MUX_MODE0) /* i2c3_sda */
363 >;
364 };
365
366 i2c4_pins: pinmux-i2c4-pins {
367 pinctrl-single,pins = <
368 OMAP4_IOPAD(0x12e, PIN_INPUT | MUX_MODE0) /* i2c4_scl */
369 OMAP4_IOPAD(0x130, PIN_INPUT | MUX_MODE0) /* i2c4_sda */
370 >;
371 };
372
373 keypad_pins: pinmux-keypad-pins {
374 pinctrl-single,pins = <
375 /* kpd_row0 */
376 OMAP4_IOPAD(0x0050, PIN_INPUT_PULLUP | MUX_MODE1)
377 /* kpd_row1 */
378 OMAP4_IOPAD(0x0052, PIN_INPUT_PULLUP | MUX_MODE1)
379 /* kpd_row2 */
380 OMAP4_IOPAD(0x0054, PIN_INPUT_PULLUP | MUX_MODE1)
381 /* kpd_col0 */
382 OMAP4_IOPAD(0x0058, PIN_OUTPUT | MUX_MODE1)
383 /* kpd_col1 */
384 OMAP4_IOPAD(0x005a, PIN_OUTPUT | MUX_MODE1)
385 /* kpd_col2 */
386 OMAP4_IOPAD(0x005c, PIN_OUTPUT | MUX_MODE1)
387 >;
388 };
389
390 mcbsp2_pins: pinmux-mcbsp2-pins {
391 pinctrl-single,pins = <
392 OMAP4_IOPAD(0x0f6, PIN_INPUT | MUX_MODE0) /* abe_mcbsp2_clkx */
393 OMAP4_IOPAD(0x0f8, PIN_INPUT | MUX_MODE0) /* abe_mcbsp2_dr */
394 OMAP4_IOPAD(0x0fa, PIN_OUTPUT | MUX_MODE0) /* abe_mcbsp2_dx */
395 OMAP4_IOPAD(0x0fc, PIN_INPUT | MUX_MODE0) /* abe_mcbsp2_fsx */
396 >;
397 };
398
399 mpu9150_pins: pinmux-mpu9150-pins {
400 pinctrl-single,pins = <
401 OMAP4_IOPAD(0x5e, PIN_INPUT_PULLUP | MUX_MODE3)
402 >;
403 };
404
405 mpu9150h_pins: pinmux-mpu9150h-pins {
406 pinctrl-single,pins = <
407 OMAP4_IOPAD(0x76, PIN_INPUT_PULLUP | MUX_MODE3)
408 >;
409 };
410
411 tlv320aic3x_pins: pinmux-tlv320aic3x-pins {
412 pinctrl-single,pins = <
413 OMAP4_IOPAD(0x7e, PIN_OUTPUT | MUX_MODE3)
414 >;
415 };
416
417 uart2_pins: pinmux-uart2-pins {
418 pinctrl-single,pins = <
419 OMAP4_IOPAD(0x118, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_cts.uart2_cts */
420 OMAP4_IOPAD(0x11a, PIN_OUTPUT | MUX_MODE0) /* uart2_rts.uart2_rts */
421 OMAP4_IOPAD(0x11c, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_rx.uart2_rx */
422 OMAP4_IOPAD(0x11e, PIN_OUTPUT | MUX_MODE0) /* uart2_tx.uart2_tx */
423 >;
424 };
425
426 uart3_pins: pinmux-uart3-pins {
427 pinctrl-single,pins = <
428 OMAP4_IOPAD(0x144, PIN_INPUT | MUX_MODE0) /* uart3_rx_irrx */
429 OMAP4_IOPAD(0x146, PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx */
430 >;
431 };
432
433 usb_otg_hs_pins: pinmux-usb-otg-hs-pins {
434 pinctrl-single,pins = <
435 OMAP4_IOPAD(0x194, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* usba0_otg_ce */
436 OMAP4_IOPAD(0x196, PIN_INPUT | MUX_MODE0) /* usba0_otg_dp */
437 OMAP4_IOPAD(0x198, PIN_INPUT | MUX_MODE0) /* usba0_otg_dm */
438 >;
439 };
440
441 wl12xx_pins: pinmux-wl12xx-pins {
442 pinctrl-single,pins = <
443 OMAP4_IOPAD(0x1c6, PIN_INPUT | MUX_MODE3) /* gpio_23 / IRQ */
444 OMAP4_IOPAD(0x16c, PIN_INPUT_PULLUP | MUX_MODE2) /* sdmmc3_dat2 */
445 OMAP4_IOPAD(0x16e, PIN_INPUT_PULLUP | MUX_MODE2) /* sdmmc3_dat1 */
446 OMAP4_IOPAD(0x170, PIN_INPUT_PULLUP | MUX_MODE2) /* sdmmc3_dat0 */
447 OMAP4_IOPAD(0x172, PIN_INPUT_PULLUP | MUX_MODE2) /* sdmmc3_dat3 */
448 OMAP4_IOPAD(0x174, PIN_INPUT_PULLUP | MUX_MODE2) /* sdmmc3_cmd */
449 OMAP4_IOPAD(0x176, PIN_INPUT_PULLUP | MUX_MODE2) /* sdmmc3_clk */
450 >;
451 };
452
453 wl12xx_gpio: pinmux-wl12xx-gpio-pins {
454 pinctrl-single,pins = <
455 OMAP4_IOPAD(0x1c8, PIN_OUTPUT | MUX_MODE3) /* gpio_24 / WLAN_EN */
456 >;
457 };
458};
459
460&uart2 {
461 pinctrl-names = "default";
462 pinctrl-0 = <&uart2_pins &bt_pins>;
463 interrupts-extended = <&wakeupgen GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH
464 &omap4_pmx_core OMAP4_UART2_RX>;
465
Tom Rini93743d22024-04-01 09:08:13 -0400466 bluetooth-gnss {
467 compatible = "ti,wl1283-st";
468 enable-gpios = <&gpio1 25 GPIO_ACTIVE_HIGH>; /* GPIO_25 */
469 clocks = <&twl 1>;
470 clock-names = "ext_clock";
471 };
Tom Rini53633a82024-02-29 12:33:36 -0500472};
473
474&uart3 {
475 pinctrl-names = "default";
476 pinctrl-0 = <&uart3_pins>;
477 interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
478 &omap4_pmx_core OMAP4_UART3_RX>;
479};
480
481&usb_otg_hs {
482 pinctrl-names = "default";
483 pinctrl-0 = <&usb_otg_hs_pins>;
484
485 interface-type = <1>;
486 mode = <3>;
487 power = <50>;
488};
489
490&usbhshost {
491 status = "disabled";
492};