linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Remove mmc_host enable/disable methods.
@ 2015-03-25 21:43 NeilBrown
  2015-03-25 21:43 ` [PATCH 2/2] mmc: remove " NeilBrown
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: NeilBrown @ 2015-03-25 21:43 UTC (permalink / raw)
  To: Tony Lindgren, Ulf Hansson, Adrian Hunter, Chris Ball
  Cc: linux-omap, linux-mmc, linux-kernel

Only omap_hsmmc uses enable and disable, and this seems
to be largely for historical reasons and is no longer
necessary.

I have tested these patches with an OMAP3 with an
uSD card on mmc0 and a wifi SDIO device on mmc1.

NeilBrown


---

NeilBrown (2):
      mmc: omap_hsmmc: stop using .enable and .disable method.
      mmc: remove enable/disable methods.


 drivers/mmc/core/core.c       |    5 -----
 drivers/mmc/host/omap_hsmmc.c |   24 +++---------------------
 include/linux/mmc/host.h      |    6 ------
 3 files changed, 3 insertions(+), 32 deletions(-)

--
Signature


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

* [PATCH 1/2] mmc: omap_hsmmc: stop using .enable and .disable method.
  2015-03-25 21:43 [PATCH 0/2] Remove mmc_host enable/disable methods NeilBrown
  2015-03-25 21:43 ` [PATCH 2/2] mmc: remove " NeilBrown
@ 2015-03-25 21:43 ` NeilBrown
  2015-03-26  1:18   ` NeilBrown
  2015-03-27 10:01 ` [PATCH 0/2] Remove mmc_host enable/disable methods Ulf Hansson
  2 siblings, 1 reply; 7+ messages in thread
From: NeilBrown @ 2015-03-25 21:43 UTC (permalink / raw)
  To: Tony Lindgren, Ulf Hansson, Adrian Hunter, Chris Ball
  Cc: linux-omap, linux-mmc, linux-kernel

enable and disable are only used to get and put
runtime pm references.  .set_ios already does this
itself, and other drivers just do it in set_ios
and .request without using enable/disable.

So add pm_runtime get/put to omap_hsmmc_request(),
and discard the enable/disable methods.

Signed-off-by: NeilBrown <neil@brown.name>
---
 drivers/mmc/host/omap_hsmmc.c |   24 +++---------------------
 1 file changed, 3 insertions(+), 21 deletions(-)

diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index f84cfb01716d..092bcecd73e6 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -882,6 +882,8 @@ static void omap_hsmmc_request_done(struct omap_hsmmc_host *host, struct mmc_req
 		return;
 	host->mrq = NULL;
 	mmc_request_done(host->mmc, mrq);
+	pm_runtime_mark_last_busy(host->dev);
+	pm_runtime_put_autosuspend(host->dev);
 }
 
 /*
@@ -1537,6 +1539,7 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
 
 	BUG_ON(host->req_in_progress);
 	BUG_ON(host->dma_ch != -1);
+	pm_runtime_get_sync(host->dev);
 	if (host->protect_card) {
 		if (host->reqs_blocked < 3) {
 			/*
@@ -1778,25 +1781,6 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host)
 	set_sd_bus_power(host);
 }
 
-static int omap_hsmmc_enable_fclk(struct mmc_host *mmc)
-{
-	struct omap_hsmmc_host *host = mmc_priv(mmc);
-
-	pm_runtime_get_sync(host->dev);
-
-	return 0;
-}
-
-static int omap_hsmmc_disable_fclk(struct mmc_host *mmc)
-{
-	struct omap_hsmmc_host *host = mmc_priv(mmc);
-
-	pm_runtime_mark_last_busy(host->dev);
-	pm_runtime_put_autosuspend(host->dev);
-
-	return 0;
-}
-
 static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
 				     unsigned int direction, int blk_size)
 {
@@ -1808,8 +1792,6 @@ static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
 }
 
 static struct mmc_host_ops omap_hsmmc_ops = {
-	.enable = omap_hsmmc_enable_fclk,
-	.disable = omap_hsmmc_disable_fclk,
 	.post_req = omap_hsmmc_post_req,
 	.pre_req = omap_hsmmc_pre_req,
 	.request = omap_hsmmc_request,



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

* [PATCH 2/2] mmc: remove enable/disable methods.
  2015-03-25 21:43 [PATCH 0/2] Remove mmc_host enable/disable methods NeilBrown
@ 2015-03-25 21:43 ` NeilBrown
  2015-03-25 21:43 ` [PATCH 1/2] mmc: omap_hsmmc: stop using .enable and .disable method NeilBrown
  2015-03-27 10:01 ` [PATCH 0/2] Remove mmc_host enable/disable methods Ulf Hansson
  2 siblings, 0 replies; 7+ messages in thread
From: NeilBrown @ 2015-03-25 21:43 UTC (permalink / raw)
  To: Tony Lindgren, Ulf Hansson, Adrian Hunter, Chris Ball
  Cc: linux-omap, linux-mmc, linux-kernel

The 'enable' and 'disable' methods are "deprecated"
according to host.h, and are no longer used.  So
discard them.

Signed-off-by: NeilBrown <neil@brown.name>
---
 drivers/mmc/core/core.c  |    5 -----
 include/linux/mmc/host.h |    6 ------
 2 files changed, 11 deletions(-)

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index 23f10f72e5f3..709ada9f26b5 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -920,8 +920,6 @@ int __mmc_claim_host(struct mmc_host *host, atomic_t *abort)
 		wake_up(&host->wq);
 	spin_unlock_irqrestore(&host->lock, flags);
 	remove_wait_queue(&host->wq, &wait);
-	if (host->ops->enable && !stop && host->claim_cnt == 1)
-		host->ops->enable(host);
 	return stop;
 }
 
@@ -940,9 +938,6 @@ void mmc_release_host(struct mmc_host *host)
 
 	WARN_ON(!host->claimed);
 
-	if (host->ops->disable && host->claim_cnt == 1)
-		host->ops->disable(host);
-
 	spin_lock_irqsave(&host->lock, flags);
 	if (--host->claim_cnt) {
 		/* Release for nested claim */
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 0c8cbe5d1550..b5bedaec6223 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -80,12 +80,6 @@ struct mmc_ios {
 
 struct mmc_host_ops {
 	/*
-	 * 'enable' is called when the host is claimed and 'disable' is called
-	 * when the host is released. 'enable' and 'disable' are deprecated.
-	 */
-	int (*enable)(struct mmc_host *host);
-	int (*disable)(struct mmc_host *host);
-	/*
 	 * It is optional for the host to implement pre_req and post_req in
 	 * order to support double buffering of requests (prepare one
 	 * request while another request is active).



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

* Re: [PATCH 1/2] mmc: omap_hsmmc: stop using .enable and .disable method.
  2015-03-25 21:43 ` [PATCH 1/2] mmc: omap_hsmmc: stop using .enable and .disable method NeilBrown
@ 2015-03-26  1:18   ` NeilBrown
  2015-03-26  7:38     ` Ulf Hansson
  0 siblings, 1 reply; 7+ messages in thread
From: NeilBrown @ 2015-03-26  1:18 UTC (permalink / raw)
  To: NeilBrown
  Cc: Tony Lindgren, Ulf Hansson, Adrian Hunter, Chris Ball,
	linux-omap, linux-mmc, linux-kernel

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

On Thu, 26 Mar 2015 08:43:37 +1100 NeilBrown <neil@brown.name> wrote:

> enable and disable are only used to get and put
> runtime pm references.  .set_ios already does this
> itself, and other drivers just do it in set_ios
> and .request without using enable/disable.
> 
> So add pm_runtime get/put to omap_hsmmc_request(),
> and discard the enable/disable methods.
> 
> Signed-off-by: NeilBrown <neil@brown.name>

Sorry, that patch wasn't much good.  This one I have really tested properly
and checked that the 'put' match the 'get's and  that the device to regularly
go to sleep as expected.

NeilBrown


From: NeilBrown <neil@brown.name>
Date: Thu, 26 Mar 2015 08:28:43 +1100
Subject: [PATCH] mmc: omap_hsmmc: stop using .enable and .disable method.

enable and disable are only used to get and put
runtime pm references.  .set_ios already does this
itself, and other drivers just do it in set_ios
and .request without using enable/disable.

So add pm_runtime get/put to omap_hsmmc_request(),
and discard the enable/disable methods.

Signed-off-by: NeilBrown <neil@brown.name>

diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index f84cfb01716d..2cb81538a612 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -882,6 +882,8 @@ static void omap_hsmmc_request_done(struct omap_hsmmc_host *host, struct mmc_req
 		return;
 	host->mrq = NULL;
 	mmc_request_done(host->mmc, mrq);
+	pm_runtime_mark_last_busy(host->dev);
+	pm_runtime_put_autosuspend(host->dev);
 }
 
 /*
@@ -1305,6 +1307,8 @@ static void omap_hsmmc_dma_callback(void *param)
 
 		host->mrq = NULL;
 		mmc_request_done(host->mmc, mrq);
+		pm_runtime_mark_last_busy(host->dev);
+		pm_runtime_put_autosuspend(host->dev);
 	}
 }
 
@@ -1537,6 +1541,7 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
 
 	BUG_ON(host->req_in_progress);
 	BUG_ON(host->dma_ch != -1);
+	pm_runtime_get_sync(host->dev);
 	if (host->protect_card) {
 		if (host->reqs_blocked < 3) {
 			/*
@@ -1553,6 +1558,8 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
 			req->data->error = -EBADF;
 		req->cmd->retries = 0;
 		mmc_request_done(mmc, req);
+		pm_runtime_mark_last_busy(host->dev);
+		pm_runtime_put_autosuspend(host->dev);
 		return;
 	} else if (host->reqs_blocked)
 		host->reqs_blocked = 0;
@@ -1566,6 +1573,8 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
 			req->data->error = err;
 		host->mrq = NULL;
 		mmc_request_done(mmc, req);
+		pm_runtime_mark_last_busy(host->dev);
+		pm_runtime_put_autosuspend(host->dev);
 		return;
 	}
 	if (req->sbc && !(host->flags & AUTO_CMD23)) {
@@ -1778,25 +1787,6 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host)
 	set_sd_bus_power(host);
 }
 
-static int omap_hsmmc_enable_fclk(struct mmc_host *mmc)
-{
-	struct omap_hsmmc_host *host = mmc_priv(mmc);
-
-	pm_runtime_get_sync(host->dev);
-
-	return 0;
-}
-
-static int omap_hsmmc_disable_fclk(struct mmc_host *mmc)
-{
-	struct omap_hsmmc_host *host = mmc_priv(mmc);
-
-	pm_runtime_mark_last_busy(host->dev);
-	pm_runtime_put_autosuspend(host->dev);
-
-	return 0;
-}
-
 static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
 				     unsigned int direction, int blk_size)
 {
@@ -1808,8 +1798,6 @@ static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
 }
 
 static struct mmc_host_ops omap_hsmmc_ops = {
-	.enable = omap_hsmmc_enable_fclk,
-	.disable = omap_hsmmc_disable_fclk,
 	.post_req = omap_hsmmc_post_req,
 	.pre_req = omap_hsmmc_pre_req,
 	.request = omap_hsmmc_request,

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

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

* Re: [PATCH 1/2] mmc: omap_hsmmc: stop using .enable and .disable method.
  2015-03-26  1:18   ` NeilBrown
@ 2015-03-26  7:38     ` Ulf Hansson
  2015-03-26  8:05       ` Ulf Hansson
  0 siblings, 1 reply; 7+ messages in thread
From: Ulf Hansson @ 2015-03-26  7:38 UTC (permalink / raw)
  To: NeilBrown
  Cc: NeilBrown, Tony Lindgren, Adrian Hunter, Chris Ball, linux-omap,
	linux-mmc, linux-kernel

On 26 March 2015 at 02:18, NeilBrown <neilb@suse.de> wrote:
> On Thu, 26 Mar 2015 08:43:37 +1100 NeilBrown <neil@brown.name> wrote:
>
>> enable and disable are only used to get and put
>> runtime pm references.  .set_ios already does this
>> itself, and other drivers just do it in set_ios
>> and .request without using enable/disable.
>>
>> So add pm_runtime get/put to omap_hsmmc_request(),
>> and discard the enable/disable methods.
>>
>> Signed-off-by: NeilBrown <neil@brown.name>
>
> Sorry, that patch wasn't much good.  This one I have really tested properly
> and checked that the 'put' match the 'get's and  that the device to regularly
> go to sleep as expected.
>
> NeilBrown
>
>
> From: NeilBrown <neil@brown.name>
> Date: Thu, 26 Mar 2015 08:28:43 +1100
> Subject: [PATCH] mmc: omap_hsmmc: stop using .enable and .disable method.
>
> enable and disable are only used to get and put
> runtime pm references.  .set_ios already does this
> itself, and other drivers just do it in set_ios
> and .request without using enable/disable.
>
> So add pm_runtime get/put to omap_hsmmc_request(),
> and discard the enable/disable methods.
>
> Signed-off-by: NeilBrown <neil@brown.name>
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index f84cfb01716d..2cb81538a612 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -882,6 +882,8 @@ static void omap_hsmmc_request_done(struct omap_hsmmc_host *host, struct mmc_req
>                 return;
>         host->mrq = NULL;
>         mmc_request_done(host->mmc, mrq);
> +       pm_runtime_mark_last_busy(host->dev);
> +       pm_runtime_put_autosuspend(host->dev);
>  }

How about adding a function like this:

_omap_hsmmc_request_done(struct omap_hsmmc_host *host, struct mmc_req)
{
  mmc_request_done(host->mmc, mrq);
  pm_runtime_mark_last_busy(host->dev);
  pm_runtime_put_autosuspend(host->dev);
}

Then just invoke it from those places were needed?

>
>  /*
> @@ -1305,6 +1307,8 @@ static void omap_hsmmc_dma_callback(void *param)
>
>                 host->mrq = NULL;
>                 mmc_request_done(host->mmc, mrq);
> +               pm_runtime_mark_last_busy(host->dev);
> +               pm_runtime_put_autosuspend(host->dev);
>         }
>  }
>
> @@ -1537,6 +1541,7 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
>
>         BUG_ON(host->req_in_progress);
>         BUG_ON(host->dma_ch != -1);
> +       pm_runtime_get_sync(host->dev);
>         if (host->protect_card) {
>                 if (host->reqs_blocked < 3) {
>                         /*
> @@ -1553,6 +1558,8 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
>                         req->data->error = -EBADF;
>                 req->cmd->retries = 0;
>                 mmc_request_done(mmc, req);
> +               pm_runtime_mark_last_busy(host->dev);
> +               pm_runtime_put_autosuspend(host->dev);
>                 return;
>         } else if (host->reqs_blocked)
>                 host->reqs_blocked = 0;
> @@ -1566,6 +1573,8 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
>                         req->data->error = err;
>                 host->mrq = NULL;
>                 mmc_request_done(mmc, req);
> +               pm_runtime_mark_last_busy(host->dev);
> +               pm_runtime_put_autosuspend(host->dev);
>                 return;
>         }
>         if (req->sbc && !(host->flags & AUTO_CMD23)) {
> @@ -1778,25 +1787,6 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host)
>         set_sd_bus_power(host);
>  }
>
> -static int omap_hsmmc_enable_fclk(struct mmc_host *mmc)
> -{
> -       struct omap_hsmmc_host *host = mmc_priv(mmc);
> -
> -       pm_runtime_get_sync(host->dev);
> -
> -       return 0;
> -}
> -
> -static int omap_hsmmc_disable_fclk(struct mmc_host *mmc)
> -{
> -       struct omap_hsmmc_host *host = mmc_priv(mmc);
> -
> -       pm_runtime_mark_last_busy(host->dev);
> -       pm_runtime_put_autosuspend(host->dev);
> -
> -       return 0;
> -}
> -
>  static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
>                                      unsigned int direction, int blk_size)
>  {
> @@ -1808,8 +1798,6 @@ static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
>  }
>
>  static struct mmc_host_ops omap_hsmmc_ops = {
> -       .enable = omap_hsmmc_enable_fclk,
> -       .disable = omap_hsmmc_disable_fclk,
>         .post_req = omap_hsmmc_post_req,
>         .pre_req = omap_hsmmc_pre_req,
>         .request = omap_hsmmc_request,

Finally, I think you have forgotten to deal with pm_runtime_get|put*()
in omap_hsmmc_enable_sdio_irq().

Kind regards
Uffe

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

* Re: [PATCH 1/2] mmc: omap_hsmmc: stop using .enable and .disable method.
  2015-03-26  7:38     ` Ulf Hansson
@ 2015-03-26  8:05       ` Ulf Hansson
  0 siblings, 0 replies; 7+ messages in thread
From: Ulf Hansson @ 2015-03-26  8:05 UTC (permalink / raw)
  To: NeilBrown
  Cc: NeilBrown, Tony Lindgren, Adrian Hunter, Chris Ball, linux-omap,
	linux-mmc, linux-kernel

On 26 March 2015 at 08:38, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> On 26 March 2015 at 02:18, NeilBrown <neilb@suse.de> wrote:
>> On Thu, 26 Mar 2015 08:43:37 +1100 NeilBrown <neil@brown.name> wrote:
>>
>>> enable and disable are only used to get and put
>>> runtime pm references.  .set_ios already does this
>>> itself, and other drivers just do it in set_ios
>>> and .request without using enable/disable.
>>>
>>> So add pm_runtime get/put to omap_hsmmc_request(),
>>> and discard the enable/disable methods.
>>>
>>> Signed-off-by: NeilBrown <neil@brown.name>
>>
>> Sorry, that patch wasn't much good.  This one I have really tested properly
>> and checked that the 'put' match the 'get's and  that the device to regularly
>> go to sleep as expected.
>>
>> NeilBrown
>>
>>
>> From: NeilBrown <neil@brown.name>
>> Date: Thu, 26 Mar 2015 08:28:43 +1100
>> Subject: [PATCH] mmc: omap_hsmmc: stop using .enable and .disable method.
>>
>> enable and disable are only used to get and put
>> runtime pm references.  .set_ios already does this
>> itself, and other drivers just do it in set_ios
>> and .request without using enable/disable.
>>
>> So add pm_runtime get/put to omap_hsmmc_request(),
>> and discard the enable/disable methods.
>>
>> Signed-off-by: NeilBrown <neil@brown.name>
>>
>> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
>> index f84cfb01716d..2cb81538a612 100644
>> --- a/drivers/mmc/host/omap_hsmmc.c
>> +++ b/drivers/mmc/host/omap_hsmmc.c
>> @@ -882,6 +882,8 @@ static void omap_hsmmc_request_done(struct omap_hsmmc_host *host, struct mmc_req
>>                 return;
>>         host->mrq = NULL;
>>         mmc_request_done(host->mmc, mrq);
>> +       pm_runtime_mark_last_busy(host->dev);
>> +       pm_runtime_put_autosuspend(host->dev);
>>  }
>
> How about adding a function like this:
>
> _omap_hsmmc_request_done(struct omap_hsmmc_host *host, struct mmc_req)
> {
>   mmc_request_done(host->mmc, mrq);
>   pm_runtime_mark_last_busy(host->dev);
>   pm_runtime_put_autosuspend(host->dev);
> }
>
> Then just invoke it from those places were needed?
>
>>
>>  /*
>> @@ -1305,6 +1307,8 @@ static void omap_hsmmc_dma_callback(void *param)
>>
>>                 host->mrq = NULL;
>>                 mmc_request_done(host->mmc, mrq);
>> +               pm_runtime_mark_last_busy(host->dev);
>> +               pm_runtime_put_autosuspend(host->dev);
>>         }
>>  }
>>
>> @@ -1537,6 +1541,7 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
>>
>>         BUG_ON(host->req_in_progress);
>>         BUG_ON(host->dma_ch != -1);
>> +       pm_runtime_get_sync(host->dev);
>>         if (host->protect_card) {
>>                 if (host->reqs_blocked < 3) {
>>                         /*
>> @@ -1553,6 +1558,8 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
>>                         req->data->error = -EBADF;
>>                 req->cmd->retries = 0;
>>                 mmc_request_done(mmc, req);
>> +               pm_runtime_mark_last_busy(host->dev);
>> +               pm_runtime_put_autosuspend(host->dev);
>>                 return;
>>         } else if (host->reqs_blocked)
>>                 host->reqs_blocked = 0;
>> @@ -1566,6 +1573,8 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
>>                         req->data->error = err;
>>                 host->mrq = NULL;
>>                 mmc_request_done(mmc, req);
>> +               pm_runtime_mark_last_busy(host->dev);
>> +               pm_runtime_put_autosuspend(host->dev);
>>                 return;
>>         }
>>         if (req->sbc && !(host->flags & AUTO_CMD23)) {
>> @@ -1778,25 +1787,6 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host)
>>         set_sd_bus_power(host);
>>  }
>>
>> -static int omap_hsmmc_enable_fclk(struct mmc_host *mmc)
>> -{
>> -       struct omap_hsmmc_host *host = mmc_priv(mmc);
>> -
>> -       pm_runtime_get_sync(host->dev);
>> -
>> -       return 0;
>> -}
>> -
>> -static int omap_hsmmc_disable_fclk(struct mmc_host *mmc)
>> -{
>> -       struct omap_hsmmc_host *host = mmc_priv(mmc);
>> -
>> -       pm_runtime_mark_last_busy(host->dev);
>> -       pm_runtime_put_autosuspend(host->dev);
>> -
>> -       return 0;
>> -}
>> -
>>  static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
>>                                      unsigned int direction, int blk_size)
>>  {
>> @@ -1808,8 +1798,6 @@ static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
>>  }
>>
>>  static struct mmc_host_ops omap_hsmmc_ops = {
>> -       .enable = omap_hsmmc_enable_fclk,
>> -       .disable = omap_hsmmc_disable_fclk,
>>         .post_req = omap_hsmmc_post_req,
>>         .pre_req = omap_hsmmc_pre_req,
>>         .request = omap_hsmmc_request,
>
> Finally, I think you have forgotten to deal with pm_runtime_get|put*()
> in omap_hsmmc_enable_sdio_irq().

No, _me_ totally forgot that SDIO IRQ is a special case and from the
above mentioned function we mustn't deal with runtime PM, since that
function is executed in IRQ context. :-)

Also, since omap's runtime PM ->suspend() callback disables regular
SDIO IRQS and enables wakeups, this case is already covered. Please
ignore my comment above and sorry for the noise.

Kind regards
Uffe

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

* Re: [PATCH 0/2] Remove mmc_host enable/disable methods.
  2015-03-25 21:43 [PATCH 0/2] Remove mmc_host enable/disable methods NeilBrown
  2015-03-25 21:43 ` [PATCH 2/2] mmc: remove " NeilBrown
  2015-03-25 21:43 ` [PATCH 1/2] mmc: omap_hsmmc: stop using .enable and .disable method NeilBrown
@ 2015-03-27 10:01 ` Ulf Hansson
  2 siblings, 0 replies; 7+ messages in thread
From: Ulf Hansson @ 2015-03-27 10:01 UTC (permalink / raw)
  To: NeilBrown
  Cc: Tony Lindgren, Adrian Hunter, Chris Ball, linux-omap, linux-mmc,
	linux-kernel

On 25 March 2015 at 22:43, NeilBrown <neil@brown.name> wrote:
> Only omap_hsmmc uses enable and disable, and this seems
> to be largely for historical reasons and is no longer
> necessary.
>
> I have tested these patches with an OMAP3 with an
> uSD card on mmc0 and a wifi SDIO device on mmc1.
>
> NeilBrown
>
>
> ---
>
> NeilBrown (2):
>       mmc: omap_hsmmc: stop using .enable and .disable method.
>       mmc: remove enable/disable methods.
>
>
>  drivers/mmc/core/core.c       |    5 -----
>  drivers/mmc/host/omap_hsmmc.c |   24 +++---------------------
>  include/linux/mmc/host.h      |    6 ------
>  3 files changed, 3 insertions(+), 32 deletions(-)
>
> --

Applied both patches (the later version of patch 1). Also I took the
liberty to update the commit messages.

If you care about my comments for patch1, let's deal with that as new
separate "cleanup-patch".

Thanks!

Kind regards
Uffe

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

end of thread, other threads:[~2015-03-27 10:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-25 21:43 [PATCH 0/2] Remove mmc_host enable/disable methods NeilBrown
2015-03-25 21:43 ` [PATCH 2/2] mmc: remove " NeilBrown
2015-03-25 21:43 ` [PATCH 1/2] mmc: omap_hsmmc: stop using .enable and .disable method NeilBrown
2015-03-26  1:18   ` NeilBrown
2015-03-26  7:38     ` Ulf Hansson
2015-03-26  8:05       ` Ulf Hansson
2015-03-27 10:01 ` [PATCH 0/2] Remove mmc_host enable/disable methods Ulf Hansson

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).