[PATCH 1/3] rockchip: rk35xx: Remove use of eMMC DDR52 mode

Jonas Karlman jonas at kwiboo.se
Thu Feb 1 11:51:01 CET 2024


Hi Quentin,

On 2024-02-01 11:18, Quentin Schulz wrote:
> Hi Jonas,
> 
> On 1/27/24 12:15, Jonas Karlman wrote:
>> Hi Eugen,
>>
>> On 2024-01-27 04:48, Eugen Hristev wrote:
>>> Hi Jonas,
>>>
>>>
>>> On 1/27/24 01:26, Jonas Karlman wrote:
>>>> Writing to eMMC using DDR52 mode does not work reliably or at all on
>>>> RK356x and RK3588 boards.
>>>>
>>>
>>>
>>> This is related to the old issue I encountered last year with mmc write?
>>
>> Yes, I think it is.
>>
>> I did some testing on RK3566/RK3568/RK3588S/RK3588 boards with different
>> eMMC modules with following result:
>>
>> Read seem to work with all enabled modes:
>> RK3566: MMC legacy, MMC High Speed (26MHz), MMC High Speed (52MHz),
>>          MMC DDR52 (52MHz) and HS200 (200MHz)
>> RK3568/RK3588S/RK3588: all above + HS400 (200MHz) and HS400ES (200MHz)
>>
>> However, write had issues with some of the modes:
>> MMC DDR52 (52MHz): all RK35xx
>> HS400/HS400ES: only on RK3568 after changing hs400_txclk_tapnum to 8
>>
>> HS200 seem to be the most stable write speed that worked on all SoCs.
>>
>> So, dropping MMC DDR52 (52MHz) and enable use of HS200 (200MHz) seem to
>> be the best option to get speedy and working read and write eMMC.
>>
> 
> 1) we have this enabled on RK3588 Jaguar in upstream Linux... I may have 
> improperly tested it then, would you mind sharing how you tested this 
> mode on RK3588 so I can reproduce this and fix it on our product if 
> we're impacted? I assume because we have HS200/HS400/HS400-ES enabled, 
> DDR52 would never be used? (our eMMC is soldered and support the former 
> modes).

My main mode of testing eMMC in U-Boot has been to enable following
Kconfig options,

CONFIG_MMC_HS200_SUPPORT=y
CONFIG_MMC_HS400_SUPPORT=y
CONFIG_MMC_HS400_ES_SUPPORT=y
CONFIG_MMC_SPEED_MODE_SET=y

and from U-Boot cli run following,

=> mmc rescan <mode> && mmc info && mmc read 10000000 2000 10000
=> mmc rescan <mode> && mmc info && mmc write 20000000 4000 10000

for each of the modes below.

  0 = MMC legacy
  1 = MMC High Speed (26MHz)
  3 = MMC High Speed (52MHz)
  4 = MMC DDR52 (52MHz)
  10 = HS200 (200MHz)
  11 = HS400 (200MHz)
  12 = HS400ES (200MHz)

on different boards and different eMMC modules.

Using some modes the read or write return ERROR instead of OK. When
ERROR was reported a rescan or board reset was needed to test next mode.

Please also note that I have only tested in U-Boot, not in linux.

> 
> 2) Why are we not enabling HS400/HS400-ES for RK3588 boards? You seem to 
> be saying there are issues with HS400/HS400-ES on RK3568 but you didn't 
> mention the status for RK3588. Did I misunderstand the last sentence? 
> Can you please rephrase in that case?

I can see now that my wording was very confusing.

Write for HS400/HS400ES mode only worked on RK3568 after modification to
the driver, on RK3588 write always returned error for me.

So on RK3568 HS400 modes could be made work, on remaining SoCs there was
issues.

Regards,
Jonas

> 
> Cheers,
> Quentin



More information about the U-Boot mailing list