Commit 6199ab26 authored by Peter 'p2' De Schrijver's avatar Peter 'p2' De Schrijver Committed by Kevin Hilman

OMAP: PM debug: make powerdomains use PM-debug counters

Make the powerdomain code call the new hook for updating the time.
Also implement the updated pwrdm_for_each.
Signed-off-by: default avatarPeter 'p2' De Schrijver <peter.de-schrijver@nokia.com>
Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
parent 331b93f4
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
#include <mach/powerdomain.h> #include <mach/powerdomain.h>
#include <mach/clockdomain.h> #include <mach/clockdomain.h>
#include "pm.h"
enum { enum {
PWRDM_STATE_NOW = 0, PWRDM_STATE_NOW = 0,
PWRDM_STATE_PREV, PWRDM_STATE_PREV,
...@@ -134,19 +136,21 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) ...@@ -134,19 +136,21 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag)
if (state != prev) if (state != prev)
pwrdm->state_counter[state]++; pwrdm->state_counter[state]++;
pm_dbg_update_time(pwrdm, prev);
pwrdm->state = state; pwrdm->state = state;
return 0; return 0;
} }
static int _pwrdm_pre_transition_cb(struct powerdomain *pwrdm) static int _pwrdm_pre_transition_cb(struct powerdomain *pwrdm, void *unused)
{ {
pwrdm_clear_all_prev_pwrst(pwrdm); pwrdm_clear_all_prev_pwrst(pwrdm);
_pwrdm_state_switch(pwrdm, PWRDM_STATE_NOW); _pwrdm_state_switch(pwrdm, PWRDM_STATE_NOW);
return 0; return 0;
} }
static int _pwrdm_post_transition_cb(struct powerdomain *pwrdm) static int _pwrdm_post_transition_cb(struct powerdomain *pwrdm, void *unused)
{ {
_pwrdm_state_switch(pwrdm, PWRDM_STATE_PREV); _pwrdm_state_switch(pwrdm, PWRDM_STATE_PREV);
return 0; return 0;
...@@ -282,7 +286,8 @@ struct powerdomain *pwrdm_lookup(const char *name) ...@@ -282,7 +286,8 @@ struct powerdomain *pwrdm_lookup(const char *name)
* anything else to indicate failure; or -EINVAL if the function * anything else to indicate failure; or -EINVAL if the function
* pointer is null. * pointer is null.
*/ */
int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm)) int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm, void *user),
void *user)
{ {
struct powerdomain *temp_pwrdm; struct powerdomain *temp_pwrdm;
unsigned long flags; unsigned long flags;
...@@ -293,7 +298,7 @@ int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm)) ...@@ -293,7 +298,7 @@ int pwrdm_for_each(int (*fn)(struct powerdomain *pwrdm))
read_lock_irqsave(&pwrdm_rwlock, flags); read_lock_irqsave(&pwrdm_rwlock, flags);
list_for_each_entry(temp_pwrdm, &pwrdm_list, node) { list_for_each_entry(temp_pwrdm, &pwrdm_list, node) {
ret = (*fn)(temp_pwrdm); ret = (*fn)(temp_pwrdm, user);
if (ret) if (ret)
break; break;
} }
...@@ -1198,13 +1203,13 @@ int pwrdm_clk_state_switch(struct clk *clk) ...@@ -1198,13 +1203,13 @@ int pwrdm_clk_state_switch(struct clk *clk)
int pwrdm_pre_transition(void) int pwrdm_pre_transition(void)
{ {
pwrdm_for_each(_pwrdm_pre_transition_cb); pwrdm_for_each(_pwrdm_pre_transition_cb, NULL);
return 0; return 0;
} }
int pwrdm_post_transition(void) int pwrdm_post_transition(void)
{ {
pwrdm_for_each(_pwrdm_post_transition_cb); pwrdm_for_each(_pwrdm_post_transition_cb, NULL);
return 0; return 0;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment