Force coreboot mconf to create temp files in the output directory
[coreboot.git] / util / superiotool / ali.c
index 99dd00f69480785bc044fc8689986507b31b4359..9111fa2281f630f914e496b1f3a678a2af7a28b6 100644 (file)
 
 #define DEVICE_REV_REG         0x1f
 
-const static struct superio_registers reg_table[] = {
+static const struct superio_registers reg_table[] = {
        /* TODO: M5113 doesn't seem to have ID registers? */
        {0x5315, "M1535/M1535D/M1535+/M1535D+", {
                {NOLDN, NULL,
-                       {0x07,0x1f,0x20,0x21,0x22,0x23,0x2c,0x2d,0x2e,EOT},
-                       {NANA,NANA,0x53,0x15,0x00,0x00,RSVD,RSVD,RSVD,EOT}},
+                       {0x1f,0x20,0x21,0x22,0x23,0x2c,0x2d,0x2e,EOT},
+                       {NANA,0x53,0x15,0x00,0x00,RSVD,RSVD,RSVD,EOT}},
                {0x0, "Floppy",
                        {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf4,EOT},
                        {0x00,0x03,0xf0,0x06,0x02,0x08,0x00,0xff,0x00,EOT}},
@@ -53,18 +53,20 @@ const static struct superio_registers reg_table[] = {
                        {0x30,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,EOT},
                        {0x00,0x35,0x14,0x11,0x71,RSVD,0x05,EOT}},
                {EOT}}},
+       {0x2351, "M512x", {
+               {EOT}}},
        {EOT}
 };
 
 static void enter_conf_mode_ali(uint16_t port)
 {
-       outb(0x51, port);
-       outb(0x23, port);
+       OUTB(0x51, port);
+       OUTB(0x23, port);
 }
 
 static void exit_conf_mode_ali(uint16_t port)
 {
-       outb(0xbb, port);
+       OUTB(0xbb, port);
 }
 
 void probe_idregs_ali(uint16_t port)
@@ -72,24 +74,33 @@ void probe_idregs_ali(uint16_t port)
        uint16_t id;
        uint8_t rev;
 
+       probing_for("ALi", "", port);
+
        enter_conf_mode_ali(port);
 
        id = regval(port, DEVICE_ID_BYTE1_REG) << 8;
        id |= regval(port, DEVICE_ID_BYTE2_REG);
+
+       /* TODO: Not documented/available on M512x (?) */
        rev = regval(port, DEVICE_REV_REG);
 
        if (superio_unknown(reg_table, id)) {
-               no_superio_found("ALi", "", port);
+               if (verbose)
+                       printf(NOTFOUND "id=0x%04x, rev=0x%02x\n", id, rev);
                exit_conf_mode_ali(port);
                return;
        }
 
        printf("Found ALi %s (id=0x%04x, rev=0x%02x) at 0x%x\n",
               get_superio_name(reg_table, id), id, rev, port);
+       chip_found = 1;
 
-       dump_superio("ALi", reg_table, port, id);
-       dump_superio_readable(port); /* TODO */
+       dump_superio("ALi", reg_table, port, id, LDN_SEL);
 
        exit_conf_mode_ali(port);
 }
 
+void print_ali_chips(void)
+{
+       print_vendor_chips("ALi", reg_table);
+}