diff options
Diffstat (limited to 'arch/mips/loongson')
-rw-r--r-- | arch/mips/loongson/common/irq.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/arch/mips/loongson/common/irq.c b/arch/mips/loongson/common/irq.c index 20e732831978..25a11df03482 100644 --- a/arch/mips/loongson/common/irq.c +++ b/arch/mips/loongson/common/irq.c | |||
@@ -21,19 +21,16 @@ void bonito_irqdispatch(void) | |||
21 | 21 | ||
22 | /* workaround the IO dma problem: let cpu looping to allow DMA finish */ | 22 | /* workaround the IO dma problem: let cpu looping to allow DMA finish */ |
23 | int_status = LOONGSON_INTISR; | 23 | int_status = LOONGSON_INTISR; |
24 | if (int_status & (1 << 10)) { | 24 | while (int_status & (1 << 10)) { |
25 | while (int_status & (1 << 10)) { | 25 | udelay(1); |
26 | udelay(1); | 26 | int_status = LOONGSON_INTISR; |
27 | int_status = LOONGSON_INTISR; | ||
28 | } | ||
29 | } | 27 | } |
30 | 28 | ||
31 | /* Get pending sources, masked by current enables */ | 29 | /* Get pending sources, masked by current enables */ |
32 | int_status = LOONGSON_INTISR & LOONGSON_INTEN; | 30 | int_status = LOONGSON_INTISR & LOONGSON_INTEN; |
33 | 31 | ||
34 | if (int_status != 0) { | 32 | if (int_status) { |
35 | i = __ffs(int_status); | 33 | i = __ffs(int_status); |
36 | int_status &= ~(1 << i); | ||
37 | do_IRQ(LOONGSON_IRQ_BASE + i); | 34 | do_IRQ(LOONGSON_IRQ_BASE + i); |
38 | } | 35 | } |
39 | } | 36 | } |