
On Tue, Dec 29, 2020 at 3:43 PM Jaehoon Chung jh80.chung@samsung.com wrote:
Hi,
On 12/30/20 8:21 AM, Tim Harvey wrote:
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
Did you enable MMC_UHS_SUPPORT?
yes, I'm using master so I also have your patch that enables that: e601f0f9c966 ("configs: imx8m: enable eMMC HS400ES and SD UHS mode on EVK")
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?
I remembered that SDR104 was working fine before. Will check whether it's working or not with my other targets.
The way to check is simply do an 'mmc info' and see if the card capabilities show SDR104 or DDR50 (depending on the capabilities of your card)
Let me know what you find. Again, I'm seeing this with master on an imx8mm-evk and the host shows those capabilities, its the card that does not. The code in sd_get_capabilities() is ancient so I'm guessing it may be out of date.
Thanks,
Tim