diff options
Diffstat (limited to 'arch/alpha/kernel/sys_titan.c')
| -rw-r--r-- | arch/alpha/kernel/sys_titan.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c index e02494bf5ef..8c13a0c7783 100644 --- a/arch/alpha/kernel/sys_titan.c +++ b/arch/alpha/kernel/sys_titan.c | |||
| @@ -112,8 +112,9 @@ titan_update_irq_hw(unsigned long mask) | |||
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | static inline void | 114 | static inline void |
| 115 | titan_enable_irq(unsigned int irq) | 115 | titan_enable_irq(struct irq_data *d) |
| 116 | { | 116 | { |
| 117 | unsigned int irq = d->irq; | ||
| 117 | spin_lock(&titan_irq_lock); | 118 | spin_lock(&titan_irq_lock); |
| 118 | titan_cached_irq_mask |= 1UL << (irq - 16); | 119 | titan_cached_irq_mask |= 1UL << (irq - 16); |
| 119 | titan_update_irq_hw(titan_cached_irq_mask); | 120 | titan_update_irq_hw(titan_cached_irq_mask); |
| @@ -121,8 +122,9 @@ titan_enable_irq(unsigned int irq) | |||
| 121 | } | 122 | } |
| 122 | 123 | ||
| 123 | static inline void | 124 | static inline void |
| 124 | titan_disable_irq(unsigned int irq) | 125 | titan_disable_irq(struct irq_data *d) |
| 125 | { | 126 | { |
| 127 | unsigned int irq = d->irq; | ||
| 126 | spin_lock(&titan_irq_lock); | 128 | spin_lock(&titan_irq_lock); |
| 127 | titan_cached_irq_mask &= ~(1UL << (irq - 16)); | 129 | titan_cached_irq_mask &= ~(1UL << (irq - 16)); |
| 128 | titan_update_irq_hw(titan_cached_irq_mask); | 130 | titan_update_irq_hw(titan_cached_irq_mask); |
| @@ -144,8 +146,10 @@ titan_cpu_set_irq_affinity(unsigned int irq, cpumask_t affinity) | |||
| 144 | } | 146 | } |
| 145 | 147 | ||
| 146 | static int | 148 | static int |
| 147 | titan_set_irq_affinity(unsigned int irq, const struct cpumask *affinity) | 149 | titan_set_irq_affinity(struct irq_data *d, const struct cpumask *affinity, |
| 150 | bool force) | ||
| 148 | { | 151 | { |
| 152 | unsigned int irq = d->irq; | ||
| 149 | spin_lock(&titan_irq_lock); | 153 | spin_lock(&titan_irq_lock); |
| 150 | titan_cpu_set_irq_affinity(irq - 16, *affinity); | 154 | titan_cpu_set_irq_affinity(irq - 16, *affinity); |
| 151 | titan_update_irq_hw(titan_cached_irq_mask); | 155 | titan_update_irq_hw(titan_cached_irq_mask); |
| @@ -175,17 +179,17 @@ init_titan_irqs(struct irq_chip * ops, int imin, int imax) | |||
| 175 | { | 179 | { |
| 176 | long i; | 180 | long i; |
| 177 | for (i = imin; i <= imax; ++i) { | 181 | for (i = imin; i <= imax; ++i) { |
| 178 | irq_to_desc(i)->status |= IRQ_LEVEL; | ||
| 179 | set_irq_chip_and_handler(i, ops, handle_level_irq); | 182 | set_irq_chip_and_handler(i, ops, handle_level_irq); |
| 183 | irq_set_status_flags(i, IRQ_LEVEL); | ||
| 180 | } | 184 | } |
| 181 | } | 185 | } |
| 182 | 186 | ||
| 183 | static struct irq_chip titan_irq_type = { | 187 | static struct irq_chip titan_irq_type = { |
| 184 | .name = "TITAN", | 188 | .name = "TITAN", |
| 185 | .unmask = titan_enable_irq, | 189 | .irq_unmask = titan_enable_irq, |
| 186 | .mask = titan_disable_irq, | 190 | .irq_mask = titan_disable_irq, |
| 187 | .mask_ack = titan_disable_irq, | 191 | .irq_mask_ack = titan_disable_irq, |
| 188 | .set_affinity = titan_set_irq_affinity, | 192 | .irq_set_affinity = titan_set_irq_affinity, |
| 189 | }; | 193 | }; |
| 190 | 194 | ||
| 191 | static irqreturn_t | 195 | static irqreturn_t |
