IMX8MM SD UHS support

Tim Harvey tharvey at gateworks.com
Wed Dec 30 00:21:37 CET 2020


Greetings,

In 50b1a69cee0d ("ARM: dts: imx8m: add UHS or HS400/HS400ES
properties") u-boot dt props were added to enable UHS and HS400 on a
couple of IMX8MM boards including the imx8mm-evk and in the subsequent
patch enabled the config items.

While I see this making a huge difference for eMMC performance in
U-Boot I find it doesn't do anything for microSD performance.

The issue appears to be that sd_get_capabilities() is not
appropriately detecting UHS speeds on cards that appropriately detect
as SDR104/DDR50 in Linux:

u-boot=> mmc info
Device: FSL_SDHC
Manufacturer ID: 1b
OEM: 534d
Name: 00000
Bus Speed: 50000000
Mode: SD High Speed (50MHz)
card capabilities: widths [4, 1] modes [MMC legacy, SD High Speed (50MHz)]
^^^^ no SDR104 detected for this card
host capabilities: widths [4, 1] modes [MMC legacy, MMC High Speed
(26MHz), SD High Speed (50MHz), MMC High Speed (52MHz), UHS DDR50
(50MHz), UHS SDR104 (208MHz)]
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 14.9 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes

The same card in Linux shows the following upon insertion and
performance tests show that it is operating at SDR104 speeds:
mmc1: new ultra high speed SDR104 SDHC card at address 0001

I haven't found very good documentation on the SD switch settings to
understand if something is wrong in the U-Boot implementation of of
sd_get_capabilities() and I suppose it also could be an issue in
sdhci-esdhc-imx.c.

Any ideas where to look?

Anyone see SDR104 cards being detected properly for other platforms?

Best regards,

Tim


More information about the U-Boot mailing list