1 /* 2 * Copyright (C) 2001 Dave Engebretsen IBM Corporation 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 */ 18 19 #include <linux/interrupt.h> 20 #include <linux/of_irq.h> 21 22 #include "pseries.h" 23 24 void request_event_sources_irqs(struct device_node *np, 25 irq_handler_t handler, 26 const char *name) 27 { 28 int i, virq, rc; 29 30 for (i = 0; i < 16; i++) { 31 virq = of_irq_get(np, i); 32 if (virq < 0) 33 return; 34 if (WARN(!virq, "event-sources: Unable to allocate " 35 "interrupt number for %pOF\n", np)) 36 continue; 37 38 rc = request_irq(virq, handler, 0, name, NULL); 39 if (WARN(rc, "event-sources: Unable to request interrupt %d for %pOF\n", 40 virq, np)) 41 return; 42 } 43 } 44