* [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.