IMX8MM SD UHS support

Tim Harvey tharvey at gateworks.com
Wed Dec 30 00:56:04 CET 2020


On Tue, Dec 29, 2020 at 3:43 PM Jaehoon Chung <jh80.chung at 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


More information about the U-Boot mailing list