Loading arch/blackfin/Kconfig +113 −1 Original line number Diff line number Diff line Loading @@ -1256,7 +1256,7 @@ config ARCH_SUSPEND_POSSIBLE choice prompt "Standby Power Saving Mode" depends on PM depends on PM && !BF60x default PM_BFIN_SLEEP_DEEPER config PM_BFIN_SLEEP_DEEPER bool "Sleep Deeper" Loading Loading @@ -1311,6 +1311,118 @@ config PM_BFIN_WAKE_GP On ADSP-BF549 this option enables the the same functionality on the /MRXON pin also PH7. config PM_BFIN_WAKE_PA15 bool "Allow Wake-Up from PA15" depends on PM && BF60x default n help Enable PA15 Wake-Up config PM_BFIN_WAKE_PA15_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PA15 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PB15 bool "Allow Wake-Up from PB15" depends on PM && BF60x default n help Enable PB15 Wake-Up config PM_BFIN_WAKE_PB15_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PB15 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PC15 bool "Allow Wake-Up from PC15" depends on PM && BF60x default n help Enable PC15 Wake-Up config PM_BFIN_WAKE_PC15_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PC15 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PD06 bool "Allow Wake-Up from PD06(ETH0_PHYINT)" depends on PM && BF60x default n help Enable PD06(ETH0_PHYINT) Wake-up config PM_BFIN_WAKE_PD06_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PD06 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PE12 bool "Allow Wake-Up from PE12(ETH1_PHYINT, PUSH BUTTON)" depends on PM && BF60x default n help Enable PE12(ETH1_PHYINT, PUSH BUTTON) Wake-up config PM_BFIN_WAKE_PE12_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PE12 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PG04 bool "Allow Wake-Up from PG04(CAN0_RX)" depends on PM && BF60x default n help Enable PG04(CAN0_RX) Wake-up config PM_BFIN_WAKE_PG04_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PG04 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PG13 bool "Allow Wake-Up from PG13" depends on PM && BF60x default n help Enable PG13 Wake-Up config PM_BFIN_WAKE_PG13_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PG13 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_USB bool "Allow Wake-Up from (USB)" depends on PM && BF60x default n help Enable (USB) Wake-up config PM_BFIN_WAKE_USB_POL int "Wake-up priority" depends on PM_BFIN_WAKE_USB default 0 help Wake-Up priority 0(low) 1(high) endmenu menu "CPU Frequency scaling" Loading arch/blackfin/configs/BF609-EZKIT_defconfig +3 −2 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ CONFIG_CPLB_SWITCH_TAB_L1=y CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0 CONFIG_BINFMT_FLAT=y CONFIG_BINFMT_ZFLAT=y # CONFIG_SUSPEND is not set CONFIG_PM_BFIN_WAKE_PE12=y CONFIG_PM_BFIN_WAKE_PE12_POL=1 CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y Loading Loading @@ -119,7 +120,7 @@ CONFIG_SND_SOC_BFIN_EVAL_ADAU1X61=m CONFIG_SND_SOC_ALL_CODECS=m CONFIG_USB=y CONFIG_USB_MUSB_HDRC=y CONFIG_USB_MUSB_BLACKFIN=y CONFIG_USB_MUSB_BLACKFIN=m CONFIG_USB_STORAGE=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_MUSB_HDRC=y Loading arch/blackfin/include/asm/dpmc.h +11 −1 Original line number Diff line number Diff line Loading @@ -729,6 +729,16 @@ #define VLEV_130 0x00F0 /* VLEV = 1.30 V (-5% - +10% Accuracy) */ #endif #ifdef CONFIG_BF60x #define PA15WE 0x00000001 /* Allow Wake-Up from PA15 */ #define PB15WE 0x00000002 /* Allow Wake-Up from PB15 */ #define PC15WE 0x00000004 /* Allow Wake-Up from PC15 */ #define PD06WE 0x00000008 /* Allow Wake-Up from PD06(ETH0_PHYINT) */ #define PE12WE 0x00000010 /* Allow Wake-Up from PE12(ETH1_PHYINT, PUSH BUTTON) */ #define PG04WE 0x00000020 /* Allow Wake-Up from PG04(CAN0_RX) */ #define PG13WE 0x00000040 /* Allow Wake-Up from PG13 */ #define USBWE 0x00000080 /* Allow Wake-Up from (USB) */ #else #define WAKE 0x0100 /* Enable RTC/Reset Wakeup From Hibernate */ #define CANWE 0x0200 /* Enable CAN Wakeup From Hibernate */ #define PHYWE 0x0400 /* Enable PHY Wakeup From Hibernate */ Loading @@ -744,7 +754,7 @@ #else #define USBWE 0x0800 /* Enable USB Wakeup From Hibernate */ #endif #endif #ifndef __ASSEMBLY__ Loading arch/blackfin/mach-bf609/pm.c +62 −21 Original line number Diff line number Diff line Loading @@ -212,6 +212,65 @@ void bfin_hibernate(unsigned long mask) void bf609_cpu_pm_enter(suspend_state_t state) { int error; unsigned long wakeup = 0; unsigned long wakeup_pol = 0; #ifdef CONFIG_PM_BFIN_WAKE_PA15 wakeup |= PA15WE; # if CONFIG_PM_BFIN_WAKE_PA15_POL wakeup_pol |= PA15WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PB15 wakeup |= PB15WE; # if CONFIG_PM_BFIN_WAKE_PA15_POL wakeup_pol |= PB15WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PC15 wakeup |= PC15WE; # if CONFIG_PM_BFIN_WAKE_PC15_POL wakeup_pol |= PC15WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PD06 wakeup |= PD06WE; # if CONFIG_PM_BFIN_WAKE_PD06_POL wakeup_pol |= PD06WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PE12 wakeup |= PE12WE; # if CONFIG_PM_BFIN_WAKE_PE12_POL wakeup_pol |= PE12WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PG04 wakeup |= PG04WE; # if CONFIG_PM_BFIN_WAKE_PG04_POL wakeup_pol |= PG04WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PG13 wakeup |= PG13WE; # if CONFIG_PM_BFIN_WAKE_PG13_POL wakeup_pol |= PG13WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_USB wakeup |= USBWE; # if CONFIG_PM_BFIN_WAKE_USB_POL wakeup_pol |= USBWE; # endif #endif error = irq_set_irq_wake(255, 1); if(error < 0) printk(KERN_DEBUG "Unable to get irq wake\n"); Loading @@ -220,9 +279,9 @@ void bf609_cpu_pm_enter(suspend_state_t state) printk(KERN_DEBUG "Unable to get irq wake\n"); if (state == PM_SUSPEND_STANDBY) bfin_deepsleep(0xffff); bfin_deepsleep(wakeup); else { bfin_hibernate(0xffff); bfin_hibernate(wakeup); } } Loading Loading @@ -263,26 +322,8 @@ static int __init bf609_init_pm(void) { int irq; int error; error = gpio_request(GPIO_PG4, "gpiopg4"); if (error < 0) { printk(KERN_DEBUG "failed to request GPIO %d, error %d\n", GPIO_PG4, error); } irq = gpio_to_irq(GPIO_PG4); if (irq < 0) { error = irq; printk(KERN_DEBUG "Unable to get irq number for GPIO %d, error %d\n", GPIO_PG4, error); } printk(KERN_DEBUG "%s gpio %d irq %d\n", __func__, GPIO_PG4, irq); error = request_irq(irq, test_isr, IRQF_TRIGGER_FALLING | IRQF_NO_SUSPEND, "gpiopg4", NULL); if(error < 0) printk(KERN_DEBUG "Unable to get irq\n"); #if 1 #if CONFIG_PM_BFIN_WAKE_PE12 irq = gpio_to_irq(GPIO_PE12); if (irq < 0) { error = irq; Loading arch/blackfin/mach-common/ints-priority.c +2 −1 Original line number Diff line number Diff line Loading @@ -437,7 +437,7 @@ static void bfin_internal_unmask_irq_chip(struct irq_data *d) } #endif #ifdef CONFIG_PM #if defined(CONFIG_PM) && !defined(CONFIG_BF60x) int bfin_internal_set_wake(unsigned int irq, unsigned int state) { u32 bank, bit, wakeup = 0; Loading Loading @@ -496,6 +496,7 @@ static int bfin_internal_set_wake_chip(struct irq_data *d, unsigned int state) return bfin_internal_set_wake(d->irq, state); } #else # define bfin_internal_set_wake(irq, state) # define bfin_internal_set_wake_chip NULL #endif Loading Loading
arch/blackfin/Kconfig +113 −1 Original line number Diff line number Diff line Loading @@ -1256,7 +1256,7 @@ config ARCH_SUSPEND_POSSIBLE choice prompt "Standby Power Saving Mode" depends on PM depends on PM && !BF60x default PM_BFIN_SLEEP_DEEPER config PM_BFIN_SLEEP_DEEPER bool "Sleep Deeper" Loading Loading @@ -1311,6 +1311,118 @@ config PM_BFIN_WAKE_GP On ADSP-BF549 this option enables the the same functionality on the /MRXON pin also PH7. config PM_BFIN_WAKE_PA15 bool "Allow Wake-Up from PA15" depends on PM && BF60x default n help Enable PA15 Wake-Up config PM_BFIN_WAKE_PA15_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PA15 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PB15 bool "Allow Wake-Up from PB15" depends on PM && BF60x default n help Enable PB15 Wake-Up config PM_BFIN_WAKE_PB15_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PB15 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PC15 bool "Allow Wake-Up from PC15" depends on PM && BF60x default n help Enable PC15 Wake-Up config PM_BFIN_WAKE_PC15_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PC15 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PD06 bool "Allow Wake-Up from PD06(ETH0_PHYINT)" depends on PM && BF60x default n help Enable PD06(ETH0_PHYINT) Wake-up config PM_BFIN_WAKE_PD06_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PD06 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PE12 bool "Allow Wake-Up from PE12(ETH1_PHYINT, PUSH BUTTON)" depends on PM && BF60x default n help Enable PE12(ETH1_PHYINT, PUSH BUTTON) Wake-up config PM_BFIN_WAKE_PE12_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PE12 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PG04 bool "Allow Wake-Up from PG04(CAN0_RX)" depends on PM && BF60x default n help Enable PG04(CAN0_RX) Wake-up config PM_BFIN_WAKE_PG04_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PG04 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_PG13 bool "Allow Wake-Up from PG13" depends on PM && BF60x default n help Enable PG13 Wake-Up config PM_BFIN_WAKE_PG13_POL int "Wake-up priority" depends on PM_BFIN_WAKE_PG13 default 0 help Wake-Up priority 0(low) 1(high) config PM_BFIN_WAKE_USB bool "Allow Wake-Up from (USB)" depends on PM && BF60x default n help Enable (USB) Wake-up config PM_BFIN_WAKE_USB_POL int "Wake-up priority" depends on PM_BFIN_WAKE_USB default 0 help Wake-Up priority 0(low) 1(high) endmenu menu "CPU Frequency scaling" Loading
arch/blackfin/configs/BF609-EZKIT_defconfig +3 −2 Original line number Diff line number Diff line Loading @@ -33,7 +33,8 @@ CONFIG_CPLB_SWITCH_TAB_L1=y CONFIG_NOMMU_INITIAL_TRIM_EXCESS=0 CONFIG_BINFMT_FLAT=y CONFIG_BINFMT_ZFLAT=y # CONFIG_SUSPEND is not set CONFIG_PM_BFIN_WAKE_PE12=y CONFIG_PM_BFIN_WAKE_PE12_POL=1 CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y Loading Loading @@ -119,7 +120,7 @@ CONFIG_SND_SOC_BFIN_EVAL_ADAU1X61=m CONFIG_SND_SOC_ALL_CODECS=m CONFIG_USB=y CONFIG_USB_MUSB_HDRC=y CONFIG_USB_MUSB_BLACKFIN=y CONFIG_USB_MUSB_BLACKFIN=m CONFIG_USB_STORAGE=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_MUSB_HDRC=y Loading
arch/blackfin/include/asm/dpmc.h +11 −1 Original line number Diff line number Diff line Loading @@ -729,6 +729,16 @@ #define VLEV_130 0x00F0 /* VLEV = 1.30 V (-5% - +10% Accuracy) */ #endif #ifdef CONFIG_BF60x #define PA15WE 0x00000001 /* Allow Wake-Up from PA15 */ #define PB15WE 0x00000002 /* Allow Wake-Up from PB15 */ #define PC15WE 0x00000004 /* Allow Wake-Up from PC15 */ #define PD06WE 0x00000008 /* Allow Wake-Up from PD06(ETH0_PHYINT) */ #define PE12WE 0x00000010 /* Allow Wake-Up from PE12(ETH1_PHYINT, PUSH BUTTON) */ #define PG04WE 0x00000020 /* Allow Wake-Up from PG04(CAN0_RX) */ #define PG13WE 0x00000040 /* Allow Wake-Up from PG13 */ #define USBWE 0x00000080 /* Allow Wake-Up from (USB) */ #else #define WAKE 0x0100 /* Enable RTC/Reset Wakeup From Hibernate */ #define CANWE 0x0200 /* Enable CAN Wakeup From Hibernate */ #define PHYWE 0x0400 /* Enable PHY Wakeup From Hibernate */ Loading @@ -744,7 +754,7 @@ #else #define USBWE 0x0800 /* Enable USB Wakeup From Hibernate */ #endif #endif #ifndef __ASSEMBLY__ Loading
arch/blackfin/mach-bf609/pm.c +62 −21 Original line number Diff line number Diff line Loading @@ -212,6 +212,65 @@ void bfin_hibernate(unsigned long mask) void bf609_cpu_pm_enter(suspend_state_t state) { int error; unsigned long wakeup = 0; unsigned long wakeup_pol = 0; #ifdef CONFIG_PM_BFIN_WAKE_PA15 wakeup |= PA15WE; # if CONFIG_PM_BFIN_WAKE_PA15_POL wakeup_pol |= PA15WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PB15 wakeup |= PB15WE; # if CONFIG_PM_BFIN_WAKE_PA15_POL wakeup_pol |= PB15WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PC15 wakeup |= PC15WE; # if CONFIG_PM_BFIN_WAKE_PC15_POL wakeup_pol |= PC15WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PD06 wakeup |= PD06WE; # if CONFIG_PM_BFIN_WAKE_PD06_POL wakeup_pol |= PD06WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PE12 wakeup |= PE12WE; # if CONFIG_PM_BFIN_WAKE_PE12_POL wakeup_pol |= PE12WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PG04 wakeup |= PG04WE; # if CONFIG_PM_BFIN_WAKE_PG04_POL wakeup_pol |= PG04WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_PG13 wakeup |= PG13WE; # if CONFIG_PM_BFIN_WAKE_PG13_POL wakeup_pol |= PG13WE; # endif #endif #ifdef CONFIG_PM_BFIN_WAKE_USB wakeup |= USBWE; # if CONFIG_PM_BFIN_WAKE_USB_POL wakeup_pol |= USBWE; # endif #endif error = irq_set_irq_wake(255, 1); if(error < 0) printk(KERN_DEBUG "Unable to get irq wake\n"); Loading @@ -220,9 +279,9 @@ void bf609_cpu_pm_enter(suspend_state_t state) printk(KERN_DEBUG "Unable to get irq wake\n"); if (state == PM_SUSPEND_STANDBY) bfin_deepsleep(0xffff); bfin_deepsleep(wakeup); else { bfin_hibernate(0xffff); bfin_hibernate(wakeup); } } Loading Loading @@ -263,26 +322,8 @@ static int __init bf609_init_pm(void) { int irq; int error; error = gpio_request(GPIO_PG4, "gpiopg4"); if (error < 0) { printk(KERN_DEBUG "failed to request GPIO %d, error %d\n", GPIO_PG4, error); } irq = gpio_to_irq(GPIO_PG4); if (irq < 0) { error = irq; printk(KERN_DEBUG "Unable to get irq number for GPIO %d, error %d\n", GPIO_PG4, error); } printk(KERN_DEBUG "%s gpio %d irq %d\n", __func__, GPIO_PG4, irq); error = request_irq(irq, test_isr, IRQF_TRIGGER_FALLING | IRQF_NO_SUSPEND, "gpiopg4", NULL); if(error < 0) printk(KERN_DEBUG "Unable to get irq\n"); #if 1 #if CONFIG_PM_BFIN_WAKE_PE12 irq = gpio_to_irq(GPIO_PE12); if (irq < 0) { error = irq; Loading
arch/blackfin/mach-common/ints-priority.c +2 −1 Original line number Diff line number Diff line Loading @@ -437,7 +437,7 @@ static void bfin_internal_unmask_irq_chip(struct irq_data *d) } #endif #ifdef CONFIG_PM #if defined(CONFIG_PM) && !defined(CONFIG_BF60x) int bfin_internal_set_wake(unsigned int irq, unsigned int state) { u32 bank, bit, wakeup = 0; Loading Loading @@ -496,6 +496,7 @@ static int bfin_internal_set_wake_chip(struct irq_data *d, unsigned int state) return bfin_internal_set_wake(d->irq, state); } #else # define bfin_internal_set_wake(irq, state) # define bfin_internal_set_wake_chip NULL #endif Loading