.. | .. |
---|
225 | 225 | .shutdown = i8259A_shutdown, |
---|
226 | 226 | }; |
---|
227 | 227 | |
---|
228 | | -static int __init i8259A_init_sysfs(void) |
---|
229 | | -{ |
---|
230 | | - register_syscore_ops(&i8259_syscore_ops); |
---|
231 | | - return 0; |
---|
232 | | -} |
---|
233 | | - |
---|
234 | | -device_initcall(i8259A_init_sysfs); |
---|
235 | | - |
---|
236 | 228 | static void init_8259A(int auto_eoi) |
---|
237 | 229 | { |
---|
238 | 230 | unsigned long flags; |
---|
.. | .. |
---|
276 | 268 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
---|
277 | 269 | } |
---|
278 | 270 | |
---|
279 | | -/* |
---|
280 | | - * IRQ2 is cascade interrupt to second interrupt controller |
---|
281 | | - */ |
---|
282 | | -static struct irqaction irq2 = { |
---|
283 | | - .handler = no_action, |
---|
284 | | - .name = "cascade", |
---|
285 | | - .flags = IRQF_NO_THREAD, |
---|
286 | | -}; |
---|
287 | | - |
---|
288 | 271 | static struct resource pic1_io_resource = { |
---|
289 | 272 | .name = "pic1", |
---|
290 | 273 | .start = PIC_MASTER_CMD, |
---|
.. | .. |
---|
319 | 302 | */ |
---|
320 | 303 | struct irq_domain * __init __init_i8259_irqs(struct device_node *node) |
---|
321 | 304 | { |
---|
| 305 | + /* |
---|
| 306 | + * PIC_CASCADE_IR is cascade interrupt to second interrupt controller |
---|
| 307 | + */ |
---|
| 308 | + int irq = I8259A_IRQ_BASE + PIC_CASCADE_IR; |
---|
322 | 309 | struct irq_domain *domain; |
---|
323 | 310 | |
---|
324 | 311 | insert_resource(&ioport_resource, &pic1_io_resource); |
---|
.. | .. |
---|
331 | 318 | if (!domain) |
---|
332 | 319 | panic("Failed to add i8259 IRQ domain"); |
---|
333 | 320 | |
---|
334 | | - setup_irq(I8259A_IRQ_BASE + PIC_CASCADE_IR, &irq2); |
---|
| 321 | + if (request_irq(irq, no_action, IRQF_NO_THREAD, "cascade", NULL)) |
---|
| 322 | + pr_err("Failed to register cascade interrupt\n"); |
---|
| 323 | + register_syscore_ops(&i8259_syscore_ops); |
---|
335 | 324 | return domain; |
---|
336 | 325 | } |
---|
337 | 326 | |
---|