xref: /freebsd/sys/contrib/device-tree/src/arm/ti/omap/omap4-epson-embt2ws.dts (revision 8d13bc63c0e1d50bc9e47ac1f26329c999bfecf0)
1// 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
54	wl12xx_pwrseq: wl12xx-pwrseq {
55		compatible = "mmc-pwrseq-simple";
56		clocks = <&twl 1>;
57		clock-names = "ext_clock";
58	};
59
60       /* 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>;
83		#clock-cells = <1>;
84		/* 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>;
304	mmc-pwrseq = <&wl12xx_pwrseq>;
305	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
465	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	};
471};
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};
492