aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/power
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2011-06-07 17:34:58 -0400
committerRafael J. Wysocki <rjw@sisk.pl>2011-06-07 17:34:58 -0400
commit3b3eca3116861113ccc0e1ca3b98cb43598f46a7 (patch)
tree958427e5260ec95b04faaef18b5c08249ce8dfda /drivers/base/power
parent99592ba4a80edb84938e7e0cf71fdecff1ce67fd (diff)
PM / Runtime: Fix loops in pm_runtime_clk_notify()
The loops over connection ID strings in pm_runtime_clk_notify() should actually iterate over the strings and not over the elements of the first of them, so make them behave as appropriate. This fixes a regression introduced by commit 600b776eb39a13a28b090 (OMAP1 / PM: Use generic clock manipulation routines for runtime PM). Reported-and-tested-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Diffstat (limited to 'drivers/base/power')
-rw-r--r--drivers/base/power/clock_ops.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/base/power/clock_ops.c b/drivers/base/power/clock_ops.c
index c0dd09df7be8..eaa8a854af03 100644
--- a/drivers/base/power/clock_ops.c
+++ b/drivers/base/power/clock_ops.c
@@ -291,7 +291,7 @@ static int pm_runtime_clk_notify(struct notifier_block *nb,
291{ 291{
292 struct pm_clk_notifier_block *clknb; 292 struct pm_clk_notifier_block *clknb;
293 struct device *dev = data; 293 struct device *dev = data;
294 char *con_id; 294 char **con_id;
295 int error; 295 int error;
296 296
297 dev_dbg(dev, "%s() %ld\n", __func__, action); 297 dev_dbg(dev, "%s() %ld\n", __func__, action);
@@ -309,8 +309,8 @@ static int pm_runtime_clk_notify(struct notifier_block *nb,
309 309
310 dev->pwr_domain = clknb->pwr_domain; 310 dev->pwr_domain = clknb->pwr_domain;
311 if (clknb->con_ids[0]) { 311 if (clknb->con_ids[0]) {
312 for (con_id = clknb->con_ids[0]; *con_id; con_id++) 312 for (con_id = clknb->con_ids; *con_id; con_id++)
313 pm_runtime_clk_add(dev, con_id); 313 pm_runtime_clk_add(dev, *con_id);
314 } else { 314 } else {
315 pm_runtime_clk_add(dev, NULL); 315 pm_runtime_clk_add(dev, NULL);
316 } 316 }
@@ -380,7 +380,7 @@ static int pm_runtime_clk_notify(struct notifier_block *nb,
380{ 380{
381 struct pm_clk_notifier_block *clknb; 381 struct pm_clk_notifier_block *clknb;
382 struct device *dev = data; 382 struct device *dev = data;
383 char *con_id; 383 char **con_id;
384 384
385 dev_dbg(dev, "%s() %ld\n", __func__, action); 385 dev_dbg(dev, "%s() %ld\n", __func__, action);
386 386
@@ -389,16 +389,16 @@ static int pm_runtime_clk_notify(struct notifier_block *nb,
389 switch (action) { 389 switch (action) {
390 case BUS_NOTIFY_ADD_DEVICE: 390 case BUS_NOTIFY_ADD_DEVICE:
391 if (clknb->con_ids[0]) { 391 if (clknb->con_ids[0]) {
392 for (con_id = clknb->con_ids[0]; *con_id; con_id++) 392 for (con_id = clknb->con_ids; *con_id; con_id++)
393 enable_clock(dev, con_id); 393 enable_clock(dev, *con_id);
394 } else { 394 } else {
395 enable_clock(dev, NULL); 395 enable_clock(dev, NULL);
396 } 396 }
397 break; 397 break;
398 case BUS_NOTIFY_DEL_DEVICE: 398 case BUS_NOTIFY_DEL_DEVICE:
399 if (clknb->con_ids[0]) { 399 if (clknb->con_ids[0]) {
400 for (con_id = clknb->con_ids[0]; *con_id; con_id++) 400 for (con_id = clknb->con_ids; *con_id; con_id++)
401 disable_clock(dev, con_id); 401 disable_clock(dev, *con_id);
402 } else { 402 } else {
403 disable_clock(dev, NULL); 403 disable_clock(dev, NULL);
404 } 404 }