add correct PCI IRQ table and DRAM Shadow

This commit is contained in:
Li-Ta Lo 2001-05-08 02:43:15 +00:00
commit 4d255a2d5e
2 changed files with 18 additions and 13 deletions

View file

@ -1,13 +1,13 @@
#include <i386_subr.h>
#define CHECKSUM 0xe6
#define CHECKSUM 0x1F
const struct irq_routing_table intel_irq_routing_table = {
PIRQ_SIGNATURE, /* u32 signature */
PIRQ_VERSION, /* u16 version */
32+16*5, /* there can be total 5 devices on the bus */
32+16*6, /* there can be total 6 devices on the bus */
0x00, /* Bus 0 */
0x08, /* Device 1, Function 0 */
0x0A20, /* reserve IRQ 11, 9, 5, for PCI */
0x0C20, /* reserve IRQ 11, 9, 5, for PCI */
0x1039, /* Silicon Integrated System */
0x0008, /* SiS 85C503/5513 ISA Bridge */
0x00, /* u8 miniport_data - "crap" */
@ -15,10 +15,12 @@ const struct irq_routing_table intel_irq_routing_table = {
CHECKSUM, /* u8 checksum - mod 256 checksum must give zero */
{
/* bus, devfn, {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu */
{0x00, 0x58, {{0x43, 0xdef8}, {0x44, 0xdef8}, {0x41, 0xdef8}, {0x42, 0xdef8}},
{0x00, 0x48, {{0x42, 0xdef8}, {0x43, 0xdef8}, {0x44, 0xdef8}, {0x41, 0xdef8}},
0x01, 0x00},
{0x00, 0x60, {{0x44, 0xdef8}, {0x41, 0xdef8}, {0x42, 0xdef8}, {0x43, 0xdef8}},
{0x00, 0x58, {{0x43, 0xdef8}, {0x44, 0xdef8}, {0x41, 0xdef8}, {0x42, 0xdef8}},
0x02, 0x00},
{0x00, 0x68, {{0x41, 0xdef8}, {0x42, 0xdef8}, {0x43, 0xdef8}, {0x44, 0xdef8}},
0x03, 0x00},
{0x00, 0x01, {{0x61, 0xdef8}, {0x00, 0xdef8}, {0x00, 0xdef8}, {0x00, 0xdef8}},
0x00, 0x00},
{0x00, 0x10, {{0x41, 0xdef8}, {0x42, 0xdef8}, {0x43, 0xdef8}, {0x44, 0xdef8}},
@ -27,4 +29,3 @@ const struct irq_routing_table intel_irq_routing_table = {
0x00, 0x00},
}
};

View file

@ -24,7 +24,7 @@ void keyboard_on()
u8 regval;
struct pci_dev *pcidev;
/* turn on sis630 keyboard/mouse controller */
/* turn on sis550 keyboard/mouse controller */
pcidev = pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, (void *)NULL);
if (pcidev != NULL) {
/* Register 0x47, Keyboard Controller */
@ -40,7 +40,7 @@ void nvram_on()
{
struct pci_dev *pcidev;
/* turn on sis630 nvram. */
/* turn on sis550 nvram. */
pcidev = pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, (void *)NULL);
if (pcidev != NULL) {
/* Enable FFF80000 to FFFFFFFF decode. You have to also enable
@ -57,14 +57,18 @@ void nvram_on()
/* turn off nvram shadow in 0xc0000 ~ 0xfffff, i.e. accessing segment C - F
is actually to the DRAM not NVRAM. For 512KB NVRAM case, this one should be
disabled */
pcidev = pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_630, (void *)NULL);
DBG("device for SiS 630 is 0x%x\n", pcidev);
pcidev = pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_550, (void *)NULL);
DBG("device for SiS 550 is 0x%x\n", pcidev);
if (pcidev != NULL) {
/* read cycle goes to System Memory */
pci_write_config_word(pcidev, 0x70, 0x1fff);
//pci_write_config_word(pcidev, 0x70, 0x1fff);
/* write cycle goest to System Memory */
pci_write_config_word(pcidev, 0x72, 0x1fff);
DBG("Shadow memory disabled in SiS 630\n");
//pci_write_config_word(pcidev, 0x72, 0x1fff);
pci_write_config_word(pcidev, 0x70, 0xFFFF);
pci_write_config_word(pcidev, 0x72, 0xFFFF);
pci_write_config_word(pcidev, 0x74, 0xFFFF);
pci_write_config_byte(pcidev, 0x76, 0xFF);
DBG("Shadow memory disabled in SiS 550\n");
}
#endif