Superiotool: Add dump support to the Winbond W83697HF/F.

Minor coding style changes and code simplifications.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2791 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Uwe Hermann 2007-09-20 00:00:49 +00:00
parent e474956590
commit 2c290e3362
5 changed files with 154 additions and 103 deletions

View File

@ -27,37 +27,38 @@ const static struct superio_registers reg_table[] = {
{0x8705, "IT8705 or IT8700", { {0x8705, "IT8705 or IT8700", {
{EOT}}}, {EOT}}},
{0x8708, "IT8708", { {0x8708, "IT8708", {
{NOLDN, {NOLDN, NULL,
{0x07,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, {0x07,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
0x29,0x2a,0x2e,0x2f,EOT}, 0x29,0x2a,0x2e,0x2f,EOT},
{NANA,0x87,0x08,0x00,0x00,NANA,0x3f,0x00,0xff,0xff, {NANA,0x87,0x08,0x00,0x00,NANA,0x3f,0x00,0xff,0xff,
0xff,0xff,0x00,0x00,EOT}}, 0xff,0xff,0x00,0x00,EOT}},
{0x0, {0x0, NULL,
{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT}, {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}}, {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
{0x1, {0x1, NULL,
{0x30,0x60,0x61,0x70,0xf0,EOT}, {0x30,0x60,0x61,0x70,0xf0,EOT},
{0x00,0x03,0xf8,0x04,0x00,EOT}}, {0x00,0x03,0xf8,0x04,0x00,EOT}},
{0x2, {0x2, NULL,
{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT}, {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}}, {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
{0x3, {0x3, NULL,
{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74, {0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
0xf0,EOT}, 0xf0,EOT},
{0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03, {0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
0x03,EOT}}, 0x03,EOT}},
{0x4, {0x4, NULL,
{0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7, {0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,EOT}, 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,EOT},
{NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00, {NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,NANA,NANA,EOT}}, 0x00,0x00,0x00,0x00,0x00,NANA,NANA,EOT}},
{0x5, /* Note: 0x30 can actually be 0x00 _or_ 0x01. */ {0x5, NULL,
/* Note: 0x30 can actually be 0x00 _or_ 0x01. */
{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT}, {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}}, {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
{0x6, {0x6, NULL,
{0x30,0x70,0x71,0xf0,EOT}, {0x30,0x70,0x71,0xf0,EOT},
{0x00,0x0c,0x02,0x00,EOT}}, {0x00,0x0c,0x02,0x00,EOT}},
{0x7, {0x7, NULL,
{0x70,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba, {0x70,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,
0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8, 0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,
0xc9,0xca,0xcb,0xcc,0xcd,0xd0,0xd1,0xd2,0xd3,0xd4, 0xc9,0xca,0xcb,0xcc,0xcd,0xd0,0xd1,0xd2,0xd3,0xd4,
@ -70,46 +71,46 @@ const static struct superio_registers reg_table[] = {
0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x00, 0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,
0x00,EOT}}, 0x00,EOT}},
{0x8, {0x8, NULL,
{0x30,0x60,0x61,EOT}, {0x30,0x60,0x61,EOT},
{0x00,0x02,0x01,EOT}}, {0x00,0x02,0x01,EOT}},
{0x9, {0x9, NULL,
{0x30,0x60,0x61,0x70,0xf0,EOT}, {0x30,0x60,0x61,0x70,0xf0,EOT},
{0x00,0x03,0x10,0x0b,0x00,EOT}}, {0x00,0x03,0x10,0x0b,0x00,EOT}},
{0xa, {0xa, NULL,
{0x30,0x60,0x61,0x70,0xf0,EOT}, {0x30,0x60,0x61,0x70,0xf0,EOT},
{0x00,0x03,0x00,0x0a,0x00,EOT}}, {0x00,0x03,0x00,0x0a,0x00,EOT}},
{EOT}}}, {EOT}}},
{0x8710, "IT8710", { {0x8710, "IT8710", {
{EOT}}}, {EOT}}},
{0x8712, "IT8712", { {0x8712, "IT8712", {
{NOLDN, {NOLDN, NULL,
{0x07,0x20,0x21,0x22,0x23,0x24,0x2b,EOT}, {0x07,0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
{NANA,0x87,0x12,0x08,0x00,0x00,0x00,EOT}}, {NANA,0x87,0x12,0x08,0x00,0x00,0x00,EOT}},
{0x0, {0x0, NULL,
{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT}, {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}}, {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
{0x1, {0x1, NULL,
{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT}, {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}}, {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
{0x2, {0x2, NULL,
{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT}, {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}}, {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
{0x3, {0x3, NULL,
{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT}, {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}}, {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
{0x4, {0x4, NULL,
{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3, {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
0xf4,0xf5,0xf6,EOT}, 0xf4,0xf5,0xf6,EOT},
{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00, {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
0x00,NANA,NANA,EOT}}, 0x00,NANA,NANA,EOT}},
{0x5, {0x5, NULL,
{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT}, {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}}, {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
{0x6, {0x6, NULL,
{0x30,0x70,0x71,0xf0,EOT}, {0x30,0x70,0x71,0xf0,EOT},
{0x00,0x0c,0x02,0x00,EOT}}, {0x00,0x0c,0x02,0x00,EOT}},
{0x7, {0x7, NULL,
{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62, {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1, 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd, 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
@ -122,44 +123,44 @@ const static struct superio_registers reg_table[] = {
0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00, 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}}, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
{0x8, {0x8, NULL,
{0x30,0x60,0x61,0x70,0xf0,EOT}, {0x30,0x60,0x61,0x70,0xf0,EOT},
{0x00,0x03,0x00,0x0a,0x00,EOT}}, {0x00,0x03,0x00,0x0a,0x00,EOT}},
{0x9, {0x9, NULL,
{0x30,0x60,0x61,EOT}, {0x30,0x60,0x61,EOT},
{0x00,0x02,0x01,EOT}}, {0x00,0x02,0x01,EOT}},
{0xa, {0xa, NULL,
{0x30,0x60,0x61,0x70,0xf0,EOT}, {0x30,0x60,0x61,0x70,0xf0,EOT},
{0x00,0x03,0x10,0x0b,0x00,EOT}}, {0x00,0x03,0x10,0x0b,0x00,EOT}},
{EOT}}}, {EOT}}},
{0x8716, "IT8716", { {0x8716, "IT8716", {
{NOLDN, {NOLDN, NULL,
{0x07,0x20,0x21,0x22,0x23,0x24,0x2b,EOT}, {0x07,0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
{NANA,0x87,0x16,0x01,0x00,0x00,0x00,EOT}}, {NANA,0x87,0x16,0x01,0x00,0x00,0x00,EOT}},
{0x0, {0x0, NULL,
{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT}, {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}}, {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
{0x1, {0x1, NULL,
{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT}, {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}}, {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
{0x2, {0x2, NULL,
{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT}, {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}}, {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
{0x3, {0x3, NULL,
{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT}, {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}}, {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
{0x4, {0x4, NULL,
{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3, {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
0xf4,0xf5,0xf6,EOT}, 0xf4,0xf5,0xf6,EOT},
{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00, {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
0x00,NANA,NANA,EOT}}, 0x00,NANA,NANA,EOT}},
{0x5, {0x5, NULL,
{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT}, {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}}, {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
{0x6, {0x6, NULL,
{0x30,0x70,0x71,0xf0,EOT}, {0x30,0x70,0x71,0xf0,EOT},
{0x00,0x0c,0x02,0x00,EOT}}, {0x00,0x0c,0x02,0x00,EOT}},
{0x7, {0x7, NULL,
{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62, {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1, 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd, 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
@ -172,13 +173,13 @@ const static struct superio_registers reg_table[] = {
0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00, 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}}, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
{0x8, {0x8, NULL,
{0x30,0x60,0x61,0x70,0xf0,EOT}, {0x30,0x60,0x61,0x70,0xf0,EOT},
{0x00,0x03,0x00,0x0a,0x00,EOT}}, {0x00,0x03,0x00,0x0a,0x00,EOT}},
{0x9, {0x9, NULL,
{0x30,0x60,0x61,EOT}, {0x30,0x60,0x61,EOT},
{0x00,0x02,0x01,EOT}}, {0x00,0x02,0x01,EOT}},
{0xa, {0xa, NULL,
{0x30,0x60,0x61,0x70,0xf0,EOT}, {0x30,0x60,0x61,0x70,0xf0,EOT},
{0x00,0x03,0x10,0x0b,0x00,EOT}}, {0x00,0x03,0x10,0x0b,0x00,EOT}},
{EOT}}}, {EOT}}},

View File

@ -25,7 +25,7 @@
const static struct superio_registers reg_table[] = { const static struct superio_registers reg_table[] = {
{0x28, "FDC37N769", { {0x28, "FDC37N769", {
{NOLDN, {NOLDN, NULL,
{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13, 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d, 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,

View File

@ -60,39 +60,23 @@ const char *get_superio_name(const struct superio_registers reg_table[],
return "<unknown>"; return "<unknown>";
} }
void dump_superio(const char *vendor, const struct superio_registers reg_table[], static void dump_regs(const struct superio_registers reg_table[],
uint16_t port, uint16_t id) int i, int j, uint16_t port)
{ {
int i, j, k, nodump; int k, *idx;
int *idx;
if (!dump)
return;
for (i = 0; /* Nothing */; i++) {
if (reg_table[i].superio_id == EOT)
break;
if ((uint16_t)reg_table[i].superio_id != id)
continue;
nodump = 1;
for (j = 0; /* Nothing */; j++) {
if (reg_table[i].ldn[j].ldn == EOT)
break;
nodump = 0;
if (reg_table[i].ldn[j].ldn != NOLDN) { if (reg_table[i].ldn[j].ldn != NOLDN) {
printf("Switching to LDN 0x%02x\n", printf("LDN 0x%02x ", reg_table[i].ldn[j].ldn);
reg_table[i].ldn[j].ldn); if (reg_table[i].ldn[j].name != NULL)
printf("(%s)", reg_table[i].ldn[j].name);
regwrite(port, 0x07, reg_table[i].ldn[j].ldn); regwrite(port, 0x07, reg_table[i].ldn[j].ldn);
} else {
printf("Register dump:");
} }
idx = reg_table[i].ldn[j].idx; idx = reg_table[i].ldn[j].idx;
printf("idx "); printf("\nidx ");
for (k = 0; /* Nothing */; k++) { for (k = 0; /* Nothing */; k++) {
if (idx[k] == EOT) if (idx[k] == EOT)
break; break;
@ -123,19 +107,44 @@ void dump_superio(const char *vendor, const struct superio_registers reg_table[]
printf("\n"); printf("\n");
} }
if (nodump) void dump_superio(const char *vendor,
printf("No dump for %s %s\n", vendor, reg_table[i].name); const struct superio_registers reg_table[],
uint16_t port, uint16_t id)
{
int i, j, no_dump_available = 1;
if (!dump)
return;
for (i = 0; /* Nothing */; i++) {
if (reg_table[i].superio_id == EOT)
break;
if ((uint16_t)reg_table[i].superio_id != id)
continue;
for (j = 0; /* Nothing */; j++) {
if (reg_table[i].ldn[j].ldn == EOT)
break;
no_dump_available = 0;
dump_regs(reg_table, i, j, port);
}
if (no_dump_available)
printf("No dump available for this Super I/O\n");
} }
} }
void no_superio_found(uint16_t port) { void no_superio_found(uint16_t port)
{
if (!verbose) if (!verbose)
return; return;
if (inb(port) == 0xff) if (inb(port) == 0xff)
printf("No Super I/O chip found at 0x%04x\n", port); printf("No Super I/O chip found at 0x%04x\n", port);
else else
printf("Probing 0x%04x, failed (0x%02x), data returns 0x%02x\n", port, inb(port), inb(port + 1)); printf("Probing 0x%04x, failed (0x%02x), data returns 0x%02x\n",
port, inb(port), inb(port + 1));
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])

View File

@ -61,6 +61,7 @@ struct superio_registers {
const char name[MAXNAMELEN]; const char name[MAXNAMELEN];
struct { struct {
int ldn; int ldn;
const char *name;
int idx[IDXSIZE]; int idx[IDXSIZE];
int def[IDXSIZE]; int def[IDXSIZE];
} ldn[LDNSIZE]; } ldn[LDNSIZE];

View File

@ -30,57 +30,97 @@
*/ */
const static struct superio_registers reg_table[] = { const static struct superio_registers reg_table[] = {
{0x601, "W83697HF/F", { {0x601, "W83697HF/F", {
/* {NOLDN, NULL,
{NOLDN, /* TODO: 0x02, 0x07. */
{0x20,0x21,EOT}, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29,
{0x60,NANA,EOT}}, 0x2a,EOT},
*/ {0x60,NANA,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
MISC,EOT}},
/* Some register defaults depend on the value of PNPCSV. */
{0x0, "Floppy",
{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf4,
0xf5,EOT},
{0x01,0x03,0xf0,0x06,0x02,0x0e,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}},
{0x6, "CIR",
{0x30,0x60,0x61,0x70,EOT},
{0x00,0x00,0x00,0x00,EOT}},
{0x7, "Game port, GPIO port 1",
{0x30,0x60,0x61,0x62,0x63,0xf0,0xf1,0xf2,EOT},
{0x00,0x02,0x01,0x00,0x00,0xff,0x00,0x00,EOT}},
{0x8, "MIDI port, GPIO port 5",
{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
0xf4,0xf5,EOT},
{0x00,0x03,0x30,0x00,0x00,0x09,0xff,0x00,0x00,0x00,
0x00,0x00,EOT}},
{0x9, "GPIO port 2, 3, and 4",
{0x30,0x60,0x61,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,
0xf7,0xf8,0xf5,EOT},
{0x00,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,
0x00,0x00,0x00,EOT}},
{0xa, "ACPI",
{0x30,0x70,0xe0,0xe1,0xe2,0xe5,0xe6,0xe7,
0xf0,0xf1,0xf3,0xf4,0xf6,0xf7,0xf9,EOT},
{0x00,0x00,0x00,0x00,NANA,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
{0xb, "Hardware monitor",
{0x30,0x60,0x61,0x70,EOT},
{0x00,0x00,0x00,0x00,EOT}},
{EOT}}}, {EOT}}},
{0x886, "W83627EHF/EF/EHG/EG", { {0x886, "W83627EHF/EF/EHG/EG", {
{NOLDN, {NOLDN, NULL,
{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,
0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT},
{0x88,NANA,0xff,0x00,MISC,0x00,MISC,RSVD,0x50, {0x88,NANA,0xff,0x00,MISC,0x00,MISC,RSVD,0x50,
0x04,0x00,RSVD,0x00,0x21,0x00,0x00,EOT}}, 0x04,0x00,RSVD,0x00,0x21,0x00,0x00,EOT}},
{0x0, {0x0, NULL,
{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf4, {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf4,
0xf5,EOT}, 0xf5,EOT},
{0x01,0x03,0xf0,0x06,0x02,0x8e,0x00,0xff,0x00, {0x01,0x03,0xf0,0x06,0x02,0x8e,0x00,0xff,0x00,
0x00,EOT}}, 0x00,EOT}},
{0x1, {0x1, NULL,
{0x30,0x60,0x61,0x70,0x74,0xf0,EOT}, {0x30,0x60,0x61,0x70,0x74,0xf0,EOT},
{0x01,0x03,0x78,0x07,0x04,0x3f,EOT}}, {0x01,0x03,0x78,0x07,0x04,0x3f,EOT}},
{0x2, {0x2, NULL,
{0x30,0x60,0x61,0x70,0xf0,EOT}, {0x30,0x60,0x61,0x70,0xf0,EOT},
{0x01,0x03,0xf8,0x04,0x00,EOT}}, {0x01,0x03,0xf8,0x04,0x00,EOT}},
{0x3, {0x3, NULL,
{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT}, {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
{0x01,0x02,0xf8,0x03,0x00,0x00,EOT}}, {0x01,0x02,0xf8,0x03,0x00,0x00,EOT}},
{0x5, {0x5, NULL,
{0x30,0x60,0x61,0x62,0x63,0x70,0x72,0xf0,EOT}, {0x30,0x60,0x61,0x62,0x63,0x70,0x72,0xf0,EOT},
{0x01,0x00,0x60,0x00,0x64,0x01,0x0c,0x83,EOT}}, {0x01,0x00,0x60,0x00,0x64,0x01,0x0c,0x83,EOT}},
{0x6, {0x6, NULL,
{0x30,0x62,0x63,EOT}, {0x30,0x62,0x63,EOT},
{0x00,0x00,0x00,EOT}}, {0x00,0x00,0x00,EOT}},
{0x7, {0x7, NULL,
{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3, {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
0xf4,0xf5,0xf6,0xf7,EOT}, 0xf4,0xf5,0xf6,0xf7,EOT},
{0x00,0x02,0x01,0x03,0x30,0x09,0xff,0x00,0x00,0x00, {0x00,0x02,0x01,0x03,0x30,0x09,0xff,0x00,0x00,0x00,
0xff,0x00,0x00,0x00,EOT}}, 0xff,0x00,0x00,0x00,EOT}},
{0x8, {0x8, NULL,
{0x30,0xf5,0xf6,0xf7,EOT}, {0x30,0xf5,0xf6,0xf7,EOT},
{0x00,0x00,0x00,0x00,EOT}}, {0x00,0x00,0x00,0x00,EOT}},
{0x9, {0x9, NULL,
{0x30,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xf0,0xf1,0xf2, {0x30,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xf0,0xf1,0xf2,
0xf3,0xf4,0xf5,0xf6,0xf7,EOT}, 0xf3,0xf4,0xf5,0xf6,0xf7,EOT},
{0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00, {0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,
0x00,0xff,0x00,0x00,0x00,EOT}}, 0x00,0xff,0x00,0x00,0x00,EOT}},
{0xa, {0xa, NULL,
{0x30,0x70,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7, {0x30,0x70,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
0xe8,0xf2,0xf3,0xf4,0xf6,0xf7,EOT}, 0xe8,0xf2,0xf3,0xf4,0xf6,0xf7,EOT},
{0x00,0x00,0x01,0x00,0xff,0x08,0x00,RSVD,0x00,0x00, {0x00,0x00,0x01,0x00,0xff,0x08,0x00,RSVD,0x00,0x00,
RSVD,0x7c,0x00,0x00,0x00,0x00,EOT}}, RSVD,0x7c,0x00,0x00,0x00,0x00,EOT}},
{0xb, {0xb, NULL,
{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT}, {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
{0x00,0x00,0x00,0x00,0xc1,0x00,EOT}}, {0x00,0x00,0x00,0x00,0xc1,0x00,EOT}},
{EOT}}}, {EOT}}},