xref: /linux/arch/arm/boot/dts/nxp/imx/imx6ull-engicam-microgea-bmm.dts (revision 115e74a29b530d121891238e9551c4bcdf7b04b5)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
4 * Copyright (C) 2025 Engicam srl
5 */
6
7/dts-v1/;
8
9#include "imx6ull-engicam-microgea.dtsi"
10
11/ {
12	compatible = "engicam,microgea-imx6ull-bmm",
13		     "engicam,microgea-imx6ull", "fsl,imx6ull";
14	model = "Engicam MicroGEA i.MX6ULL BMM Board";
15
16	backlight {
17		compatible = "pwm-backlight";
18		brightness-levels = <0 100>;
19		num-interpolated-steps = <100>;
20		default-brightness-level = <85>;
21		pwms = <&pwm8 0 100000 0>;
22	};
23
24	buzzer {
25		compatible = "pwm-beeper";
26		pwms = <&pwm4 0 1000000 0>;
27	};
28
29	reg_1v8: regulator-1v8 {
30		compatible = "regulator-fixed";
31		regulator-name = "1v8";
32		regulator-min-microvolt = <1800000>;
33		regulator-max-microvolt = <1800000>;
34	};
35
36	reg_3v3: regulator-3v3 {
37		compatible = "regulator-fixed";
38		regulator-name = "3v3";
39		regulator-min-microvolt = <3300000>;
40		regulator-max-microvolt = <3300000>;
41	};
42
43	reg_usb1_vbus: regulator-usb1-vbus {
44		compatible = "regulator-fixed";
45		pinctrl-names = "default";
46		pinctrl-0 = <&pinctrl_reg_usb1>;
47		regulator-name = "usb1_vbus";
48		regulator-min-microvolt = <5000000>;
49		regulator-max-microvolt = <5000000>;
50		gpio = <&gpio5 0 GPIO_ACTIVE_HIGH>;
51		enable-active-high;
52	};
53
54	reg_usb2_vbus: regulator-usb2-vbus {
55		compatible = "regulator-fixed";
56		pinctrl-names = "default";
57		pinctrl-0 = <&pinctrl_reg_usb2>;
58		regulator-name = "usbotg_vbus";
59		regulator-min-microvolt = <5000000>;
60		regulator-max-microvolt = <5000000>;
61		gpio = <&gpio5 3 GPIO_ACTIVE_HIGH>;
62		enable-active-high;
63	};
64
65	reg_ext_pwr: regulator-ext-pwr {
66		compatible = "regulator-fixed";
67		pinctrl-names = "default";
68		pinctrl-0 = <&pinctrl_reg_ext_pwr>;
69		regulator-name = "ext-pwr";
70		regulator-min-microvolt = <5000000>;
71		regulator-max-microvolt = <5000000>;
72		gpio = <&gpio5 6 GPIO_ACTIVE_HIGH>;
73		enable-active-high;
74		regulator-always-on;
75	};
76
77	sound {
78		compatible = "simple-audio-card";
79		simple-audio-card,name = "imx6ull-microgea-bmm-sgtl5000";
80		simple-audio-card,format = "i2s";
81		simple-audio-card,bitclock-master = <&codec_dai>;
82		simple-audio-card,frame-master = <&codec_dai>;
83		simple-audio-card,widgets =
84			"Microphone", "Mic Jack",
85			"Headphone", "Headphone Jack";
86		simple-audio-card,routing =
87			"MIC_IN", "Mic Jack",
88			"Mic Jack", "Mic Bias",
89			"Headphone Jack", "HP_OUT";
90
91		cpu_dai: simple-audio-card,cpu {
92			sound-dai = <&sai2>;
93		};
94
95		codec_dai: simple-audio-card,codec {
96			sound-dai = <&codec>;
97		};
98	};
99};
100
101&can1 {
102	pinctrl-names = "default";
103	pinctrl-0 = <&pinctrl_can>;
104	status = "okay";
105};
106
107&i2c2 {
108	pinctrl-names = "default";
109	pinctrl-0 = <&pinctrl_i2c2>;
110	clock-frequency = <100000>;
111	status = "okay";
112
113	codec: audio-codec@a {
114		compatible = "fsl,sgtl5000";
115		reg = <0x0a>;
116		pinctrl-names = "default";
117		pinctrl-0 = <&pinctrl_mclk>;
118		#sound-dai-cells = <0>;
119		clocks = <&clks IMX6UL_CLK_CKO>;
120		assigned-clocks = <&clks IMX6UL_CLK_CKO2_SEL>,
121				  <&clks IMX6UL_CLK_CKO2_PODF>,
122				  <&clks IMX6UL_CLK_CKO2>,
123				  <&clks IMX6UL_CLK_CKO>;
124		assigned-clock-parents = <&clks IMX6UL_CLK_OSC>,
125					 <&clks IMX6UL_CLK_CKO2_SEL>,
126					 <&clks IMX6UL_CLK_CKO2_PODF>,
127					 <&clks IMX6UL_CLK_CKO2>;
128		VDDA-supply = <&reg_3v3>;
129		VDDIO-supply = <&reg_3v3>;
130		VDDD-supply = <&reg_1v8>;
131	};
132};
133
134&pwm4 {
135	pinctrl-names = "default";
136	pinctrl-0 = <&pinctrl_pwm4>;
137	status = "okay";
138};
139
140&pwm8 {
141	pinctrl-names = "default";
142	pinctrl-0 = <&pinctrl_pwm8>;
143	status = "okay";
144};
145
146&sai2 {
147	pinctrl-names = "default";
148	pinctrl-0 = <&pinctrl_sai2>;
149	status = "okay";
150};
151
152&tsc {
153	pinctrl-names = "default";
154	pinctrl-0 = <&pinctrl_tsc>;
155	measure-delay-time = <0x9ffff>;
156	pre-charge-time = <0xfff>;
157	xnur-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
158	status = "okay";
159};
160
161&uart1 {
162	pinctrl-names = "default";
163	pinctrl-0 = <&pinctrl_uart1>;
164	status = "okay";
165};
166
167&usbotg1 {
168	dr_mode = "host";
169	vbus-supply = <&reg_usb1_vbus>;
170	status = "okay";
171};
172
173&usbotg2 {
174	dr_mode = "host";
175	vbus-supply = <&reg_usb2_vbus>;
176	status = "okay";
177};
178
179/* MicroSD */
180&usdhc1 {
181	pinctrl-names = "default", "state_100mhz", "state_200mhz";
182	pinctrl-0 = <&pinctrl_usdhc1>;
183	pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
184	pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
185	vmmc-supply = <&reg_3v3>;
186	bus-width = <4>;
187	keep-power-in-suspend;
188	non-removable;
189	wakeup-source;
190	status = "okay";
191};
192
193&iomuxc {
194	pinctrl_can: can-grp {
195		fsl,pins = <
196			MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX	0x1b020
197			MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX	0x1b020
198		>;
199	};
200
201	pinctrl_i2c2: i2c2grp {
202		fsl,pins = <
203			MX6UL_PAD_GPIO1_IO00__I2C2_SCL		0x4001b8b0
204			MX6UL_PAD_UART5_RX_DATA__I2C2_SDA	0x4001b8b0
205		>;
206	};
207
208	pinctrl_mclk: mclkgrp {
209		fsl,pins = <
210			MX6UL_PAD_JTAG_TMS__CCM_CLKO1		0x13009
211		>;
212	};
213
214	pinctrl_pwm4: pwm4grp {
215		fsl,pins = <
216			MX6UL_PAD_GPIO1_IO05__PWM4_OUT		0x110b0
217		>;
218	};
219
220	pinctrl_pwm8: pwm8grp {
221		fsl,pins = <
222			MX6UL_PAD_ENET1_RX_ER__PWM8_OUT		0x11008
223		>;
224	};
225
226	pinctrl_sai2: sai2grp {
227		fsl,pins = <
228			MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA	0x130b0
229			MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK	0x17088
230			MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC	0x17088
231			MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA	0x120b0
232		>;
233	};
234
235	pinctrl_tsc: tscgrp {
236		fsl,pins = <
237			MX6UL_PAD_GPIO1_IO01__GPIO1_IO01	0x000b0
238			MX6UL_PAD_GPIO1_IO02__GPIO1_IO02	0x000b0
239			MX6UL_PAD_GPIO1_IO03__GPIO1_IO03	0x000b0
240			MX6UL_PAD_GPIO1_IO04__GPIO1_IO04	0x000b0
241		>;
242	};
243
244	pinctrl_uart1: uart1grp {
245		fsl,pins = <
246			MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX	0x1b0b1
247			MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX	0x1b0b1
248		>;
249	};
250
251	pinctrl_usdhc1: usdhc1grp {
252		fsl,pins = <
253			MX6UL_PAD_SD1_CMD__USDHC1_CMD		0x17059
254			MX6UL_PAD_SD1_CLK__USDHC1_CLK		0x10059
255			MX6UL_PAD_SD1_DATA0__USDHC1_DATA0	0x17059
256			MX6UL_PAD_SD1_DATA1__USDHC1_DATA1	0x17059
257			MX6UL_PAD_SD1_DATA2__USDHC1_DATA2	0x17059
258			MX6UL_PAD_SD1_DATA3__USDHC1_DATA3	0x17059
259		>;
260	};
261
262	pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
263		fsl,pins = <
264			MX6UL_PAD_SD1_CMD__USDHC1_CMD		0x170b9
265			MX6UL_PAD_SD1_CLK__USDHC1_CLK		0x100b9
266			MX6UL_PAD_SD1_DATA0__USDHC1_DATA0	0x170b9
267			MX6UL_PAD_SD1_DATA1__USDHC1_DATA1	0x170b9
268			MX6UL_PAD_SD1_DATA2__USDHC1_DATA2	0x170b9
269			MX6UL_PAD_SD1_DATA3__USDHC1_DATA3	0x170b9
270		>;
271	};
272
273	pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
274		fsl,pins = <
275			MX6UL_PAD_SD1_CMD__USDHC1_CMD		0x170f9
276			MX6UL_PAD_SD1_CLK__USDHC1_CLK		0x100f9
277			MX6UL_PAD_SD1_DATA0__USDHC1_DATA0	0x170f9
278			MX6UL_PAD_SD1_DATA1__USDHC1_DATA1	0x170f9
279			MX6UL_PAD_SD1_DATA2__USDHC1_DATA2	0x170f9
280			MX6UL_PAD_SD1_DATA3__USDHC1_DATA3	0x170f9
281		>;
282	};
283};
284
285&iomuxc_snvs {
286	pinctrl_reg_usb1: regusb1grp {
287		fsl,pins = <
288			MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00	0x17059
289		>;
290	};
291
292	pinctrl_reg_usb2: regusb2grp {
293		fsl,pins = <
294			MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03	0x17059
295		>;
296	};
297
298	pinctrl_reg_ext_pwr: reg-ext-pwrgrp {
299		fsl,pins = <
300			MX6ULL_PAD_SNVS_TAMPER6__GPIO5_IO06	0x17059
301		>;
302	};
303};
304