Message ID | 1359536837-14874-1-git-send-email-jlu@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, 2013-01-30 at 10:07 +0100, Jan Luebbe wrote: > If the CD/WP-GPIOs are not provided by the SoC's GPIO controller, > we need to handle the case where omap_hsmmc is probed earlier than > the GPIO controller chosen in the device tree. > > Fix this by checking the return value of of_get_named_gpio against > -EPROBE_DEFER and passing it through to the probe function. > > Signed-off-by: Jan Luebbe <jlu@pengutronix.de> Balaji, since you seem to be the new OMAP HSMMC maintainer, do you have any comments on this patch? Thanks, Jan
On Thursday 14 February 2013 04:13 PM, Jan Lübbe wrote: > On Wed, 2013-01-30 at 10:07 +0100, Jan Luebbe wrote: >> If the CD/WP-GPIOs are not provided by the SoC's GPIO controller, >> we need to handle the case where omap_hsmmc is probed earlier than >> the GPIO controller chosen in the device tree. >> >> Fix this by checking the return value of of_get_named_gpio against >> -EPROBE_DEFER and passing it through to the probe function. >> >> Signed-off-by: Jan Luebbe <jlu@pengutronix.de> > > Balaji, since you seem to be the new OMAP HSMMC maintainer, do you have > any comments on this patch? Looks good to me, Acked-by: Balaji T K <balajitk@ti.com> -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, 2013-02-14 at 19:23 +0530, Balaji T K wrote: > On Thursday 14 February 2013 04:13 PM, Jan Lübbe wrote: > > On Wed, 2013-01-30 at 10:07 +0100, Jan Luebbe wrote: > >> If the CD/WP-GPIOs are not provided by the SoC's GPIO controller, > >> we need to handle the case where omap_hsmmc is probed earlier than > >> the GPIO controller chosen in the device tree. > >> > >> Fix this by checking the return value of of_get_named_gpio against > >> -EPROBE_DEFER and passing it through to the probe function. > >> > >> Signed-off-by: Jan Luebbe <jlu@pengutronix.de> > > > > Balaji, since you seem to be the new OMAP HSMMC maintainer, do you have > > any comments on this patch? > > Looks good to me, > Acked-by: Balaji T K <balajitk@ti.com> Chris, would you take this? Thanks, Jan
Hi, On Thu, Feb 14 2013, Balaji T K wrote: > On Thursday 14 February 2013 04:13 PM, Jan Lübbe wrote: >> On Wed, 2013-01-30 at 10:07 +0100, Jan Luebbe wrote: >>> If the CD/WP-GPIOs are not provided by the SoC's GPIO controller, >>> we need to handle the case where omap_hsmmc is probed earlier than >>> the GPIO controller chosen in the device tree. >>> >>> Fix this by checking the return value of of_get_named_gpio against >>> -EPROBE_DEFER and passing it through to the probe function. >>> >>> Signed-off-by: Jan Luebbe <jlu@pengutronix.de> >> >> Balaji, since you seem to be the new OMAP HSMMC maintainer, do you have >> any comments on this patch? > > Looks good to me, > Acked-by: Balaji T K <balajitk@ti.com> Thanks, pushed to mmc-next for 3.10. - Chris.
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index e30c1ee..fd1b342 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c @@ -1717,6 +1717,12 @@ static struct omap_mmc_platform_data *of_get_hsmmc_pdata(struct device *dev) struct omap_mmc_platform_data *pdata; struct device_node *np = dev->of_node; u32 bus_width, max_freq; + int cd_gpio, wp_gpio; + + cd_gpio = of_get_named_gpio(np, "cd-gpios", 0); + wp_gpio = of_get_named_gpio(np, "wp-gpios", 0); + if (cd_gpio == -EPROBE_DEFER || wp_gpio == -EPROBE_DEFER) + return ERR_PTR(-EPROBE_DEFER); pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); if (!pdata) @@ -1727,8 +1733,8 @@ static struct omap_mmc_platform_data *of_get_hsmmc_pdata(struct device *dev) /* This driver only supports 1 slot */ pdata->nr_slots = 1; - pdata->slots[0].switch_pin = of_get_named_gpio(np, "cd-gpios", 0); - pdata->slots[0].gpio_wp = of_get_named_gpio(np, "wp-gpios", 0); + pdata->slots[0].switch_pin = cd_gpio; + pdata->slots[0].gpio_wp = wp_gpio; if (of_find_property(np, "ti,non-removable", NULL)) { pdata->slots[0].nonremovable = true; @@ -1775,6 +1781,10 @@ static int omap_hsmmc_probe(struct platform_device *pdev) match = of_match_device(of_match_ptr(omap_mmc_of_match), &pdev->dev); if (match) { pdata = of_get_hsmmc_pdata(&pdev->dev); + + if (IS_ERR(pdata)) + return PTR_ERR(pdata); + if (match->data) { const u16 *offsetp = match->data; pdata->reg_offset = *offsetp;
If the CD/WP-GPIOs are not provided by the SoC's GPIO controller, we need to handle the case where omap_hsmmc is probed earlier than the GPIO controller chosen in the device tree. Fix this by checking the return value of of_get_named_gpio against -EPROBE_DEFER and passing it through to the probe function. Signed-off-by: Jan Luebbe <jlu@pengutronix.de> --- I've tested this on an AM335x based board which uses an external GPIO expander. drivers/mmc/host/omap_hsmmc.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)