summaryrefslogtreecommitdiff
path: root/src/mainboard/tyan/s2880/mainboard.c
diff options
context:
space:
mode:
authorEric Biederman <ebiederm@xmission.com>2003-07-21 20:13:45 +0000
committerEric Biederman <ebiederm@xmission.com>2003-07-21 20:13:45 +0000
commit2c018fba95a5f40c4eaaa20421e8c893dffdb62e (patch)
tree3b6ecc6eb72d145dd70bb549fe0130370d7e40fb /src/mainboard/tyan/s2880/mainboard.c
parent6d4512cdf976fc071720dbec686cf8a1a40f1db0 (diff)
downloadcoreboot-2c018fba95a5f40c4eaaa20421e8c893dffdb62e.tar.xz
- 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.c120
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
+}
+