Re: [PATCH 07/13] OMAP2+: PM: move the powerdomains time stats to powerdomain code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



jean.pihet@xxxxxxxxxxxxxx writes:

> From: Jean Pihet <j-pihet@xxxxxx>
>
> Move the powerdomains time accounting code from in pm-debug to the
> powerdomain code. The pm-debug code only displays the information on
> request.
>
> This also cleans up the core PM code, in order to allow it to be used
> as a module.
>
> Signed-off-by: Jean Pihet <j-pihet@xxxxxx>

Acked-by: Kevin Hilman <khilman@xxxxxx>

This make sense to me, and probably can be merged separately from this
series, if Paul is OK with it.

Kevin

> ---
>  arch/arm/mach-omap2/pm-debug.c    |   26 +-------------------------
>  arch/arm/mach-omap2/pm.h          |    2 --
>  arch/arm/mach-omap2/powerdomain.c |   25 ++++++++++++++++++++++++-
>  arch/arm/mach-omap2/powerdomain.h |    3 +++
>  4 files changed, 28 insertions(+), 28 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
> index 98cc9ee..0b896d4 100644
> --- a/arch/arm/mach-omap2/pm-debug.c
> +++ b/arch/arm/mach-omap2/pm-debug.c
> @@ -333,21 +333,6 @@ static const char pwrdm_state_names[][PWRDM_MAX_PWRSTS] = {
>  	"ON"
>  };
>  
> -void pm_dbg_update_time(struct powerdomain *pwrdm, int prev)
> -{
> -	s64 t;
> -
> -	if (!pm_dbg_init_done)
> -		return ;
> -
> -	/* Update timer for previous state */
> -	t = sched_clock();
> -
> -	pwrdm->state_timer[prev] += t - pwrdm->timer;
> -
> -	pwrdm->timer = t;
> -}
> -
>  static int clkdm_dbg_show_counter(struct clockdomain *clkdm, void *user)
>  {
>  	struct seq_file *s = (struct seq_file *)user;
> @@ -410,7 +395,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_PWRSTS; i++)
>  		seq_printf(s, ",%s:%lld", pwrdm_state_names[i],
>  			pwrdm->state_timer[i]);
>  
> @@ -517,17 +502,8 @@ DEFINE_SIMPLE_ATTRIBUTE(pwrdm_suspend_fops, pwrdm_suspend_get,
>  
>  static int __init pwrdms_setup(struct powerdomain *pwrdm, void *dir)
>  {
> -	int i;
> -	s64 t;
>  	struct dentry *d;
>  
> -	t = sched_clock();
> -
> -	for (i = 0; i < 4; i++)
> -		pwrdm->state_timer[i] = 0;
> -
> -	pwrdm->timer = t;
> -
>  	if (strncmp(pwrdm->name, "dpll", 4) == 0)
>  		return 0;
>  
> diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
> index f36f79c..03da7f8 100644
> --- a/arch/arm/mach-omap2/pm.h
> +++ b/arch/arm/mach-omap2/pm.h
> @@ -76,11 +76,9 @@ extern u32 sleep_while_idle;
>  #endif
>  
>  #if defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS)
> -extern void pm_dbg_update_time(struct powerdomain *pwrdm, int prev);
>  extern int pm_dbg_regset_save(int reg_set);
>  extern int pm_dbg_regset_init(int reg_set);
>  #else
> -#define pm_dbg_update_time(pwrdm, prev) do {} while (0);
>  #define pm_dbg_regset_save(reg_set) do {} while (0);
>  #define pm_dbg_regset_init(reg_set) do {} while (0);
>  #endif /* CONFIG_PM_DEBUG */
> diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c
> index 9af0847..93a17c8 100644
> --- a/arch/arm/mach-omap2/powerdomain.c
> +++ b/arch/arm/mach-omap2/powerdomain.c
> @@ -19,6 +19,7 @@
>  #include <linux/list.h>
>  #include <linux/errno.h>
>  #include <linux/string.h>
> +#include <linux/sched.h>
>  #include <trace/events/power.h>
>  
>  #include "cm2xxx_3xxx.h"
> @@ -77,6 +78,7 @@ static struct powerdomain *_pwrdm_lookup(const char *name)
>  static int _pwrdm_register(struct powerdomain *pwrdm)
>  {
>  	int i;
> +	s64 t;
>  
>  	if (!pwrdm || !pwrdm->name)
>  		return -EINVAL;
> @@ -100,6 +102,12 @@ static int _pwrdm_register(struct powerdomain *pwrdm)
>  	for (i = 0; i < PWRDM_MAX_PWRSTS; i++)
>  		pwrdm->state_counter[i] = 0;
>  
> +	/* Initialize the powerdomain's state timing stats */
> +	t = sched_clock();
> +	for (i = 0; i < PWRDM_MAX_PWRSTS; i++)
> +		pwrdm->state_timer[i] = 0;
> +	pwrdm->timer = t;
> +
>  	pwrdm->ret_logic_off_counter = 0;
>  	for (i = 0; i < pwrdm->banks; i++)
>  		pwrdm->ret_mem_off_counter[i] = 0;
> @@ -171,7 +179,9 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag)
>  	if (state != prev)
>  		pwrdm->state_counter[state]++;
>  
> -	pm_dbg_update_time(pwrdm, prev);
> +#ifdef CONFIG_PM_DEBUG
> +	pwrdm_update_state_timer(pwrdm, prev);
> +#endif
>  
>  	pwrdm->state = state;
>  
> @@ -999,3 +1009,16 @@ bool pwrdm_can_ever_lose_context(struct powerdomain *pwrdm)
>  
>  	return 0;
>  }
> +
> +#ifdef CONFIG_PM_DEBUG
> +void pwrdm_update_state_timer(struct powerdomain *pwrdm, int prev)
> +{
> +	s64 t;
> +
> +	/* Update timer for previous state */
> +	t = sched_clock();
> +	pwrdm->state_timer[prev] += t - pwrdm->timer;
> +	pwrdm->timer = t;
> +}
> +#endif
> +
> diff --git a/arch/arm/mach-omap2/powerdomain.h b/arch/arm/mach-omap2/powerdomain.h
> index d23d979..abda68d 100644
> --- a/arch/arm/mach-omap2/powerdomain.h
> +++ b/arch/arm/mach-omap2/powerdomain.h
> @@ -209,6 +209,9 @@ int pwrdm_post_transition(void);
>  int pwrdm_set_lowpwrstchange(struct powerdomain *pwrdm);
>  u32 pwrdm_get_context_loss_count(struct powerdomain *pwrdm);
>  bool pwrdm_can_ever_lose_context(struct powerdomain *pwrdm);
> +#ifdef CONFIG_PM_DEBUG
> +void pwrdm_update_state_timer(struct powerdomain *pwrdm, int prev);
> +#endif
>  
>  extern void omap2xxx_powerdomains_init(void);
>  extern void omap3xxx_powerdomains_init(void);
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux