summaryrefslogtreecommitdiffstats
path: root/util/superiotool/winbond.c
diff options
context:
space:
mode:
authorUwe Hermann <uwe@hermann-uwe.de>2008-01-19 09:40:17 +0000
committerUwe Hermann <uwe@hermann-uwe.de>2008-01-19 09:40:17 +0000
commitfb348035a38f1f01afeb6928c8abbdc2051ecf80 (patch)
tree31c14fe2c75fe9c183f65cf57b5ffb315c19d0e1 /util/superiotool/winbond.c
parent34a576fb98b2a66a4ea958ae6f3c8240fdf047db (diff)
downloadcoreboot-fb348035a38f1f01afeb6928c8abbdc2051ecf80.tar.gz
coreboot-fb348035a38f1f01afeb6928c8abbdc2051ecf80.tar.bz2
coreboot-fb348035a38f1f01afeb6928c8abbdc2051ecf80.zip
Small superiotool fix to detect more Winbond W83627EHF chips. The
patch is tested on actual hardware. As per datasheet the ID should be 0x886? for those chips. Not mentioned in the datasheet, but sensors-detect says 0x8853 is also possible. Also, the ASUS A8V-E Deluxe (W83627EHF) has an ID of 0x8854 (verified on actual hardware). So assume all 0x88?? IDs to mean W83627EHF/EF/EHG/EG. Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de> Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3063 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util/superiotool/winbond.c')
-rw-r--r--util/superiotool/winbond.c105
1 files changed, 56 insertions, 49 deletions
diff --git a/util/superiotool/winbond.c b/util/superiotool/winbond.c
index 9acf10a2fc73..1b67e9c1a48e 100644
--- a/util/superiotool/winbond.c
+++ b/util/superiotool/winbond.c
@@ -195,54 +195,6 @@ static const struct superio_registers reg_table[] = {
{0x00,0x48,0x48,0x48,0x48,0x00,0x00,0x48,0x00,0x00,
EOT}},
{EOT}}},
- {0x886, "W83627EHF/EF/EHG/EG", { /* sensors-detect: 0x8853 possible */
- {NOLDN, NULL,
- {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
- 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT},
- {0x88,MISC,0xff,0x00,MISC,0x00,MISC,RSVD,0x50,
- 0x04,0x00,RSVD,0x00,0x21,0x00,0x00,EOT}},
- {0x0, "Floppy",
- {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf4,
- 0xf5,EOT},
- {0x01,0x03,0xf0,0x06,0x02,0x8e,0x00,0xff,0x00,
- 0x00,EOT}},
- {0x1, "Parallel port",
- {0x30,0x60,0x61,0x70,0x74,0xf0,EOT},
- {0x01,0x03,0x78,0x07,0x04,0x3f,EOT}},
- {0x2, "COM1",
- {0x30,0x60,0x61,0x70,0xf0,EOT},
- {0x01,0x03,0xf8,0x04,0x00,EOT}},
- {0x3, "COM2",
- {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
- {0x01,0x02,0xf8,0x03,0x00,0x00,EOT}},
- {0x5, "Keyboard",
- {0x30,0x60,0x61,0x62,0x63,0x70,0x72,0xf0,EOT},
- {0x01,0x00,0x60,0x00,0x64,0x01,0x0c,0x83,EOT}},
- {0x6, "Serial flash interface",
- {0x30,0x62,0x63,EOT},
- {0x00,0x00,0x00,EOT}},
- {0x7, "GPIO 1, GPIO 6, game port, MIDI port",
- {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
- 0xf4,0xf5,0xf6,0xf7,EOT},
- {0x00,0x02,0x01,0x03,0x30,0x09,0xff,0x00,0x00,0x00,
- 0xff,0x00,0x00,0x00,EOT}},
- {0x8, "WDTO#, PLED",
- {0x30,0xf5,0xf6,0xf7,EOT},
- {0x00,0x00,0x00,0x00,EOT}},
- {0x9, "GPIO 2, GPIO 3, GPIO 4, GPIO 5, SUSLED",
- {0x30,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xf0,0xf1,0xf2,
- 0xf3,0xf4,0xf5,0xf6,0xf7,EOT},
- {0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,
- 0x00,0xff,0x00,0x00,0x00,EOT}},
- {0xa, "ACPI",
- {0x30,0x70,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
- 0xe8,0xf2,0xf3,0xf4,0xf6,0xf7,EOT},
- {0x00,0x00,0x01,0x00,0xff,0x08,0x00,RSVD,0x00,0x00,
- RSVD,0x7c,0x00,0x00,0x00,0x00,EOT}},
- {0xb, "Hardware monitor",
- {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
- {0x00,0x00,0x00,0x00,0xc1,0x00,EOT}},
- {EOT}}},
{0xa23, "W83627UHG", {/* TODO: Not yet in sensors-detect */
{EOT}}},
@@ -412,6 +364,61 @@ static const struct superio_registers reg_table[] = {
{0x30,0x60,0x61,0xf0,0xf1,0xf2,EOT},
{0x00,0x00,0x00,0xff,0x00,0x00,EOT}},
{EOT}}},
+ {0x88, "W83627EHF/EF/EHG/EG", {
+ /*
+ * As per datasheet the ID should be 0x886? here.
+ * Not mentioned in the datasheet, but sensors-detect says
+ * 0x8853 is also possible. Also, the ASUS A8V-E Deluxe
+ * (W83627EHF) has an ID of 0x8854 (verified on hardware).
+ * So we now assume all 0x88?? IDs to mean W83627EHF/EF/EHG/EG.
+ */
+ {NOLDN, NULL,
+ {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
+ 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT},
+ {0x88,MISC,0xff,0x00,MISC,0x00,MISC,RSVD,0x50,
+ 0x04,0x00,RSVD,0x00,0x21,0x00,0x00,EOT}},
+ {0x0, "Floppy",
+ {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf4,
+ 0xf5,EOT},
+ {0x01,0x03,0xf0,0x06,0x02,0x8e,0x00,0xff,0x00,
+ 0x00,EOT}},
+ {0x1, "Parallel port",
+ {0x30,0x60,0x61,0x70,0x74,0xf0,EOT},
+ {0x01,0x03,0x78,0x07,0x04,0x3f,EOT}},
+ {0x2, "COM1",
+ {0x30,0x60,0x61,0x70,0xf0,EOT},
+ {0x01,0x03,0xf8,0x04,0x00,EOT}},
+ {0x3, "COM2",
+ {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
+ {0x01,0x02,0xf8,0x03,0x00,0x00,EOT}},
+ {0x5, "Keyboard",
+ {0x30,0x60,0x61,0x62,0x63,0x70,0x72,0xf0,EOT},
+ {0x01,0x00,0x60,0x00,0x64,0x01,0x0c,0x83,EOT}},
+ {0x6, "Serial flash interface",
+ {0x30,0x62,0x63,EOT},
+ {0x00,0x00,0x00,EOT}},
+ {0x7, "GPIO 1, GPIO 6, game port, MIDI port",
+ {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
+ 0xf4,0xf5,0xf6,0xf7,EOT},
+ {0x00,0x02,0x01,0x03,0x30,0x09,0xff,0x00,0x00,0x00,
+ 0xff,0x00,0x00,0x00,EOT}},
+ {0x8, "WDTO#, PLED",
+ {0x30,0xf5,0xf6,0xf7,EOT},
+ {0x00,0x00,0x00,0x00,EOT}},
+ {0x9, "GPIO 2, GPIO 3, GPIO 4, GPIO 5, SUSLED",
+ {0x30,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xf0,0xf1,0xf2,
+ 0xf3,0xf4,0xf5,0xf6,0xf7,EOT},
+ {0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,
+ 0x00,0xff,0x00,0x00,0x00,EOT}},
+ {0xa, "ACPI",
+ {0x30,0x70,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
+ 0xe8,0xf2,0xf3,0xf4,0xf6,0xf7,EOT},
+ {0x00,0x00,0x01,0x00,0xff,0x08,0x00,RSVD,0x00,0x00,
+ RSVD,0x7c,0x00,0x00,0x00,0x00,EOT}},
+ {0xb, "Hardware monitor",
+ {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
+ {0x00,0x00,0x00,0x00,0xc1,0x00,EOT}},
+ {EOT}}},
/* ID[3..0] */
{0xa, "W83877F", {
@@ -450,7 +457,7 @@ static 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 || devid == 0x68)
+ if (devid == 0x52 || devid == 0x68 || devid == 0x88)
id = devid; /* ID only */
else if ((devid == 0x97) && ((rev & 0xf0) == 0x70))
id = (devid << 8) | rev; /* ID and rev */