Commit e6d30ab1 authored by Grant Likely's avatar Grant Likely

of/irq: simplify args to irq_create_of_mapping

All the callers of irq_create_of_mapping() pass the contents of a struct
of_phandle_args structure to the function. Since all the callers already
have an of_phandle_args pointer, why not pass it directly to
irq_create_of_mapping()?
Signed-off-by: default avatarGrant Likely <grant.likely@linaro.org>
Acked-by: default avatarMichal Simek <monstr@monstr.eu>
Acked-by: default avatarTony Lindgren <tony@atomide.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
parent 530210c7
...@@ -847,7 +847,7 @@ static int __init pci_v3_map_irq_dt(const struct pci_dev *dev, u8 slot, u8 pin) ...@@ -847,7 +847,7 @@ static int __init pci_v3_map_irq_dt(const struct pci_dev *dev, u8 slot, u8 pin)
return 0; return 0;
} }
return irq_create_of_mapping(oirq.np, oirq.args, oirq.args_count); return irq_create_of_mapping(&oirq);
} }
static int __init pci_v3_dtprobe(struct platform_device *pdev, static int __init pci_v3_dtprobe(struct platform_device *pdev,
......
...@@ -246,7 +246,7 @@ int pci_read_irq_line(struct pci_dev *pci_dev) ...@@ -246,7 +246,7 @@ int pci_read_irq_line(struct pci_dev *pci_dev)
oirq.args_count, oirq.args[0], oirq.args[1], oirq.args_count, oirq.args[0], oirq.args[1],
of_node_full_name(oirq.np)); of_node_full_name(oirq.np));
virq = irq_create_of_mapping(oirq.np, oirq.args, oirq.args_count); virq = irq_create_of_mapping(&oirq);
} }
if (!virq) { if (!virq) {
pr_debug(" Failed to map !\n"); pr_debug(" Failed to map !\n");
......
...@@ -33,7 +33,7 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) ...@@ -33,7 +33,7 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
slot, pin); slot, pin);
return 0; return 0;
} }
irq = irq_create_of_mapping(dev_irq.np, dev_irq.args, dev_irq.args_count); irq = irq_create_of_mapping(&dev_irq);
dev_info(&dev->dev, "SLOT:%d PIN:%d IRQ:%d\n", slot, pin, irq); dev_info(&dev->dev, "SLOT:%d PIN:%d IRQ:%d\n", slot, pin, irq);
return irq; return irq;
} }
...@@ -594,7 +594,7 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) ...@@ -594,7 +594,7 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
return 0; return 0;
} }
irq = irq_create_of_mapping(dev_irq.np, dev_irq.args, dev_irq.args_count); irq = irq_create_of_mapping(&dev_irq);
if (irq == 0) if (irq == 0)
pr_crit("pci %s: no irq found for pin %u\n", pr_crit("pci %s: no irq found for pin %u\n",
......
...@@ -266,7 +266,7 @@ static int pci_read_irq_line(struct pci_dev *pci_dev) ...@@ -266,7 +266,7 @@ static int pci_read_irq_line(struct pci_dev *pci_dev)
oirq.args_count, oirq.args[0], oirq.args[1], oirq.args_count, oirq.args[0], oirq.args[1],
of_node_full_name(oirq.np)); of_node_full_name(oirq.np));
virq = irq_create_of_mapping(oirq.np, oirq.args, oirq.args_count); virq = irq_create_of_mapping(&oirq);
} }
if(virq == NO_IRQ) { if(virq == NO_IRQ) {
pr_debug(" Failed to map !\n"); pr_debug(" Failed to map !\n");
......
...@@ -511,7 +511,7 @@ static __init int celleb_setup_pciex(struct device_node *node, ...@@ -511,7 +511,7 @@ static __init int celleb_setup_pciex(struct device_node *node,
pr_err("PCIEXC:Failed to map irq\n"); pr_err("PCIEXC:Failed to map irq\n");
goto error; goto error;
} }
virq = irq_create_of_mapping(oirq.np, oirq.args, oirq.args_count); virq = irq_create_of_mapping(&oirq);
if (request_irq(virq, pciex_handle_internal_irq, if (request_irq(virq, pciex_handle_internal_irq,
0, "pciex", (void *)phb)) { 0, "pciex", (void *)phb)) {
pr_err("PCIEXC:Failed to request irq\n"); pr_err("PCIEXC:Failed to request irq\n");
......
...@@ -66,7 +66,7 @@ static int __init txx9_serial_init(void) ...@@ -66,7 +66,7 @@ static int __init txx9_serial_init(void)
#ifdef CONFIG_SERIAL_TXX9_CONSOLE #ifdef CONFIG_SERIAL_TXX9_CONSOLE
req.membase = ioremap(req.mapbase, 0x24); req.membase = ioremap(req.mapbase, 0x24);
#endif #endif
req.irq = irq_create_of_mapping(irq.np, irq.args, irq.args_count); req.irq = irq_create_of_mapping(&irq);
req.flags |= UPF_IOREMAP | UPF_BUGGY_UART req.flags |= UPF_IOREMAP | UPF_BUGGY_UART
/*HAVE_CTS_LINE*/; /*HAVE_CTS_LINE*/;
req.uartclk = 83300000; req.uartclk = 83300000;
......
...@@ -236,11 +236,8 @@ static unsigned int __init spider_find_cascade_and_node(struct spider_pic *pic) ...@@ -236,11 +236,8 @@ static unsigned int __init spider_find_cascade_and_node(struct spider_pic *pic)
* tree in case the device-tree is ever fixed * tree in case the device-tree is ever fixed
*/ */
struct of_phandle_args oirq; struct of_phandle_args oirq;
if (of_irq_parse_one(pic->host->of_node, 0, &oirq) == 0) { if (of_irq_parse_one(pic->host->of_node, 0, &oirq) == 0)
virq = irq_create_of_mapping(oirq.np, oirq.args, return irq_create_of_mapping(&oirq);
oirq.args_count);
return virq;
}
/* Now do the horrible hacks */ /* Now do the horrible hacks */
tmp = of_get_property(pic->host->of_node, "#interrupt-cells", NULL); tmp = of_get_property(pic->host->of_node, "#interrupt-cells", NULL);
......
...@@ -190,8 +190,7 @@ static int __init spu_map_interrupts(struct spu *spu, struct device_node *np) ...@@ -190,8 +190,7 @@ static int __init spu_map_interrupts(struct spu *spu, struct device_node *np)
ret = -EINVAL; ret = -EINVAL;
pr_debug(" irq %d no 0x%x on %s\n", i, oirq.args[0], pr_debug(" irq %d no 0x%x on %s\n", i, oirq.args[0],
oirq.np->full_name); oirq.np->full_name);
spu->irqs[i] = irq_create_of_mapping(oirq.np, spu->irqs[i] = irq_create_of_mapping(&oirq);
oirq.args, oirq.args_count);
if (spu->irqs[i] == NO_IRQ) { if (spu->irqs[i] == NO_IRQ) {
pr_debug("spu_new: failed to map it !\n"); pr_debug("spu_new: failed to map it !\n");
goto err; goto err;
......
...@@ -334,7 +334,7 @@ static void hpcd_final_uli5288(struct pci_dev *dev) ...@@ -334,7 +334,7 @@ static void hpcd_final_uli5288(struct pci_dev *dev)
laddr[0] = (hose->first_busno << 16) | (PCI_DEVFN(31, 0) << 8); laddr[0] = (hose->first_busno << 16) | (PCI_DEVFN(31, 0) << 8);
laddr[1] = laddr[2] = 0; laddr[1] = laddr[2] = 0;
of_irq_parse_raw(hosenode, &pin, 1, laddr, &oirq); of_irq_parse_raw(hosenode, &pin, 1, laddr, &oirq);
dev->irq = irq_create_of_mapping(oirq.np, oirq.args, oirq.args_count); dev->irq = irq_create_of_mapping(&oirq);
} }
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, hpcd_quirk_uli1575); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, hpcd_quirk_uli1575);
......
...@@ -59,8 +59,7 @@ void request_event_sources_irqs(struct device_node *np, ...@@ -59,8 +59,7 @@ void request_event_sources_irqs(struct device_node *np,
index++) { index++) {
if (count > 15) if (count > 15)
break; break;
virqs[count] = irq_create_of_mapping(oirq.np, oirq.args, virqs[count] = irq_create_of_mapping(&oirq);
oirq.args_count);
if (virqs[count] == NO_IRQ) { if (virqs[count] == NO_IRQ) {
pr_err("event-sources: Unable to allocate " pr_err("event-sources: Unable to allocate "
"interrupt number for %s\n", "interrupt number for %s\n",
......
...@@ -120,7 +120,7 @@ static int x86_of_pci_irq_enable(struct pci_dev *dev) ...@@ -120,7 +120,7 @@ static int x86_of_pci_irq_enable(struct pci_dev *dev)
if (ret) if (ret)
return ret; return ret;
virq = irq_create_of_mapping(oirq.np, oirq.args, oirq.args_count); virq = irq_create_of_mapping(&oirq);
if (virq == 0) if (virq == 0)
return -EINVAL; return -EINVAL;
dev->irq = virq; dev->irq = virq;
......
...@@ -41,7 +41,7 @@ unsigned int irq_of_parse_and_map(struct device_node *dev, int index) ...@@ -41,7 +41,7 @@ unsigned int irq_of_parse_and_map(struct device_node *dev, int index)
if (of_irq_parse_one(dev, index, &oirq)) if (of_irq_parse_one(dev, index, &oirq))
return 0; return 0;
return irq_create_of_mapping(oirq.np, oirq.args, oirq.args_count); return irq_create_of_mapping(&oirq);
} }
EXPORT_SYMBOL_GPL(irq_of_parse_and_map); EXPORT_SYMBOL_GPL(irq_of_parse_and_map);
......
...@@ -654,7 +654,7 @@ static int __init mvebu_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) ...@@ -654,7 +654,7 @@ static int __init mvebu_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
if (ret) if (ret)
return ret; return ret;
return irq_create_of_mapping(oirq.np, oirq.args, oirq.args_count); return irq_create_of_mapping(&oirq);
} }
static struct pci_bus *mvebu_pcie_scan_bus(int nr, struct pci_sys_data *sys) static struct pci_bus *mvebu_pcie_scan_bus(int nr, struct pci_sys_data *sys)
......
...@@ -37,9 +37,7 @@ extern int of_irq_parse_raw(struct device_node *parent, const __be32 *intspec, ...@@ -37,9 +37,7 @@ extern int of_irq_parse_raw(struct device_node *parent, const __be32 *intspec,
struct of_phandle_args *out_irq); struct of_phandle_args *out_irq);
extern int of_irq_parse_one(struct device_node *device, int index, extern int of_irq_parse_one(struct device_node *device, int index,
struct of_phandle_args *out_irq); struct of_phandle_args *out_irq);
extern unsigned int irq_create_of_mapping(struct device_node *controller, extern unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data);
const u32 *intspec,
unsigned int intsize);
extern int of_irq_to_resource(struct device_node *dev, int index, extern int of_irq_to_resource(struct device_node *dev, int index,
struct resource *r); struct resource *r);
extern int of_irq_count(struct device_node *dev); extern int of_irq_count(struct device_node *dev);
......
...@@ -465,27 +465,26 @@ int irq_create_strict_mappings(struct irq_domain *domain, unsigned int irq_base, ...@@ -465,27 +465,26 @@ int irq_create_strict_mappings(struct irq_domain *domain, unsigned int irq_base,
} }
EXPORT_SYMBOL_GPL(irq_create_strict_mappings); EXPORT_SYMBOL_GPL(irq_create_strict_mappings);
unsigned int irq_create_of_mapping(struct device_node *controller, unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data)
const u32 *intspec, unsigned int intsize)
{ {
struct irq_domain *domain; struct irq_domain *domain;
irq_hw_number_t hwirq; irq_hw_number_t hwirq;
unsigned int type = IRQ_TYPE_NONE; unsigned int type = IRQ_TYPE_NONE;
unsigned int virq; unsigned int virq;
domain = controller ? irq_find_host(controller) : irq_default_domain; domain = irq_data->np ? irq_find_host(irq_data->np) : irq_default_domain;
if (!domain) { if (!domain) {
pr_warn("no irq domain found for %s !\n", pr_warn("no irq domain found for %s !\n",
of_node_full_name(controller)); of_node_full_name(irq_data->np));
return 0; return 0;
} }
/* If domain has no translation, then we assume interrupt line */ /* If domain has no translation, then we assume interrupt line */
if (domain->ops->xlate == NULL) if (domain->ops->xlate == NULL)
hwirq = intspec[0]; hwirq = irq_data->args[0];
else { else {
if (domain->ops->xlate(domain, controller, intspec, intsize, if (domain->ops->xlate(domain, irq_data->np, irq_data->args,
&hwirq, &type)) irq_data->args_count, &hwirq, &type))
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment