IMX8MP SDIO DDR50 clock issue

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

IMX8MP SDIO DDR50 clock issue

51 Views
vishal088
Contributor I

Hello

We recently applied the following NXP fix from kernel v7.2-rc4.

58c08eea91572df62d71731f1d1180a0dc8e3a6f
mmc: sdhci-esdhc-imx: fix esdhc_change_pinstate() to allow default state restore

Before this fix, esdhc_change_pinstate() required all pin control state named default, state_100mhz and state_200mhz to be present in device tree before applying any timing-specific pin control state. Therefore, if any pin control was not defined in the USDHC device-tree node, the driver did not apply state_100mhz, even when the SDIO device switched to DDR50 timing.
With the fix, the driver validates and applies only the pin control state required for the selected timing mode. Therefore, state_100mhz is now correctly applied for SDR50 and DDR50 modes.

After applying this fix, we observed an issue with the SD2 clock-pad configuration in state_100mhz.

SDIO device (in DDR50 mode) does not work with:

MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK 0x194

However, SDIO device (in DDR50 mode) works with:

MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK 0x184
MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK 0x192
MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK 0x196

The 0x184 setting differs from 0x194 only in slew rate. The other working settings use different drive-strength values.

We understand this behavior may be related to signal integrity. However, the result is not straightforward: DDR50 fails with 0x194, but works both with a slower slew rate (0x184) and with a stronger drive setting (0x196).

In addition, SDR50 works correctly with 0x194. The issue is observed only in DDR50 mode.

Could you please advise whether there are other i.MX8MP USDHC/SDIO configuration requirements or known limitations that we should consider? We would also appreciate any recommended debugging steps.

Regards
Vishal

0 Kudos
Reply
2 Replies

17 Views
vishal088
Contributor I

Hi @Zhiming_Liu 

for state_100mhz SD2_DATA<X> is 0x194.

Regards
Vishal 


 

0 Kudos
Reply

24 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @vishal088 

Can you also share the SD2_DATA<X> setting? 

Best Regards,
Zhiming

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2409773%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EIMX8MP%20SDIO%20DDR50%20clock%20issue%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2409773%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%3C%2FP%3E%3CP%3EWe%20recently%20applied%20the%20following%20NXP%20fix%20from%20kernel%20v7.2-rc4.%3C%2FP%3E%3CP%3E58c08eea91572df62d71731f1d1180a0dc8e3a6f%3CBR%20%2F%3Emmc%3A%20sdhci-esdhc-imx%3A%20fix%20esdhc_change_pinstate()%20to%20allow%20default%20state%20restore%3C%2FP%3E%3CP%3EBefore%20this%20fix%2C%20esdhc_change_pinstate()%20required%20all%20pin%20control%20state%20named%20default%2C%26nbsp%3Bstate_100mhz%20and%20state_200mhz%20to%20be%20present%20in%20device%20tree%20before%20applying%20any%20timing-specific%20pin%20control%20state.%20Therefore%2C%20if%20any%20pin%20control%20was%20not%20defined%20in%20the%20USDHC%20device-tree%20node%2C%20the%20driver%20did%20not%20apply%20state_100mhz%2C%20even%20when%20the%20SDIO%20device%20switched%20to%20DDR50%20timing.%3CBR%20%2F%3EWith%20the%20fix%2C%20the%20driver%20validates%20and%20applies%20only%20the%20pin%20control%20state%20required%20for%20the%20selected%20timing%20mode.%20Therefore%2C%20state_100mhz%20is%20now%20correctly%20applied%20for%20SDR50%20and%20DDR50%20modes.%3C%2FP%3E%3CP%3EAfter%20applying%20this%20fix%2C%20we%20observed%20an%20issue%20with%20the%20SD2%20clock-pad%20configuration%20in%20state_100mhz.%3C%2FP%3E%3CP%3ESDIO%20device%20(in%20DDR50%20mode)%20does%20not%20work%20with%3A%3C%2FP%3E%3CP%3EMX8MP_IOMUXC_SD2_CLK__USDHC2_CLK%200x194%3C%2FP%3E%3CP%3EHowever%2C%20SDIO%20device%20(in%20DDR50%20mode)%20works%20with%3A%3C%2FP%3E%3CP%3EMX8MP_IOMUXC_SD2_CLK__USDHC2_CLK%200x184%3CBR%20%2F%3EMX8MP_IOMUXC_SD2_CLK__USDHC2_CLK%200x192%3CBR%20%2F%3EMX8MP_IOMUXC_SD2_CLK__USDHC2_CLK%200x196%3C%2FP%3E%3CP%3EThe%200x184%20setting%20differs%20from%200x194%20only%20in%20slew%20rate.%20The%20other%20working%20settings%20use%20different%20drive-strength%20values.%3C%2FP%3E%3CP%3EWe%20understand%20this%20behavior%20may%20be%20related%20to%20signal%20integrity.%20However%2C%20the%20result%20is%20not%20straightforward%3A%20DDR50%20fails%20with%200x194%2C%20but%20works%20both%20with%20a%20slower%20slew%20rate%20(0x184)%20and%20with%20a%20stronger%20drive%20setting%20(0x196).%3C%2FP%3E%3CP%3EIn%20addition%2C%20SDR50%20works%20correctly%20with%200x194.%20The%20issue%20is%20observed%20only%20in%20DDR50%20mode.%3C%2FP%3E%3CP%3ECould%20you%20please%20advise%20whether%20there%20are%20other%20i.MX8MP%20USDHC%2FSDIO%20configuration%20requirements%20or%20known%20limitations%20that%20we%20should%20consider%3F%20We%20would%20also%20appreciate%20any%20recommended%20debugging%20steps.%3C%2FP%3E%3CP%3ERegards%3CBR%20%2F%3EVishal%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2409773%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%208%20Family%20%7C%20i.MX%208QuadMax%20(8QM)%20%7C%208QuadPlus%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ELinux%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2409949%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20IMX8MP%20SDIO%20DDR50%20clock%20issue%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2409949%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F151788%22%20target%3D%22_blank%22%3E%40Zhiming_Liu%3C%2FA%3E%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3Efor%20state_100mhz%20SD2_DATA%3CX%3E%26nbsp%3Bis%200x194.%3CBR%20%2F%3E%3CBR%20%2F%3ERegards%3CBR%20%2F%3EVishal%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FX%3E%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2409824%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20IMX8MP%20SDIO%20DDR50%20clock%20issue%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2409824%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F266080%22%20target%3D%22_blank%22%3E%40vishal088%3C%2FA%3E%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3ECan%20you%20also%20share%20the%20SD2_DATA%3CX%3E%20setting%3F%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3EBest%20Regards%2C%3CBR%20%2F%3EZhiming%3C%2FX%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E