aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-10-08 18:38:22 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-08 18:38:22 -0400
commite24bb60e11e3fe9858b71874a4ac59333adbc4fc (patch)
tree948763fe4c7c173e0b5ac6fa1452c8a55c47bb38
parent0bae89ec8b1519dae67036637942f5b5bbaa9424 (diff)
Revert "[POWERPC] Don't get PCI IRQ from OF for devices with no IRQ"
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>
-rw-r--r--arch/powerpc/kernel/prom_parse.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c
index 17fcb4842fe5..603dff3ad62a 100644
--- a/arch/powerpc/kernel/prom_parse.c
+++ b/arch/powerpc/kernel/prom_parse.c
@@ -914,17 +914,6 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
914 u8 pin; 914 u8 pin;
915 int rc; 915 int rc;
916 916
917 /* We need to first check if the PCI device has a PCI interrupt at all
918 * since we have cases where the device-node might expose non-PCI
919 * interrupts, but the device has no PCI interrupt to it
920 */
921 rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin);
922 if (rc != 0)
923 return rc;
924 /* No pin, exit */
925 if (pin == 0)
926 return -ENODEV;
927
928 /* Check if we have a device node, if yes, fallback to standard OF 917 /* Check if we have a device node, if yes, fallback to standard OF
929 * parsing 918 * parsing
930 */ 919 */
@@ -936,6 +925,12 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
936 * interrupt spec. we assume #interrupt-cells is 1, which is standard 925 * interrupt spec. we assume #interrupt-cells is 1, which is standard
937 * for PCI. If you do different, then don't use that routine. 926 * for PCI. If you do different, then don't use that routine.
938 */ 927 */
928 rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin);
929 if (rc != 0)
930 return rc;
931 /* No pin, exit */
932 if (pin == 0)
933 return -ENODEV;
939 934
940 /* Now we walk up the PCI tree */ 935 /* Now we walk up the PCI tree */
941 lspec = pin; 936 lspec = pin;