summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-01-10 13:26:00 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-01-10 13:26:00 +0000
commit338f1dc186d23648ebbfcf583f637b40ace19378 (patch)
treeb5aaa95ef047be27aa63e6426d41349988d72847 /c
parentRenaming mcp750 to motorola_shared since that is the basis for both (diff)
downloadrtems-338f1dc186d23648ebbfcf583f637b40ace19378.tar.bz2
Patch from Eric Valette <valette@crf.canon.fr> that makes sure the
interrupt code works on "old buggy MCP750 boards". The symptom was that there was no ethernet PCI IRQ at all.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/shared/irq/irq_init.c29
1 files changed, 5 insertions, 24 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/irq/irq_init.c b/c/src/lib/libbsp/powerpc/shared/irq/irq_init.c
index f97f21325f..1dd30bc583 100644
--- a/c/src/lib/libbsp/powerpc/shared/irq/irq_init.c
+++ b/c/src/lib/libbsp/powerpc/shared/irq/irq_init.c
@@ -25,6 +25,10 @@
#include <libcpu/raw_exception.h>
#include <bsp/motorola.h>
+/*
+#define SHOW_ISA_PCI_BRIDGE_SETTINGS
+*/
+
typedef struct {
unsigned char bus; /* few chance the PCI/ISA bridge is not on first bus but ... */
unsigned char device;
@@ -126,9 +130,7 @@ void VIA_isa_bridge_interrupts_setup(void)
#ifdef SCAN_PCI_PRINT
printk("Vendor/device = %x\n", temp);
#endif
- if ( (temp == (((unsigned short) PCI_VENDOR_ID_VIA) | (PCI_DEVICE_ID_VIA_82C586_1 << 16)))
- ||
- (temp == (((unsigned short) PCI_VENDOR_ID_VIA) | (PCI_DEVICE_ID_VIA_82C586_0 << 16)))
+ if ((temp == (((unsigned short) PCI_VENDOR_ID_VIA) | (PCI_DEVICE_ID_VIA_82C586_0 << 16)))
) {
bridge = pci_dev;
via_82c586 = &bridge;
@@ -197,27 +199,6 @@ loop_exit:
printk(" PCI ISA bridge control2 = %x\n", (unsigned) tmp);
#endif
/*
- * Enable 4D0/4D1 ISA interrupt level/edge config registers
- */
- tmp |= 0x20;
- pci_write_config_byte(via_82c586->bus, via_82c586->device, via_82c586->function,
- 0x47, tmp);
-#ifdef SHOW_ISA_PCI_BRIDGE_SETTINGS
- tmp = inb(ISA8259_S_ELCR);
- printk(" PCI ISA bridge slave edge/level control bit = %x\n", (unsigned) tmp);
- tmp = inb(ISA8259_M_ELCR);;
- printk(" PCI ISA bridge master edge/level control bit = %x\n", (unsigned) tmp);
-#endif
- /*
- * Must disable the 4D0/4D1 ISA interrupt level/edge config registers
- * or the card will die a soon as we we will enable external interrupts
- */
- pci_read_config_byte(via_82c586->bus, via_82c586->device, via_82c586->function,
- 0x47, &tmp);
- tmp &= ~(0x20);
- pci_write_config_byte(via_82c586->bus, via_82c586->device, via_82c586->function,
- 0x47, tmp);
- /*
* Show the Interrupt inputs inverting/non-inverting level status
*/
pci_read_config_byte(via_82c586->bus, via_82c586->device, via_82c586->function,