From c0a65262f7ccf63d6f067336944c801b99afc2bd Mon Sep 17 00:00:00 2001 From: xxx Date: Tue, 18 Mar 2014 19:41:09 +0800 Subject: [PATCH] fixed: pm.c pm-pie.c pm.h --- arch/arm/mach-rockchip/pm-pie.c | 28 ++++++- arch/arm/mach-rockchip/pm.c | 22 +++++ arch/arm/mach-rockchip/pm.h | 21 ++++- include/dt-bindings/suspend/rockchip-pm.h | 98 +++++++++++++++++++---- 4 files changed, 148 insertions(+), 21 deletions(-) mode change 100755 => 100644 arch/arm/mach-rockchip/pm-pie.c mode change 100755 => 100644 arch/arm/mach-rockchip/pm.h diff --git a/arch/arm/mach-rockchip/pm-pie.c b/arch/arm/mach-rockchip/pm-pie.c old mode 100755 new mode 100644 index d7f0eaafaa70..f75adf82fa3d --- a/arch/arm/mach-rockchip/pm-pie.c +++ b/arch/arm/mach-rockchip/pm-pie.c @@ -4,6 +4,30 @@ #include "pm.h" //#include "sram.h" +/*************************dump reg********************************************/ + +static void __sramfunc rkpm_sram_reg_dump(u32 base_addr,u32 start_offset,u32 end_offset) +{ + u32 i; + rkpm_sram_printch('\n'); + rkpm_sram_printhex(base_addr); + rkpm_sram_printch(':'); + rkpm_sram_printch('\n'); + + for(i=start_offset;i<=end_offset;) + { + rkpm_sram_printhex(i); + rkpm_sram_printch('-'); + rkpm_sram_printhex(readl_relaxed((void *)(base_addr + i))); + if(!(i%5)&&i!=0) + rkpm_sram_printch('\n'); + i+=4; + } + + rkpm_sram_printch('\n'); + +} + struct rkpm_sram_ops DEFINE_PIE_DATA(pm_sram_ops); //for sram @@ -54,7 +78,7 @@ void PIE_FUNC(rkpm_sram_printhex_pie)(unsigned int hex) /******************************************pm main function******************************************/ #define RKPM_CTR_SYSCLK RKPM_OR_3BITS(SYSCLK_DIV,SYSCLK_32K,SYSCLK_OSC_DIS) -void __sramfunc rkpm_sram_suspend(u32 ctrbits) +static void __sramfunc rkpm_sram_suspend(u32 ctrbits) { rkpm_sram_printch('5'); @@ -102,7 +126,7 @@ void PIE_FUNC(rkpm_sram_suspend_arg)(void *arg) } -void rkpm_pie_init(void) +static void rkpm_pie_init(void) { rkpm_set_pie_info(kern_to_pie(rockchip_pie_chunk, &DATA(pm_sram_ops)) ,fn_to_pie(rockchip_pie_chunk, &FUNC(rkpm_sram_suspend_arg))); diff --git a/arch/arm/mach-rockchip/pm.c b/arch/arm/mach-rockchip/pm.c index a818e949997e..ae0f45d9557d 100644 --- a/arch/arm/mach-rockchip/pm.c +++ b/arch/arm/mach-rockchip/pm.c @@ -1,8 +1,30 @@ #include #include #include +#include #include "pm.h" +/*************************dump reg********************************************/ +void rkpm_ddr_reg_dump(u32 base_addr,u32 start_offset,u32 end_offset) +{ + u32 i; + rkpm_ddr_printch('\n'); + rkpm_ddr_printhex(base_addr); + rkpm_ddr_printch(':'); + rkpm_ddr_printch('\n'); + + for(i=start_offset;i<=end_offset;) + { + rkpm_ddr_printhex(i); + rkpm_ddr_printch('-'); + rkpm_ddr_printhex(readl_relaxed((void *)(base_addr + i))); + if(!(i%5)&&i!=0) + rkpm_ddr_printch('\n'); + i+=4; + } + + rkpm_ddr_printch('\n'); +} static struct rkpm_ops pm_ops={NULL}; diff --git a/arch/arm/mach-rockchip/pm.h b/arch/arm/mach-rockchip/pm.h old mode 100755 new mode 100644 index c4c77db1c299..e7d8e260b655 --- a/arch/arm/mach-rockchip/pm.h +++ b/arch/arm/mach-rockchip/pm.h @@ -78,7 +78,26 @@ struct rkpm_gpios_info_st{ #define rkpm_chk_val_ctrbit(val,bit) ((val)&(bit))//check bit #define rkpm_chk_val_ctrbits(val,bits) ((val)&(bits)) //check bits +/************************************reg ops*****************************************************/ +#define cru_readl(offset) readl_relaxed(RK_CRU_VIRT + offset) +#define cru_writel(v, offset) do { writel_relaxed(v, RK_CRU_VIRT + offset); dsb(); } while (0) + +#define pmu_readl(offset) readl_relaxed(RK_PMU_VIRT + offset) +#define pmu_writel(v,offset) do { writel_relaxed(v, RK_PMU_VIRT + offset); dsb(); } while (0) + +#define grf_readl(offset) readl_relaxed(RK_GRF_VIRT + offset) +#define grf_writel(v, offset) do { writel_relaxed(v, RK_GRF_VIRT + offset); dsb(); } while (0) + +#define reg_readl(base) readl_relaxed(base) +#define reg_writel(v, base) do { writel_relaxed(v, base); dsb(); } while (0) + + +#define PM_ERR(fmt, args...) printk(KERN_ERR fmt, ##args) +#define PM_LOG(fmt, args...) printk(KERN_ERR fmt, ##args) +#define PM_WARNING(fmt, args...) printk(KERN_WARNING fmt, ##args) + /*********************************pm control******************************************/ +extern void rkpm_ddr_reg_dump(u32 base_addr,u32 start_offset,u32 end_offset); extern void rkpm_set_pie_info(struct rkpm_sram_ops *pm_sram_ops,rkpm_sram_suspend_arg_cb pie_cb); extern void rkpm_set_ops_prepare_finish(rkpm_ops_void_callback prepare,rkpm_ops_void_callback finish); extern void rkpm_set_ops_pwr_dmns(rkpm_ops_void_callback pwr_dmns,rkpm_ops_void_callback re_pwr_dmns); @@ -88,8 +107,6 @@ extern void rkpm_set_ops_gpios(rkpm_ops_void_callback gpios,rkpm_ops_void_callba extern void rkpm_set_ops_printch(rkpm_ops_printch_callback printch); extern void rkpm_set_ops_regs_pread(rkpm_ops_void_callback regs_pread); - -extern void rkpm_pie_init(void); extern void rkpm_set_sram_ops_volt(rkpm_ops_void_callback volts,rkpm_ops_void_callback re_volts); extern void rkpm_set_sram_ops_gtclks(rkpm_ops_void_callback gtclks,rkpm_ops_void_callback re_gtclks); extern void rkpm_set_sram_ops_sysclk(rkpm_ops_paramter_u32_cb sysclk,rkpm_ops_paramter_u32_cb re_sysclk); diff --git a/include/dt-bindings/suspend/rockchip-pm.h b/include/dt-bindings/suspend/rockchip-pm.h index 448e90345532..cef5612515c6 100755 --- a/include/dt-bindings/suspend/rockchip-pm.h +++ b/include/dt-bindings/suspend/rockchip-pm.h @@ -17,6 +17,28 @@ #ifndef __DT_BINDINGS_ROCKCHIP_PM_H__ #define __DT_BINDINGS_ROCKCHIP_PM_H__ +/******************************bits ops************************************/ + + + + +#define RKPM_BITS_W_MSK(bits_shift, msk) ((msk) << ((bits_shift) + 16)) + +#define RKPM_BITS_CLR_VAL(val, bits_shift, msk) (val&~(msk<> (bits_shift))&(msk)) + + + + /*********************CTRBIT DEFINE*****************************/ #define RKPM_CTR_PWR_DMNS (0x1<<0) @@ -56,32 +78,74 @@ /*********************CTRBIT DEFINE END*****************************/ -#define RKPM_GPIOBITS_LEVEL_PULL (24) -#define RKPM_GPIOBITS_MSK_LEVEL_PULL (0xf<