diff mbox

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

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

Commit Message

Ulf Hansson Sept. 14, 2015, 8:56 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>
---
 drivers/mmc/core/host.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Venu Byravarasu Sept. 14, 2015, 9:53 a.m. UTC | #1
> -----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 2:27 PM
> To: linux-mmc@vger.kernel.org; Ulf Hansson
> Cc: Michal Simek
> Subject: [PATCH] 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>
> ---
>  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..ad11425 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)

Seems "-" is missing before "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)

Same here.

>  		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
Michal Simek Sept. 14, 2015, 10:19 a.m. UTC | #2
On 09/14/2015 11:53 AM, Venu Byravarasu wrote:
> 
> 
>> -----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 2:27 PM
>> To: linux-mmc@vger.kernel.org; Ulf Hansson
>> Cc: Michal Simek
>> Subject: [PATCH] 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>
>> ---
>>  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..ad11425 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)
> 
> Seems "-" is missing before "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)
> 
> Same here.


yes. With -ENOSYS it is working fine.

For v2 with this fix here is my
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
diff mbox

Patch

diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
index abd933b..ad11425 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"))