sdhci-esdhc-imx: SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

sdhci-esdhc-imx: SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400

跳至解决方案
1,725 次查看
mb1
Contributor III

Hey everyone.

We have a eMMC on a SoM with i.MX8M Mini processor.

Flashing the emmc via uuu and reading/writing data from u-boot works fine. Data is available.

Linux does not come up since it's unable to read the partition table, which results in being unable to mount the rootfs.

We figured out that adding 'sdhci.debug_quirks2=0x00000008' to bootargs makes Linux boot and emmc work fine. The driver's original quirks2 are '0x00000808', so the one bit that makes the difference is named (driver source):

SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400

What does this bit say? Any ideas on this? 

 

Regards,

Markus

标签 (1)
0 项奖励
1 解答
1,676 次查看
jimmychan
NXP TechSupport
NXP TechSupport

Hello,

 

I got the reply from the expert:

======================

Checking the code, if customer changes sdhci.debug_quirks2 from 0x00000808 to 0x00000008, it will not select SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400 as they said. About this bit details, one can see this commit "e9fb05d5bca:  mmc: sdhci: Add HS400 support to SDHCI driver".

I add some print infos, in drivers/mmc/core/mmc.c mmc_select_card_type() function, avail_type variable changed from 0b001101000011 (343) to 0b00100011(23). Also in mmc_select_timing() function, it will call mmc_select_hs200 instead of mmc_select_hs400es. HS400 and HS200 means different bus speed modes for eMMC, which could be found in eMMC spec:

jimmychan_0-1640853479711.png

So I think maybe customer's eMMC doesn't support HS400 mode, supports HS200 mode.

 

======================

 

Best regards,

Jimmy

在原帖中查看解决方案

0 项奖励
5 回复数
1,704 次查看
jimmychan
NXP TechSupport
NXP TechSupport

Which version of BSP are you using?

0 项奖励
1,699 次查看
mb1
Contributor III

We use 5.10.52_2.1.0.

0 项奖励
1,677 次查看
jimmychan
NXP TechSupport
NXP TechSupport

Hello,

 

I got the reply from the expert:

======================

Checking the code, if customer changes sdhci.debug_quirks2 from 0x00000808 to 0x00000008, it will not select SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400 as they said. About this bit details, one can see this commit "e9fb05d5bca:  mmc: sdhci: Add HS400 support to SDHCI driver".

I add some print infos, in drivers/mmc/core/mmc.c mmc_select_card_type() function, avail_type variable changed from 0b001101000011 (343) to 0b00100011(23). Also in mmc_select_timing() function, it will call mmc_select_hs200 instead of mmc_select_hs400es. HS400 and HS200 means different bus speed modes for eMMC, which could be found in eMMC spec:

jimmychan_0-1640853479711.png

So I think maybe customer's eMMC doesn't support HS400 mode, supports HS200 mode.

 

======================

 

Best regards,

Jimmy

0 项奖励
1,658 次查看
mb1
Contributor III

Hi.

Thanks for your reply!

The eMMC does support HS400. The problem in our case was, that the 100 and 200 mhz pinctrl in devicetree were missing the strobe pin...

 

Regards

0 项奖励
1,721 次查看
mb1
Contributor III
0 项奖励