diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-08 18:38:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-08 18:38:22 -0400 |
commit | e24bb60e11e3fe9858b71874a4ac59333adbc4fc (patch) | |
tree | 948763fe4c7c173e0b5ac6fa1452c8a55c47bb38 /arch | |
parent | 0bae89ec8b1519dae67036637942f5b5bbaa9424 (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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/kernel/prom_parse.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c index 17fcb4842fe..603dff3ad62 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; |