Hi,
I'm trying to use i.MX8MQ-EVK board MMC1(usdhc2) in SDIO3.0 SDR104 mode, to work with WLAN card.
working with yocto release imx-linux-honister with kernel version v5.15.5.
Facing issues with operating in both SDIO2.0 50MHz & SDIO3.0 SDR104 200MHz clock modes
Listing below the tests I have tried.
1. Default code from imx-linux-honister release without any change
Result: WLAN Card is detected as SDR104 UHS card. But SDIO bus error (-84) is seen
Both SDIO2.0 HS 50MHz mode & SDIO 3.0 UHS 200MHz mode are Not Working
2. Modify imx8mq-evk.dts to update “pinctrl_usdhc2_200mhz” to support Max Slewrate
Result: WLAN Card is detected as SDR104 UHS card. But SDIO bus error (-84) & timeout (-110) is seen
Both SDIO2.0 HS 50MHz mode & SDIO 3.0 UHS 200MHz mode are Not Working
3. Integrate the patch “L3.10.17_1.0.0_MX6SL_SDHC3_1v8_kernel.patch” suggested in NXP forum
Result: WLAN Card is detected as SDR104 UHS card. But SDIO timeout (-110) is seen
SDIO2.0 HS mode with 50MHz clock is Working Successfully.
Figured out that disabling below code helps to successfully run SDIO2.0 50MHz mode.
imx_data->pins_100mhz = pinctrl_lookup_state(imx_data->pinctrl, ESDHC_PINCTRL_STATE_100MHZ);
imx_data->pins_200mhz = pinctrl_lookup_state(imx_data->pinctrl, ESDHC_PINCTRL_STATE_200MHZ);
But couldn't figure out how to successfully run SDIO3.0 200MHz mode.
Tested the same WLAN card with kernel v5.15.5 in i.MX6SLL-EVK, both SDIO2.0 50MHz & SDIO3.0 200MHZ are working correctly.
The only change needed was to edit pinctrl_usdhc3_200mhz in "imx6sll-eck.dts" to support Max slewrate.
Attaching here the DTB & SDIO patches applied to imx-linux-honister code and WLAN card SDIO logs.
Kindly help me figure out how to resolve this problem
Thanks.
Regards,
Pandi Vijayaraj
The problem still exists. Not able to use SDIO3.0 200MHz mode with WLAN card.
i.MX8MQ-EVK provides only a micro-SD lot. So we had to use a micro-SD adapter to interface our WLAN card.
Will that be a reason for this issue observed?
The SDR104 200MHz is supported in the board dts. https://source.codeaurora.org/external/imx/linux-imx/tree/arch/arm64/boot/dts/freescale/imx8mq-evk.d....
How about your state now, does it work?