1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (C) 2001 Dave Engebretsen IBM Corporation
4  */
5 
6 #include <linux/interrupt.h>
7 #include <linux/of_irq.h>
8 
9 #include "pseries.h"
10 
request_event_sources_irqs(struct device_node * np,irq_handler_t handler,const char * name)11 void request_event_sources_irqs(struct device_node *np,
12 				irq_handler_t handler,
13 				const char *name)
14 {
15 	int i, virq, rc;
16 
17 	for (i = 0; i < 16; i++) {
18 		virq = of_irq_get(np, i);
19 		if (virq < 0)
20 			return;
21 		if (WARN(!virq, "event-sources: Unable to allocate "
22 			        "interrupt number for %pOF\n", np))
23 			continue;
24 
25 		rc = request_irq(virq, handler, 0, name, NULL);
26 		if (WARN(rc, "event-sources: Unable to request interrupt %d for %pOF\n",
27 		    virq, np))
28 			return;
29 	}
30 }
31