* [PATCH] MMC: tmio: fix a recent regression: restore .set_ios(MMC_POWER_UP) handling
@ 2011-04-21 7:09 Guennadi Liakhovetski
2011-04-21 15:35 ` Chris Ball
0 siblings, 1 reply; 4+ messages in thread
From: Guennadi Liakhovetski @ 2011-04-21 7:09 UTC (permalink / raw)
To: linux-mmc; +Cc: linux-sh, Magnus Damm, Simon Horman, Ian Molton, Chris Ball
The aggressive clock gating for TMIO MMC patch has broken switching
interface power on, using MFD or platform callbacks. Restore the
ios->power_mode == MMC_POWER_UP && ios->clock == 0 case handling.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
This one should go in 2.6.39
drivers/mmc/host/tmio_mmc_pio.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c
index 6e3271d..f4fac9f 100644
--- a/drivers/mmc/host/tmio_mmc_pio.c
+++ b/drivers/mmc/host/tmio_mmc_pio.c
@@ -772,15 +772,15 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
tmio_mmc_set_clock(host, ios->clock);
/* Power sequence - OFF -> UP -> ON */
- if (ios->power_mode == MMC_POWER_OFF || !ios->clock) {
+ if (ios->power_mode == MMC_POWER_UP) {
+ /* power up SD bus */
+ if (host->set_pwr)
+ host->set_pwr(host->pdev, 1);
+ } else if (ios->power_mode == MMC_POWER_OFF || !ios->clock) {
/* power down SD bus */
if (ios->power_mode == MMC_POWER_OFF && host->set_pwr)
host->set_pwr(host->pdev, 0);
tmio_mmc_clk_stop(host);
- } else if (ios->power_mode == MMC_POWER_UP) {
- /* power up SD bus */
- if (host->set_pwr)
- host->set_pwr(host->pdev, 1);
} else {
/* start bus clock */
tmio_mmc_clk_start(host);
--
1.7.2.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] MMC: tmio: fix a recent regression: restore .set_ios(MMC_POWER_UP) handling
2011-04-21 7:09 [PATCH] MMC: tmio: fix a recent regression: restore .set_ios(MMC_POWER_UP) handling Guennadi Liakhovetski
@ 2011-04-21 15:35 ` Chris Ball
2011-04-22 4:24 ` Paul Parsons
0 siblings, 1 reply; 4+ messages in thread
From: Chris Ball @ 2011-04-21 15:35 UTC (permalink / raw)
To: Guennadi Liakhovetski
Cc: linux-mmc, linux-sh, Magnus Damm, Simon Horman, Ian Molton,
Paul Parsons
Hi,
On Thu, Apr 21 2011, Guennadi Liakhovetski wrote:
> The aggressive clock gating for TMIO MMC patch has broken switching
> interface power on, using MFD or platform callbacks. Restore the
> ios->power_mode == MMC_POWER_UP && ios->clock == 0 case handling.
>
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> ---
>
> This one should go in 2.6.39
>
> drivers/mmc/host/tmio_mmc_pio.c | 10 +++++-----
> 1 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c
> index 6e3271d..f4fac9f 100644
> --- a/drivers/mmc/host/tmio_mmc_pio.c
> +++ b/drivers/mmc/host/tmio_mmc_pio.c
> @@ -772,15 +772,15 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
> tmio_mmc_set_clock(host, ios->clock);
>
> /* Power sequence - OFF -> UP -> ON */
> - if (ios->power_mode == MMC_POWER_OFF || !ios->clock) {
> + if (ios->power_mode == MMC_POWER_UP) {
> + /* power up SD bus */
> + if (host->set_pwr)
> + host->set_pwr(host->pdev, 1);
> + } else if (ios->power_mode == MMC_POWER_OFF || !ios->clock) {
> /* power down SD bus */
> if (ios->power_mode == MMC_POWER_OFF && host->set_pwr)
> host->set_pwr(host->pdev, 0);
> tmio_mmc_clk_stop(host);
> - } else if (ios->power_mode == MMC_POWER_UP) {
> - /* power up SD bus */
> - if (host->set_pwr)
> - host->set_pwr(host->pdev, 1);
> } else {
> /* start bus clock */
> tmio_mmc_clk_start(host);
Thanks, pushed to mmc-next for .39.
Paul Parsons (CC'd) submitted a similar patch to fix the same regression.
Paul, please could you check that Guennadi's patch fixes your problem?
- Chris.
--
Chris Ball <cjb@laptop.org> <http://printf.net/>
One Laptop Per Child
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] MMC: tmio: fix a recent regression: restore .set_ios(MMC_POWER_UP) handling
2011-04-21 15:35 ` Chris Ball
@ 2011-04-22 4:24 ` Paul Parsons
2011-04-22 11:13 ` Paul Parsons
0 siblings, 1 reply; 4+ messages in thread
From: Paul Parsons @ 2011-04-22 4:24 UTC (permalink / raw)
To: Guennadi Liakhovetski, Chris Ball
Cc: linux-mmc, linux-sh, Magnus Damm, Simon Horman, Ian Molton
Yes, Guennadi's patch fixes my problem.
As far as I can see the expression
(ios->clock == 0 && ios->power_mode == MMC_POWER_ON)
will only be true if host->f_init == 0 at the time MMC_POWER_ON is invoked in mmc_power_up(). Presumably that case is intentional.
--- On Thu, 21/4/11, Chris Ball <cjb@laptop.org> wrote:
> Paul Parsons (CC'd) submitted a similar patch to fix the
> same regression.
> Paul, please could you check that Guennadi's patch fixes
> your problem?
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] MMC: tmio: fix a recent regression: restore .set_ios(MMC_POWER_UP) handling
2011-04-22 4:24 ` Paul Parsons
@ 2011-04-22 11:13 ` Paul Parsons
0 siblings, 0 replies; 4+ messages in thread
From: Paul Parsons @ 2011-04-22 11:13 UTC (permalink / raw)
To: Guennadi Liakhovetski, Chris Ball
Cc: linux-mmc, linux-sh, Magnus Damm, Simon Horman, Ian Molton
--- On Fri, 22/4/11, Paul Parsons <lost.distance@yahoo.com> wrote:
> As far as I can see the expression
>
> (ios->clock == 0 && ios->power_mode ==
> MMC_POWER_ON)
>
> will only be true if host->f_init == 0 at the time
> MMC_POWER_ON is invoked in mmc_power_up(). Presumably that
> case is intentional.
Sorry, ignore this; I missed the case where mmc_gate_clock() sets ios->clock = 0 before calling mmc_set_ios().
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-04-22 11:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-21 7:09 [PATCH] MMC: tmio: fix a recent regression: restore .set_ios(MMC_POWER_UP) handling Guennadi Liakhovetski
2011-04-21 15:35 ` Chris Ball
2011-04-22 4:24 ` Paul Parsons
2011-04-22 11:13 ` Paul Parsons
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox