mmc: Register only the first MMC device on MMC_TINY
authorEzequiel Garcia <ezequiel@collabora.com>
Sat, 25 May 2019 22:25:22 +0000 (19:25 -0300)
committerTom Rini <trini@konsulko.com>
Sat, 13 Jul 2019 15:11:26 +0000 (11:11 -0400)
When MMC_TINY is enabled, support for only one MMC device
is provided. Boards that register more than one device,
will just write over mmc_static keeping only the last one
registered.

This commit prevents this, keeping only the first MMC
device created. A debug warning message is added, if nothing
else, as a hint/documentation for developers.

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
drivers/mmc/mmc_legacy.c

index 66a7cda440cd9f1dec0530f8bc58a5af616610e0..b0f5cf58a2b3ae580ccf5e521207fe2fa9de8837 100644 (file)
@@ -150,6 +150,15 @@ struct mmc *mmc_create(const struct mmc_config *cfg, void *priv)
 {
        struct mmc *mmc = &mmc_static;
 
+       /* First MMC device registered, fail to register a new one.
+        * Given users are not expecting this to fail, instead
+        * of failing let's just return the only MMC device
+        */
+       if (mmc->cfg) {
+               debug("Warning: MMC_TINY doesn't support multiple MMC devices\n");
+               return mmc;
+       }
+
        mmc->cfg = cfg;
        mmc->priv = priv;