From cfefe3c683e0d14c9ce3aeb883c55c7f30c20183 Mon Sep 17 00:00:00 2001 From: Michael Hennerich Date: Sat, 9 Feb 2008 04:12:37 +0800 Subject: [Blackfin] arch: hook up set_irq_wake in Blackfin's irq code - Add support for irq_wake on system and gpio interrupts - Remove outdated kernel options - Add option to select default PM mode - Fix various places where SIC_IWRx was only handled partially Signed-off-by: Michael Hennerich Signed-off-by: Bryan Wu --- include/asm-blackfin/bfin-global.h | 2 ++ include/asm-blackfin/dpmc.h | 8 ++++---- include/asm-blackfin/gpio.h | 8 ++++++-- 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'include/asm-blackfin') diff --git a/include/asm-blackfin/bfin-global.h b/include/asm-blackfin/bfin-global.h index 6ae0619d769..5dba3a73559 100644 --- a/include/asm-blackfin/bfin-global.h +++ b/include/asm-blackfin/bfin-global.h @@ -70,6 +70,7 @@ extern void program_IAR(void); extern void evt14_softirq(void); extern asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs); extern void bfin_gpio_interrupt_setup(int irq, int irq_pfx, int type); +extern int bfin_internal_set_wake(unsigned int irq, unsigned int state); extern asmlinkage void finish_atomic_sections (struct pt_regs *regs); extern char fixed_code_start; @@ -121,6 +122,7 @@ extern unsigned long dpdt_swapcount_table[]; extern unsigned long table_start, table_end; +extern unsigned long bfin_sic_iwr[]; extern u16 _bfin_swrst; /* shadow for Software Reset Register (SWRST) */ extern struct file_operations dpmc_fops; extern char _start; diff --git a/include/asm-blackfin/dpmc.h b/include/asm-blackfin/dpmc.h index f162edb2303..686cf83a526 100644 --- a/include/asm-blackfin/dpmc.h +++ b/include/asm-blackfin/dpmc.h @@ -53,10 +53,10 @@ unsigned long get_pll_status(void); void change_baud(int baud); void fullon_mode(void); void active_mode(void); -void sleep_mode(u32 sic_iwr); -void deep_sleep(u32 sic_iwr); -void hibernate_mode(u32 sic_iwr); -void sleep_deeper(u32 sic_iwr); +void sleep_mode(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); +void deep_sleep(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); +void hibernate_mode(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); +void sleep_deeper(u32 sic_iwr0, u32 sic_iwr1, u32 sic_iwr2); void program_wdog_timer(unsigned long); void unmask_wdog_wakeup_evt(void); void clear_wdog_wakeup_evt(void); diff --git a/include/asm-blackfin/gpio.h b/include/asm-blackfin/gpio.h index d0426c10826..27ff532a806 100644 --- a/include/asm-blackfin/gpio.h +++ b/include/asm-blackfin/gpio.h @@ -376,16 +376,19 @@ struct gpio_port_t { #endif #ifdef CONFIG_PM +unsigned int bfin_pm_setup(void); +void bfin_pm_restore(void); + +#ifndef CONFIG_BF54x #define PM_WAKE_RISING 0x1 #define PM_WAKE_FALLING 0x2 #define PM_WAKE_HIGH 0x4 #define PM_WAKE_LOW 0x8 #define PM_WAKE_BOTH_EDGES (PM_WAKE_RISING | PM_WAKE_FALLING) +#define PM_WAKE_IGNORE 0xF0 int gpio_pm_wakeup_request(unsigned gpio, unsigned char type); void gpio_pm_wakeup_free(unsigned gpio); -unsigned int gpio_pm_setup(void); -void gpio_pm_restore(void); struct gpio_port_s { unsigned short data; @@ -409,6 +412,7 @@ struct gpio_port_s { unsigned short fer; unsigned short reserved; }; +#endif /*CONFIG_BF54x*/ #endif /*CONFIG_PM*/ /*********************************************************** -- cgit v1.2.3