Revert "[POWERPC] Don't get PCI IRQ from OF for devices with no IRQ"
authorLinus Torvalds <torvalds@g5.osdl.org>
Sun, 8 Oct 2006 22:38:22 +0000 (15:38 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 8 Oct 2006 22:38:22 +0000 (15:38 -0700)
This reverts commit 41550c5128150175197257b6ceab2cd50dea7b51.

Quoth Ben Herrenschmidt:
 "Please revert this one for now.  It seems to break G5s :( Looks like
  PCI cells inside Apple IO ASICs don't have a PCI_INTERRUPT_LINE set.
  I need to figure out a better fix."

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/powerpc/kernel/prom_parse.c

index 17fcb48..603dff3 100644 (file)
@@ -914,17 +914,6 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
        u8 pin;
        int rc;
 
-       /* We need to first check if the PCI device has a PCI interrupt at all
-        * since we have cases where the device-node might expose non-PCI
-        * interrupts, but the device has no PCI interrupt to it
-        */
-       rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin);
-       if (rc != 0)
-               return rc;
-       /* No pin, exit */
-       if (pin == 0)
-               return -ENODEV;
-
        /* Check if we have a device node, if yes, fallback to standard OF
         * parsing
         */
@@ -936,6 +925,12 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
         * interrupt spec.  we assume #interrupt-cells is 1, which is standard
         * for PCI. If you do different, then don't use that routine.
         */
+       rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin);
+       if (rc != 0)
+               return rc;
+       /* No pin, exit */
+       if (pin == 0)
+               return -ENODEV;
 
        /* Now we walk up the PCI tree */
        lspec = pin;