Re: [PATCH v2 03/10] ARM: dts: imx6ul: support Engicam MicroGEA BMM board

Frank Li
2025-06-09T15:18:59Z

On Mon, Jun 09, 2025 at 12:15:36PM +0200, Dario Binacchi wrote:
> Support Engicam MicroGEA BMM board with:
>
> - 256 Mbytes NAND Flash
> - 512 Mbytes DRAM DDR2
> - CAN
> - Micro SD card connector
> - USB 2.0 high-speed/full-speed
> - Ethernet MAC
>
> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> Reviewed-by: Peng Fan <peng.fan@nxp.com>
>
> ---
>
> Changes in v2:
> - Move iomuxc and iomuxc_snvs nodes to the end of the DTS file.
> - Add Reviewed-by tag of Peng Fan
>
> arch/arm/boot/dts/nxp/imx/Makefile | 1 +
> .../nxp/imx/imx6ull-engicam-microgea-bmm.dts | 305 ++++++++++++++++++
> 2 files changed, 306 insertions(+)
> create mode 100644 arch/arm/boot/dts/nxp/imx/imx6ull-engicam-microgea-bmm.dts
>
> diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile
> index 8b3abe817e12..57f185198217 100644
> --- a/arch/arm/boot/dts/nxp/imx/Makefile
> +++ b/arch/arm/boot/dts/nxp/imx/Makefile
> @@ -356,6 +356,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
> imx6ull-dhcom-pdk2.dtb \
> imx6ull-dhcom-picoitx.dtb \
> imx6ull-dhcor-maveo-box.dtb \
> + imx6ull-engicam-microgea-bmm.dtb \
> imx6ull-jozacp.dtb \
> imx6ull-kontron-bl.dtb \
> imx6ull-myir-mys-6ulx-eval.dtb \
> diff --git a/arch/arm/boot/dts/nxp/imx/imx6ull-engicam-microgea-bmm.dts b/arch/arm/boot/dts/nxp/imx/imx6ull-engicam-microgea-bmm.dts
> new file mode 100644
> index 000000000000..e4a3b92e2563
> --- /dev/null
> +++ b/arch/arm/boot/dts/nxp/imx/imx6ull-engicam-microgea-bmm.dts
> @@ -0,0 +1,305 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
> + * Copyright (C) 2025 Engicam srl
> + */
> +
> +/dts-v1/;
> +
> +#include "imx6ull-engicam-microgea.dtsi"
> +
> +/ {
> + compatible = "engicam,microgea-imx6ull-bmm",
> + "engicam,microgea-imx6ull", "fsl,imx6ull";
> + model = "Engicam MicroGEA i.MX6ULL BMM Board";
> +
> + backlight {
> + compatible = "pwm-backlight";
> + brightness-levels = <0 100>;
> + num-interpolated-steps = <100>;
> + default-brightness-level = <85>;
> + pwms = <&pwm8 0 100000 0>;
> + };
> +
> + buzzer {
> + compatible = "pwm-beeper";
> + pwms = <&pwm4 0 1000000 0>;
> + };
> +
> + reg_1v8: regulator-1v8 {
> + compatible = "regulator-fixed";
> + regulator-name = "1v8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> +
> + reg_3v3: regulator-3v3 {
> + compatible = "regulator-fixed";
> + regulator-name = "3v3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + };
> +
> + reg_usb1_vbus: regulator-usb1-vbus {
> + compatible = "regulator-fixed";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_reg_usb1>;
> + regulator-name = "usb1_vbus";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + gpio = <&gpio5 0 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + reg_usb2_vbus: regulator-usb2-vbus {
> + compatible = "regulator-fixed";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_reg_usb2>;
> + regulator-name = "usbotg_vbus";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + gpio = <&gpio5 3 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + reg_ext_pwr: regulator-ext-pwr {
> + compatible = "regulator-fixed";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_reg_ext_pwr>;
> + regulator-name = "ext-pwr";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + gpio = <&gpio5 6 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + regulator-always-on;
> + };
> +
> + sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "imx6ull-microgea-bmm-sgtl5000";
> + simple-audio-card,format = "i2s";
> + simple-audio-card,bitclock-master = <&codec_dai>;
> + simple-audio-card,frame-master = <&codec_dai>;
> + simple-audio-card,widgets =
> + "Microphone", "Mic Jack",
> + "Headphone", "Headphone Jack";
> + simple-audio-card,routing =
> + "MIC_IN", "Mic Jack",
> + "Mic Jack", "Mic Bias",
> + "Headphone Jack", "HP_OUT";
> +
> + cpu_dai: simple-audio-card,cpu {
> + sound-dai = <&sai2>;
> + };
> +
> + codec_dai: simple-audio-card,codec {
> + sound-dai = <&codec>;
> + };
> + };
> +};
> +
> +&can1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_can>;
> + status = "okay";
> +};
> +
> +&i2c2 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_i2c2>;
> + clock-frequency = <100000>;
> + status = "okay";
> +
> + codec: sgtl5000@a {

node name should be generic name
s/sgtl5000/audio-codec

> + compatible = "fsl,sgtl5000";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_mclk>;
> + reg = <0x0a>;

reg should after compatible.

> + #sound-dai-cells = <0>;
> + clocks = <&clks IMX6UL_CLK_CKO>;
> + assigned-clocks = <&clks IMX6UL_CLK_CKO2_SEL>,
> + <&clks IMX6UL_CLK_CKO2_PODF>,
> + <&clks IMX6UL_CLK_CKO2>,
> + <&clks IMX6UL_CLK_CKO>;
> + assigned-clock-parents = <&clks IMX6UL_CLK_OSC>,
> + <&clks IMX6UL_CLK_CKO2_SEL>,
> + <&clks IMX6UL_CLK_CKO2_PODF>,
> + <&clks IMX6UL_CLK_CKO2>;
> + VDDA-supply = <&reg_3v3>;
> + VDDIO-supply = <&reg_3v3>;
> + VDDD-supply = <&reg_1v8>;
> + };
> +};
> +
> +&pwm4 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_pwm4>;
> + status = "okay";
> +};
> +
> +&pwm8 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_pwm8>;
> + status = "okay";
> +};
> +
> +&sai2 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_sai2>;
> + status = "okay";
> +};
> +
> +&tsc {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_tsc>;
> + measure-delay-time = <0x9ffff>;
> + pre-charge-time = <0xfff>;
> + xnur-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
> + status = "okay";
> +};
> +
> +&uart1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_uart1>;
> + status = "okay";
> +};
> +
> +&usbotg1 {
> + dr_mode = "host";
> + vbus-supply = <&reg_usb1_vbus>;
> + status = "okay";
> +};
> +
> +&usbotg2 {
> + dr_mode = "host";
> + vbus-supply = <&reg_usb2_vbus>;
> + status = "okay";
> +};
> +
> +/* MicroSD */
> +&usdhc1 {
> + pinctrl-names = "default", "state_100mhz", "state_200mhz";
> + pinctrl-0 = <&pinctrl_usdhc1>;
> + pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
> + pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
> + vmmc-supply = <&reg_3v3>;
> + bus-width = <4>;
> + keep-power-in-suspend;
> + non-removable;
> + wakeup-source;
> + status = "okay";
> +};
> +
> +&iomuxc {
> +

remove this extra empty line

Frank

> + pinctrl_can: can-grp {
> + fsl,pins = <
> + MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX 0x1b020
> + MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX 0x1b020
> + >;
> + };
> +
> + pinctrl_i2c2: i2c2grp {
> + fsl,pins = <
> + MX6UL_PAD_GPIO1_IO00__I2C2_SCL 0x4001b8b0
> + MX6UL_PAD_UART5_RX_DATA__I2C2_SDA 0x4001b8b0
> + >;
> + };
> +
> + pinctrl_mclk: mclkgrp {
> + fsl,pins = <
> + MX6UL_PAD_JTAG_TMS__CCM_CLKO1 0x13009
> + >;
> + };
> +
> + pinctrl_pwm4: pwm4grp {
> + fsl,pins = <
> + MX6UL_PAD_GPIO1_IO05__PWM4_OUT 0x110b0
> + >;
> + };
> +
> + pinctrl_pwm8: pwm8grp {
> + fsl,pins = <
> + MX6UL_PAD_ENET1_RX_ER__PWM8_OUT 0x11008
> + >;
> + };
> +
> + pinctrl_sai2: sai2grp {
> + fsl,pins = <
> + MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA 0x130b0
> + MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK 0x17088
> + MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC 0x17088
> + MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA 0x120b0
> + >;
> + };
> +
> + pinctrl_tsc: tscgrp {
> + fsl,pins = <
> + MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x000b0
> + MX6UL_PAD_GPIO1_IO02__GPIO1_IO02 0x000b0
> + MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x000b0
> + MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0x000b0
> + >;
> + };
> +
> + pinctrl_uart1: uart1grp {
> + fsl,pins = <
> + MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX 0x1b0b1
> + MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1
> + >;
> + };
> +
> + pinctrl_usdhc1: usdhc1grp {
> + fsl,pins = <
> + MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x17059
> + MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x10059
> + MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059
> + MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059
> + MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059
> + MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059
> + >;
> + };
> +
> + pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
> + fsl,pins = <
> + MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170b9
> + MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100b9
> + MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170b9
> + MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170b9
> + MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170b9
> + MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170b9
> + >;
> + };
> +
> + pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
> + fsl,pins = <
> + MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170f9
> + MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100f9
> + MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170f9
> + MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9
> + MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9
> + MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9
> + >;
> + };
> +};
> +
> +&iomuxc_snvs {
> +
> + pinctrl_reg_usb1: regusb1grp {
> + fsl,pins = <
> + MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00 0x17059
> + >;
> + };
> +
> + pinctrl_reg_usb2: regusb2grp {
> + fsl,pins = <
> + MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x17059
> + >;
> + };
> +
> + pinctrl_reg_ext_pwr: reg-ext-pwrgrp {
> + fsl,pins = <
> + MX6ULL_PAD_SNVS_TAMPER6__GPIO5_IO06 0x17059
> + >;
> + };
> +};
> --
> 2.43.0
>