Loading arch/blackfin/Kconfig +0 −36 Original line number Diff line number Diff line Loading @@ -933,13 +933,6 @@ endchoice comment "Possible Suspend Mem / Hibernate Wake-Up Sources" depends on PM config PM_BFIN_WAKE_RTC bool "Allow Wake-Up from RESET and on-chip RTC" depends on PM default n help Enable RTC Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_PH6 bool "Allow Wake-Up from on-chip PHY or PH6 GP" depends on PM && (BF52x || BF534 || BF536 || BF537) Loading @@ -947,41 +940,12 @@ config PM_BFIN_WAKE_PH6 help Enable PHY and PH6 GP Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_CAN bool "Allow Wake-Up from on-chip CAN0/1" depends on PM && (BF54x || BF534 || BF536 || BF537) default n help Enable CAN0/1 Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_GP bool "Allow Wake-Up from GPIOs" depends on PM && BF54x default n help Enable General-Purpose Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_USB bool "Allow Wake-Up from on-chip USB" depends on PM && (BF54x || BF52x) default n help Enable USB Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_KEYPAD bool "Allow Wake-Up from on-chip Keypad" depends on PM && BF54x default n help Enable Keypad Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_ROTARY bool "Allow Wake-Up from on-chip Rotary" depends on PM && BF54x default n help Enable Rotary Wake-Up (Voltage Regulator Power-Up) endmenu menu "CPU Frequency scaling" Loading arch/blackfin/mach-common/ints-priority.c +43 −3 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ atomic_t num_spurious; #ifdef CONFIG_PM unsigned long bfin_sic_iwr[3]; /* Up to 3 SIC_IWRx registers */ unsigned vr_wakeup; #endif struct ivgx { Loading Loading @@ -184,17 +185,56 @@ static void bfin_internal_unmask_irq(unsigned int irq) #ifdef CONFIG_PM int bfin_internal_set_wake(unsigned int irq, unsigned int state) { unsigned bank, bit; unsigned bank, bit, wakeup = 0; unsigned long flags; bank = SIC_SYSIRQ(irq) / 32; bit = SIC_SYSIRQ(irq) % 32; switch (irq) { #ifdef IRQ_RTC case IRQ_RTC: wakeup |= WAKE; break; #endif #ifdef IRQ_CAN0_RX case IRQ_CAN0_RX: wakeup |= CANWE; break; #endif #ifdef IRQ_CAN1_RX case IRQ_CAN1_RX: wakeup |= CANWE; break; #endif #ifdef IRQ_USB_INT0 case IRQ_USB_INT0: wakeup |= USBWE; break; #endif #ifdef IRQ_KEY case IRQ_KEY: wakeup |= KPADWE; break; #endif #ifdef IRQ_CNT case IRQ_CNT: wakeup |= ROTWE; break; #endif default: break; } local_irq_save(flags); if (state) if (state) { bfin_sic_iwr[bank] |= (1 << bit); else vr_wakeup |= wakeup; } else { bfin_sic_iwr[bank] &= ~(1 << bit); vr_wakeup &= ~wakeup; } local_irq_restore(flags); Loading arch/blackfin/mach-common/pm.c +1 −17 Original line number Diff line number Diff line Loading @@ -229,28 +229,12 @@ int bfin_pm_suspend_mem_enter(void) wakeup = bfin_read_VR_CTL() & ~FREQ; wakeup |= SCKELOW; /* FIXME: merge this somehow with set_irq_wake */ #ifdef CONFIG_PM_BFIN_WAKE_RTC wakeup |= WAKE; #endif #ifdef CONFIG_PM_BFIN_WAKE_PH6 wakeup |= PHYWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_CAN wakeup |= CANWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_GP wakeup |= GPWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_USB wakeup |= USBWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_KEYPAD wakeup |= KPADWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_ROTARY wakeup |= ROTWE; #endif local_irq_save(flags); Loading @@ -268,7 +252,7 @@ int bfin_pm_suspend_mem_enter(void) icache_disable(); bf53x_suspend_l1_mem(memptr); do_hibernate(wakeup); /* Goodbye */ do_hibernate(wakeup | vr_wakeup); /* Goodbye */ bf53x_resume_l1_mem(memptr); Loading include/asm-blackfin/bfin-global.h +1 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ extern const char bfin_board_name[]; extern unsigned long wall_jiffies; extern unsigned long bfin_sic_iwr[]; extern unsigned vr_wakeup; extern u16 _bfin_swrst; /* shadow for Software Reset Register (SWRST) */ extern struct file_operations dpmc_fops; extern unsigned long _ramstart, _ramend, _rambase; Loading Loading
arch/blackfin/Kconfig +0 −36 Original line number Diff line number Diff line Loading @@ -933,13 +933,6 @@ endchoice comment "Possible Suspend Mem / Hibernate Wake-Up Sources" depends on PM config PM_BFIN_WAKE_RTC bool "Allow Wake-Up from RESET and on-chip RTC" depends on PM default n help Enable RTC Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_PH6 bool "Allow Wake-Up from on-chip PHY or PH6 GP" depends on PM && (BF52x || BF534 || BF536 || BF537) Loading @@ -947,41 +940,12 @@ config PM_BFIN_WAKE_PH6 help Enable PHY and PH6 GP Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_CAN bool "Allow Wake-Up from on-chip CAN0/1" depends on PM && (BF54x || BF534 || BF536 || BF537) default n help Enable CAN0/1 Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_GP bool "Allow Wake-Up from GPIOs" depends on PM && BF54x default n help Enable General-Purpose Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_USB bool "Allow Wake-Up from on-chip USB" depends on PM && (BF54x || BF52x) default n help Enable USB Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_KEYPAD bool "Allow Wake-Up from on-chip Keypad" depends on PM && BF54x default n help Enable Keypad Wake-Up (Voltage Regulator Power-Up) config PM_BFIN_WAKE_ROTARY bool "Allow Wake-Up from on-chip Rotary" depends on PM && BF54x default n help Enable Rotary Wake-Up (Voltage Regulator Power-Up) endmenu menu "CPU Frequency scaling" Loading
arch/blackfin/mach-common/ints-priority.c +43 −3 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ atomic_t num_spurious; #ifdef CONFIG_PM unsigned long bfin_sic_iwr[3]; /* Up to 3 SIC_IWRx registers */ unsigned vr_wakeup; #endif struct ivgx { Loading Loading @@ -184,17 +185,56 @@ static void bfin_internal_unmask_irq(unsigned int irq) #ifdef CONFIG_PM int bfin_internal_set_wake(unsigned int irq, unsigned int state) { unsigned bank, bit; unsigned bank, bit, wakeup = 0; unsigned long flags; bank = SIC_SYSIRQ(irq) / 32; bit = SIC_SYSIRQ(irq) % 32; switch (irq) { #ifdef IRQ_RTC case IRQ_RTC: wakeup |= WAKE; break; #endif #ifdef IRQ_CAN0_RX case IRQ_CAN0_RX: wakeup |= CANWE; break; #endif #ifdef IRQ_CAN1_RX case IRQ_CAN1_RX: wakeup |= CANWE; break; #endif #ifdef IRQ_USB_INT0 case IRQ_USB_INT0: wakeup |= USBWE; break; #endif #ifdef IRQ_KEY case IRQ_KEY: wakeup |= KPADWE; break; #endif #ifdef IRQ_CNT case IRQ_CNT: wakeup |= ROTWE; break; #endif default: break; } local_irq_save(flags); if (state) if (state) { bfin_sic_iwr[bank] |= (1 << bit); else vr_wakeup |= wakeup; } else { bfin_sic_iwr[bank] &= ~(1 << bit); vr_wakeup &= ~wakeup; } local_irq_restore(flags); Loading
arch/blackfin/mach-common/pm.c +1 −17 Original line number Diff line number Diff line Loading @@ -229,28 +229,12 @@ int bfin_pm_suspend_mem_enter(void) wakeup = bfin_read_VR_CTL() & ~FREQ; wakeup |= SCKELOW; /* FIXME: merge this somehow with set_irq_wake */ #ifdef CONFIG_PM_BFIN_WAKE_RTC wakeup |= WAKE; #endif #ifdef CONFIG_PM_BFIN_WAKE_PH6 wakeup |= PHYWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_CAN wakeup |= CANWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_GP wakeup |= GPWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_USB wakeup |= USBWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_KEYPAD wakeup |= KPADWE; #endif #ifdef CONFIG_PM_BFIN_WAKE_ROTARY wakeup |= ROTWE; #endif local_irq_save(flags); Loading @@ -268,7 +252,7 @@ int bfin_pm_suspend_mem_enter(void) icache_disable(); bf53x_suspend_l1_mem(memptr); do_hibernate(wakeup); /* Goodbye */ do_hibernate(wakeup | vr_wakeup); /* Goodbye */ bf53x_resume_l1_mem(memptr); Loading
include/asm-blackfin/bfin-global.h +1 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ extern const char bfin_board_name[]; extern unsigned long wall_jiffies; extern unsigned long bfin_sic_iwr[]; extern unsigned vr_wakeup; extern u16 _bfin_swrst; /* shadow for Software Reset Register (SWRST) */ extern struct file_operations dpmc_fops; extern unsigned long _ramstart, _ramend, _rambase; Loading