diff mbox

[V2] mmc: core: Don't return an error for CD/WP GPIOs when GPIOLIB is unset

Message ID 1442225935-24155-1-git-send-email-ulf.hansson@linaro.org
State New
Headers show

Commit Message

Ulf Hansson Sept. 14, 2015, 10:18 a.m. UTC
When CONFIG_GPIOLIB is unset, its stubs will return -ENOSYS. That means
when the mmc core parses DT for CD/WP GPIOs via mmc_of_parse(), -ENOSYS
becomes propagated to the caller. Typically this means that the mmc host
driver fails to probe.

As the CD/WP GPIOs are already treated as optional, let's extend that to
cover the case when CONFIG_GPIOLIB is unset.

Reported-by: Michal Simek <michal.simek@xilinx.com>
Fixes: 16b23787fc70 ("mmc: sdhci-of-arasan: Call OF parsing for MMC")
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---

Changes in v2:
	- Corrected error code check.

---
 drivers/mmc/core/host.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Michal Simek Sept. 14, 2015, 10:20 a.m. UTC | #1
On 09/14/2015 12:18 PM, Ulf Hansson wrote:
> When CONFIG_GPIOLIB is unset, its stubs will return -ENOSYS. That means
> when the mmc core parses DT for CD/WP GPIOs via mmc_of_parse(), -ENOSYS
> becomes propagated to the caller. Typically this means that the mmc host
> driver fails to probe.
> 
> As the CD/WP GPIOs are already treated as optional, let's extend that to
> cover the case when CONFIG_GPIOLIB is unset.
> 
> Reported-by: Michal Simek <michal.simek@xilinx.com>
> Fixes: 16b23787fc70 ("mmc: sdhci-of-arasan: Call OF parsing for MMC")
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> ---
> 
> Changes in v2:
> 	- Corrected error code check.
> 
> ---
>  drivers/mmc/core/host.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
> index abd933b..5466f25 100644
> --- a/drivers/mmc/core/host.c
> +++ b/drivers/mmc/core/host.c
> @@ -457,7 +457,7 @@ int mmc_of_parse(struct mmc_host *host)
>  					   0, &cd_gpio_invert);
>  		if (!ret)
>  			dev_info(host->parent, "Got CD GPIO\n");
> -		else if (ret != -ENOENT)
> +		else if (ret != -ENOENT && ret != -ENOSYS)
>  			return ret;
>  
>  		/*
> @@ -481,7 +481,7 @@ int mmc_of_parse(struct mmc_host *host)
>  	ret = mmc_gpiod_request_ro(host, "wp", 0, false, 0, &ro_gpio_invert);
>  	if (!ret)
>  		dev_info(host->parent, "Got WP GPIO\n");
> -	else if (ret != -ENOENT)
> +	else if (ret != -ENOENT && ret != -ENOSYS)
>  		return ret;
>  
>  	if (of_property_read_bool(np, "disable-wp"))
> 


Tested-by: Michal Simek <michal.simek@xilinx.com>

Thanks,
Michal

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Venu Byravarasu Sept. 14, 2015, 10:26 a.m. UTC | #2
ACKed-by: Venu Byravarasu <vbyravarasu@nvidia.com>

> -----Original Message-----
> From: linux-mmc-owner@vger.kernel.org [mailto:linux-mmc-
> owner@vger.kernel.org] On Behalf Of Ulf Hansson
> Sent: Monday, September 14, 2015 3:49 PM
> To: linux-mmc@vger.kernel.org; Ulf Hansson
> Cc: Michal Simek; Marcus Overhagen; Venu Byravarasu
> Subject: [PATCH V2] mmc: core: Don't return an error for CD/WP GPIOs
> when GPIOLIB is unset
> 
> When CONFIG_GPIOLIB is unset, its stubs will return -ENOSYS. That means
> when the mmc core parses DT for CD/WP GPIOs via mmc_of_parse(), -
> ENOSYS becomes propagated to the caller. Typically this means that the mmc
> host driver fails to probe.
> 
> As the CD/WP GPIOs are already treated as optional, let's extend that to
> cover the case when CONFIG_GPIOLIB is unset.
> 
> Reported-by: Michal Simek <michal.simek@xilinx.com>
> Fixes: 16b23787fc70 ("mmc: sdhci-of-arasan: Call OF parsing for MMC")
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> ---
> 
> Changes in v2:
> 	- Corrected error code check.
> 
> ---
>  drivers/mmc/core/host.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c index
> abd933b..5466f25 100644
> --- a/drivers/mmc/core/host.c
> +++ b/drivers/mmc/core/host.c
> @@ -457,7 +457,7 @@ int mmc_of_parse(struct mmc_host *host)
>  					   0, &cd_gpio_invert);
>  		if (!ret)
>  			dev_info(host->parent, "Got CD GPIO\n");
> -		else if (ret != -ENOENT)
> +		else if (ret != -ENOENT && ret != -ENOSYS)
>  			return ret;
> 
>  		/*
> @@ -481,7 +481,7 @@ int mmc_of_parse(struct mmc_host *host)
>  	ret = mmc_gpiod_request_ro(host, "wp", 0, false, 0,
> &ro_gpio_invert);
>  	if (!ret)
>  		dev_info(host->parent, "Got WP GPIO\n");
> -	else if (ret != -ENOENT)
> +	else if (ret != -ENOENT && ret != -ENOSYS)
>  		return ret;
> 
>  	if (of_property_read_bool(np, "disable-wp"))
> --
> 1.9.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the
> body of a message to majordomo@vger.kernel.org More majordomo info at
> http://vger.kernel.org/majordomo-info.html
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
index abd933b..5466f25 100644
--- a/drivers/mmc/core/host.c
+++ b/drivers/mmc/core/host.c
@@ -457,7 +457,7 @@  int mmc_of_parse(struct mmc_host *host)
 					   0, &cd_gpio_invert);
 		if (!ret)
 			dev_info(host->parent, "Got CD GPIO\n");
-		else if (ret != -ENOENT)
+		else if (ret != -ENOENT && ret != -ENOSYS)
 			return ret;
 
 		/*
@@ -481,7 +481,7 @@  int mmc_of_parse(struct mmc_host *host)
 	ret = mmc_gpiod_request_ro(host, "wp", 0, false, 0, &ro_gpio_invert);
 	if (!ret)
 		dev_info(host->parent, "Got WP GPIO\n");
-	else if (ret != -ENOENT)
+	else if (ret != -ENOENT && ret != -ENOSYS)
 		return ret;
 
 	if (of_property_read_bool(np, "disable-wp"))