2011-06-20 23:28:18

by Rafael J. Wysocki

[permalink] [raw]
Subject: [PATCH] PM / Runtime: Handle clocks correctly if CONFIG_PM_RUNTIME is unset

From: Rafael J. Wysocki <[email protected]>

Commit 85eb8c8d0b0900c073b0e6f89979ac9c439ade1a (PM / Runtime:
Generic clock manipulation rountines for runtime PM (v6)) converted
the shmobile platform to using generic code for runtime PM clock
management, but it changed the behavior for CONFIG_PM_RUNTIME unset
incorrectly.

Specifically, for CONFIG_PM_RUNTIME unset pm_runtime_clk_notify()
should enable clocks for action equal to BUS_NOTIFY_BIND_DRIVER and
it should disable them for action equal to BUS_NOTIFY_UNBOUND_DRIVER
(instead of BUS_NOTIFY_ADD_DEVICE and BUS_NOTIFY_DEL_DEVICE,
respectively). Make this function behave as appropriate.

Signed-off-by: Rafael J. Wysocki <[email protected]>
---
drivers/base/power/clock_ops.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Index: linux-2.6/drivers/base/power/clock_ops.c
===================================================================
--- linux-2.6.orig/drivers/base/power/clock_ops.c
+++ linux-2.6/drivers/base/power/clock_ops.c
@@ -387,7 +387,7 @@ static int pm_runtime_clk_notify(struct
clknb = container_of(nb, struct pm_clk_notifier_block, nb);

switch (action) {
- case BUS_NOTIFY_ADD_DEVICE:
+ case BUS_NOTIFY_BIND_DRIVER:
if (clknb->con_ids[0]) {
for (con_id = clknb->con_ids; *con_id; con_id++)
enable_clock(dev, *con_id);
@@ -395,7 +395,7 @@ static int pm_runtime_clk_notify(struct
enable_clock(dev, NULL);
}
break;
- case BUS_NOTIFY_DEL_DEVICE:
+ case BUS_NOTIFY_UNBOUND_DRIVER:
if (clknb->con_ids[0]) {
for (con_id = clknb->con_ids; *con_id; con_id++)
disable_clock(dev, *con_id);


2011-06-21 07:10:46

by Magnus Damm

[permalink] [raw]
Subject: Re: [PATCH] PM / Runtime: Handle clocks correctly if CONFIG_PM_RUNTIME is unset

On Tue, Jun 21, 2011 at 8:28 AM, Rafael J. Wysocki <[email protected]> wrote:
> From: Rafael J. Wysocki <[email protected]>
>
> Commit 85eb8c8d0b0900c073b0e6f89979ac9c439ade1a (PM / Runtime:
> Generic clock manipulation rountines for runtime PM (v6)) converted
> the shmobile platform to using generic code for runtime PM clock
> management, but it changed the behavior for CONFIG_PM_RUNTIME unset
> incorrectly.
>
> Specifically, for CONFIG_PM_RUNTIME unset pm_runtime_clk_notify()
> should enable clocks for action equal to BUS_NOTIFY_BIND_DRIVER and
> it should disable them for action equal to BUS_NOTIFY_UNBOUND_DRIVER
> (instead of BUS_NOTIFY_ADD_DEVICE and BUS_NOTIFY_DEL_DEVICE,
> respectively). ?Make this function behave as appropriate.
>
> Signed-off-by: Rafael J. Wysocki <[email protected]>

Thanks Rafael!

Acked-by: Magnus Damm <[email protected]>