diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /arch/mips/sni/pcimt.c | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'arch/mips/sni/pcimt.c')
-rw-r--r-- | arch/mips/sni/pcimt.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/arch/mips/sni/pcimt.c b/arch/mips/sni/pcimt.c index 51e62bbaa23b..ed3b3d317358 100644 --- a/arch/mips/sni/pcimt.c +++ b/arch/mips/sni/pcimt.c | |||
@@ -11,6 +11,7 @@ | |||
11 | 11 | ||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
14 | #include <linux/irq.h> | ||
14 | #include <linux/pci.h> | 15 | #include <linux/pci.h> |
15 | #include <linux/serial_8250.h> | 16 | #include <linux/serial_8250.h> |
16 | 17 | ||
@@ -193,33 +194,24 @@ static struct pci_controller sni_controller = { | |||
193 | .io_map_base = SNI_PORT_BASE | 194 | .io_map_base = SNI_PORT_BASE |
194 | }; | 195 | }; |
195 | 196 | ||
196 | static void enable_pcimt_irq(unsigned int irq) | 197 | static void enable_pcimt_irq(struct irq_data *d) |
197 | { | 198 | { |
198 | unsigned int mask = 1 << (irq - PCIMT_IRQ_INT2); | 199 | unsigned int mask = 1 << (d->irq - PCIMT_IRQ_INT2); |
199 | 200 | ||
200 | *(volatile u8 *) PCIMT_IRQSEL |= mask; | 201 | *(volatile u8 *) PCIMT_IRQSEL |= mask; |
201 | } | 202 | } |
202 | 203 | ||
203 | void disable_pcimt_irq(unsigned int irq) | 204 | void disable_pcimt_irq(struct irq_data *d) |
204 | { | 205 | { |
205 | unsigned int mask = ~(1 << (irq - PCIMT_IRQ_INT2)); | 206 | unsigned int mask = ~(1 << (d->irq - PCIMT_IRQ_INT2)); |
206 | 207 | ||
207 | *(volatile u8 *) PCIMT_IRQSEL &= mask; | 208 | *(volatile u8 *) PCIMT_IRQSEL &= mask; |
208 | } | 209 | } |
209 | 210 | ||
210 | static void end_pcimt_irq(unsigned int irq) | ||
211 | { | ||
212 | if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
213 | enable_pcimt_irq(irq); | ||
214 | } | ||
215 | |||
216 | static struct irq_chip pcimt_irq_type = { | 211 | static struct irq_chip pcimt_irq_type = { |
217 | .name = "PCIMT", | 212 | .name = "PCIMT", |
218 | .ack = disable_pcimt_irq, | 213 | .irq_mask = disable_pcimt_irq, |
219 | .mask = disable_pcimt_irq, | 214 | .irq_unmask = enable_pcimt_irq, |
220 | .mask_ack = disable_pcimt_irq, | ||
221 | .unmask = enable_pcimt_irq, | ||
222 | .end = end_pcimt_irq, | ||
223 | }; | 215 | }; |
224 | 216 | ||
225 | /* | 217 | /* |
@@ -304,7 +296,7 @@ void __init sni_pcimt_irq_init(void) | |||
304 | mips_cpu_irq_init(); | 296 | mips_cpu_irq_init(); |
305 | /* Actually we've got more interrupts to handle ... */ | 297 | /* Actually we've got more interrupts to handle ... */ |
306 | for (i = PCIMT_IRQ_INT2; i <= PCIMT_IRQ_SCSI; i++) | 298 | for (i = PCIMT_IRQ_INT2; i <= PCIMT_IRQ_SCSI; i++) |
307 | set_irq_chip_and_handler(i, &pcimt_irq_type, handle_level_irq); | 299 | irq_set_chip_and_handler(i, &pcimt_irq_type, handle_level_irq); |
308 | sni_hwint = sni_pcimt_hwint; | 300 | sni_hwint = sni_pcimt_hwint; |
309 | change_c0_status(ST0_IM, IE_IRQ1|IE_IRQ3); | 301 | change_c0_status(ST0_IM, IE_IRQ1|IE_IRQ3); |
310 | } | 302 | } |