powerpc/pci: Fix broken INTx configuration via OF
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Fri, 9 Feb 2018 06:23:58 +0000 (17:23 +1100)
committerBjorn Helgaas <bhelgaas@google.com>
Sat, 10 Feb 2018 17:49:56 +0000 (11:49 -0600)
59f47eff03a0 ("powerpc/pci: Use of_irq_parse_and_map_pci() helper")
replaced of_irq_parse_pci() + irq_create_of_mapping() with
of_irq_parse_and_map_pci(), but neglected to capture the virq
returned by irq_create_of_mapping(), so virq remained zero, which
caused INTx configuration to fail.

Save the virq value returned by of_irq_parse_and_map_pci() and correct
the virq declaration to match the of_irq_parse_and_map_pci() signature.

Fixes: 59f47eff03a0 "powerpc/pci: Use of_irq_parse_and_map_pci() helper"
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
[bhelgaas: changelog]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
arch/powerpc/kernel/pci-common.c

index 344af823c3c46ad51cd98080db7f0167e1d0c98d..4e884db7b213f63ecfdd8a63faa9c69cc1213ede 100644 (file)
@@ -339,7 +339,7 @@ struct pci_controller* pci_find_hose_for_OF_device(struct device_node* node)
  */
 static int pci_read_irq_line(struct pci_dev *pci_dev)
 {
-       unsigned int virq = 0;
+       int virq;
 
        pr_debug("PCI: Try to map irq for %s...\n", pci_name(pci_dev));
 
@@ -347,7 +347,8 @@ static int pci_read_irq_line(struct pci_dev *pci_dev)
        memset(&oirq, 0xff, sizeof(oirq));
 #endif
        /* Try to get a mapping from the device-tree */
-       if (!of_irq_parse_and_map_pci(pci_dev, 0, 0)) {
+       virq = of_irq_parse_and_map_pci(pci_dev, 0, 0);
+       if (virq <= 0) {
                u8 line, pin;
 
                /* If that fails, lets fallback to what is in the config