mmc: mmc_of_parse: Enable 52 MHz support with "cap-mmc-highspeed"
authorAlexandru Gagniuc <mr.nuke.me@gmail.com>
Tue, 15 Sep 2020 19:51:46 +0000 (14:51 -0500)
committerPatrick Delaunay <patrick.delaunay@st.com>
Wed, 21 Oct 2020 07:57:14 +0000 (09:57 +0200)
"cap-mmc-highspeed" enables support for 26 MHz MMC, but there is no
additional flag to enable 52 MHz MMC. In Linux. "cap-mmc-highspeed"
is used for MMC HS at both 26MHz and 52MHz.

Use the same approach and enable MMC_CAP(MMC_HS_52) host capability
when "cap-mmc-highspeed" is found in the devicetree. In the event an
MMC card doesn't support 52 MHz, it will be clocked at a speed based
on its EXT CSD, even on 52 MHz host controllers

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@st.com>
Tested-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
drivers/mmc/mmc-uclass.c

index ec59bcd..285ac48 100644 (file)
@@ -228,7 +228,7 @@ int mmc_of_parse(struct udevice *dev, struct mmc_config *cfg)
        if (dev_read_bool(dev, "cap-sd-highspeed"))
                cfg->host_caps |= MMC_CAP(SD_HS);
        if (dev_read_bool(dev, "cap-mmc-highspeed"))
-               cfg->host_caps |= MMC_CAP(MMC_HS);
+               cfg->host_caps |= MMC_CAP(MMC_HS) | MMC_CAP(MMC_HS_52);
        if (dev_read_bool(dev, "sd-uhs-sdr12"))
                cfg->host_caps |= MMC_CAP(UHS_SDR12);
        if (dev_read_bool(dev, "sd-uhs-sdr25"))