From: Jean Pihet <jean.pihet@newoldbits.com> To: linux-omap@vger.kernel.org, paul@pwsan.com, linux-arm-kernel@lists.infradead.org, khilman@ti.com, Rajendra Nayak <rnayak@ti.com>, Santosh Shilimkar <santosh.shilimkar@ti.com>, Nishanth Menon <nm@ti.com> Cc: Jean Pihet <j-pihet@ti.com> Subject: [PATCH 5/8] ARM: OMAP2+: PM: use power domain functional state in stats counters Date: Wed, 15 Aug 2012 12:02:45 +0200 [thread overview] Message-ID: <1345024968-28951-6-git-send-email-j-pihet@ti.com> (raw) In-Reply-To: <1345024968-28951-1-git-send-email-j-pihet@ti.com> The PM code uses some counters to keep track of the power domains transitions, in order to provide the information to drivers (in pwrdm_get_context_loss_count) and to expose the information to sysfs for debug purpose. This patch provides the information for each functional state. Signed-off-by: Jean Pihet <j-pihet@ti.com> --- arch/arm/mach-omap2/pm-debug.c | 15 ++++++++------- arch/arm/mach-omap2/powerdomain.c | 12 ++++++------ arch/arm/mach-omap2/powerdomain.h | 4 ++-- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c index 814bcd9..8eaa3f2 100644 --- a/arch/arm/mach-omap2/pm-debug.c +++ b/arch/arm/mach-omap2/pm-debug.c @@ -53,9 +53,10 @@ enum { DEBUG_FILE_TIMERS, }; -static const char pwrdm_state_names[][PWRDM_MAX_PWRSTS] = { +static const char pwrdm_state_names[][PWRDM_MAX_FUNC_PWRSTS] = { "OFF", - "RET", + "OSWR", + "CSWR", "INA", "ON" }; @@ -102,13 +103,13 @@ static int pwrdm_dbg_show_counter(struct powerdomain *pwrdm, void *user) strncmp(pwrdm->name, "dpll", 4) == 0) return 0; - if (pwrdm->state != pwrdm_read_pwrst(pwrdm)) + if (pwrdm->state != pwrdm_read_fpwrst(pwrdm)) printk(KERN_ERR "pwrdm state mismatch(%s) %d != %d\n", - pwrdm->name, pwrdm->state, pwrdm_read_pwrst(pwrdm)); + pwrdm->name, pwrdm->state, pwrdm_read_fpwrst(pwrdm)); seq_printf(s, "%s (%s)", pwrdm->name, pwrdm_state_names[pwrdm->state]); - for (i = 0; i < PWRDM_MAX_PWRSTS; i++) + for (i = 0; i < PWRDM_MAX_FUNC_PWRSTS; i++) seq_printf(s, ",%s:%d", pwrdm_state_names[i], pwrdm->state_counter[i]); @@ -137,7 +138,7 @@ static int pwrdm_dbg_show_timer(struct powerdomain *pwrdm, void *user) seq_printf(s, "%s (%s)", pwrdm->name, pwrdm_state_names[pwrdm->state]); - for (i = 0; i < 4; i++) + for (i = 0; i < PWRDM_MAX_FUNC_PWRSTS; i++) seq_printf(s, ",%s:%lld", pwrdm_state_names[i], pwrdm->state_timer[i]); @@ -211,7 +212,7 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *dir) t = sched_clock(); - for (i = 0; i < 4; i++) + for (i = 0; i < PWRDM_MAX_FUNC_PWRSTS; i++) pwrdm->state_timer[i] = 0; pwrdm->timer = t; diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c index 1f9ed2c..6b8580b 100644 --- a/arch/arm/mach-omap2/powerdomain.c +++ b/arch/arm/mach-omap2/powerdomain.c @@ -106,7 +106,7 @@ static int _pwrdm_register(struct powerdomain *pwrdm) list_add(&pwrdm->node, &pwrdm_list); /* Initialize the powerdomain's state counter */ - for (i = 0; i < PWRDM_MAX_PWRSTS; i++) + for (i = 0; i < PWRDM_MAX_FUNC_PWRSTS; i++) pwrdm->state_counter[i] = 0; pwrdm->ret_logic_off_counter = 0; @@ -114,7 +114,7 @@ static int _pwrdm_register(struct powerdomain *pwrdm) pwrdm->ret_mem_off_counter[i] = 0; pwrdm_wait_transition(pwrdm); - pwrdm->state = pwrdm_read_pwrst(pwrdm); + pwrdm->state = pwrdm_read_fpwrst(pwrdm); pwrdm->state_counter[pwrdm->state] = 1; pr_debug("powerdomain: registered %s\n", pwrdm->name); @@ -149,17 +149,17 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) if (pwrdm == NULL) return -EINVAL; - state = pwrdm_read_pwrst(pwrdm); + state = pwrdm_read_fpwrst(pwrdm); switch (flag) { case PWRDM_STATE_NOW: prev = pwrdm->state; break; case PWRDM_STATE_PREV: - prev = pwrdm_read_prev_pwrst(pwrdm); + prev = pwrdm_read_prev_fpwrst(pwrdm); if (pwrdm->state != prev) pwrdm->state_counter[prev]++; - if (prev == PWRDM_POWER_RET) + if (prev == PWRDM_FUNC_PWRST_OSWR) _update_logic_membank_counters(pwrdm); /* * If the power domain did not hit the desired state, @@ -1367,7 +1367,7 @@ int pwrdm_get_context_loss_count(struct powerdomain *pwrdm) return -ENODEV; } - count = pwrdm->state_counter[PWRDM_POWER_OFF]; + count = pwrdm->state_counter[PWRDM_FUNC_PWRST_OFF]; count += pwrdm->ret_logic_off_counter; for (i = 0; i < pwrdm->banks; i++) diff --git a/arch/arm/mach-omap2/powerdomain.h b/arch/arm/mach-omap2/powerdomain.h index 23b9da9..df83c7c 100644 --- a/arch/arm/mach-omap2/powerdomain.h +++ b/arch/arm/mach-omap2/powerdomain.h @@ -146,7 +146,7 @@ struct powerdomain { struct list_head voltdm_node; spinlock_t lock; int state; - unsigned state_counter[PWRDM_MAX_PWRSTS]; + unsigned state_counter[PWRDM_MAX_FUNC_PWRSTS]; unsigned ret_logic_off_counter; unsigned ret_mem_off_counter[PWRDM_MAX_MEM_BANKS]; @@ -160,7 +160,7 @@ struct powerdomain { #ifdef CONFIG_PM_DEBUG s64 timer; - s64 state_timer[PWRDM_MAX_PWRSTS]; + s64 state_timer[PWRDM_MAX_FUNC_PWRSTS]; #endif }; -- 1.7.7.6
WARNING: multiple messages have this Message-ID (diff)
From: jean.pihet@newoldbits.com (Jean Pihet) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 5/8] ARM: OMAP2+: PM: use power domain functional state in stats counters Date: Wed, 15 Aug 2012 12:02:45 +0200 [thread overview] Message-ID: <1345024968-28951-6-git-send-email-j-pihet@ti.com> (raw) In-Reply-To: <1345024968-28951-1-git-send-email-j-pihet@ti.com> The PM code uses some counters to keep track of the power domains transitions, in order to provide the information to drivers (in pwrdm_get_context_loss_count) and to expose the information to sysfs for debug purpose. This patch provides the information for each functional state. Signed-off-by: Jean Pihet <j-pihet@ti.com> --- arch/arm/mach-omap2/pm-debug.c | 15 ++++++++------- arch/arm/mach-omap2/powerdomain.c | 12 ++++++------ arch/arm/mach-omap2/powerdomain.h | 4 ++-- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c index 814bcd9..8eaa3f2 100644 --- a/arch/arm/mach-omap2/pm-debug.c +++ b/arch/arm/mach-omap2/pm-debug.c @@ -53,9 +53,10 @@ enum { DEBUG_FILE_TIMERS, }; -static const char pwrdm_state_names[][PWRDM_MAX_PWRSTS] = { +static const char pwrdm_state_names[][PWRDM_MAX_FUNC_PWRSTS] = { "OFF", - "RET", + "OSWR", + "CSWR", "INA", "ON" }; @@ -102,13 +103,13 @@ static int pwrdm_dbg_show_counter(struct powerdomain *pwrdm, void *user) strncmp(pwrdm->name, "dpll", 4) == 0) return 0; - if (pwrdm->state != pwrdm_read_pwrst(pwrdm)) + if (pwrdm->state != pwrdm_read_fpwrst(pwrdm)) printk(KERN_ERR "pwrdm state mismatch(%s) %d != %d\n", - pwrdm->name, pwrdm->state, pwrdm_read_pwrst(pwrdm)); + pwrdm->name, pwrdm->state, pwrdm_read_fpwrst(pwrdm)); seq_printf(s, "%s (%s)", pwrdm->name, pwrdm_state_names[pwrdm->state]); - for (i = 0; i < PWRDM_MAX_PWRSTS; i++) + for (i = 0; i < PWRDM_MAX_FUNC_PWRSTS; i++) seq_printf(s, ",%s:%d", pwrdm_state_names[i], pwrdm->state_counter[i]); @@ -137,7 +138,7 @@ static int pwrdm_dbg_show_timer(struct powerdomain *pwrdm, void *user) seq_printf(s, "%s (%s)", pwrdm->name, pwrdm_state_names[pwrdm->state]); - for (i = 0; i < 4; i++) + for (i = 0; i < PWRDM_MAX_FUNC_PWRSTS; i++) seq_printf(s, ",%s:%lld", pwrdm_state_names[i], pwrdm->state_timer[i]); @@ -211,7 +212,7 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *dir) t = sched_clock(); - for (i = 0; i < 4; i++) + for (i = 0; i < PWRDM_MAX_FUNC_PWRSTS; i++) pwrdm->state_timer[i] = 0; pwrdm->timer = t; diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c index 1f9ed2c..6b8580b 100644 --- a/arch/arm/mach-omap2/powerdomain.c +++ b/arch/arm/mach-omap2/powerdomain.c @@ -106,7 +106,7 @@ static int _pwrdm_register(struct powerdomain *pwrdm) list_add(&pwrdm->node, &pwrdm_list); /* Initialize the powerdomain's state counter */ - for (i = 0; i < PWRDM_MAX_PWRSTS; i++) + for (i = 0; i < PWRDM_MAX_FUNC_PWRSTS; i++) pwrdm->state_counter[i] = 0; pwrdm->ret_logic_off_counter = 0; @@ -114,7 +114,7 @@ static int _pwrdm_register(struct powerdomain *pwrdm) pwrdm->ret_mem_off_counter[i] = 0; pwrdm_wait_transition(pwrdm); - pwrdm->state = pwrdm_read_pwrst(pwrdm); + pwrdm->state = pwrdm_read_fpwrst(pwrdm); pwrdm->state_counter[pwrdm->state] = 1; pr_debug("powerdomain: registered %s\n", pwrdm->name); @@ -149,17 +149,17 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) if (pwrdm == NULL) return -EINVAL; - state = pwrdm_read_pwrst(pwrdm); + state = pwrdm_read_fpwrst(pwrdm); switch (flag) { case PWRDM_STATE_NOW: prev = pwrdm->state; break; case PWRDM_STATE_PREV: - prev = pwrdm_read_prev_pwrst(pwrdm); + prev = pwrdm_read_prev_fpwrst(pwrdm); if (pwrdm->state != prev) pwrdm->state_counter[prev]++; - if (prev == PWRDM_POWER_RET) + if (prev == PWRDM_FUNC_PWRST_OSWR) _update_logic_membank_counters(pwrdm); /* * If the power domain did not hit the desired state, @@ -1367,7 +1367,7 @@ int pwrdm_get_context_loss_count(struct powerdomain *pwrdm) return -ENODEV; } - count = pwrdm->state_counter[PWRDM_POWER_OFF]; + count = pwrdm->state_counter[PWRDM_FUNC_PWRST_OFF]; count += pwrdm->ret_logic_off_counter; for (i = 0; i < pwrdm->banks; i++) diff --git a/arch/arm/mach-omap2/powerdomain.h b/arch/arm/mach-omap2/powerdomain.h index 23b9da9..df83c7c 100644 --- a/arch/arm/mach-omap2/powerdomain.h +++ b/arch/arm/mach-omap2/powerdomain.h @@ -146,7 +146,7 @@ struct powerdomain { struct list_head voltdm_node; spinlock_t lock; int state; - unsigned state_counter[PWRDM_MAX_PWRSTS]; + unsigned state_counter[PWRDM_MAX_FUNC_PWRSTS]; unsigned ret_logic_off_counter; unsigned ret_mem_off_counter[PWRDM_MAX_MEM_BANKS]; @@ -160,7 +160,7 @@ struct powerdomain { #ifdef CONFIG_PM_DEBUG s64 timer; - s64 state_timer[PWRDM_MAX_PWRSTS]; + s64 state_timer[PWRDM_MAX_FUNC_PWRSTS]; #endif }; -- 1.7.7.6
next prev parent reply other threads:[~2012-08-15 10:03 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-08-15 10:02 [PATCH v5 0/8] ARM: OMAP2+: PM: introduce the power domains functional states Jean Pihet 2012-08-15 10:02 ` Jean Pihet 2012-08-15 10:02 ` [PATCH 1/8] ARM: OMAP2+: PM: introduce " Jean Pihet 2012-08-15 10:02 ` Jean Pihet 2012-08-15 10:02 ` [PATCH 2/8] ARM: OMAP2+: PM: introduce power domains achievable " Jean Pihet 2012-08-15 10:02 ` Jean Pihet 2012-08-15 10:02 ` [PATCH 3/8] ARM: OMAP2+: PM: add a lock to protect the powerdomains next state Jean Pihet 2012-08-15 10:02 ` Jean Pihet 2012-08-15 10:02 ` [PATCH 4/8] ARM: OMAP2+: PM: use the functional power states API Jean Pihet 2012-08-15 10:02 ` Jean Pihet 2012-08-15 10:02 ` Jean Pihet [this message] 2012-08-15 10:02 ` [PATCH 5/8] ARM: OMAP2+: PM: use power domain functional state in stats counters Jean Pihet 2012-08-15 10:02 ` [PATCH 6/8] ARM: OMAP2+: PM debug: trace the functional power domains states Jean Pihet 2012-08-15 10:02 ` Jean Pihet 2012-08-15 10:02 ` [PATCH 7/8] ARM: OMAP2+: powerdomain: add error logs Jean Pihet 2012-08-15 10:02 ` Jean Pihet 2012-08-15 10:02 ` [PATCH 8/8] ARM: OMAP2+: PM: reorganize the powerdomain API in public and private parts Jean Pihet 2012-08-15 10:02 ` Jean Pihet 2012-08-15 17:05 ` [PATCH v5 0/8] ARM: OMAP2+: PM: introduce the power domains functional states Shilimkar, Santosh 2012-08-15 17:05 ` Shilimkar, Santosh 2012-08-16 0:48 ` Paul Walmsley 2012-08-16 0:48 ` Paul Walmsley 2012-08-16 5:50 ` Shilimkar, Santosh 2012-08-16 5:50 ` Shilimkar, Santosh 2012-09-10 15:09 ` Tero Kristo 2012-09-10 15:09 ` Tero Kristo 2012-09-11 7:50 ` Pihet-XID, Jean 2012-09-11 7:50 ` Pihet-XID, Jean
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1345024968-28951-6-git-send-email-j-pihet@ti.com \ --to=jean.pihet@newoldbits.com \ --cc=j-pihet@ti.com \ --cc=khilman@ti.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=nm@ti.com \ --cc=paul@pwsan.com \ --cc=rnayak@ti.com \ --cc=santosh.shilimkar@ti.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.