commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=c679d3590bb304ac2530cb461949e20efd734092 branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk
Signed-off-by: Steven Miao <[email protected]> Signed-off-by: Bob Liu <[email protected]> --- arch/blackfin/include/asm/dpmc.h | 26 -------------------------- arch/blackfin/mach-bf609/hibernate.S | 2 -- arch/blackfin/mach-bf609/pm.c | 3 --- arch/blackfin/mach-common/ints-priority.c | 21 +++++++++++++++++++++ 4 files changed, 21 insertions(+), 31 deletions(-) diff --git a/arch/blackfin/include/asm/dpmc.h b/arch/blackfin/include/asm/dpmc.h index 323d55a..b47399c 100644 --- a/arch/blackfin/include/asm/dpmc.h +++ b/arch/blackfin/include/asm/dpmc.h @@ -157,32 +157,6 @@ .endm - .macro bfin_sec_save - FP.H = hi(SEC_SCTL0); - FP.L = lo(SEC_SCTL0); - - P2 = 140(Z); - LSETUP(.Lsave_begin, .Lsave_end) LC0=P2; -.Lsave_begin: - R1 = [FP]; - [--sp] = R1; -.Lsave_end: - FP += 8; - .endm - - .macro bfin_sec_restore - FP.H = hi(SEC_SCTL139); - FP.L = lo(SEC_SCTL139); - - P2 = 140(Z); - LSETUP(.Lrestore_begin, .Lrestore_end) LC0=P2; -.Lrestore_begin: - R0 = [sp++]; - [FP] = R0; -.Lrestore_end: - FP += -8; - .endm - .macro bfin_sys_mmr_save /* Save system MMRs */ FP.H = hi(SYSMMR_BASE); diff --git a/arch/blackfin/mach-bf609/hibernate.S b/arch/blackfin/mach-bf609/hibernate.S index 08a98f4..baedd6e 100644 --- a/arch/blackfin/mach-bf609/hibernate.S +++ b/arch/blackfin/mach-bf609/hibernate.S @@ -33,7 +33,6 @@ ENDPROC(_enter_hibernate_mode) ENTRY(_bf609_hibernate) bfin_cpu_reg_save; bfin_core_mmr_save; - bfin_sec_save; P0.H = _bf609_pm_data; P0.L = _bf609_pm_data; @@ -51,7 +50,6 @@ ENTRY(_bf609_hibernate) call (P1); .Lpm_resume_here: - bfin_sec_restore; bfin_core_mmr_restore; bfin_cpu_reg_restore; diff --git a/arch/blackfin/mach-bf609/pm.c b/arch/blackfin/mach-bf609/pm.c index fefffa5..bbc5a79 100644 --- a/arch/blackfin/mach-bf609/pm.c +++ b/arch/blackfin/mach-bf609/pm.c @@ -197,8 +197,6 @@ void bfin_hibernate_syscontrol(void) #else # define SIC_SYSIRQ(irq) ((irq) - IVG15) #endif -void bfin_sec_resume(void); - void bfin_hibernate(unsigned long mask) { bfin_write32(DPM0_WAKE_EN, 0x10); @@ -209,7 +207,6 @@ void bfin_hibernate(unsigned long mask) printk(KERN_DEBUG "hibernate: restore %x pgcnt %x\n", bfin_read32(DPM0_RESTORE0), bfin_read32(DPM0_PGCNTR)); bf609_hibernate(); - bfin_sec_resume(); } void bf609_cpu_pm_enter(suspend_state_t state) diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c index 9d928b6..bf5dc5f 100644 --- a/arch/blackfin/mach-common/ints-priority.c +++ b/arch/blackfin/mach-common/ints-priority.c @@ -16,6 +16,7 @@ #include <linux/seq_file.h> #include <linux/irq.h> #include <linux/sched.h> +#include <linux/syscore_ops.h> #include <asm/delay.h> #ifdef CONFIG_IPIPE #include <linux/ipipe.h> @@ -394,6 +395,25 @@ void handle_sec_fault(unsigned int irq, struct irq_desc *desc) raw_spin_unlock(&desc->lock); } + +static int sec_suspend(void) +{ + return 0; +} + +static void sec_resume(void) +{ + bfin_write_SEC_SCI(0, SEC_CCTL, SEC_CCTL_RESET); + udelay(100); + bfin_write_SEC_GCTL(SEC_GCTL_EN); + bfin_write_SEC_SCI(0, SEC_CCTL, SEC_CCTL_EN | SEC_CCTL_NMI_EN); +} + +static struct syscore_ops sec_pm_syscore_ops = { + .suspend = sec_suspend, + .resume = sec_resume, +}; + #endif #ifdef CONFIG_SMP @@ -1419,6 +1439,7 @@ int __init init_arch_irq(void) bfin_write_SEC_GCTL(SEC_GCTL_EN); bfin_write_SEC_SCI(0, SEC_CCTL, SEC_CCTL_EN | SEC_CCTL_NMI_EN); init_software_driven_irq(); + register_syscore_ops(&sec_pm_syscore_ops); #endif return 0; }
_______________________________________________ Linux-kernel-commits mailing list [email protected] https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
