diff options
author | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 05:03:34 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 05:03:34 -0400 |
commit | 8599cf059209de22dd3be16816b90f1aad10c74a (patch) | |
tree | 8cd5bdec25431a2797147c3eea11532ec71b6272 /arch/sh/cchips/voyagergx | |
parent | ba463937ef75bceaf3943edf01f849257c68623a (diff) |
sh: Cleanup IRQ disabling for hardirq handlers.
The generic hardirq layer already takes care of a lot of the
appropriate locking and disabling for us, no need to duplicate
it in the handlers..
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/cchips/voyagergx')
-rw-r--r-- | arch/sh/cchips/voyagergx/irq.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/arch/sh/cchips/voyagergx/irq.c b/arch/sh/cchips/voyagergx/irq.c index 4cfa7c990553..392c8b12ce36 100644 --- a/arch/sh/cchips/voyagergx/irq.c +++ b/arch/sh/cchips/voyagergx/irq.c | |||
@@ -36,32 +36,26 @@ | |||
36 | 36 | ||
37 | static void disable_voyagergx_irq(unsigned int irq) | 37 | static void disable_voyagergx_irq(unsigned int irq) |
38 | { | 38 | { |
39 | unsigned long flags, val; | 39 | unsigned long val; |
40 | unsigned long mask = 1 << (irq - VOYAGER_IRQ_BASE); | 40 | unsigned long mask = 1 << (irq - VOYAGER_IRQ_BASE); |
41 | 41 | ||
42 | pr_debug("disable_voyagergx_irq(%d): mask=%x\n", irq, mask); | 42 | pr_debug("disable_voyagergx_irq(%d): mask=%x\n", irq, mask); |
43 | local_irq_save(flags); | ||
44 | val = inl(VOYAGER_INT_MASK); | 43 | val = inl(VOYAGER_INT_MASK); |
45 | val &= ~mask; | 44 | val &= ~mask; |
46 | outl(val, VOYAGER_INT_MASK); | 45 | outl(val, VOYAGER_INT_MASK); |
47 | local_irq_restore(flags); | ||
48 | } | 46 | } |
49 | 47 | ||
50 | |||
51 | static void enable_voyagergx_irq(unsigned int irq) | 48 | static void enable_voyagergx_irq(unsigned int irq) |
52 | { | 49 | { |
53 | unsigned long flags, val; | 50 | unsigned long val; |
54 | unsigned long mask = 1 << (irq - VOYAGER_IRQ_BASE); | 51 | unsigned long mask = 1 << (irq - VOYAGER_IRQ_BASE); |
55 | 52 | ||
56 | pr_debug("disable_voyagergx_irq(%d): mask=%x\n", irq, mask); | 53 | pr_debug("disable_voyagergx_irq(%d): mask=%x\n", irq, mask); |
57 | local_irq_save(flags); | ||
58 | val = inl(VOYAGER_INT_MASK); | 54 | val = inl(VOYAGER_INT_MASK); |
59 | val |= mask; | 55 | val |= mask; |
60 | outl(val, VOYAGER_INT_MASK); | 56 | outl(val, VOYAGER_INT_MASK); |
61 | local_irq_restore(flags); | ||
62 | } | 57 | } |
63 | 58 | ||
64 | |||
65 | static void mask_and_ack_voyagergx(unsigned int irq) | 59 | static void mask_and_ack_voyagergx(unsigned int irq) |
66 | { | 60 | { |
67 | disable_voyagergx_irq(irq); | 61 | disable_voyagergx_irq(irq); |
@@ -94,7 +88,8 @@ static struct hw_interrupt_type voyagergx_irq_type = { | |||
94 | .end = end_voyagergx_irq, | 88 | .end = end_voyagergx_irq, |
95 | }; | 89 | }; |
96 | 90 | ||
97 | static irqreturn_t voyagergx_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 91 | static irqreturn_t voyagergx_interrupt(int irq, void *dev_id, |
92 | struct pt_regs *regs) | ||
98 | { | 93 | { |
99 | printk(KERN_INFO | 94 | printk(KERN_INFO |
100 | "VoyagerGX: spurious interrupt, status: 0x%x\n", | 95 | "VoyagerGX: spurious interrupt, status: 0x%x\n", |
@@ -102,9 +97,6 @@ static irqreturn_t voyagergx_interrupt(int irq, void *dev_id, struct pt_regs *re | |||
102 | return IRQ_HANDLED; | 97 | return IRQ_HANDLED; |
103 | } | 98 | } |
104 | 99 | ||
105 | |||
106 | /*====================================================*/ | ||
107 | |||
108 | static struct { | 100 | static struct { |
109 | int (*func)(int, void *); | 101 | int (*func)(int, void *); |
110 | void *dev; | 102 | void *dev; |