All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mmc: pxamci: prepare and unprepare the clocks
@ 2014-06-09 19:56 Robert Jarzmik
  2014-09-01  9:09 ` Robert Jarzmik
  2014-09-01 10:31 ` Ulf Hansson
  0 siblings, 2 replies; 8+ messages in thread
From: Robert Jarzmik @ 2014-06-09 19:56 UTC (permalink / raw)
  To: Chris Ball, Ulf Hansson; +Cc: linux-mmc, Robert Jarzmik

Add the clock prepare and unprepare call to the driver initialization
phase. This will remove a warning once the PXA architecture is migrated
to the clock infrastructure.

Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
---
 drivers/mmc/host/pxamci.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
index 32fe113..f0f2074 100644
--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -681,6 +681,9 @@ static int pxamci_probe(struct platform_device *pdev)
 		host->clk = NULL;
 		goto out;
 	}
+	ret = clk_prepare(host->clk);
+	if (ret)
+		goto out;
 
 	host->clkrate = clk_get_rate(host->clk);
 
@@ -820,8 +823,10 @@ err_gpio_ro:
 			iounmap(host->base);
 		if (host->sg_cpu)
 			dma_free_coherent(&pdev->dev, PAGE_SIZE, host->sg_cpu, host->sg_dma);
-		if (host->clk)
+		if (host->clk) {
+			clk_unprepare(host->clk);
 			clk_put(host->clk);
+		}
 	}
 	if (mmc)
 		mmc_free_host(mmc);
@@ -871,6 +876,7 @@ static int pxamci_remove(struct platform_device *pdev)
 		iounmap(host->base);
 		dma_free_coherent(&pdev->dev, PAGE_SIZE, host->sg_cpu, host->sg_dma);
 
+		clk_unprepare(host->clk);
 		clk_put(host->clk);
 
 		release_resource(host->res);
-- 
2.0.0.rc2


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

* Re: [PATCH] mmc: pxamci: prepare and unprepare the clocks
  2014-06-09 19:56 [PATCH] mmc: pxamci: prepare and unprepare the clocks Robert Jarzmik
@ 2014-09-01  9:09 ` Robert Jarzmik
  2014-09-01 10:31 ` Ulf Hansson
  1 sibling, 0 replies; 8+ messages in thread
From: Robert Jarzmik @ 2014-09-01  9:09 UTC (permalink / raw)
  To: Chris Ball, Ulf Hansson; +Cc: linux-mmc

Robert Jarzmik <robert.jarzmik@free.fr> writes:

> Add the clock prepare and unprepare call to the driver initialization
> phase. This will remove a warning once the PXA architecture is migrated
> to the clock infrastructure.
>
> Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Ping ?

--
Robert

> ---
>  drivers/mmc/host/pxamci.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
> index 32fe113..f0f2074 100644
> --- a/drivers/mmc/host/pxamci.c
> +++ b/drivers/mmc/host/pxamci.c
> @@ -681,6 +681,9 @@ static int pxamci_probe(struct platform_device *pdev)
>  		host->clk = NULL;
>  		goto out;
>  	}
> +	ret = clk_prepare(host->clk);
> +	if (ret)
> +		goto out;
>  
>  	host->clkrate = clk_get_rate(host->clk);
>  
> @@ -820,8 +823,10 @@ err_gpio_ro:
>  			iounmap(host->base);
>  		if (host->sg_cpu)
>  			dma_free_coherent(&pdev->dev, PAGE_SIZE, host->sg_cpu, host->sg_dma);
> -		if (host->clk)
> +		if (host->clk) {
> +			clk_unprepare(host->clk);
>  			clk_put(host->clk);
> +		}
>  	}
>  	if (mmc)
>  		mmc_free_host(mmc);
> @@ -871,6 +876,7 @@ static int pxamci_remove(struct platform_device *pdev)
>  		iounmap(host->base);
>  		dma_free_coherent(&pdev->dev, PAGE_SIZE, host->sg_cpu, host->sg_dma);
>  
> +		clk_unprepare(host->clk);
>  		clk_put(host->clk);
>  
>  		release_resource(host->res);

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

* Re: [PATCH] mmc: pxamci: prepare and unprepare the clocks
  2014-06-09 19:56 [PATCH] mmc: pxamci: prepare and unprepare the clocks Robert Jarzmik
  2014-09-01  9:09 ` Robert Jarzmik
@ 2014-09-01 10:31 ` Ulf Hansson
  2014-09-01 12:20   ` Robert Jarzmik
  1 sibling, 1 reply; 8+ messages in thread
From: Ulf Hansson @ 2014-09-01 10:31 UTC (permalink / raw)
  To: Robert Jarzmik; +Cc: Chris Ball, linux-mmc

On 9 June 2014 21:56, Robert Jarzmik <robert.jarzmik@free.fr> wrote:
> Add the clock prepare and unprepare call to the driver initialization
> phase. This will remove a warning once the PXA architecture is migrated
> to the clock infrastructure.
>
> Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
> ---
>  drivers/mmc/host/pxamci.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
> index 32fe113..f0f2074 100644
> --- a/drivers/mmc/host/pxamci.c
> +++ b/drivers/mmc/host/pxamci.c
> @@ -681,6 +681,9 @@ static int pxamci_probe(struct platform_device *pdev)
>                 host->clk = NULL;
>                 goto out;
>         }
> +       ret = clk_prepare(host->clk);
> +       if (ret)
> +               goto out;
>
>         host->clkrate = clk_get_rate(host->clk);
>
> @@ -820,8 +823,10 @@ err_gpio_ro:
>                         iounmap(host->base);
>                 if (host->sg_cpu)
>                         dma_free_coherent(&pdev->dev, PAGE_SIZE, host->sg_cpu, host->sg_dma);
> -               if (host->clk)
> +               if (host->clk) {
> +                       clk_unprepare(host->clk);
>                         clk_put(host->clk);
> +               }
>         }
>         if (mmc)
>                 mmc_free_host(mmc);
> @@ -871,6 +876,7 @@ static int pxamci_remove(struct platform_device *pdev)
>                 iounmap(host->base);
>                 dma_free_coherent(&pdev->dev, PAGE_SIZE, host->sg_cpu, host->sg_dma);
>
> +               clk_unprepare(host->clk);
>                 clk_put(host->clk);
>
>                 release_resource(host->res);
> --
> 2.0.0.rc2
>

I would suggest you to re-place the existing clk_enable() with
clk_prepare_enable() and clk_disable with clk_disable_unprepare()
instead of the approach taken in this patch.

Kind regards
Uffe

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

* Re: [PATCH] mmc: pxamci: prepare and unprepare the clocks
  2014-09-01 10:31 ` Ulf Hansson
@ 2014-09-01 12:20   ` Robert Jarzmik
  2014-09-01 12:49     ` Ulf Hansson
  0 siblings, 1 reply; 8+ messages in thread
From: Robert Jarzmik @ 2014-09-01 12:20 UTC (permalink / raw)
  To: Ulf Hansson; +Cc: Chris Ball, linux-mmc

Ulf Hansson <ulf.hansson@linaro.org> writes:

>
> I would suggest you to re-place the existing clk_enable() with
> clk_prepare_enable() and clk_disable with clk_disable_unprepare()
> instead of the approach taken in this patch.

I don't think it works in this driver.

Look at pxamci_set_ios(), and all the handling of host->clkrt (CLKRT_OFF,
...). This driver enables the clock only when transfers are required, not all
the time. Therefore I'd rather let it be that way.

Cheers.

-- 
Robert

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

* Re: [PATCH] mmc: pxamci: prepare and unprepare the clocks
  2014-09-01 12:20   ` Robert Jarzmik
@ 2014-09-01 12:49     ` Ulf Hansson
  2014-09-01 13:28       ` Robert Jarzmik
  0 siblings, 1 reply; 8+ messages in thread
From: Ulf Hansson @ 2014-09-01 12:49 UTC (permalink / raw)
  To: Robert Jarzmik; +Cc: Chris Ball, linux-mmc

On 1 September 2014 14:20, Robert Jarzmik <robert.jarzmik@free.fr> wrote:
> Ulf Hansson <ulf.hansson@linaro.org> writes:
>
>>
>> I would suggest you to re-place the existing clk_enable() with
>> clk_prepare_enable() and clk_disable with clk_disable_unprepare()
>> instead of the approach taken in this patch.
>
> I don't think it works in this driver.
>
> Look at pxamci_set_ios(), and all the handling of host->clkrt (CLKRT_OFF,
> ...). This driver enables the clock only when transfers are required, not all
> the time. Therefore I'd rather let it be that way.

I understand your concern, but I don't see why there should be any
major difference in clock management code (clk tree wise), due to this
patch. It worked before, so likely it will work now!?

Kind regards
Uffe

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

* Re: [PATCH] mmc: pxamci: prepare and unprepare the clocks
  2014-09-01 12:49     ` Ulf Hansson
@ 2014-09-01 13:28       ` Robert Jarzmik
  2014-09-02  7:53         ` Ulf Hansson
  0 siblings, 1 reply; 8+ messages in thread
From: Robert Jarzmik @ 2014-09-01 13:28 UTC (permalink / raw)
  To: Ulf Hansson; +Cc: Chris Ball, linux-mmc

Ulf Hansson <ulf.hansson@linaro.org> writes:

> I understand your concern, but I don't see why there should be any
> major difference in clock management code (clk tree wise), due to this
> patch. It worked before, so likely it will work now!?

It will ony work *differently*, it will change the clock management. It won't
break, but again it's *not* the purpose of the patch.  The patch is aimed at
removing a warning.

As for the clock management, it will the change the behaviour :
Let's see the current clock management :
 - pxamci_probe()
   => clock is disabled
   mmc_add_host()
     mmc_start_host()
       mmc_power_up() (as pxamci is unaware of caps2)
       Here the comment of the function is (drivers/mmc/core/core.c:1534):
       "First, we enable power to the card without the clock running"
       => this won't be true if the clock is enabled in pxamci_probe()
       mmc_set_ios(host, host->ios.clock=host->f_init)
         pxamci_set_ios()
           clk_enable()
             => here the clock is enabled, enable_count=1
       mmc_host_clk_release()
         pxamci_set_ios()
             => here the clock is disabled, enable_count=0

Let's see the your proposal clock management :
 - pxamci_probe()
   => clock is enabled
   mmc_add_host()
     mmc_start_host()
       mmc_power_up() (as pxamci is unaware of caps2)
       mmc_set_ios(host, host->ios.clock=host->f_init)
         pxamci_set_ios()
           clk_enable()
             => here the clock is enabled twice, enable_count=2
       mmc_host_clk_release()
         pxamci_set_ios()
             => here the clock *remains enabled*, enable_count=1

- time passes with clock enabled

So I think there is a difference, unless my understand of the MMC core stack is wrong.

Cheers.

-- 
Robert

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

* Re: [PATCH] mmc: pxamci: prepare and unprepare the clocks
  2014-09-01 13:28       ` Robert Jarzmik
@ 2014-09-02  7:53         ` Ulf Hansson
  2014-09-02  9:02           ` Robert Jarzmik
  0 siblings, 1 reply; 8+ messages in thread
From: Ulf Hansson @ 2014-09-02  7:53 UTC (permalink / raw)
  To: Robert Jarzmik; +Cc: Chris Ball, linux-mmc

On 1 September 2014 15:28, Robert Jarzmik <robert.jarzmik@free.fr> wrote:
> Ulf Hansson <ulf.hansson@linaro.org> writes:
>
>> I understand your concern, but I don't see why there should be any
>> major difference in clock management code (clk tree wise), due to this
>> patch. It worked before, so likely it will work now!?
>
> It will ony work *differently*, it will change the clock management. It won't
> break, but again it's *not* the purpose of the patch.  The patch is aimed at
> removing a warning.

Sorry if I was to vague, you must have misinterpreted my proposal. Let
me try clarify how I think a patch should look like to solve the
warning.

1) In pxamci_set_ios() replace " clk_enable()" with clk_prepare_enable().
2) In pxamci_set_ios() replace " clk_disable()" with clk_disable_unprepare().

That should do the trick!

Kind regards
Uffe

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

* Re: [PATCH] mmc: pxamci: prepare and unprepare the clocks
  2014-09-02  7:53         ` Ulf Hansson
@ 2014-09-02  9:02           ` Robert Jarzmik
  0 siblings, 0 replies; 8+ messages in thread
From: Robert Jarzmik @ 2014-09-02  9:02 UTC (permalink / raw)
  To: Ulf Hansson; +Cc: Chris Ball, linux-mmc

Ulf Hansson <ulf.hansson@linaro.org> writes:

> On 1 September 2014 15:28, Robert Jarzmik <robert.jarzmik@free.fr> wrote:
>> Ulf Hansson <ulf.hansson@linaro.org> writes:
>>
>>> I understand your concern, but I don't see why there should be any
>>> major difference in clock management code (clk tree wise), due to this
>>> patch. It worked before, so likely it will work now!?
>>
>> It will ony work *differently*, it will change the clock management. It won't
>> break, but again it's *not* the purpose of the patch.  The patch is aimed at
>> removing a warning.
>
> Sorry if I was to vague, you must have misinterpreted my proposal. Let
> me try clarify how I think a patch should look like to solve the
> warning.
>
> 1) In pxamci_set_ios() replace " clk_enable()" with clk_prepare_enable().
> 2) In pxamci_set_ios() replace " clk_disable()" with clk_disable_unprepare().
>
> That should do the trick!
OK, I got it now, and yes, the clock flow will be the same.
I'm on my way to send v2 patch.

Cheers.

-- 
Robert

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

end of thread, other threads:[~2014-09-02  9:02 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-09 19:56 [PATCH] mmc: pxamci: prepare and unprepare the clocks Robert Jarzmik
2014-09-01  9:09 ` Robert Jarzmik
2014-09-01 10:31 ` Ulf Hansson
2014-09-01 12:20   ` Robert Jarzmik
2014-09-01 12:49     ` Ulf Hansson
2014-09-01 13:28       ` Robert Jarzmik
2014-09-02  7:53         ` Ulf Hansson
2014-09-02  9:02           ` Robert Jarzmik

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.