* [PATCH] mmc: sdhci-pxav3: dt: Support "cd-gpios" property
@ 2012-09-09 3:09 Chris Ball
2012-09-11 14:36 ` Haojian Zhuang
0 siblings, 1 reply; 3+ messages in thread
From: Chris Ball @ 2012-09-09 3:09 UTC (permalink / raw)
To: linux-mmc
Cc: Philip Rakity, Haojian Zhuang, Zhangfei Gao,
Guennadi Liakhovetski
Tested on OLPC XO-4/MMP3, where the card detection pin for one of the
controllers is a sideband GPIO. The third cell in the power-gpios
property controls whether the GPIO is active high/active low.
Signed-off-by: Chris Ball <cjb@laptop.org>
---
drivers/mmc/host/sdhci-pxav3.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/mmc/host/sdhci-pxav3.c b/drivers/mmc/host/sdhci-pxav3.c
index 0bdb326..5427d52 100644
--- a/drivers/mmc/host/sdhci-pxav3.c
+++ b/drivers/mmc/host/sdhci-pxav3.c
@@ -211,6 +211,10 @@ static struct sdhci_pxa_platdata *pxav3_get_mmc_pdata(struct device *dev)
if (gpio_flags != OF_GPIO_ACTIVE_LOW)
pdata->host_caps2 |= MMC_CAP2_PWR_ACTIVE_HIGH;
+ pdata->ext_cd_gpio = of_get_named_gpio_flags(np, "cd-gpios", 0, &gpio_flags);
+ if (gpio_flags != OF_GPIO_ACTIVE_LOW)
+ pdata->host_caps2 |= MMC_CAP2_CD_ACTIVE_HIGH;
+
return pdata;
}
#else
@@ -292,6 +296,15 @@ static int __devinit sdhci_pxav3_probe(struct platform_device *pdev)
goto err_power_req;
}
}
+
+ if (gpio_is_valid(pdata->ext_cd_gpio)) {
+ ret = mmc_gpio_request_cd(host->mmc, pdata->ext_cd_gpio);
+ if (ret) {
+ dev_err(mmc_dev(host->mmc),
+ "failed to allocate card detect gpio\n");
+ goto err_cd_req;
+ }
+ }
}
host->ops = &pxav3_sdhci_ops;
@@ -309,6 +322,8 @@ static int __devinit sdhci_pxav3_probe(struct platform_device *pdev)
err_add_host:
clk_disable_unprepare(clk);
clk_put(clk);
+ mmc_gpio_free_cd(host->mmc);
+err_cd_req:
mmc_gpio_free_pwr(host->mmc);
err_power_req:
err_clk_get:
@@ -331,6 +346,8 @@ static int __devexit sdhci_pxav3_remove(struct platform_device *pdev)
if (gpio_is_valid(pdata->power_gpio))
mmc_gpio_free_pwr(host->mmc);
+ if (gpio_is_valid(pdata->ext_cd_gpio))
+ mmc_gpio_free_cd(host->mmc);
sdhci_pltfm_free(pdev);
kfree(pxa);
--
Chris Ball <cjb@laptop.org> <http://printf.net/>
One Laptop Per Child
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] mmc: sdhci-pxav3: dt: Support "cd-gpios" property
2012-09-09 3:09 [PATCH] mmc: sdhci-pxav3: dt: Support "cd-gpios" property Chris Ball
@ 2012-09-11 14:36 ` Haojian Zhuang
2012-09-11 15:04 ` Chris Ball
0 siblings, 1 reply; 3+ messages in thread
From: Haojian Zhuang @ 2012-09-11 14:36 UTC (permalink / raw)
To: Chris Ball; +Cc: linux-mmc, Philip Rakity, Zhangfei Gao, Guennadi Liakhovetski
On Sun, Sep 9, 2012 at 11:09 AM, Chris Ball <cjb@laptop.org> wrote:
> Tested on OLPC XO-4/MMP3, where the card detection pin for one of the
> controllers is a sideband GPIO. The third cell in the power-gpios
> property controls whether the GPIO is active high/active low.
>
> Signed-off-by: Chris Ball <cjb@laptop.org>
> ---
> drivers/mmc/host/sdhci-pxav3.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-pxav3.c b/drivers/mmc/host/sdhci-pxav3.c
> index 0bdb326..5427d52 100644
> --- a/drivers/mmc/host/sdhci-pxav3.c
> +++ b/drivers/mmc/host/sdhci-pxav3.c
> @@ -211,6 +211,10 @@ static struct sdhci_pxa_platdata *pxav3_get_mmc_pdata(struct device *dev)
> if (gpio_flags != OF_GPIO_ACTIVE_LOW)
> pdata->host_caps2 |= MMC_CAP2_PWR_ACTIVE_HIGH;
>
> + pdata->ext_cd_gpio = of_get_named_gpio_flags(np, "cd-gpios", 0, &gpio_flags);
> + if (gpio_flags != OF_GPIO_ACTIVE_LOW)
> + pdata->host_caps2 |= MMC_CAP2_CD_ACTIVE_HIGH;
> +
> return pdata;
> }
> #else
> @@ -292,6 +296,15 @@ static int __devinit sdhci_pxav3_probe(struct platform_device *pdev)
> goto err_power_req;
> }
> }
> +
> + if (gpio_is_valid(pdata->ext_cd_gpio)) {
> + ret = mmc_gpio_request_cd(host->mmc, pdata->ext_cd_gpio);
> + if (ret) {
> + dev_err(mmc_dev(host->mmc),
> + "failed to allocate card detect gpio\n");
> + goto err_cd_req;
> + }
> + }
> }
>
> host->ops = &pxav3_sdhci_ops;
> @@ -309,6 +322,8 @@ static int __devinit sdhci_pxav3_probe(struct platform_device *pdev)
> err_add_host:
> clk_disable_unprepare(clk);
> clk_put(clk);
> + mmc_gpio_free_cd(host->mmc);
> +err_cd_req:
> mmc_gpio_free_pwr(host->mmc);
> err_power_req:
> err_clk_get:
> @@ -331,6 +346,8 @@ static int __devexit sdhci_pxav3_remove(struct platform_device *pdev)
>
> if (gpio_is_valid(pdata->power_gpio))
> mmc_gpio_free_pwr(host->mmc);
> + if (gpio_is_valid(pdata->ext_cd_gpio))
> + mmc_gpio_free_cd(host->mmc);
>
> sdhci_pltfm_free(pdev);
> kfree(pxa);
> --
> Chris Ball <cjb@laptop.org> <http://printf.net/>
> One Laptop Per Child
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] mmc: sdhci-pxav3: dt: Support "cd-gpios" property
2012-09-11 14:36 ` Haojian Zhuang
@ 2012-09-11 15:04 ` Chris Ball
0 siblings, 0 replies; 3+ messages in thread
From: Chris Ball @ 2012-09-11 15:04 UTC (permalink / raw)
To: Haojian Zhuang
Cc: linux-mmc, Philip Rakity, Zhangfei Gao, Guennadi Liakhovetski
Hi,
On Tue, Sep 11 2012, Haojian Zhuang wrote:
> On Sun, Sep 9, 2012 at 11:09 AM, Chris Ball <cjb@laptop.org> wrote:
>> Tested on OLPC XO-4/MMP3, where the card detection pin for one of the
>> controllers is a sideband GPIO. The third cell in the power-gpios
>> property controls whether the GPIO is active high/active low.
>>
>> Signed-off-by: Chris Ball <cjb@laptop.org>
>> ---
>> drivers/mmc/host/sdhci-pxav3.c | 17 +++++++++++++++++
>> 1 file changed, 17 insertions(+)
>>
>> diff --git a/drivers/mmc/host/sdhci-pxav3.c b/drivers/mmc/host/sdhci-pxav3.c
>> index 0bdb326..5427d52 100644
>> --- a/drivers/mmc/host/sdhci-pxav3.c
>> +++ b/drivers/mmc/host/sdhci-pxav3.c
>> @@ -211,6 +211,10 @@ static struct sdhci_pxa_platdata *pxav3_get_mmc_pdata(struct device *dev)
>> if (gpio_flags != OF_GPIO_ACTIVE_LOW)
>> pdata->host_caps2 |= MMC_CAP2_PWR_ACTIVE_HIGH;
>>
>> + pdata->ext_cd_gpio = of_get_named_gpio_flags(np, "cd-gpios", 0, &gpio_flags);
>> + if (gpio_flags != OF_GPIO_ACTIVE_LOW)
>> + pdata->host_caps2 |= MMC_CAP2_CD_ACTIVE_HIGH;
>> +
>> return pdata;
>> }
>> #else
>> @@ -292,6 +296,15 @@ static int __devinit sdhci_pxav3_probe(struct platform_device *pdev)
>> goto err_power_req;
>> }
>> }
>> +
>> + if (gpio_is_valid(pdata->ext_cd_gpio)) {
>> + ret = mmc_gpio_request_cd(host->mmc, pdata->ext_cd_gpio);
>> + if (ret) {
>> + dev_err(mmc_dev(host->mmc),
>> + "failed to allocate card detect gpio\n");
>> + goto err_cd_req;
>> + }
>> + }
>> }
>>
>> host->ops = &pxav3_sdhci_ops;
>> @@ -309,6 +322,8 @@ static int __devinit sdhci_pxav3_probe(struct platform_device *pdev)
>> err_add_host:
>> clk_disable_unprepare(clk);
>> clk_put(clk);
>> + mmc_gpio_free_cd(host->mmc);
>> +err_cd_req:
>> mmc_gpio_free_pwr(host->mmc);
>> err_power_req:
>> err_clk_get:
>> @@ -331,6 +346,8 @@ static int __devexit sdhci_pxav3_remove(struct platform_device *pdev)
>>
>> if (gpio_is_valid(pdata->power_gpio))
>> mmc_gpio_free_pwr(host->mmc);
>> + if (gpio_is_valid(pdata->ext_cd_gpio))
>> + mmc_gpio_free_cd(host->mmc);
>>
>> sdhci_pltfm_free(pdev);
>> kfree(pxa);
>> --
>> Chris Ball <cjb@laptop.org> <http://printf.net/>
>> One Laptop Per Child
>
> Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Thanks, pushed to mmc-next for 3.7 after rebasing to make this patch
precede the power_gpio patch (which isn't ready to merge).
- Chris.
--
Chris Ball <cjb@laptop.org> <http://printf.net/>
One Laptop Per Child
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-09-11 15:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-09 3:09 [PATCH] mmc: sdhci-pxav3: dt: Support "cd-gpios" property Chris Ball
2012-09-11 14:36 ` Haojian Zhuang
2012-09-11 15:04 ` Chris Ball
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox