diff options
Diffstat (limited to 'arch/alpha/kernel/sys_eb64p.c')
-rw-r--r-- | arch/alpha/kernel/sys_eb64p.c | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c index df2090ce5e7f..a7a23b40eec5 100644 --- a/arch/alpha/kernel/sys_eb64p.c +++ b/arch/alpha/kernel/sys_eb64p.c | |||
@@ -44,39 +44,22 @@ eb64p_update_irq_hw(unsigned int irq, unsigned long mask) | |||
44 | } | 44 | } |
45 | 45 | ||
46 | static inline void | 46 | static inline void |
47 | eb64p_enable_irq(unsigned int irq) | 47 | eb64p_enable_irq(struct irq_data *d) |
48 | { | 48 | { |
49 | eb64p_update_irq_hw(irq, cached_irq_mask &= ~(1 << irq)); | 49 | eb64p_update_irq_hw(d->irq, cached_irq_mask &= ~(1 << d->irq)); |
50 | } | 50 | } |
51 | 51 | ||
52 | static void | 52 | static void |
53 | eb64p_disable_irq(unsigned int irq) | 53 | eb64p_disable_irq(struct irq_data *d) |
54 | { | 54 | { |
55 | eb64p_update_irq_hw(irq, cached_irq_mask |= 1 << irq); | 55 | eb64p_update_irq_hw(d->irq, cached_irq_mask |= 1 << d->irq); |
56 | } | ||
57 | |||
58 | static unsigned int | ||
59 | eb64p_startup_irq(unsigned int irq) | ||
60 | { | ||
61 | eb64p_enable_irq(irq); | ||
62 | return 0; /* never anything pending */ | ||
63 | } | ||
64 | |||
65 | static void | ||
66 | eb64p_end_irq(unsigned int irq) | ||
67 | { | ||
68 | if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
69 | eb64p_enable_irq(irq); | ||
70 | } | 56 | } |
71 | 57 | ||
72 | static struct irq_chip eb64p_irq_type = { | 58 | static struct irq_chip eb64p_irq_type = { |
73 | .name = "EB64P", | 59 | .name = "EB64P", |
74 | .startup = eb64p_startup_irq, | 60 | .irq_unmask = eb64p_enable_irq, |
75 | .shutdown = eb64p_disable_irq, | 61 | .irq_mask = eb64p_disable_irq, |
76 | .enable = eb64p_enable_irq, | 62 | .irq_mask_ack = eb64p_disable_irq, |
77 | .disable = eb64p_disable_irq, | ||
78 | .ack = eb64p_disable_irq, | ||
79 | .end = eb64p_end_irq, | ||
80 | }; | 63 | }; |
81 | 64 | ||
82 | static void | 65 | static void |
@@ -135,9 +118,9 @@ eb64p_init_irq(void) | |||
135 | init_i8259a_irqs(); | 118 | init_i8259a_irqs(); |
136 | 119 | ||
137 | for (i = 16; i < 32; ++i) { | 120 | for (i = 16; i < 32; ++i) { |
138 | irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL; | 121 | irq_set_chip_and_handler(i, &eb64p_irq_type, handle_level_irq); |
139 | irq_desc[i].chip = &eb64p_irq_type; | 122 | irq_set_status_flags(i, IRQ_LEVEL); |
140 | } | 123 | } |
141 | 124 | ||
142 | common_init_isa_dma(); | 125 | common_init_isa_dma(); |
143 | setup_irq(16+5, &isa_cascade_irqaction); | 126 | setup_irq(16+5, &isa_cascade_irqaction); |