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