Re: Adding aliases to mmc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Fabio,

Am 18.09.2013 02:06, schrieb Fabio Estevam:
Hi Dirk,

On Tue, Sep 17, 2013 at 3:04 PM, Fabio Estevam <festevam@xxxxxxxxx> wrote:
Hi Dirk,

I have adapted your patch at:
http://lists.infradead.org/pipermail/linux-arm-kernel/2012-July/111022.html

and tested it on 3.12-rc1 on a mx6qsabresd board.

Do you have plans to submit it? Maybe as a RFC?

It solves the mmcblkX order issue on my tests and it would be nice we
could have this problem addressed.

I simplied your patch a bit:

diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 1a3163f..94f842b 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -2026,7 +2026,7 @@ static struct mmc_blk_data
*mmc_blk_alloc_req(struct mmc_card *card,
      struct mmc_blk_data *md;
      int devidx, ret;

-    devidx = find_first_zero_bit(dev_use, max_devices);
+    devidx = find_next_zero_bit(dev_use, max_devices, card->host->devidx);
      if (devidx >= max_devices)
          return ERR_PTR(-ENOSPC);
      __set_bit(devidx, dev_use);
@@ -2044,7 +2044,8 @@ static struct mmc_blk_data
*mmc_blk_alloc_req(struct mmc_card *card,
       * index anymore so we keep track of a name index.
       */
      if (!subname) {
-        md->name_idx = find_first_zero_bit(name_use, max_devices);
+        md->name_idx = find_next_zero_bit(name_use, max_devices,
+                card->host->devidx);
          __set_bit(md->name_idx, name_use);
      } else
          md->name_idx = ((struct mmc_blk_data *)
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c
b/drivers/mmc/host/sdhci-esdhc-imx.c
index abc8cf0..e11a6af 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -524,8 +524,9 @@ static int sdhci_esdhc_imx_probe(struct
platform_device *pdev)
      struct sdhci_pltfm_host *pltfm_host;
      struct sdhci_host *host;
      struct esdhc_platform_data *boarddata;
-    int err;
+    int err, ret;
      struct pltfm_imx_data *imx_data;
+    struct device_node *np = pdev->dev.of_node;

      host = sdhci_pltfm_init(pdev, &sdhci_esdhc_imx_pdata, 0);
      if (IS_ERR(host))
@@ -602,6 +603,13 @@ static int sdhci_esdhc_imx_probe(struct
platform_device *pdev)
                      host->mmc->parent->platform_data);
      }

+
+    if (np) {
+        ret = of_alias_get_id(np, "mmcblk");
+        if (ret >= 0)
+            host->mmc->devidx = ret;
+    }
+
      /* write_protect */
      if (boarddata->wp_type == ESDHC_WP_GPIO) {
          err = mmc_gpio_request_ro(host->mmc, boarddata->wp_gpio);
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 3b0c33a..8209f72 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -362,6 +362,8 @@ struct mmc_host {

      unsigned int        slotno;    /* used for sdio acpi binding */

+    /* preferred mmc block device index (mmcblkX) */
+    unsigned int        devidx;
      unsigned long        private[0] ____cacheline_aligned;
  };

What do you think?

Do you like to send this as a proper patch? Following the recent discussion it sounds to me that there is really some need for something like this. Then we could discuss the technical details.

Best regards

Dirk

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux