Hello,
We have problems with i.MX6 SOM rev 1.5 after POR reset condition driving by POR_B pin, on our custom board (push-pull and open drain tested) and hummingboard rev 3.5 (U1 switch) .
Configuration info
-
i.MX6DL SOM rev 1.5 Wi-Fi + eMMC SRMX6DLWT1D01GE008V15C0/1 and S6LT18C15/0
-
Kernel 4.9.150
-
OS Debian 9.12
-
Wi-Fi firmware: 8.9.0.0.79 and phy firmware 8.2.0.0.242
-
Custom DTB from solidrun-imx_4.9.x_1.0.0_ga branch
diff --git a/arch/arm/boot/dts/imx6dl-hummingboard-emmc-som-v15.dts b/arch/arm/boot/dts/imx6dl-hummingboard-emmc-som-v15.dts
index 16854c17..0ee55dec 100644
--- a/arch/arm/boot/dts/imx6dl-hummingboard-emmc-som-v15.dts
+++ b/arch/arm/boot/dts/imx6dl-hummingboard-emmc-som-v15.dts
@@ -82,8 +82,8 @@
MX6QDL_PAD_GPIO_1__GPIO1_IO01 0x400130b1
MX6QDL_PAD_EIM_DA9__GPIO3_IO09 0x400130b1
MX6QDL_PAD_EIM_DA8__GPIO3_IO08 0x400130b1
- MX6QDL_PAD_EIM_DA7__GPIO3_IO07 0x400130b1
- MX6QDL_PAD_EIM_DA6__GPIO3_IO06 0x400130b1
- MX6QDL_PAD_EIM_DA3__GPIO3_IO03 0x400130b1
+ MX6QDL_PAD_EIM_DA7__GPIO3_IO07 0x40010001 /* MOD IO1 signal */
+ MX6QDL_PAD_EIM_DA6__GPIO3_IO06 0x40007001 /* MOD IO0 signal */
+ MX6QDL_PAD_EIM_DA3__GPIO3_IO03 0x40000839 /* MOD Reset signal */
>;
};
diff --git a/arch/arm/boot/dts/imx6qdl-hummingboard-vendor.dtsi b/arch/arm/boot/dts/imx6qdl-hummingboard-vendor.dtsi
index cec41146..a0b0a02b 100644
--- a/arch/arm/boot/dts/imx6qdl-hummingboard-vendor.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-hummingboard-vendor.dtsi
@@ -59,6 +59,7 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hummingboard_gpio3_5>;
linux,rc-map-name = "rc-rc6-mce";
+ status = "disabled"; /* unused peripheral */
};
mxcfb1: fb@0 {
@@ -70,7 +71,7 @@
int_clk = <0>;
late_init = <0>;
memory-region = <&graphics_mem>;
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
mxcfb2: fb@1 {
@@ -89,6 +90,7 @@
"fsl,imx-audio-hdmi";
model = "imx-audio-hdmi";
hdmi-controller = <&hdmi_audio>;
+ status = "disabled";
};
v4l2_cap_0 {
@@ -110,13 +112,13 @@
&dcic1 {
dcic_id = <0>;
dcic_mux = "dcic-hdmi";
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&dcic2 {
dcic_id = <1>;
dcic_mux = "dcic-lvds1";
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&ecspi2 {
@@ -148,23 +150,23 @@
&hdmi_core {
ipu_id = <0>;
disp_id = <0>;
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&hdmi_video {
fsl,phy_reg_vlev = <0x0294>;
fsl,phy_reg_cksymtx = <0x800d>;
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&hdmi_audio {
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&hdmi_cec {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hummingboard_hdmi>;
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&i2c1 {
@@ -187,6 +189,7 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hummingboard_mipi>;
extended-buffer;
+ status = "disabled"; /* unused peripheral */
};
/* Pro baseboard model */
@@ -208,7 +211,7 @@
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hummingboard_i2c3>;
- status = "okay";
+ status = "disabled";
};
&iomuxc {
@@ -254,10 +257,17 @@
v_channel = <0>;
lanes = <2>;
mipi_dphy_clk = /bits/ 8 <0x28>;
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&vpu_fsl {
memory-region = <&graphics_mem>;
};
+&sgtl5000 {
+ status = "disabled"; /* unused peripheral */
+};
+
+&fec {
+ status = "disabled"; /* unused peripheral */
+};
diff --git a/arch/arm/boot/dts/imx6qdl-hummingboard.dtsi b/arch/arm/boot/dts/imx6qdl-hummingboard.dtsi
index 6a6bb11d..30fb51ad 100644
--- a/arch/arm/boot/dts/imx6qdl-hummingboard.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-hummingboard.dtsi
@@ -106,6 +106,7 @@
};
sound-sgtl5000 {
+ status = "disabled"; /* unused peripheral */
audio-codec = <&sgtl5000>;
audio-routing =
"MIC_IN", "Mic Jack",
@@ -124,11 +125,12 @@
/* IMX6 doesn't implement this yet */
spdif-controller = <&spdif>;
spdif-out;
+ status = "disabled"; /* unused peripheral */
};
};
&audmux {
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&can1 {
@@ -141,7 +143,7 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hummingboard_hdmi>;
ddc-i2c-bus = <&i2c2>;
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&i2c1 {
@@ -157,6 +159,7 @@
/* Pro baseboard model */
sgtl5000: codec@a {
+ status = "disabled"; /* unused peripheral */
clocks = <&clks IMX6QDL_CLK_CKO>;
compatible = "fsl,sgtl5000";
pinctrl-names = "default";
@@ -171,7 +174,7 @@
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hummingboard_i2c2>;
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&iomuxc {
@@ -200,11 +203,11 @@
MX6QDL_PAD_GPIO_1__GPIO1_IO01 0x400130b1
MX6QDL_PAD_EIM_DA9__GPIO3_IO09 0x400130b1
MX6QDL_PAD_EIM_DA8__GPIO3_IO08 0x400130b1
- MX6QDL_PAD_EIM_DA7__GPIO3_IO07 0x400130b1
- MX6QDL_PAD_EIM_DA6__GPIO3_IO06 0x400130b1
+ MX6QDL_PAD_EIM_DA7__GPIO3_IO07 0x40010001 /* MOD IO1 signal */
+ MX6QDL_PAD_EIM_DA6__GPIO3_IO06 0x40007001 /* MOD IO0 signal */
MX6QDL_PAD_SD3_CMD__GPIO7_IO02 0x400130b1
MX6QDL_PAD_SD3_CLK__GPIO7_IO03 0x400130b1
- MX6QDL_PAD_EIM_DA3__GPIO3_IO03 0x400130b1
+ MX6QDL_PAD_EIM_DA3__GPIO3_IO03 0x40000839 /* MOD Reset signal */
>;
};
@@ -343,6 +346,21 @@
MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
>;
};
+
+ pinctrl_hummingboard_uart2: hummingboard2-uart2 {
+ fsl,pins = <
+ MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA 0x1b0b1
+ MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
+ >;
+ };
+
+ pinctrl_hummingboard_uart3: hummingboard2-uart3 {
+ fsl,pins = <
+ MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
+ MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
+ >;
+ };
+
};
};
@@ -350,7 +368,7 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hummingboard_pcie_reset>;
reset-gpio = <&gpio3 4 GPIO_ACTIVE_LOW>;
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&pwm1 {
@@ -367,11 +385,11 @@
&spdif {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hummingboard_spdif>;
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&ssi1 {
- status = "okay";
+ status = "disabled"; /* unused peripheral */
};
&usbh1 {
@@ -407,6 +425,18 @@
status = "okay";
};
+&uart2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_hummingboard_uart2>;
+ status = "okay";
+};
+
+&uart3 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_hummingboard_uart3>;
+ status = "okay";
+};
+
&vcc_3v3 {
vin-supply = <&v_3v2>;
};
Test conditions :
-
15 min loop with POR_B pin hold to low during 0,5 secs (our custom board)
-
5 min loop with with POR_B pin hold to low during 2 secs (our older custom board)
-
manual try with U1 switch (hummingboard rev 3.5)
Boot :
Uboot trying to retrieve bad DTB file (SOM rev 1.3) in specific small temperature range after POR reset condition. This temperature range is not same for all SOM.
If uboot trying the bad DTB one time, all next POR condition he try same file.
------- POR_B condition -------
U-Boot SPL 2018.01-02297-g46b85f008c (Jan 21 2020 - 15:41:58)
Trying to boot from MMC1
U-Boot 2018.01-02297-g46b85f008c (Jan 21 2020 - 15:41:58 +0100)
CPU: Freescale i.MX6DL rev1.3 996 MHz (running at 792 MHz)
CPU: Commercial temperature grade (0C to 95C) at 46C
Reset cause: POR
Board: MX6 HummingBoard (som rev 1.5)
Watchdog enabled
DRAM: 1 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
No panel detected: default to HDMI
Display: HDMI (1024x768)
In: serial
Out: serial
Err: serial
Net: FEC
switch to partitions #0, OK
mmc1(part 0) is current device
Scanning mmc 1:1...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
201 bytes read in 105 ms (1000 Bytes/s)
1: default
Retrieving file: /boot/extlinux/../initrd
8831950 bytes read in 7846 ms (1.1 MiB/s)
Retrieving file: /boot/extlinux/../zImage
7153752 bytes read in 6488 ms (1.1 MiB/s)
append: console=ttymxc0,115200n8 root=UUID=removed rootfstype=ext4 rootwait quiet loglevel=0
Retrieving file: /boot/extlinux/../dtb-dir/imx6dl-hummingboard-emmc-som-v15.dtb
44523 bytes read in 535 ms (81.1 KiB/s)
## Flattened Device Tree blob at 18000000
Booting using the fdt blob at 0x18000000
Using Device Tree in place at 18000000, end 1800ddea
Starting kernel ...
SELinux: Could not open policy file <= /etc/selinux/targeted/policy/policy.30: No such file or directory
Debian GNU/Linux 9 ttymxc0
mer. juil. 2 2025 21:17:09
login:
Debian GNU/Linux 9 ttymxc0
------- POR_B condition -------
U-Boot SPL 2018.01-02297-g46b85f008c (Jan 21 2020 - 15:41:58)
Trying to boot from MMC1
U-Boot 2018.01-02297-g46b85f008c (Jan 21 2020 - 15:41:58 +0100)
CPU: Freescale i.MX6DL rev1.3 996 MHz (running at 792 MHz)
CPU: Commercial temperature grade (0C to 95C) at 48C
Reset cause: POR
Board: MX6 HummingBoard
Watchdog enabled
DRAM: 1 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
No panel detected: default to HDMI
Display: HDMI (1024x768)
In: serial
Out: serial
Err: serial
Net: FEC
switch to partitions #0, OK
mmc1(part 0) is current device
Scanning mmc 1:1...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
201 bytes read in 105 ms (1000 Bytes/s)
1: default
Retrieving file: /boot/extlinux/../initrd
8831950 bytes read in 7835 ms (1.1 MiB/s)
Retrieving file: /boot/extlinux/../zImage
7153752 bytes read in 6490 ms (1.1 MiB/s)
append: console=ttymxc0,115200n8 root=UUID=removed rootfstype=ext4 rootwait quiet loglevel=0
Retrieving file: /boot/extlinux/../dtb-dir/imx6dl-hummingboard-emmc.dtb
** File not found /boot/extlinux/../dtb-dir/imx6dl-hummingboard-emmc.dtb **
Skipping default for failure retrieving fdt
SCRIPT FAILED: continuing...
Note: imx6dl-hummingboard-emmc.dtb file is not existing on our system, products are assembled with SOM rev 1.5.
TI Wi-Fi & Bluetooth :
In some case, rebind 2190000.usdhc can retriving Wi-Fi in working condition.
But if we see the following line in the dmesg:
Bluetooth: hci0: Failed to get CTS.
System can’t up Wi-Fi.
Thanks lot for help,
Enya