Add detection/dump support for ServerEngines SE-SM 4210-P01.
[coreboot.git] / util / superiotool / superiotool.c
index 583a974fd4231abdab6e24eeef034114b13b082a..293aaa617d018ef156abe976668616fab4d50862 100644 (file)
@@ -58,11 +58,23 @@ void exit_conf_mode_winbond_fintek_ite_8787(uint16_t port)
        regwrite(port, 0x02, 0x02);     /* ITE */
 }
 
+void enter_conf_mode_fintek_7777(uint16_t port)
+{
+       OUTB(0x77, port);
+       OUTB(0x77, port);
+}
+
+void exit_conf_mode_fintek_7777(uint16_t port)
+{
+       OUTB(0xaa, port);               /* Fintek */
+}
+
 int superio_unknown(const struct superio_registers reg_table[], uint16_t id)
 {
        return !strncmp(get_superio_name(reg_table, id), "<unknown>", 9);
 }
 
+
 const char *get_superio_name(const struct superio_registers reg_table[],
                             uint16_t id)
 {
@@ -93,7 +105,10 @@ static void dump_regs(const struct superio_registers reg_table[],
                        printf(" (%s)", reg_table[i].ldn[j].name);
                regwrite(port, ldn_sel, reg_table[i].ldn[j].ldn);
        } else {
-               printf("Register dump:");
+               if (reg_table[i].ldn[j].name == NULL)
+                       printf("Register dump:");
+               else
+                       printf("(%s)", reg_table[i].ldn[j].name);
        }
 
        idx = reg_table[i].ldn[j].idx;
@@ -161,13 +176,13 @@ void dump_io(uint16_t iobase, uint16_t length)
 {
        uint16_t i;
 
-       printf("Dumping %d IO mapped registers at base 0x%04x:\n", 
+       printf("Dumping %d I/O mapped registers at base 0x%04x:\n",
                        length, iobase);
-       for (i=0; i<length; i++)
-               printf ("%02x ", i);
+       for (i = 0; i < length; i++)
+               printf("%02x ", i);
        printf("\n");
-       for (i=0; i<length; i++)
-               printf ("%02x ", INB(iobase +i));
+       for (i = 0; i < length; i++)
+               printf("%02x ", INB(iobase + i));
        printf("\n");
 }
 
@@ -282,6 +297,13 @@ int main(int argc, char *argv[])
 
        print_version();
 
+#ifdef PCI_SUPPORT
+       /* Do some basic libpci init. */
+       pacc = pci_alloc();
+       pci_init(pacc);
+       pci_scan_bus(pacc);
+#endif
+
        for (i = 0; i < ARRAY_SIZE(superio_ports_table); i++) {
                for (j = 0; superio_ports_table[i].ports[j] != EOT; j++)
                        superio_ports_table[i].probe_idregs(