[PATCH] mmc: core: Assign a fixed number to MMC devices

Jean-Francois Moine moinejf at free.fr
Thu Sep 1 02:40:31 PDT 2016


This patch prevents MMC device numbering to change at each reboot
by using DT labels.

Signed-off-by: Jean-Francois Moine <moinejf at free.fr>
---
 drivers/mmc/core/host.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
index 98f25ff..38b94ce 100644
--- a/drivers/mmc/core/host.c
+++ b/drivers/mmc/core/host.c
@@ -346,6 +346,14 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev)
 {
 	int err;
 	struct mmc_host *host;
+	int id = 0;
+
+	/* use DT label as mmc index */
+	if (dev->of_node) {
+		id = of_alias_get_id(dev->of_node, "mmc");
+		if (id < 0)
+			id = 0;
+	}
 
 	host = kzalloc(sizeof(struct mmc_host) + extra, GFP_KERNEL);
 	if (!host)
@@ -361,7 +369,7 @@ again:
 	}
 
 	spin_lock(&mmc_host_lock);
-	err = ida_get_new(&mmc_host_ida, &host->index);
+	err = ida_get_new_above(&mmc_host_ida, id, &host->index);
 	spin_unlock(&mmc_host_lock);
 
 	if (err == -EAGAIN) {
-- 
2.9.3




More information about the linux-arm-kernel mailing list