linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH v2 2/2] mmc: mxs-mmc: add non-removable property
       [not found] ` <1365166070-9370-3-git-send-email-mkl@pengutronix.de>
@ 2013-04-09 15:14   ` Hector Palacios
  2013-04-09 15:21     ` Hector Palacios
  0 siblings, 1 reply; 5+ messages in thread
From: Hector Palacios @ 2013-04-09 15:14 UTC (permalink / raw)
  To: Marc Kleine-Budde
  Cc: linux-mmc, kernel, cjb, aletes.xgr, linux-kernel, Marek Vasut, Shawn Guo

Dear Marc Kleine-Budde,

On 04/05/2013 02:47 PM, Marc Kleine-Budde wrote:
> Some boards have non removable cards like eMMC. Handle such case.
>
> Acked-by: Shawn Guo <shawn.guo@linaro.org>
> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
> ---
> changes since v1:
> - fix removeable typo
>
>   drivers/mmc/host/mxs-mmc.c | 10 +++++++---
>   1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
> index 0cdf1f6..c231881 100644
> --- a/drivers/mmc/host/mxs-mmc.c
> +++ b/drivers/mmc/host/mxs-mmc.c
> @@ -73,6 +73,7 @@ struct mxs_mmc_host {
>   	int				wp_gpio;
>   	bool				wp_inverted;
>   	bool				cd_inverted;
> +	bool				non_removable;
>   };
>
>   static int mxs_mmc_get_ro(struct mmc_host *mmc)
> @@ -96,8 +97,9 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc)
>   	struct mxs_mmc_host *host = mmc_priv(mmc);
>   	struct mxs_ssp *ssp = &host->ssp;
>
> -	return !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
> -		 BM_SSP_STATUS_CARD_DETECT)) ^ host->cd_inverted;
> +	return host->non_removable ||
> +		!(readl(ssp->base + HW_SSP_STATUS(ssp)) &
> +		  BM_SSP_STATUS_CARD_DETECT) ^ host->cd_inverted;
>   }
>
>   static void mxs_mmc_reset(struct mxs_mmc_host *host)
> @@ -687,8 +689,10 @@ static int mxs_mmc_probe(struct platform_device *pdev)
>   		mmc->caps |= MMC_CAP_4_BIT_DATA;
>   	else if (bus_width == 8)
>   		mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA;
> +	host->non_removable = of_property_read_bool(np, "non-removable");
> +	if (host->non_removable)
> +		mmc->caps |= MMC_CAP_NONREMOVABLE;
>   	host->wp_gpio = of_get_named_gpio_flags(np, "wp-gpios", 0, &flags);
> -
>   	if (flags & OF_GPIO_ACTIVE_LOW)
>   		host->wp_inverted = 1;
>
>

It looks like Alexander and I were looking at the same in different threads:
   http://comments.gmane.org/gmane.linux.kernel.mmc/19964
   http://comments.gmane.org/gmane.linux.kernel/1471409

The following completes your 2/2 patch with broken-cd support as well (in both cases 
system must assume card is always present):

diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
index 206fe49..7a60097 100644
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -72,6 +72,8 @@ struct mxs_mmc_host {
         int                             sdio_irq_en;
         int                             wp_gpio;
         bool                            wp_inverted;
+       bool                            broken_cd;
+       bool                            non_removable;
  };

  static int mxs_mmc_get_ro(struct mmc_host *mmc)
@@ -95,7 +97,8 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc)
         struct mxs_mmc_host *host = mmc_priv(mmc);
         struct mxs_ssp *ssp = &host->ssp;

-       return !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
+       return host->non_removable || host->broken_cd ||
+              !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
                  BM_SSP_STATUS_CARD_DETECT);
  }

@@ -686,8 +689,11 @@ static int mxs_mmc_probe(struct platform_device *pdev)
                 mmc->caps |= MMC_CAP_4_BIT_DATA;
         else if (bus_width == 8)
                 mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA;
+       host->broken_cd = of_property_read_bool(np, "broken-cd");
+       host->non_removable = of_property_read_bool(np, "non-removable");
+       if (host->non_removable)
+               mmc->caps |= MMC_CAP_NONREMOVABLE;
         host->wp_gpio = of_get_named_gpio_flags(np, "wp-gpios", 0, &flags);
-
         if (flags & OF_GPIO_ACTIVE_LOW)
                 host->wp_inverted = 1;


Regards,
-- 
Héctor Palacios


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 2/2] mmc: mxs-mmc: add non-removable property
  2013-04-09 15:14   ` [PATCH v2 2/2] mmc: mxs-mmc: add non-removable property Hector Palacios
@ 2013-04-09 15:21     ` Hector Palacios
  2013-04-09 16:34       ` Marc Kleine-Budde
  0 siblings, 1 reply; 5+ messages in thread
From: Hector Palacios @ 2013-04-09 15:21 UTC (permalink / raw)
  To: Marc Kleine-Budde
  Cc: linux-mmc, kernel, cjb, aletes.xgr, linux-kernel, Marek Vasut, Shawn Guo

On 04/09/2013 05:14 PM, Hector Palacios wrote:
> @@ -95,7 +97,8 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc)
>          struct mxs_mmc_host *host = mmc_priv(mmc);
>          struct mxs_ssp *ssp = &host->ssp;
>
> -       return !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
> +       return host->non_removable || host->broken_cd ||
> +              !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
>                   BM_SSP_STATUS_CARD_DETECT);
>   }

Sorry, I missed your original XOR here, when merging my changes:

@@ -95,7 +97,8 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc)
         struct mxs_mmc_host *host = mmc_priv(mmc);
         struct mxs_ssp *ssp = &host->ssp;

-       return !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
+       return host->non_removable || host->broken_cd ||
+              !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
+                BM_SSP_STATUS_CARD_DETECT) ^ host->cd_inverted;
  }

  static void mxs_mmc_reset(struct mxs_mmc_host *host)


Regards,
-- 
Héctor Palacios

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 2/2] mmc: mxs-mmc: add non-removable property
  2013-04-09 15:21     ` Hector Palacios
@ 2013-04-09 16:34       ` Marc Kleine-Budde
  2013-04-10  8:19         ` Hector Palacios
  0 siblings, 1 reply; 5+ messages in thread
From: Marc Kleine-Budde @ 2013-04-09 16:34 UTC (permalink / raw)
  To: Hector Palacios
  Cc: linux-mmc, kernel, cjb, aletes.xgr, linux-kernel, Marek Vasut, Shawn Guo

[-- Attachment #1: Type: text/plain, Size: 1007 bytes --]

On 04/09/2013 05:21 PM, Hector Palacios wrote:
> On 04/09/2013 05:14 PM, Hector Palacios wrote:
>> @@ -95,7 +97,8 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc)
>>          struct mxs_mmc_host *host = mmc_priv(mmc);
>>          struct mxs_ssp *ssp = &host->ssp;
>>
>> -       return !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
>> +       return host->non_removable || host->broken_cd ||
>> +              !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
>>                   BM_SSP_STATUS_CARD_DETECT);
>>   }
> 
> Sorry, I missed your original XOR here, when merging my changes:

Can you send an incremental patch against my 2/2 with your
Signed-off-by, I'll squash your patch into mine and repost the series.

Marc

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 2/2] mmc: mxs-mmc: add non-removable property
  2013-04-09 16:34       ` Marc Kleine-Budde
@ 2013-04-10  8:19         ` Hector Palacios
  2013-04-10  9:16           ` Marc Kleine-Budde
  0 siblings, 1 reply; 5+ messages in thread
From: Hector Palacios @ 2013-04-10  8:19 UTC (permalink / raw)
  To: Marc Kleine-Budde
  Cc: linux-mmc, kernel, cjb, aletes.xgr, linux-kernel, Marek Vasut, Shawn Guo

On Tue 09 Apr 2013 06:34:10 PM CEST, Marc Kleine-Budde wrote:
> On 04/09/2013 05:21 PM, Hector Palacios wrote:
>> On 04/09/2013 05:14 PM, Hector Palacios wrote:
>>> @@ -95,7 +97,8 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc)
>>>           struct mxs_mmc_host *host = mmc_priv(mmc);
>>>           struct mxs_ssp *ssp = &host->ssp;
>>>
>>> -       return !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
>>> +       return host->non_removable || host->broken_cd ||
>>> +              !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
>>>                    BM_SSP_STATUS_CARD_DETECT);
>>>    }
>>
>> Sorry, I missed your original XOR here, when merging my changes:
>
> Can you send an incremental patch against my 2/2 with your
> Signed-off-by, I'll squash your patch into mine and repost the series.

Sure. Here it is:

>From 18f6199947bc2681d2d63b307506019535018646 Mon Sep 17 00:00:00 2001
From: Hector Palacios <hector.palacios@digi.com>
Date: Wed, 10 Apr 2013 09:16:31 +0200
Subject: [PATCH] mmc: mxs-mmc: handle 'broken-cd' property

According to bindings documentation for mmc, the property 'broken-cd'
can be used to indicate card-detection is not available and polling
must be used instead. This patch retrieves this property
and sets a custom flag. On the get_cd() hook, it returns 1 if
the flag is set, to always assume the card is present.

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
---
 drivers/mmc/host/mxs-mmc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
index 75dee88..10c07a8 100644
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -73,6 +73,7 @@ struct mxs_mmc_host {
        int                             wp_gpio;
        bool                            wp_inverted;
        bool                            cd_inverted;
+       bool                            broken_cd;
        bool                            non_removable;
 };

@@ -97,7 +98,7 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc)
        struct mxs_mmc_host *host = mmc_priv(mmc);
        struct mxs_ssp *ssp = &host->ssp;

-       return host->non_removable ||
+       return host->non_removable || host->broken_cd ||
                !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
                  BM_SSP_STATUS_CARD_DETECT) ^ host->cd_inverted;
 }
@@ -689,6 +690,7 @@ static int mxs_mmc_probe(struct platform_device 
*pdev)
                mmc->caps |= MMC_CAP_4_BIT_DATA;
        else if (bus_width == 8)
                mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA;
+       host->broken_cd = of_property_read_bool(np, "broken-cd");
        host->non_removable = of_property_read_bool(np, 
"non-removable");
        if (host->non_removable)
                mmc->caps |= MMC_CAP_NONREMOVABLE;
--
1.8.2




^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 2/2] mmc: mxs-mmc: add non-removable property
  2013-04-10  8:19         ` Hector Palacios
@ 2013-04-10  9:16           ` Marc Kleine-Budde
  0 siblings, 0 replies; 5+ messages in thread
From: Marc Kleine-Budde @ 2013-04-10  9:16 UTC (permalink / raw)
  To: Hector Palacios
  Cc: linux-mmc, kernel, cjb, aletes.xgr, linux-kernel, Marek Vasut, Shawn Guo

[-- Attachment #1: Type: text/plain, Size: 1921 bytes --]

On 04/10/2013 10:19 AM, Hector Palacios wrote:
> On Tue 09 Apr 2013 06:34:10 PM CEST, Marc Kleine-Budde wrote:
>> On 04/09/2013 05:21 PM, Hector Palacios wrote:
>>> On 04/09/2013 05:14 PM, Hector Palacios wrote:
>>>> @@ -95,7 +97,8 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc)
>>>>           struct mxs_mmc_host *host = mmc_priv(mmc);
>>>>           struct mxs_ssp *ssp = &host->ssp;
>>>>
>>>> -       return !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
>>>> +       return host->non_removable || host->broken_cd ||
>>>> +              !(readl(ssp->base + HW_SSP_STATUS(ssp)) &
>>>>                    BM_SSP_STATUS_CARD_DETECT);
>>>>    }
>>>
>>> Sorry, I missed your original XOR here, when merging my changes:
>>
>> Can you send an incremental patch against my 2/2 with your
>> Signed-off-by, I'll squash your patch into mine and repost the series.
> 
> Sure. Here it is:
> 
> From 18f6199947bc2681d2d63b307506019535018646 Mon Sep 17 00:00:00 2001
> From: Hector Palacios <hector.palacios@digi.com>
> Date: Wed, 10 Apr 2013 09:16:31 +0200
> Subject: [PATCH] mmc: mxs-mmc: handle 'broken-cd' property
> 
> According to bindings documentation for mmc, the property 'broken-cd'
> can be used to indicate card-detection is not available and polling
> must be used instead. This patch retrieves this property
> and sets a custom flag. On the get_cd() hook, it returns 1 if
> the flag is set, to always assume the card is present.
> 
> Signed-off-by: Hector Palacios <hector.palacios@digi.com>

Thanks, your patch description is so good, I'll keep your patch as 3
and repost the whole series.

Marc

P.S.:
-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-04-10  9:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1365166070-9370-1-git-send-email-mkl@pengutronix.de>
     [not found] ` <1365166070-9370-3-git-send-email-mkl@pengutronix.de>
2013-04-09 15:14   ` [PATCH v2 2/2] mmc: mxs-mmc: add non-removable property Hector Palacios
2013-04-09 15:21     ` Hector Palacios
2013-04-09 16:34       ` Marc Kleine-Budde
2013-04-10  8:19         ` Hector Palacios
2013-04-10  9:16           ` Marc Kleine-Budde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).