hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/irqchip/irq-i8259.c
....@@ -225,14 +225,6 @@
225225 .shutdown = i8259A_shutdown,
226226 };
227227
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
-
236228 static void init_8259A(int auto_eoi)
237229 {
238230 unsigned long flags;
....@@ -276,15 +268,6 @@
276268 raw_spin_unlock_irqrestore(&i8259A_lock, flags);
277269 }
278270
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
-
288271 static struct resource pic1_io_resource = {
289272 .name = "pic1",
290273 .start = PIC_MASTER_CMD,
....@@ -319,6 +302,10 @@
319302 */
320303 struct irq_domain * __init __init_i8259_irqs(struct device_node *node)
321304 {
305
+ /*
306
+ * PIC_CASCADE_IR is cascade interrupt to second interrupt controller
307
+ */
308
+ int irq = I8259A_IRQ_BASE + PIC_CASCADE_IR;
322309 struct irq_domain *domain;
323310
324311 insert_resource(&ioport_resource, &pic1_io_resource);
....@@ -331,7 +318,9 @@
331318 if (!domain)
332319 panic("Failed to add i8259 IRQ domain");
333320
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);
335324 return domain;
336325 }
337326