From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dirk Behme Subject: Re: Adding aliases to mmc Date: Sun, 22 Sep 2013 08:48:43 +0200 Message-ID: <523E92CB.1080302@gmail.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Fabio Estevam Cc: linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, "devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Sascha Hauer , Michael Olbrich List-Id: devicetree@vger.kernel.org Hi Fabio, Am 18.09.2013 02:06, schrieb Fabio Estevam: > Hi Dirk, > > On Tue, Sep 17, 2013 at 3:04 PM, Fabio Estevam 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 devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html