I am using an iMX8qxp on my custom board and I am experiencing tuning failed error when inserting a SDR50 SD card. This issue does not happen when I insert a SDR104 card.
Here is the device tree configuration
usdhc2: mmc@5b020000 {
interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x5b020000 0x10000>;
clocks = <&sdhc1_lpcg 1>,
<&sdhc1_lpcg 0>,
<&sdhc1_lpcg 2>;
clock-names = "ipg", "per", "ahb";
assigned-clocks = <&clk IMX_SC_R_SDHC_1 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <200000000>;
power-domains = <&pd IMX_SC_R_SDHC_1>;
fsl,tuning-start-tap = <20>;
fsl,tuning-step= <2>;
status = "disabled";
};
&usdhc2 {
assigned-clocks = <&clk IMX_SC_R_SDHC_1 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <200000000>;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
bus-width = <4>;
vmmc-supply = <®_usdhc2_vmmc>;
cd-gpios = <&lsio_gpio4 22 GPIO_ACTIVE_LOW>;
wp-gpios = <&lsio_gpio4 21 GPIO_ACTIVE_HIGH>;
status = "okay";
};
I am wondering if trace length has something to do with this error. This is because previously I have tried on another board also using iMX8, but the SD card slot is nearer to the processor. In this case, I did not encounter any tuning failure for both SDR50 and SDR104
If trace length is the issue, what parameters I can tweak? Thanks
How about your usdhc2 hardware design? For the SD card design, for the IO power is 1.8V or 3.3V?