summaryrefslogtreecommitdiff
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
parent34a576fb98b2a66a4ea958ae6f3c8240fdf047db (diff)
downloadcoreboot-fb348035a38f1f01afeb6928c8abbdc2051ecf80.tar.xz
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
-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 9acf10a2fc..1b67e9c1a4 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 */