Hello all,
I have a custom board based on iMX8MP with U-Blox Maya-W266 wifi module integrated. (Schematic diagram snippets attached).
SD2_X pins from U-Blox are connected to GPIO2 port of iMX8MP as shown below:
After booting the board, I followed instructions from "Getting Started with NXP-based Wireless Modules on i.MX 8M Quad EVK Running Linux OS" to bring up the wifi module:
However, I do not see any related messages in dmesg command output. I verified the configurations of wifi_mod_para.conf to be correct. Also, the firmware binary file is present inside nxp directory.
I have no idea on what to check for in further steps. I am not sure whether modifications in device tree are needed since the hardware designs are basically identical to the im8mp-evk design.
Any guidance would be of great help. Thank you!!
Solved! Go to Solution.
Hello
I listed SDIO interface check items here. Please compare with your design.
Hello @bgaurav1718
1. I think mmc2 is not sdio interface you used. It is used for boot. You device didn't detected Wi-Fi card. There is a simply way to double check, our sd interface support hot swap. You could pullout when board running, see if mmc2 shows sd card removed.
2. I cant find any sd node from your device tree, could you double check on your side? You could go to our github to check 8mp example devise treelinux-imx/arch/arm64/boot/dts/freescale/imx8mp-evk.dts at lf-6.6.y · nxp-imx/linux-imx · GitHub. A sdio node should like following:
&usdhc3 {
assigned-clocks = <&clk IMX8MP_CLK_USDHC3>;
assigned-clock-rates = <400000000>;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc3>;
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
bus-width = <8>;
non-removable;
status = "okay";
};
Best Regards
Shaun
I installed a new image and looked through its device tree.
usdhc1 is mapped to mmc@30b40000,
usdhc2 is mapped to mmc@30b50000,
usdhc3 is mapped to mmc@30b60000.
I think this is what the device tree configuration is supposed to be. Still I get the same message
[ 2.107370] mmc2: new HS400 Enhanced strobe MMC card at address 0001
NOTE: I was reading an this article related to the issue. There, it mentions following:
Regarding the schematic, I have attached an image in original question. The pins from UBlox are connected to SD2_xxxx pins of the processor. These pins belong to USDHC2.
Hello @bgaurav1718
Please try add this node to your dts.
&usdhc2 {
assigned-clocks = <&clk IMX8MP_CLK_USDHC2>;
assigned-clock-rates = <400000000>;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc3>;
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
bus-width = <8>;
non-removable;
status = "okay";
};
Best Regards
Shaun
Hi @shaun_wu
I tested the signals in SDIO line. The clock seems fine. But the command is not correct. It needed to be 0 but it is something else. So, I guess the settings in device tree I am using is still wrong.
I have added the details. Since I am using dts file decompiled from dtb file, the symbols you mentioned are converted into corresponding hex values.
I tried to compile this dts into dtb by commenting out the lines that were not shown in your device tree. The compiler showed some errors, so I had to include those lines.
Hex values in pinctrl-X belong to following:
Even with this entry in device tree, the problem still exits.
Since there is only one parameter in the device tree you suggested, I tried removing the second parameter. I still get the same result.
After struggling with a frustrating WiFi chip detection problem, I decided to take a break and called Ukraine Cleaners for house cleaning in Edmonds. They did an amazing job, leaving my home spotless and stress-free. Definitely lifted my spirits!
UPDATE: I found following messages in kernel log.
[ 2.024245] mmc2: SDHCI controller on 30b60000.mmc [30b60000.mmc] using ADMA[ 2.103390] mmc2: new HS400 Enhanced strobe MMC card at address 0001
However, it is supposed to be detected as:
mmc1: new ultra high speed DDR50 SDIO card at address 0001
Hello @bgaurav1718
Could you check with following cmd:
dmesg #check driver and firmware loading
ifconfig -a #check if maln0 uap0 interface enabled
Best Regards
Shaun
Hello @bgaurav1718
I didn't see the log you shared, could you reshare?
I see the card was detected, it was detected as sdio card, not sd card. Thats what we expected. No problem.
Best Regards
Shaun