Fix the detection for the Winbond W83697SF. Unfortunately the revision
authorUwe Hermann <uwe@hermann-uwe.de>
Tue, 16 Oct 2007 18:15:25 +0000 (18:15 +0000)
committerUwe Hermann <uwe@hermann-uwe.de>
Tue, 16 Oct 2007 18:15:25 +0000 (18:15 +0000)
has a slightly different format than that of the W83697UF/UG so we have
to hack around it a bit.

This patch has been verified to work on real hardware by
Idwer Vollering <idwer_v@hotmail.com> on IRC (thanks!).

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Ronald G. Minnich <rminnich@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2861 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

util/superiotool/winbond.c

index 46efec0e334e747ed78bfed68311c80d2dc305ad..501ba26f946931c2154e23a9c17391bd253008e8 100644 (file)
@@ -92,8 +92,6 @@ const static struct superio_registers reg_table[] = {
                {EOT}}},
        {0x610, "W83L517D/D-F", {
                {EOT}}},
-       {0x681, "W83697SF/UF/UG", {
-               {EOT}}},
        {0x708, "W83637HF/HG", {
                {EOT}}},
        {0x828, "W83627THF/THG", { /* We assume rev is bits 3..0 of 0x21. */
@@ -295,6 +293,8 @@ const static struct superio_registers reg_table[] = {
                        {0x30,0x60,0x61,0x70,0xf0,EOT},
                        {0x00,0x00,0x00,0x00,0x00,EOT}},
                {EOT}}},
+       {0x68, "W83697SF/UF/UG", {      /* TODO: Add comment. */
+               {EOT}}},
 
        /* ID[3..0] */
        {0xa, "W83877F", {
@@ -333,7 +333,7 @@ void probe_idregs_winbond_helper(const char *init, uint16_t port)
        rev = regval(port, DEVICE_REV_REG);
        olddevid = regval(port, DEVICE_ID_REG_OLD) & 0x0f;
 
-       if (devid == 0x52)
+       if (devid == 0x52 || devid == 0x68)
                id = devid;                              /* ID only */
        else if ((devid == 0x97) && ((rev & 0xf0) == 0x70))
                id = (devid << 8) | rev;                 /* ID and rev */