From d3956f5c222582b116522de7d1f613af7ed741b6 Mon Sep 17 00:00:00 2001 From: Li-Ta Lo Date: Mon, 26 Mar 2001 01:55:46 +0000 Subject: [PATCH] minor changes after Eric's major merge --- src/arch/i386/lib/i386_subr.c | 1 + .../leadtek/winfast6300/irq_tables.c | 2 +- src/mainboard/matsonic/ms7308e/irq_tables.c | 3 +- src/mainboard/pcchips/m810lmr/irq_tables.c | 2 +- src/northsouthbridge/sis/630/northbridge.c | 11 ---- src/northsouthbridge/sis/630/southbridge.c | 50 ++++++++++++++++++- src/northsouthbridge/sis/730/northbridge.c | 10 ---- util/config/winfast.config | 2 +- 8 files changed, 54 insertions(+), 27 deletions(-) diff --git a/src/arch/i386/lib/i386_subr.c b/src/arch/i386/lib/i386_subr.c index ff4bd15b61..93406942b6 100644 --- a/src/arch/i386/lib/i386_subr.c +++ b/src/arch/i386/lib/i386_subr.c @@ -6,6 +6,7 @@ #include #include #include +#include void intel_cache_on(unsigned long base, unsigned long totalram) { diff --git a/src/mainboard/leadtek/winfast6300/irq_tables.c b/src/mainboard/leadtek/winfast6300/irq_tables.c index 6aa8ff6281..8a872815fc 100644 --- a/src/mainboard/leadtek/winfast6300/irq_tables.c +++ b/src/mainboard/leadtek/winfast6300/irq_tables.c @@ -1,4 +1,4 @@ -#include +#include #ifndef SIS630S #define CHECKSUM 0xe6 diff --git a/src/mainboard/matsonic/ms7308e/irq_tables.c b/src/mainboard/matsonic/ms7308e/irq_tables.c index e2728ee586..35ac6a1eb6 100644 --- a/src/mainboard/matsonic/ms7308e/irq_tables.c +++ b/src/mainboard/matsonic/ms7308e/irq_tables.c @@ -1,4 +1,5 @@ -#include +#include + #define CHECKSUM 0xe6 const struct irq_routing_table intel_irq_routing_table = { PIRQ_SIGNATURE, /* u32 signature */ diff --git a/src/mainboard/pcchips/m810lmr/irq_tables.c b/src/mainboard/pcchips/m810lmr/irq_tables.c index 1db2470aa9..35ac6a1eb6 100644 --- a/src/mainboard/pcchips/m810lmr/irq_tables.c +++ b/src/mainboard/pcchips/m810lmr/irq_tables.c @@ -1,4 +1,4 @@ -#include +#include #define CHECKSUM 0xe6 const struct irq_routing_table intel_irq_routing_table = { diff --git a/src/northsouthbridge/sis/630/northbridge.c b/src/northsouthbridge/sis/630/northbridge.c index 06e766a1b7..b9c993dc07 100644 --- a/src/northsouthbridge/sis/630/northbridge.c +++ b/src/northsouthbridge/sis/630/northbridge.c @@ -106,14 +106,3 @@ void framebuffer_on() pcibios_write_config_word(0, devfn, 0x3e, command); } #endif /* HAVE_FRAMEBUFFER */ - -#define RTABLE_DEST 0xf0000 - -void copy_irq_routing_table(void) -{ -#ifdef USE_DOC_MIL - /* copy the PCI IRQ table to segment F, not neceressary for 512KB flash case */ - memcpy((char *) RTABLE_DEST, &intel_irq_routing_table, intel_irq_routing_table.size); -#endif /* USE_DOC_MIL */ -} - diff --git a/src/northsouthbridge/sis/630/southbridge.c b/src/northsouthbridge/sis/630/southbridge.c index 29382b7479..f0c884bfa7 100644 --- a/src/northsouthbridge/sis/630/southbridge.c +++ b/src/northsouthbridge/sis/630/southbridge.c @@ -91,6 +91,52 @@ serial_irq_fixedup(void) } } +/* apc_fixup: Fix up the Mux-ed GPIO Lines controlled by APC registers + * + * For SiS630A/B Mainboards, the MAC address of the internal SiS900 is stored in EEPROM + * on the board. The EEPROM interface lines are muxed with GPIO pins and are selected by + * some APC registers. + */ +static void +apc_fixup(void) +{ + u8 regval, revision; + struct pci_dev *host_bridge, *isa_bridge; + + host_bridge = pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_630, + (void *) NULL); + if (host_bridge == NULL) + return; + pci_read_config_byte(host_bridge, PCI_CLASS_REVISION, &revision); + + isa_bridge = pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, + (void *)NULL); + if (isa_bridge != NULL) { + /* Register 0x48, select APC control registers */ + pci_read_config_byte(isa_bridge, 0x48, ®val); + pci_write_config_byte(isa_bridge, 0x48, regval | 0x40); + + /* Enable MAC Serial ROM Autoload */ + outb(0x01, 0x70); + regval = inb(0x71); + outb(regval | 0x80, 0x71); + + /* Select Programmable LED0 and EEPROM Data Out for GPIO8 and GPIO3 */ + outb(0x02, 0x70); + regval = inb(0x71); + outb(regval | 0x19, 0x71); + + /* select Keyboard/Mouse function for GPIO Pin [14:10] */ + outb(0x02, 0x70); + regval = inb(0x71); + outb(regval | 0x40, 0x71); + + /* Register 0x48, select RTC registers */ + pci_read_config_byte(isa_bridge, 0x48, ®val); + pci_write_config_byte(isa_bridge, 0x48, regval & ~0x40); + } +} + static void acpi_fixup(void) { @@ -100,7 +146,6 @@ acpi_fixup(void) if (pcidev != NULL) { unsigned char val; unsigned short acpibase = 0xc000, temp; - int i; // the following is to turn off software watchdogs. // we co-op the address space from c000-cfff here. Temporarily. @@ -149,9 +194,9 @@ acpi_fixup(void) void final_southbridge_fixup() { +#ifdef OLD_KERNEL_HACK struct pci_dev *pcidev; -#ifdef OLD_KERNEL_HACK pcidev = pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, (void *)NULL); if (pcidev != NULL) { printk("Remapping IRQ on southbridge for OLD_KERNEL_HACK\n"); @@ -182,6 +227,7 @@ final_southbridge_fixup() } #endif /* OLD_KERNEL_HACK */ + apc_fixup(); serial_irq_fixedup(); acpi_fixup(); diff --git a/src/northsouthbridge/sis/730/northbridge.c b/src/northsouthbridge/sis/730/northbridge.c index 4803b6f768..9433e31d75 100644 --- a/src/northsouthbridge/sis/730/northbridge.c +++ b/src/northsouthbridge/sis/730/northbridge.c @@ -107,13 +107,3 @@ void framebuffer_on() } #endif /* HAVE_FRAMEBUFFER */ -#define RTABLE_DEST 0xf0000 - -void copy_irq_routing_table(void) -{ -#ifdef USE_DOC_MIL - /* copy the PCI IRQ table to segment F, not neceressary for 512KB flash case */ - memcpy((char *) RTABLE_DEST, &intel_irq_routing_table, intel_irq_routing_table.size); -#endif /* USE_DOC_MIL */ -} - diff --git a/util/config/winfast.config b/util/config/winfast.config index 6f2abaa183..55e5819b65 100644 --- a/util/config/winfast.config +++ b/util/config/winfast.config @@ -1,5 +1,5 @@ # Sample config file for Winfast 6300 with DoC Millennium (as root) - +arch i386 # This will make a target directory of ./winfast target winfast