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