support for new mobos and fixes
[coreboot.git] / src / mainboard / tyan / s2880 / mainboard.c
index 4c86db85ce65440c5405d28bd6dec20b353723f3..8efc0a5d1b290fba267f244f7f3105ce400a2022 100644 (file)
@@ -1,17 +1,17 @@
 #include <console/console.h>
 #include <device/device.h>
-//#include <device/chip.h>
+#include <device/chip.h>
 #include <device/pci.h>
 #include <device/pci_ids.h>
 #include <device/pci_ops.h>
-//#include "chip.h"
+#include "chip.h"
 //#include <part/mainboard.h>
 //#include "lsi_scsi.c"
 unsigned long initial_apicid[MAX_CPUS] =
 {
        0,1
 };
-/*
+#if 0
 static void fixup_lsi_53c1030(struct device *pdev)
 {
 //     uint8_t byte;
@@ -35,7 +35,9 @@ static void fixup_lsi_53c1030(struct device *pdev)
 //     lsi_scsi_init(pdev);
        
 }
+#endif
 //extern static void lsi_scsi_init(struct device *dev);
+#if 1
 static void print_pci_regs(struct device *dev)
 {
       uint8_t byte;
@@ -44,57 +46,67 @@ static void print_pci_regs(struct device *dev)
       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);
 
 }
-*/
+#endif
+#if 0
+static void print_mem(void)
+{
+        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;
+
+        /* Enable 4MB rom access at 0xFFC00000 - 0xFFFFFFFF */
+        /* Locate the amd8111 */
+        dev = dev_find_device(0x1022, 0x7468, 0);
+
+        /* 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;
-/*
-       // 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);
-        }
-*/
+       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!");
@@ -102,10 +114,29 @@ 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)
 {
@@ -115,9 +146,14 @@ enable(struct chip *chip, enum chip_pass pass)
 
         switch (pass) {
                default: break;
-               case CONF_PASS_PRE_BOOT:
-                        if (conf->fixup_scsi)
+//             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;
@@ -132,7 +168,7 @@ void final_mainboard_fixup(void)
 }
 
 struct chip_control mainboard_tyan_s2880_control = {
-               enable: enable,
-               name:   "Tyan s2880 mainboard "
+               .enable= enable,
+               .name=   "Tyan s2880 mainboard "
 };
-*/
+