Loading arch/arm/mach-mmp/include/mach/pxa168.h +5 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ struct sys_timer; extern struct sys_timer pxa168_timer; extern void __init pxa168_init_irq(void); extern void pxa168_clear_keypad_wakeup(void); #include <linux/i2c.h> #include <mach/devices.h> Loading @@ -12,6 +13,7 @@ extern void __init pxa168_init_irq(void); #include <plat/pxa3xx_nand.h> #include <video/pxa168fb.h> #include <plat/pxa27x_keypad.h> #include <mach/cputype.h> extern struct pxa_device_desc pxa168_device_uart1; extern struct pxa_device_desc pxa168_device_uart2; Loading Loading @@ -109,6 +111,9 @@ static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi) static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *data) { if (cpu_is_pxa168()) data->clear_wakeup_event = pxa168_clear_keypad_wakeup; return pxa_register_device(&pxa168_device_keypad, data, sizeof(*data)); } Loading arch/arm/mach-mmp/pxa168.c +10 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,16 @@ struct sys_timer pxa168_timer = { .init = pxa168_timer_init, }; void pxa168_clear_keypad_wakeup(void) { uint32_t val; uint32_t mask = APMU_PXA168_KP_WAKE_CLR; /* wake event clear is needed in order to clear keypad interrupt */ val = __raw_readl(APMU_WAKE_CLR); __raw_writel(val | mask, APMU_WAKE_CLR); } /* on-chip devices */ PXA168_DEVICE(uart1, "pxa2xx-uart", 0, UART1, 0xd4017000, 0x30, 21, 22); PXA168_DEVICE(uart2, "pxa2xx-uart", 1, UART2, 0xd4018000, 0x30, 23, 24); Loading Loading
arch/arm/mach-mmp/include/mach/pxa168.h +5 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ struct sys_timer; extern struct sys_timer pxa168_timer; extern void __init pxa168_init_irq(void); extern void pxa168_clear_keypad_wakeup(void); #include <linux/i2c.h> #include <mach/devices.h> Loading @@ -12,6 +13,7 @@ extern void __init pxa168_init_irq(void); #include <plat/pxa3xx_nand.h> #include <video/pxa168fb.h> #include <plat/pxa27x_keypad.h> #include <mach/cputype.h> extern struct pxa_device_desc pxa168_device_uart1; extern struct pxa_device_desc pxa168_device_uart2; Loading Loading @@ -109,6 +111,9 @@ static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi) static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *data) { if (cpu_is_pxa168()) data->clear_wakeup_event = pxa168_clear_keypad_wakeup; return pxa_register_device(&pxa168_device_keypad, data, sizeof(*data)); } Loading
arch/arm/mach-mmp/pxa168.c +10 −0 Original line number Diff line number Diff line Loading @@ -136,6 +136,16 @@ struct sys_timer pxa168_timer = { .init = pxa168_timer_init, }; void pxa168_clear_keypad_wakeup(void) { uint32_t val; uint32_t mask = APMU_PXA168_KP_WAKE_CLR; /* wake event clear is needed in order to clear keypad interrupt */ val = __raw_readl(APMU_WAKE_CLR); __raw_writel(val | mask, APMU_WAKE_CLR); } /* on-chip devices */ PXA168_DEVICE(uart1, "pxa2xx-uart", 0, UART1, 0xd4017000, 0x30, 21, 22); PXA168_DEVICE(uart2, "pxa2xx-uart", 1, UART2, 0xd4018000, 0x30, 23, 24); Loading