diff options
Diffstat (limited to 'arch/arm/mach-omap2/pm-debug.c')
| -rw-r--r-- | arch/arm/mach-omap2/pm-debug.c | 55 | 
1 files changed, 30 insertions, 25 deletions
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c index 5e81517a7af2..125f56591fb5 100644 --- a/arch/arm/mach-omap2/pm-debug.c +++ b/arch/arm/mach-omap2/pm-debug.c @@ -29,12 +29,13 @@  #include <plat/clock.h>  #include <plat/board.h> -#include <plat/powerdomain.h> -#include <plat/clockdomain.h> +#include "powerdomain.h" +#include "clockdomain.h"  #include <plat/dmtimer.h> +#include <plat/omap-pm.h> -#include "prm.h" -#include "cm.h" +#include "cm2xxx_3xxx.h" +#include "prm2xxx_3xxx.h"  #include "pm.h"  int omap2_pm_debug; @@ -45,10 +46,10 @@ u32 wakeup_timer_milliseconds;  #define DUMP_PRM_MOD_REG(mod, reg)    \  	regs[reg_count].name = #mod "." #reg; \ -	regs[reg_count++].val = prm_read_mod_reg(mod, reg) +	regs[reg_count++].val = omap2_prm_read_mod_reg(mod, reg)  #define DUMP_CM_MOD_REG(mod, reg)     \  	regs[reg_count].name = #mod "." #reg; \ -	regs[reg_count++].val = cm_read_mod_reg(mod, reg) +	regs[reg_count++].val = omap2_cm_read_mod_reg(mod, reg)  #define DUMP_PRM_REG(reg) \  	regs[reg_count].name = #reg; \  	regs[reg_count++].val = __raw_readl(reg) @@ -161,6 +162,23 @@ void omap2_pm_dump(int mode, int resume, unsigned int us)  		printk(KERN_INFO "%-20s: 0x%08x\n", regs[i].name, regs[i].val);  } +void omap2_pm_wakeup_on_timer(u32 seconds, u32 milliseconds) +{ +	u32 tick_rate, cycles; + +	if (!seconds && !milliseconds) +		return; + +	tick_rate = clk_get_rate(omap_dm_timer_get_fclk(gptimer_wakeup)); +	cycles = tick_rate * seconds + tick_rate * milliseconds / 1000; +	omap_dm_timer_stop(gptimer_wakeup); +	omap_dm_timer_set_load_start(gptimer_wakeup, 0, 0xffffffff - cycles); + +	pr_info("PM: Resume timer in %u.%03u secs" +		" (%d ticks at %d ticks/sec.)\n", +		seconds, milliseconds, cycles, tick_rate); +} +  #ifdef CONFIG_DEBUG_FS  #include <linux/debugfs.h>  #include <linux/seq_file.h> @@ -311,10 +329,10 @@ static void pm_dbg_regset_store(u32 *ptr)  		for (j = pm_dbg_reg_modules[i].low;  			j <= pm_dbg_reg_modules[i].high; j += 4) {  			if (pm_dbg_reg_modules[i].type == MOD_CM) -				val = cm_read_mod_reg( +				val = omap2_cm_read_mod_reg(  					pm_dbg_reg_modules[i].offset, j);  			else -				val = prm_read_mod_reg( +				val = omap2_prm_read_mod_reg(  					pm_dbg_reg_modules[i].offset, j);  			*(ptr++) = val;  		} @@ -354,23 +372,6 @@ void pm_dbg_update_time(struct powerdomain *pwrdm, int prev)  	pwrdm->timer = t;  } -void omap2_pm_wakeup_on_timer(u32 seconds, u32 milliseconds) -{ -	u32 tick_rate, cycles; - -	if (!seconds && !milliseconds) -		return; - -	tick_rate = clk_get_rate(omap_dm_timer_get_fclk(gptimer_wakeup)); -	cycles = tick_rate * seconds + tick_rate * milliseconds / 1000; -	omap_dm_timer_stop(gptimer_wakeup); -	omap_dm_timer_set_load_start(gptimer_wakeup, 0, 0xffffffff - cycles); - -	pr_info("PM: Resume timer in %u.%03u secs" -		" (%d ticks at %d ticks/sec.)\n", -		seconds, milliseconds, cycles, tick_rate); -} -  static int clkdm_dbg_show_counter(struct clockdomain *clkdm, void *user)  {  	struct seq_file *s = (struct seq_file *)user; @@ -581,6 +582,10 @@ static int option_set(void *data, u64 val)  	*option = val;  	if (option == &enable_off_mode) { +		if (val) +			omap_pm_enable_off_mode(); +		else +			omap_pm_disable_off_mode();  		if (cpu_is_omap34xx())  			omap3_pm_off_mode_enable(val);  	}  | 
