sdhci-esdhc-imx: SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

sdhci-esdhc-imx: SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400

ソリューションへジャンプ
1,699件の閲覧回数
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,650件の閲覧回数
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,678件の閲覧回数
jimmychan
NXP TechSupport
NXP TechSupport

Which version of BSP are you using?

0 件の賞賛
1,673件の閲覧回数
mb1
Contributor III

We use 5.10.52_2.1.0.

0 件の賞賛
1,651件の閲覧回数
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,632件の閲覧回数
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,695件の閲覧回数
mb1
Contributor III
0 件の賞賛