diff options
Diffstat (limited to 'src/mainboard/tyan/s2880/mainboard.c')
-rw-r--r-- | src/mainboard/tyan/s2880/mainboard.c | 144 |
1 files changed, 82 insertions, 62 deletions
diff --git a/src/mainboard/tyan/s2880/mainboard.c b/src/mainboard/tyan/s2880/mainboard.c index 446dd32bd4..8efc0a5d1b 100644 --- a/src/mainboard/tyan/s2880/mainboard.c +++ b/src/mainboard/tyan/s2880/mainboard.c @@ -11,7 +11,7 @@ unsigned long initial_apicid[MAX_CPUS] = { 0,1 }; -/* +#if 0 static void fixup_lsi_53c1030(struct device *pdev) { // uint8_t byte; @@ -35,9 +35,10 @@ static void fixup_lsi_53c1030(struct device *pdev) // lsi_scsi_init(pdev); } -*/ +#endif //extern static void lsi_scsi_init(struct device *dev); -/*static void print_pci_regs(struct device *dev) +#if 1 +static void print_pci_regs(struct device *dev) { uint8_t byte; int i; @@ -45,72 +46,67 @@ static void fixup_lsi_53c1030(struct device *pdev) for(i=0;i<256;i++) { byte = pci_read_config8(dev, i); - if((i%16)==0) printk_info("\n %02x:",i); - printk_debug(" %02x ",byte); + if((i%16)==0) printk_info("\n%02x:",i); + printk_debug(" %02x",byte); } - printk_debug("\r\n"); + printk_debug("\n"); // pci_write_config8(dev, 0x4, byte); } -*/ -static void onboard_scsi_fixup(void) +#endif +#if 0 +static void print_mem(void) { -// struct device *dev; - -/* // Set the scsi device id's - printk_debug("%2d:%2d:%2d\n",0,1,0); - dev = dev_find_slot(0, PCI_DEVFN(0x1, 0)); - if (dev) { - print_pci_regs(dev); - } - // Set the scsi device id's - printk_debug("%2d:%2d:%2d\n",0,2,0); - dev = dev_find_slot(0, PCI_DEVFN(0x2, 0)); - if (dev) { - print_pci_regs(dev); - } + int i; + int low_1MB = 0; + for(i=low_1MB;i<low_1MB+1024*4;i++) { + if((i%16)==0) printk_debug("\n %08x:",i); + printk_debug(" %02x ",(unsigned char)*((unsigned char *)i)); + } + + for(i=low_1MB;i<low_1MB+1024*4;i++) { + if((i%16)==0) printk_debug("\n %08x:",i); + printk_debug(" %c ",(unsigned char)*((unsigned char *)i)); + } + } +#endif +#if 0 +static void amd8111_enable_rom(void) +{ + uint8_t byte; + struct device *dev; - // Set the scsi device id's - printk_debug("%2d:%2d:%2d\n",0,3,0); - dev = dev_find_slot(0, PCI_DEVFN(0x3, 0)); - if (dev) { - print_pci_regs(dev); - } + /* Enable 4MB rom access at 0xFFC00000 - 0xFFFFFFFF */ + /* Locate the amd8111 */ + dev = dev_find_device(0x1022, 0x7468, 0); - // Set the scsi device id's - printk_debug("%2d:%2d:%2d\n",1,0x7,0); - dev = dev_find_slot(1, PCI_DEVFN(0x7, 0)); - if (dev) { - print_pci_regs(dev); - } - // Set the scsi device id's - printk_debug("%2d:%2d:%2d\n",1,0x8,0); - dev = dev_find_slot(1, PCI_DEVFN(0x8, 0)); - if (dev) { - print_pci_regs(dev); - } - printk_debug("%2d:%2d:%2d\n",2,3,0); - dev = dev_find_slot(2, PCI_DEVFN(0x3, 0)); - if (dev) { - print_pci_regs(dev); - } - // Set the scsi device id's - printk_debug("%2d:%2d:%2d\n",2,6,0); - dev = dev_find_slot(2, PCI_DEVFN(0x6, 0)); - if (dev) { - print_pci_regs(dev); - } - // Set the scsi device id's - printk_debug("%2d:%2d:%2d\n",3,4,0); - dev = dev_find_slot(3, PCI_DEVFN(0x4, 0)); - if (dev) { - print_pci_regs(dev); - } -*/ + /* Set the 4MB enable bit bit */ + byte = pci_read_config8(dev, 0x43); + byte |= 0x80; + pci_write_config8(dev, 0x43, byte); +} +#endif +static void onboard_scsi_fixup(void) +{ + struct device *dev; + unsigned char i,j,k; +#if 1 + for(i=0;i<=4;i++) { + for(j=0;j<=0x1f;j++) { + for (k=0;k<=6;k++){ + dev = dev_find_slot(i, PCI_DEVFN(j, k)); + if (dev) { + printk_debug("%02x:%02x:%02x",i,j,k); + print_pci_regs(dev); + } + } + } + } +#endif -/* +#if 0 dev = dev_find_device(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_53C1030,0); if(!dev) { printk_info("LSI_SCSI_FW_FIXUP: No Device Found!"); @@ -118,9 +114,28 @@ static void onboard_scsi_fixup(void) } lsi_scsi_init(dev); -*/ +#endif +// print_mem(); +// amd8111_enable_rom(); +} +/* +static void vga_fixup(void) { + // we do this right here because: + // - all the hardware is working, and some VGA bioses seem to need + // that + // - we need page 0 below for linuxbios tables. +#if CONFIG_REALMODE_IDT == 1 + printk_debug("INSTALL REAL-MODE IDT\n"); + setup_realmode_idt(); +#endif +#if CONFIG_VGABIOS == 1 + printk_debug("DO THE VGA BIOS\n"); + do_vgabios(); + post_code(0x93); +#endif + } - + */ static void enable(struct chip *chip, enum chip_pass pass) @@ -131,9 +146,14 @@ enable(struct chip *chip, enum chip_pass pass) switch (pass) { default: break; - case CONF_PASS_PRE_BOOT: +// case CONF_PASS_PRE_CONSOLE: +// case CONF_PASS_PRE_PCI: +// case CONF_PASS_POST_PCI: + case CONF_PASS_PRE_BOOT: if (conf->fixup_scsi) onboard_scsi_fixup(); +// if (conf->fixup_vga) +// vga_fixup(); printk_debug("mainboard fixup pass %d done\r\n", pass); break; |