diff options
author | Eric Biederman <ebiederm@xmission.com> | 2003-07-21 20:13:45 +0000 |
---|---|---|
committer | Eric Biederman <ebiederm@xmission.com> | 2003-07-21 20:13:45 +0000 |
commit | 2c018fba95a5f40c4eaaa20421e8c893dffdb62e (patch) | |
tree | 3b6ecc6eb72d145dd70bb549fe0130370d7e40fb /src/mainboard/tyan/s2880/mainboard.c | |
parent | 6d4512cdf976fc071720dbec686cf8a1a40f1db0 (diff) |
- First pass at s2880 support.
- SMP cleanups (remove SMP only use CONFIG_SMP)
- Minor tweaks to romcc to keep it from taking forever compiling
- failover fixes
- Get a good implementation of k8_cpufixup and sizeram for the opteron
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@998 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/mainboard/tyan/s2880/mainboard.c')
-rw-r--r-- | src/mainboard/tyan/s2880/mainboard.c | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/src/mainboard/tyan/s2880/mainboard.c b/src/mainboard/tyan/s2880/mainboard.c new file mode 100644 index 0000000000..c4f7cf8015 --- /dev/null +++ b/src/mainboard/tyan/s2880/mainboard.c @@ -0,0 +1,120 @@ +#include <console/console.h> +#include <device/device.h> +#include <device/pci.h> +#include <device/pci_ids.h> +#include <device/pci_ops.h> +#include <part/mainboard.h> +//#include "lsi_scsi.c" +unsigned long initial_apicid[MAX_CPUS] = +{ + 0,1 +}; +/* +static void fixup_lsi_53c1030(struct device *pdev) +{ +// uint8_t byte; + uint16_t word; + + byte = 1; + pci_write_config8(pdev, 0xff, byte); + // Set the device id +// pci_write_config_word(pdev, PCI_DEVICE_ID, PCI_DEVICE_ID_LSILOGIC_53C1030); + // Set the subsytem vendor id +// pci_write_config16(pdev, PCI_SUBSYSTEM_VENDOR_ID, PCI_VENDOR_ID_TYAN); + word = 0x10f1; + pci_write_config16(pdev, PCI_SUBSYSTEM_VENDOR_ID, word); + // Set the subsytem id + word = 0x2880; + pci_write_config16(pdev, PCI_SUBSYSTEM_ID, word); + // Disable writes to the device id + byte = 0; + pci_write_config8(pdev, 0xff, byte); + +// lsi_scsi_init(pdev); + +} +//extern static void lsi_scsi_init(struct device *dev); +static void print_pci_regs(struct device *dev) +{ + uint8_t byte; + int i; + + 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); + } + printk_debug("\r\n"); + +// pci_write_config8(dev, 0x4, byte); + +} +*/ +static void onboard_scsi_fixup(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) { + } + // 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); + } + + // Set the scsi device id's + printk_debug("%2d:%2d:%2d\n",1,0xa,0); + dev = dev_find_slot(1, PCI_DEVFN(0xa, 0)); + if (dev) { + print_pci_regs(dev); + } + // Set the scsi device id's + printk_debug("%2d:%2d:%2d\n",1,0xa,1); + dev = dev_find_slot(1, PCI_DEVFN(0xa, 1)); + if (dev) { + print_pci_regs(dev); + } + printk_debug("%2d:%2d:%2d\n",1,9,0); + dev = dev_find_slot(1, PCI_DEVFN(0x9, 0)); + if (dev) { + print_pci_regs(dev); + } + // Set the scsi device id's + printk_debug("%2d:%2d:%2d\n",1,9,1); + dev = dev_find_slot(1, PCI_DEVFN(0x9, 1)); + if (dev) { + print_pci_regs(dev); + } +*/ + +/* + 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!"); + return; + } + + lsi_scsi_init(dev); +*/ +} + +void mainboard_fixup(void) +{ + printk_debug("Enter mainboard_fixup\r\n"); +// onboard_device_fixup + onboard_scsi_fixup(); + printk_debug("mainboard fixup done\r\n"); + +} +void final_mainboard_fixup(void) +{ +#if 0 + enable_ide_devices(); +#endif +} + |