diff options
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r-- | arch/arm/mach-omap2/irq.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap2/pm.h | 2 |
3 files changed, 10 insertions, 3 deletions
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index e022a869bff2..6037a9a01ed5 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c | |||
@@ -222,6 +222,7 @@ void __init ti81xx_init_irq(void) | |||
222 | static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs) | 222 | static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs *regs) |
223 | { | 223 | { |
224 | u32 irqnr; | 224 | u32 irqnr; |
225 | int handled_irq = 0; | ||
225 | 226 | ||
226 | do { | 227 | do { |
227 | irqnr = readl_relaxed(base_addr + 0x98); | 228 | irqnr = readl_relaxed(base_addr + 0x98); |
@@ -249,8 +250,15 @@ out: | |||
249 | if (irqnr) { | 250 | if (irqnr) { |
250 | irqnr = irq_find_mapping(domain, irqnr); | 251 | irqnr = irq_find_mapping(domain, irqnr); |
251 | handle_IRQ(irqnr, regs); | 252 | handle_IRQ(irqnr, regs); |
253 | handled_irq = 1; | ||
252 | } | 254 | } |
253 | } while (irqnr); | 255 | } while (irqnr); |
256 | |||
257 | /* If an irq is masked or deasserted while active, we will | ||
258 | * keep ending up here with no irq handled. So remove it from | ||
259 | * the INTC with an ack.*/ | ||
260 | if (!handled_irq) | ||
261 | omap_ack_irq(NULL); | ||
254 | } | 262 | } |
255 | 263 | ||
256 | asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs) | 264 | asmlinkage void __exception_irq_entry omap2_intc_handle_irq(struct pt_regs *regs) |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 3318cae96e7d..1219280bb976 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -2541,8 +2541,7 @@ static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = { | |||
2541 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | | 2541 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | |
2542 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | | 2542 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | |
2543 | SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), | 2543 | SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), |
2544 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | 2544 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), |
2545 | SIDLE_SMART_WKUP), | ||
2546 | .sysc_fields = &omap_hwmod_sysc_type1, | 2545 | .sysc_fields = &omap_hwmod_sysc_type1, |
2547 | }; | 2546 | }; |
2548 | 2547 | ||
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h index 7bdd22afce69..d4d0fce325c7 100644 --- a/arch/arm/mach-omap2/pm.h +++ b/arch/arm/mach-omap2/pm.h | |||
@@ -103,7 +103,7 @@ static inline void enable_omap3630_toggle_l2_on_restore(void) { } | |||
103 | 103 | ||
104 | #define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0) | 104 | #define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0) |
105 | 105 | ||
106 | #if defined(CONFIG_ARCH_OMAP4) | 106 | #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP4) |
107 | extern u16 pm44xx_errata; | 107 | extern u16 pm44xx_errata; |
108 | #define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id)) | 108 | #define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id)) |
109 | #else | 109 | #else |