xref: /aosp_15_r20/external/coreboot/util/superiotool/ite.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #include "superiotool.h"
4 
5 #define CHIP_ID_BYTE1_REG	0x20
6 #define CHIP_ID_BYTE2_REG	0x21
7 #define CHIP_VERSION_REG	0x22
8 #define ISA_PNP_ADDR		0x279
9 
10 static const struct superio_registers reg_table[] = {
11 	{0x5570, "IT5570E", {
12 		{NOLDN, NULL,
13 			{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2d,EOT},
14 			{0x55,0x70,NANA,0x01,RSVD,0x00,0x00,RSVD,RSVD,RSVD,RSVD,RSVD,0x00,EOT}},
15 		{0x01, "Serial Port 1 (UART1)",
16 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
17 			{0x00,0x02,0xf8,0x00,0x00,0x03,0x02,0x00,EOT}},
18 		{0x02, "Serial Port 2 (UART2)",
19 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
20 			{0x00,0x02,0xf8,0x00,0x00,0x03,0x02,0x00,EOT}},
21 		{0x04, "System Wake-Up Control (SWUC)",
22 			{0x30,0x60,0x61,0x70,0x71,EOT},
23 			{0x00,0x00,0x00,0x00,0x01,EOT}},
24 		{0x05, "KBC Mouse",
25 			{0x30,0x70,0x71,EOT},
26 			{0x00,0x0c,0x01,EOT}},
27 		{0x06, "KBC Keyboard",
28 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
29 			{0x00,0x00,0x60,0x00,0x64,0x01,0x01,EOT}},
30 		{0x0a, "Consumer IR",
31 			{0x30,0x60,0x61,0x70,0x71,EOT},
32 			{0x00,0x03,0x10,0x00,0x02,EOT}},
33 		{0x0f, "Shared Memory/Flash Interface (SMFI)",
34 			{0x30,0x60,0x61,0x70,0x71,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,
35 			 0xf9,0xfa,0xfb,0xfc,EOT},
36 			{0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
37 			 0x00,0x00,0x00,0x01,EOT}},
38 		{0x10, "RTC-like Timer (RTC)",
39 			{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x70,0x71,0xf0,
40 			 0xf1,0xf2,0xf3,0xf4,0xf5,EOT},
41 			{0x00,0x00,0x70,0x02,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,
42 			 0x49,0x4a,0x00,0x00,0x00,EOT}},
43 		{0x11, "Power Management Interface Channel 1 (PMC1)",
44 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
45 			{0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
46 		{0x12, "Power Management Interface Channel 2 (PMC2)",
47 			{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x71,0xf0,EOT},
48 			{0x00,0x00,0x68,0x00,0x6c,0x00,0x00,0x01,0x01,NANA,EOT}},
49 		{0x13, "Serial Peripheral Interface (SSPI)",
50 			{0x30,0x60,0x61,0x70,0x71,EOT},
51 			{0x00,0x03,0x00,0x00,0x02,EOT}},
52 		{0x14, "Platform Environment Control Interface (PECI)",
53 			{0x30,0x60,0x61,EOT},
54 			{0x00,0x00,0x00,EOT}},
55 		{0x17, "Power Management Interface Channel 3 (PMC3)",
56 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
57 			{0x00,0x00,0x6a,0x00,0x6e,0x01,0x01,EOT}},
58 		{0x18, "Power Management Interface Channel 4 (PMC4)",
59 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
60 			{0x00,0x00,0x74,0x00,0x78,0x01,0x01,EOT}},
61 		{0x19, "Power Management Interface Channel 5 (PMC5)",
62 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
63 			{0x00,0x00,0x7a,0x00,0x7c,0x01,0x01,EOT}},
64 		{EOT}}},
65 	{0x8228, "IT8228E", {
66 		{EOT}}},
67 	{0x8500, "IT8500B/E", {
68 		{NOLDN, NULL,
69 			{0x20,0x21,0x22,0x23,0x25,0x2d,0x2e,0x2f,0x30,EOT},
70 			{0x85,0x00,0x01,0x01,0x00,0x00,NANA,NANA,0x00,EOT}},
71 		{0x04, "System Wake-Up Control (SWUC)",
72 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
73 			{0x00,0x00,0x00,0x00,0x00,0x00,0x01,EOT}},
74 		{0x05, "KBC/Mouse Interface",
75 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
76 			{0x00,0x00,0x00,0x00,0x00,0x0c,0x01,EOT}},
77 		{0x06, "KBC/Keyboard Interface",
78 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
79 			{0x00,0x00,0x60,0x00,0x64,0x01,0x01,EOT}},
80 		{0x0f, "Shared Memory/Flash Interface (SMFI)",
81 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,EOT},
82 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,EOT}},
83 		{0x10, "BRAM",
84 			{0x30,0x62,0x63,0x70,0x71,0xf3,0xf4,0xf5,EOT},
85 			{0x00,0x00,0x72,0x08,0x01,NANA,NANA,NANA,EOT}},
86 		{0x11, "Power Management I/F Channel 1 (PMC1)",
87 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
88 			{0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
89 		{0x12, "Power Management I/F Channel 2 (PMC2)",
90 			{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x71,0xf0,EOT},
91 			{0x00,0x00,0x68,0x00,0x6c,0x00,0x00,0x01,0x01,NANA,EOT}},
92 		{EOT}}},
93 	{0x8502, "IT8502E/TE/G", {
94 		{NOLDN, NULL,
95 			{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
96 			 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
97 			{0x85,0x02,0x71,0x01,NANA,0x00,0x00,NANA,NANA,NANA,
98 			 NANA,NANA,NANA,0x00,NANA,EOT}},
99 		{0x1, "UART1",
100 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
101 			{0x00,0x03,0xf8,0x00,0x00,0x04,0x02,0x00,EOT}},
102 		{0x4, "System Wake-Up",
103 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
104 			{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,EOT}},
105 		{0x5, "Mouse",
106 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
107 			{0x01,0x00,0x00,0x00,0x00,0x0C,0x01,NANA,EOT}},
108 		{0x6, "Keyboard",
109 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
110 			{0x01,0x00,0x60,0x00,0x64,0x01,0x01,NANA,EOT}},
111 		{0xf, "Shared Memory/Flash",
112 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,
113 			0xf6,EOT},
114 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
115 			0x00,EOT}},
116 		{0x10, "BRAM",
117 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf3,0xf4,
118 			0xf5,EOT},
119 			{0x00,0x00,0x70,0x00,0x72,0x08,0x01,NANA,NANA,
120 			NANA,EOT}},
121 		{0x11, "Power Channel 1",
122 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
123 
124 			{0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
125 		{0x12, "Power Channel 2",
126 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
127 			{0x00,0x00,0x68,0x00,0x6c,0x01,0x01,EOT}},
128 		{0x17, "Power Channel 3",
129 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
130 			{0x00,0x00,0x6a,0x00,0x6e,0x01,0x01,EOT}},
131 		{EOT}}},
132 	{0x8510, "IT8510E/TE/G", {
133 		{NOLDN, "Chip ID",
134 			{0x20,0x21, EOT},
135 			{0x85,0x10, EOT}},
136 		{NOLDN, "Chip Version",
137 			{0x22,EOT},
138 			{0x21,EOT}},
139 		{NOLDN, "Super I/O Control Register (SIOCTRL)",
140 			{0x23,EOT},
141 			{0x01,EOT}},
142 		{NOLDN, "Super I/O Configuration Register (SIOIRQ)",
143 			{0x25,EOT},
144 			{0x00,EOT}},
145 		{NOLDN, "Super I/O General Purpose Register (SIOGP)",
146 			{0x26,EOT},
147 			{0x00,EOT}},
148 		{NOLDN, "Super I/O Power Mode Register (SIOPWR)",
149 			{0x2d,EOT},
150 			{0x00,EOT}},
151 		{NOLDN, "Logical Device Activate Register (LDA)",
152 			{0x30,EOT},
153 			{0x00,EOT}},
154 		{NOLDN, "I/O Port Base Address for Descriptor 0 (IOBAD0)",
155 			{0x60,0x61,EOT},
156 			{NANA,NANA,EOT}},
157 		{NOLDN, "I/O Port Base Address for Descriptor 1 (IOBAD1)",
158 			{0x62,0x63,EOT},
159 			{NANA,NANA,EOT}},
160 		{NOLDN, "Interrupt Request Number and Wake-Up on IRQ Enable (IRQNUMX)",
161 			{0x70,EOT},
162 			{NANA,EOT}},
163 		{NOLDN, "Interrupt Request Type Select (IRQTP)",
164 			{0x71,EOT},
165 			{NANA,EOT}},
166 		{NOLDN, "DMA Channel Select 0 (DMAS0)",
167 			{0x74,EOT},
168 			{0x04,EOT}},
169 		{NOLDN, "DMA Channel Select 1 (DMAS1)",
170 			{0x75,EOT},
171 			{0x04,EOT}},
172 		{0x4, "System Wakup-Up (SWUC)",
173 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
174 			{0x00,0x00,0x00,0x00,0x00,0x00,0x03,EOT}},
175 		{0x5, "Keyboard/Mouse",
176 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
177 			{0x00,0x00,0x00,0x00,0x00,0x0c,0x03,EOT}},
178 		{0x6, "Keyboard/Mouse",
179 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
180 			{0x00,0x00,0x60,0x00,0x64,0x01,0x03,EOT}},
181 		{0xf, "Shared Memory/Flash Interface (SMFI)",
182 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,0xf6,0xf7,0xf8,EOT},
183 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
184 		{0x10, "Real Time Clock (RTC)",
185 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,0xf1,0xf2,EOT},
186 			{0x00,0x00,0x70,0x00,0x72,0x08,0x00,0x00,0x49,0x4a,EOT}},
187 		{0x11, "Power Management Interface Channel 1",
188 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
189 			{0x00,0x00,0x62,0x00,0x66,0x01,0x03,EOT}},
190 		{0x12, "Power Management Interface Channel 2",
191 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
192 			{0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}},
193 		{EOT}}},
194 	{0x8511, "IT8511E/TE/G", {
195 		{NOLDN, NULL,
196 			{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
197 			 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
198 			{0x85,0x11,0x10,0x01,NANA,0x00,0x00,NANA,NANA,NANA,
199 			 NANA,NANA,NANA,0x00,NANA,EOT}},
200 		{0x4, "System Wake-Up",
201 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
202 			{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,EOT}},
203 		{0x5, "Mouse",
204 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
205 			{0x01,0x00,0x00,0x00,0x00,0x0C,0x03,NANA,EOT}},
206 		{0x6, "Keyboard",
207 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
208 			{0x01,0x00,0x60,0x00,0x64,0x01,0x03,NANA,EOT}},
209 		{0xf, "Shared Memory/Flash",
210 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,
211 			0xf6,EOT},
212 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
213 			0x00,EOT}},
214 		{0x10, "Real-Time Clock",
215 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,0xf1,
216 			0xf2,0xf3,0xf4,0xf5,EOT},
217 			{0x00,0x00,0x70,0x00,0x72,0x08,0x00,0x00,0x49,
218 			0x4A,NANA,NANA,NANA,EOT}},
219 		{0x11, "Power Channel 1",
220 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
221 			{0x00,0x00,0x62,0x00,0x66,0x01,0x03,EOT}},
222 		{0x12, "Power Channel 2",
223 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
224 			{0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}},
225 		{EOT}}},
226 	{0x8512, "IT8512E/F/G", {
227 		{NOLDN, NULL,
228 			{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
229 			 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
230 			{0x85,0x12,0x22,0x01,NANA,0x00,0x00,NANA,NANA,NANA,
231 			 NANA,NANA,NANA,0x00,NANA,EOT}},
232 		{0x4, "System Wake-Up",
233 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
234 			{0x00,0x00,0x00,0x00,0x00,0x00,0x03,EOT}},
235 		{0x5, "Mouse",
236 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
237 			{0x00,0x00,0x00,0x00,0x00,0x0C,0x03,NANA,EOT}},
238 		{0x6, "Keyboard",
239 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
240 			{0x00,0x00,0x60,0x00,0x64,0x01,0x03,NANA,EOT}},
241 		{0xf, "Shared Memory/Flash",
242 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,
243 			0xf6,EOT},
244 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
245 			0x00,EOT}},
246 		{0x10, "BRAM",
247 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf3,0xf4,
248 			0xf5,EOT},
249 			{0x00,0x00,0x70,0x00,0x72,0x08,0x00,NANA,NANA,
250 			NANA,EOT}},
251 		{0x11, "Power Channel 1",
252 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
253 			{0x00,0x00,0x62,0x00,0x66,0x01,0x03,EOT}},
254 		{0x12, "Power Channel 2",
255 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
256 			{0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}},
257 		{EOT}}},
258 	{0x8513, "IT8513E/F/G", {
259 		{EOT}}},
260 	{0x8516, "IT8516???", {
261 		{NOLDN, "Chip ID",
262 			{0x20,0x21, EOT},
263 			{0x85,0x16, EOT}},
264 		{NOLDN, "Chip Version",
265 			{0x22,EOT},
266 			{0x63,EOT}},
267 		{NOLDN, "Super I/O Control Register (SIOCTRL)",
268 			{0x23,EOT},
269 			{0x01,EOT}},
270 		{NOLDN, "Super I/O Configuration Register (SIOIRQ)",
271 			{0x25,EOT},
272 			{0x00,EOT}},
273 		{NOLDN, "Super I/O General Purpose Register (SIOGP)",
274 			{0x26,EOT},
275 			{0x00,EOT}},
276 		{NOLDN, "Super I/O Power Mode Register (SIOPWR)",
277 			{0x2d,EOT},
278 			{0x00,EOT}},
279 		{0x01, "UART1",
280 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
281 			{0x00,0x03,0xf8,0x00,0x00,0x04,0x02,EOT}},
282 		{0x02, "UART2",
283 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
284 			{0x00,0x02,0xf8,0x00,0x00,0x04,0x02,EOT}},
285 		{0x04, "System Wakup-Up (SWUC)",
286 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
287 			{0x00,0x00,0x00,0x00,0x00,0x00,0x01,EOT}},
288 		{0x05, "Mouse",
289 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
290 			{0x00,0x00,0x00,0x00,0x00,0x0C,0x01,EOT}},
291 		{0x06, "Keyboard",
292 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
293 			{0x00,0x00,0x60,0x00,0x64,0x01,0x01,EOT}},
294 		{0x0f, "Shared Memory/Flash Interface (SMFI)",
295 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,
296 			 0xf4,0xf5,EOT},
297 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,
298 			 NANA,NANA,EOT}},
299 		{0x10, "BRAM / Real Time Clock (RTC)",
300 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,
301 			 0xf1,0xf2,0xf3,0xf4,0xf5,EOT},
302 			{0x00,0x00,0x70,0x00,0x72,0x08,0x01,
303 			 NANA,NANA,NANA,NANA,NANA,EOT}},
304 		{0x11, "Power Management Interface Channel 1",
305 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
306 			{0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
307 		{0x12, "Power Management Interface Channel 2",
308 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
309 			{0x00,0x00,0x68,0x00,0x6c,0x01,0x01,EOT}},
310 		{0x17, "Power Management Interface Channel 3",
311 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
312 			{0x00,0x00,0x6a,0x00,0x6e,0x01,0x01,EOT}},
313 		{EOT}}},
314 	{0x8528, "IT8528", {
315 		{NOLDN, NULL,
316 			{0x24,0x25,0x26,0x27,0x28,0x29,
317 			 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
318 			{0x00,0x00,0x00,0x00,0x00,0x00,
319 			 0x00,0x00,0x01,0x00,0x00,EOT}},
320 		{NOLDN, "Chip ID",
321 			{0x20,0x21, EOT},
322 			{0x85,0x28, EOT}},
323 		{NOLDN, "Chip Version",
324 			{0x22,EOT},
325 			{0x0a,EOT}},
326 		{NOLDN, "Super I/O Control Register (SIOCTRL)",
327 			{0x23,EOT},
328 			{0x01,EOT}},
329 		{0x01, "UART1",
330 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
331 			{0x00,0x03,0xf8,0x00,0x00,0x04,0x02,EOT}},
332 		{0x02, "UART2",
333 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
334 			{0x00,0x02,0xf8,0x00,0x00,0x03,0x02,EOT}},
335 		{0x04, "System Wake-Up (SWUC)",
336 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
337 			{0x00,0x00,0x00,0x00,0x00,0x00,0x01,EOT}},
338 		{0x05, "Mouse",
339 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
340 			{0x00,0x00,0x00,0x00,0x00,0x0C,0x01,EOT}},
341 		{0x06, "Keyboard",
342 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
343 			{0x00,0x00,0x60,0x00,0x64,0x01,0x01,EOT}},
344 		{0x0f, "Shared Memory/Flash Interface (SMFI)",
345 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,
346 			 0xf4,0xf5,EOT},
347 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,
348 			 NANA,NANA,EOT}},
349 		{0x10, "BRAM / Real Time Clock (RTC)",
350 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,
351 			 0xf1,0xf2,0xf3,0xf4,0xf5,EOT},
352 			{0x00,0x00,0x70,0x00,0x72,0x08,0x01,
353 			 NANA,NANA,NANA,NANA,NANA,EOT}},
354 		{0x11, "Power Channel 1",
355 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
356 			{0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
357 		{0x12, "Power Channel 2",
358 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
359 			{0x00,0x00,0x68,0x00,0x6c,0x01,0x01,EOT}},
360 		{0x17, "Power Channel 3",
361 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
362 			{0x00,0x00,0x6a,0x00,0x6e,0x01,0x01,EOT}},
363 		{0x18, "Power Channel 4",
364 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
365 			{0x00,0x00,0x74,0x00,0x78,0x01,0x01,EOT}},
366 		{0x19, "Power Channel 5",
367 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
368 			{0x00,0x00,0x7a,0x00,0x7c,0x01,0x01,EOT}},
369 		{EOT}}},
370 	{0x8613, "IT8613E", {
371 		{NOLDN, NULL,
372 			{0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
373 			{0x86,0x13,0x05,0x40,0x00,0x48,EOT}},
374 		{0x1, "COM1",
375 			{0x30,0x60,0x61,0x70,0xf0,EOT},
376 			{0x00,0x03,0xf8,0x04,0x00,EOT}},
377 		{0x4, "Environment controller",
378 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
379 			 0xf4,0xf5,0xf6,0xfa,0xfb,0xfc,EOT},
380 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
381 			 0x00,NANA,NANA,0x00,0x00,0x00,EOT}},
382 		{0x5, "Keyboard",
383 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
384 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
385 		{0x6, "Mouse",
386 			{0x30,0x70,0x71,0xf0,EOT},
387 			{0x00,0x0c,0x02,0x00,EOT}},
388 		{0x7, "GPIO",
389 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x2d,0x60,0x61,
390 			 0x62,0x63,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,0xb2,
391 			 0xb3,0xb4,0xb8,0xba,0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,
392 			 0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xda,0xdb,
393 			 0xe0,0xe1,0xe2,0xe3,0xe4,0xec,0xf0,0xf1,0xf2,0xf3,
394 			 0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,EOT},
395 			{0x00,0xF3,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,
396 			 0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,0x00,
397 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
398 			 0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
399 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,NANA,
400 			 0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,EOT}},
401 		{0xa, "Consumer IR",
402 			{0x30,0x60,0x61,0x70,0xf0,EOT},
403 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
404 		{EOT}}},
405 	{0x8616, "IT8616E/IT8656E", {
406 		/* Derived from IT8625E, defaults dumped from hardware */
407 		{NOLDN, NULL,
408 			{0x20,0x21,0x22,0x23,0x24,EOT},
409 			{0x86,0x16,MISC,0x40,0x00,EOT}},
410 		{0x3, "Parallel port (unusable)",
411 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,0x74,0xf0,EOT},
412 			{0x00,0x03,0x78,0x07,0x78,0x07,0x02,0x00,0x00,0x04,0x0b,EOT}},
413 		{0x4, "Environment controller",
414 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
415 			 0xf3,0xf4,0xf5,0xf6,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
416 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
417 			 0x00,0xe0,0x00,NANA,0x48,0x00,0x00,0x00,0x40,EOT}},
418 		{0x5, "Keyboard",
419 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
420 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
421 		{0x6, "Mouse",
422 			{0x30,0x70,0x71,0xf0,EOT},
423 			{0x00,0x0c,0x02,0x00,EOT}},
424 		{0x7, "GPIO",
425 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x60,
426 			 0x61,0x62,0x63,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
427 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xba,0xbb,0xbc,0xbd,0xc0,
428 			 0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,
429 			 0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,
430 			 0xd8,0xd9,0xe0,0xe1,0xe2,0xe3,0xe4,0xec,0xf0,0xf1,
431 			 0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,EOT},
432 			{0x00,0xf3,0x00,0x00,0x00,0x01,0x48,0x01,0x00,0x00,
433 			 0x00,0x00,0x00,0x00,0x00,MISC,0x38,0x00,0x00,0x00,
434 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x01,
435 			 0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
436 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x00,0x00,
437 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
438 			 0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,EOT}},
439 		{0xa, "Consumer IR",
440 			{0x30,0x60,0x61,0x70,0xf0,EOT},
441 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
442 		{EOT}}},
443 	{0x8623, "IT8623E", {
444 		/* Defaults are not specified as no datasheet available */
445 		{NOLDN, NULL,
446 			{0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
447 			{0x86,0x23,0x01,NANA,NANA,NANA,EOT}},
448 		{0x0, "Floppy",
449 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
450 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
451 		{0x1, "COM1",
452 			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
453 			{NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
454 		{0x2, "COM2",
455 			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
456 			{NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
457 		{0x3, "Parallel port",
458 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
459 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
460 		{0x4, "Environment controller",
461 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
462 			 0xf4,0xf5,0xf6,EOT},
463 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
464 			 NANA,NANA,NANA,EOT}},
465 		{0x5, "Keyboard",
466 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
467 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
468 		{0x6, "Mouse",
469 			{0x30,0x70,0x71,0xf0,EOT},
470 			{NANA,NANA,NANA,NANA,EOT}},
471 		{0x7, "GPIO",
472 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
473 			 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
474 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
475 			 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
476 			 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe9,0xf0,
477 			 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
478 			 0xfb,0xfc,0xfd,0xfe,0xff,EOT},
479 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
480 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
481 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
482 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
483 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
484 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
485 			 NANA,NANA,NANA,NANA,NANA,EOT}},
486 		{EOT}}},
487 	{0x8625, "IT8625E", {
488 		{NOLDN, NULL,
489 			{0x20,0x21,0x22,0x23,0x24,EOT},
490 			{0x86,0x25,MISC,0x40,0x00,EOT}},
491 		{0x1, "COM1",
492 			{0x30,0x60,0x61,0x70,0xf0,EOT},
493 			{0x00,0x03,0xf8,0x04,0x00,EOT}},
494 		{0x2, "COM2",
495 			{0x30,0x60,0x61,0x70,0xf0,EOT},
496 			{0x00,0x02,0xf8,0x03,0x00,EOT}},
497 		{0x3, "Parallel port",
498 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
499 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x0b,EOT}},
500 		{0x4, "Environment controller",
501 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
502 			 0xf3,0xf4,0xf5,0xf6,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
503 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
504 			 0x00,0x00,0x00,NANA,0x48,0x00,0x00,0x00,0x40,EOT}},
505 		{0x5, "Keyboard",
506 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
507 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
508 		{0x6, "Mouse",
509 			{0x30,0x70,0x71,0xf0,EOT},
510 			{0x00,0x0c,0x02,0x00,EOT}},
511 		{0x7, "GPIO",
512 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x60,
513 			 0x61,0x62,0x63,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
514 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xba,0xbb,0xbc,0xbd,0xc0,
515 			 0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,
516 			 0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,
517 			 0xd8,0xd9,0xe0,0xe1,0xe2,0xe3,0xe4,0xec,0xf0,0xf1,
518 			 0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,EOT},
519 			{0x00,0xf3,0x00,0x00,0x00,0x00,0x48,0x01,0x00,0x00,
520 			 0x00,0x00,0x00,0x00,0x00,MISC,0x38,0x00,0x00,0x00,
521 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
522 			 0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
523 			 0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,
524 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
525 			 0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,EOT}},
526 		{0xa, "Consumer IR",
527 			{0x30,0x60,0x61,0x70,0xf0,EOT},
528 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
529 		{EOT}}},
530 	{0x8659, "IT8659E", {
531 		{NOLDN, NULL,
532 			{0x20,0x21,0x22,0x23,0x24,0x2e,0x2f,EOT},
533 			{0x86,0x59,0x07,0x40,0x00,RSVD,RSVD,EOT}},
534 		{0x1, "COM1",
535 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
536 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,EOT}},
537 		{0x2, "COM2",
538 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
539 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,EOT}},
540 		{0x4, "Environment controller",
541 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
542 			 0xf4,0xf5,0xf6,0xfa,0xfb,0xfd,EOT},
543 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
544 			 0x00,NANA,NANA,NANA,NANA,NANA,EOT}},
545 		{0x5, "Keyboard",
546 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
547 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
548 		{0x6, "Mouse",
549 			{0x30,0x70,0x71,0xf0,EOT},
550 			{0x00,0x0c,0x02,0x00,EOT}},
551 		{0x7, "GPIO",
552 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x60,
553 			 0x61,0x62,0x63,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
554 			 0xb2,0xb3,0xb4,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xc0,
555 			 0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,
556 			 0xda,0xdb,0xe0,0xe1,0xe2,0xe3,0xe4,0xe7,0xf0,0xf1,
557 			 0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,
558 			 EOT},
559 			{0x00,0xF3,0x00,0x00,0x00,0x00,0x48,0x89,0x00,0x00,
560 			 0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,
561 			 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x01,
562 			 0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,0x00,
563 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
564 			 NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
565 			 EOT}},
566 		{0xa, "Consumer IR",
567 			{0x30,0x60,0x61,0x70,0xf0,EOT},
568 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
569 		{EOT}}},
570 	{0x8661, "IT8661F/IT8770F", {
571 		{NOLDN, NULL,
572 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x20,0x21,0x22,
573 			 0x23,0x24,EOT},
574 			{NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x86,0x61,0x00,
575 			 0x00,0x00,EOT}},
576 		{0x0, "Floppy",
577 			{0x30,0x31,0x60,0x61,0x70,0x71,0x74,0xf0,EOT},
578 			{0x00,0x00,0x03,0xf0,0x06,0x02,0x02,0x00,EOT}},
579 		{0x1, "COM1",
580 			{0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
581 			{0x00,0x00,0x03,0xf8,0x04,0x02,0x00,EOT}},
582 		{0x2, "COM2",
583 			{0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
584 			{0x00,0x00,0x02,0xf8,0x03,0x02,0x00,EOT}},
585 		{0x3, "Parallel port",
586 			{0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x74,
587 			 0xf0,EOT},
588 			{0x00,0x00,0x03,0x78,0x07,0x78,0x07,0x02,0x03,
589 			 0x03,EOT}},
590 		{0x4, "IR",
591 			{0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,
592 			 0x74,0x75,0xf0,EOT},
593 			{0x00,0x00,0x02,0xe8,0x03,0x00,0x0a,0x02,0x0b,0x02,
594 			 0x01,0x00,0x00,EOT}},
595 		{0x5, "GPIO",
596 			{0x25,0x26,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
597 			 0x70,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,
598 			 0xf9,0xfa,0xfb,0xfc,EOT},
599 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
600 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
601 			 0x00,0x00,0x00,0x00,EOT}},
602 		{EOT}}},
603 	{0x8673, "IT8673F", {
604 		{EOT}}},
605 	{0x8681, "IT8671F/IT8687R", {
606 		{NOLDN, NULL,
607 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x20,0x21,0x22,
608 			 0x23,0x24,0x25,0x26,0x2e,0x2f,EOT},
609 			{NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x86,0x81,0x00,
610 			 0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
611 		{0x0, "Floppy",
612 			{0x30,0x31,0x60,0x61,0x70,0x71,0x74,0xf0,EOT},
613 			{0x00,0x00,0x03,0xf0,0x06,0x02,0x02,0x00,EOT}},
614 		{0x1, "COM1",
615 			{0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
616 			{0x00,0x00,0x03,0xf8,0x04,0x02,0x00,EOT}},
617 		{0x2, "COM2",
618 			{0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,
619 			 0x74,0x75,0xf0,0xf1,EOT},
620 			{0x00,0x00,0x02,0xf8,0x03,0x00,0x03,0x02,0x0a,0x02,
621 			 0x00,0x01,0x00,0x00,EOT}},
622 		{0x3, "Parallel port",
623 			{0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x74,
624 			 0xf0,EOT},
625 			{0x00,0x00,0x03,0x78,0x07,0x78,0x07,0x02,0x03,
626 			 0x03,EOT}},
627 		{0x4, "APC",
628 			{0x30,0xf0,0xf1,0xf2,0xf4,0xf5,0xf6,EOT},
629 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
630 		{0x5, "Keyboard",
631 			{0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
632 			{MISC,0x00,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
633 		{0x6, "Mouse",
634 			{0x30,0x70,0x71,0xf0,EOT},
635 			{0x00,0x0c,0x02,0x00,EOT}},
636 		{0x7, "GPIO",
637 			{0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,
638 			 0x70,0x71,0x72,0x73,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,
639 			 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff,
640 			 0xe0,0xe1,0xe2,0xe3,0xe4,EOT},
641 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
642 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
643 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
644 			 0x00,0x00,0x00,0x00,0x00,EOT}},
645 		{EOT}}},
646 	{0x8701, "IT8703F", {
647 		{NOLDN, NULL,
648 			{0x20,0x21,0x23,0x24,0x26,0x29,0x2a,0x2b,EOT},
649 			{0x87,0x00,0x00,0x80,0x00,0x00,0x7c,0xc0,EOT}},
650 		{0x0, "Floppy",
651 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf3,0xf4,
652 			 0xf5,EOT},
653 			{0x00,0x03,0xf0,0x06,0x02,0x0e,0x00,0xff,0x00,0x00,
654 			 0x00,EOT}},
655 		{0x1, "Parallel port",
656 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
657 			{0x00,0x03,0x78,0x00,0x80,0x07,0x03,0x03,EOT}},
658 		{0x2, "COM1",
659 			{0x30,0x60,0x61,0x70,0xf0,EOT},
660 			{0x00,0x03,0xf8,0x04,0x00,EOT}},
661 		{0x3, "COM2",
662 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
663 			{0x00,0x02,0xf8,0x03,0x00,0x00,0x00,0x7f,EOT}},
664 		{0x5, "Keyboard",
665 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
666 			{0x01,0x00,0x60,0x00,0x64,0x01,0x0c,0x80,EOT}},
667 		{0x6, "Consumer IR",
668 			{0x30,0x60,0x61,0x70,EOT},
669 			{0x00,0x00,0x00,0x00,EOT}},
670 		{0x7, "Game port, MIDI, GPIO set 1",
671 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,EOT},
672 			{0x00,0x02,0x01,0x03,0x30,0x00,0xff,0x00,0x00,EOT}},
673 		{0x8, "GPIO set 2",
674 			{0x30,0xf0,0xf1,0xf2,0xf3,0xf5,EOT},
675 			{0x00,0xff,0x00,0x00,0x00,0x00,EOT}},
676 		{0x9, "GPIO set 3 and 4",
677 			{0x30,0x60,0x61,0xf0,0xf1,0xf2,0xf3,0xf4,EOT},
678 			{0x00,0x02,0x90,0xff,0x00,0x00,0x00,0x00,EOT}},
679 		{0xa, "ACPI",
680 			{0x30,0x70,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
681 			 0xf3,0xf4,0xf6,0xf7,0xf9,EOT},
682 			{0x00,0x00,0x00,0x00,NANA,NANA,0x00,0x00,0x00,0x00,
683 			 NANA,NANA,0x00,0x00,0x00,EOT}},
684 		{0xc, "GPIO set 5, 6 and 7",
685 			{0x30,0x60,0x61,0xf0,0xf3,0xf6,EOT},
686 			{0x00,0x03,0x70,0x00,0xff,0xff,EOT}},
687 		{EOT}}},
688 	{0x8702, "IT8702F", {
689 		{EOT}}},
690 	{0x8705, "IT8705F/AF / IT8700F", {
691 		{NOLDN, NULL,
692 			{0x20,0x21,0x22,0x23,0x24,EOT},
693 			{0x87,0x05,0x00,0x00,NANA,EOT}},
694 		{0x0, "Floppy",
695 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
696 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
697 		{0x1, "COM1",
698 			{0x30,0x60,0x61,0x70,0xf0,EOT},
699 			{0x00,0x03,0xf8,0x04,0x00,EOT}},
700 		{0x2, "COM2",
701 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
702 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
703 		{0x3, "Parallel port",
704 			{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
705 			 0xf0,EOT},
706 			{0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
707 			 0x03,EOT}},
708 		{0x4, "Environment controller",
709 			{0x2b,0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
710 			 0xf3,0xf4,0xf5,0xf6,EOT},
711 			{0x00,0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
712 			 0x00,0x00,NANA,NANA,EOT}},
713 		{0x5, "GPIO",
714 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x60,0x61,0x62,0x63,
715 			 0x64,0x65,0x70,0x71,0x72,0xb0,0xb1,0xb2,0xb3,0xb4,
716 			 0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,
717 			 0xc3,0xc4,0xc5,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xd0,
718 			 0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd8,0xd9,0xda,0xf0,
719 			 0xf1,0xf2,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,
720 			 0xfd,0xfe,0xff,EOT},
721 			{0x00,0x00,0x00,0xff,0xe0,0xff,0x00,0x00,0x00,0x00,
722 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
723 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
724 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
725 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
726 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
727 			 0x00,NANA,0x00,EOT}},
728 		{0x6, "Game port",
729 			{0x30,0x60,0x61,EOT},
730 			{0x00,0x02,0x01,EOT}},
731 		{0x7, "Consumer IR",
732 			{0x30,0x60,0x61,0x70,0xf0,EOT},
733 			{0x00,0x03,0x10,0x0b,0x00,EOT}},
734 		{0x8, "MIDI port",
735 			{0x30,0x60,0x61,0x70,0xf0,EOT},
736 			{0x00,0x03,0x00,0x0a,0x00,EOT}},
737 		{EOT}}},
738 	{0x8706, "IT8706R", {	/* TODO: Not yet in sensors-detect */
739 		/* This is a "Special General Purpose I/O chip". */
740 		{EOT}}},
741 	{0x8707, "IT8707F", {
742 		{EOT}}},
743 	{0x8708, "IT8708F", {
744 		{NOLDN, NULL,
745 			{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
746 			 0x2a,0x2e,0x2f,EOT},
747 			{0x87,0x08,0x00,0x00,NANA,0x3f,0x00,0xff,0xff,0xff,
748 			 0xff,0x00,0x00,EOT}},
749 		{0x0, "Floppy",
750 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
751 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
752 		{0x1, "COM1",
753 			{0x30,0x60,0x61,0x70,0xf0,EOT},
754 			{0x00,0x03,0xf8,0x04,0x00,EOT}},
755 		{0x2, "COM2",
756 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
757 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
758 		{0x3, "Parallel port",
759 			{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
760 			 0xf0,EOT},
761 			{0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
762 			 0x03,EOT}},
763 		{0x4, "SWC",
764 			{0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
765 			 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,EOT},
766 			{NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00,
767 			 0x00,0x00,0x00,0x00,0x00,NANA,NANA,EOT}},
768 		{0x5, "Keyboard",
769 			/* Note: 0x30 can actually be 0x00 _or_ 0x01. */
770 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
771 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
772 		{0x6, "Mouse",
773 			{0x30,0x70,0x71,0xf0,EOT},
774 			{0x00,0x0c,0x02,0x00,EOT}},
775 		{0x7, "GPIO",
776 			{0x70,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,
777 			 0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,
778 			 0xc9,0xca,0xcb,0xcc,0xcd,0xd0,0xd1,0xd2,0xd3,0xd4,
779 			 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xf0,0xf1,
780 			 0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,
781 			 0xfc,EOT},
782 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
783 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
784 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
785 			 0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x00,
786 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,
787 			 0x00,EOT}},
788 		{0x8, "Game port",
789 			{0x30,0x60,0x61,EOT},
790 			{0x00,0x02,0x01,EOT}},
791 		{0x9, "Consumer IR",
792 			{0x30,0x60,0x61,0x70,0xf0,EOT},
793 			{0x00,0x03,0x10,0x0b,0x00,EOT}},
794 		{0xa, "MIDI port",
795 			{0x30,0x60,0x61,0x70,0xf0,EOT},
796 			{0x00,0x03,0x00,0x0a,0x00,EOT}},
797 		{EOT}}},
798 	{0x8710, "IT8710F", {	/* TODO: Not yet in sensors-detect */
799 		{EOT}}},
800 	{0x8711, "IT8711F", {	/* 0x8711 is a guess, not found in datasheet. */
801 		{EOT}}},
802 	{0x8712, "IT8712F", {
803 		{NOLDN, NULL,
804 			{0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
805 			{0x87,0x12,0x08,0x00,0x00,0x00,EOT}},
806 		{0x0, "Floppy",
807 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
808 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
809 		{0x1, "COM1",
810 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
811 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
812 		{0x2, "COM2",
813 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
814 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
815 		{0x3, "Parallel port",
816 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
817 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
818 		{0x4, "Environment controller",
819 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
820 			 0xf4,0xf5,0xf6,EOT},
821 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
822 			 0x00,NANA,NANA,EOT}},
823 		{0x5, "Keyboard",
824 			/* TODO: 0xf0: Error in datasheet? */
825 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
826 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
827 		{0x6, "Mouse",
828 			{0x30,0x70,0x71,0xf0,EOT},
829 			{0x00,0x0c,0x02,0x00,EOT}},
830 		{0x7, "GPIO", /* TODO: 0x72, 0x73: Errors in datasheet? */
831 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
832 			 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
833 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
834 			 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
835 			 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
836 			 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
837 			{0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
838 			 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
839 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
840 			 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
841 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
842 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
843 		{0x8, "MIDI port",
844 			{0x30,0x60,0x61,0x70,0xf0,EOT},
845 			{0x00,0x03,0x00,0x0a,0x00,EOT}},
846 		{0x9, "Game port",
847 			{0x30,0x60,0x61,EOT},
848 			{0x00,0x02,0x01,EOT}},
849 		{0xa, "Consumer IR",
850 			{0x30,0x60,0x61,0x70,0xf0,EOT},
851 			{0x00,0x03,0x10,0x0b,0x00,EOT}},
852 		{EOT}}},
853 	{0x8716, "IT8716F", {
854 		{NOLDN, NULL,
855 			{0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
856 			{0x87,0x16,0x01,0x00,0x00,0x00,EOT}},
857 		{0x0, "Floppy",
858 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
859 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
860 		{0x1, "COM1",
861 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
862 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
863 		{0x2, "COM2",
864 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
865 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
866 		{0x3, "Parallel port",
867 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
868 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
869 		{0x4, "Environment controller",
870 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
871 			 0xf4,0xf5,0xf6,EOT},
872 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
873 			 0x00,NANA,NANA,EOT}},
874 		{0x5, "Keyboard",
875 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
876 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
877 		{0x6, "Mouse",
878 			{0x30,0x70,0x71,0xf0,EOT},
879 			{0x00,0x0c,0x02,0x00,EOT}},
880 		{0x7, "GPIO",
881 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
882 			 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
883 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
884 			 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
885 			 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
886 			 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
887 			{0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
888 			 0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,
889 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
890 			 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
891 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
892 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
893 		{0x8, "MIDI port",
894 			{0x30,0x60,0x61,0x70,0xf0,EOT},
895 			{0x00,0x03,0x00,0x0a,0x00,EOT}},
896 		{0x9, "Game port",
897 			{0x30,0x60,0x61,EOT},
898 			{0x00,0x02,0x01,EOT}},
899 		{0xa, "Consumer IR",
900 			{0x30,0x60,0x61,0x70,0xf0,EOT},
901 			{0x00,0x03,0x10,0x0b,0x00,EOT}},
902 		{EOT}}},
903 	{0x8718, "IT8718F", {
904 		{NOLDN, NULL,
905 			{0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
906 			{0x87,0x18,0x01,0x00,0x00,0x00,EOT}},
907 		{0x0, "Floppy",
908 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
909 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
910 		{0x1, "COM1",
911 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
912 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
913 		{0x2, "COM2",
914 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
915 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
916 		{0x3, "Parallel port",
917 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
918 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
919 		{0x4, "Environment controller",
920 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
921 			 0xf4,0xf5,0xf6,EOT},
922 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
923 			 0x00,NANA,NANA,EOT}},
924 		{0x5, "Keyboard",
925 			/* 0xf0: Datasheet page 33: 0x00; page 56: 0x08. */
926 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
927 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
928 		{0x6, "Mouse",
929 			{0x30,0x70,0x71,0xf0,EOT},
930 			{0x00,0x0c,0x02,0x00,EOT}},
931 		{0x7, "GPIO",
932 			/* 0x2c: Datasheet page 30: 0x00; page 43: 0x1f. */
933 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
934 			 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
935 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
936 			 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,0xc9,0xca,0xcb,
937 			 0xcc,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xf0,
938 			 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
939 			 0xfb,0xfc,0xfd,0xfe,0xff,EOT},
940 			{0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
941 			 0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,
942 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
943 			 0x01,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x40,
944 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
945 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
946 			 0x00,NANA,0x00,0x00,0x00,EOT}},
947 		{0xa, "Consumer IR",
948 			{0x30,0x60,0x61,0x70,0xf0,EOT},
949 			{0x00,0x03,0x10,0x0b,0x00,EOT}},
950 		{EOT}}},
951 	{0x8720, "IT8720F", {
952 		{NOLDN, NULL,
953 			{0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
954 			{0x87,0x20,0x05,0x00,0x00,0x00,EOT}},
955 		{0x0, "Floppy",
956 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
957 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
958 		{0x1, "COM1",
959 			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
960 			{0x00,0x03,0xf8,0x04,0x00,0x50,EOT}},
961 		{0x2, "COM2",
962 			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
963 			{0x00,0x02,0xf8,0x03,0x00,0x50,EOT}},
964 		{0x3, "Parallel port",
965 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
966 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
967 		{0x4, "Environment controller",
968 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
969 			 0xf4,0xf5,0xf6,EOT},
970 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
971 			 0x00,NANA,NANA,EOT}},
972 		{0x5, "Keyboard",
973 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
974 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
975 		{0x6, "Mouse",
976 			{0x30,0x70,0x71,0xf0,EOT},
977 			{0x00,0x0c,0x02,0x00,EOT}},
978 		{0x7, "GPIO",
979 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
980 			 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
981 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
982 			 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
983 			 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe9,0xf0,
984 			 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
985 			 0xfb,0xfc,0xfd,0xfe,0xff,EOT},
986 			{0x00,0xff,0x00,0x40,0x00,0x00,0x03,0x00,0x00,0x00,
987 			 0x00,0x00,0x00,0x00,0x00,NANA,0x38,0x00,0x00,0x00,
988 			 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
989 			 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
990 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,
991 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
992 			 0x00,NANA,0x00,0x00,0x00,EOT}},
993 		{0xa, "Consumer IR",
994 			{0x30,0x60,0x61,0x70,0xf0,EOT},
995 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
996 		{EOT}}},
997 	{0x8721, "IT8721F", {
998 		{EOT}}},
999 	{0x8722, "IT8722F", {
1000 		{EOT}}},
1001 	{0x8726, "IT8726F", {
1002 		/* Datasheet wrongly says that the ID is 0x8716. */
1003 		{NOLDN, NULL,
1004 			{0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
1005 			{0x87,0x26,0x01,0x00,MISC,0x00,EOT}},
1006 		{0x0, "Floppy",
1007 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
1008 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
1009 		{0x1, "COM1",
1010 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
1011 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
1012 		{0x2, "COM2",
1013 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
1014 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
1015 		{0x3, "Parallel port",
1016 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
1017 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
1018 		{0x4, "Environment controller",
1019 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
1020 			 0xf4,0xf5,0xf6,EOT},
1021 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
1022 			 0x00,MISC,MISC,EOT}},
1023 		{0x5, "Keyboard",
1024 			/* 0xf0: Datasheet page 35: 0x00; page 59: 0x08. */
1025 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
1026 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
1027 		{0x6, "Mouse",
1028 			{0x30,0x70,0x71,0xf0,EOT},
1029 			{0x00,0x0c,0x02,0x00,EOT}},
1030 		{0x7, "GPIO",
1031 			/* 0x2c: Datasheet page 33: 0x00; page 45: 0x1f. */
1032 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
1033 			 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
1034 			 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
1035 			 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
1036 			 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
1037 			 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
1038 			{0x01,0x00,0x00,0x40,0x00,0x00,0x1f,0x00,0x00,0x00,
1039 			 0x00,0x00,0x00,0x00,0x00,MISC,0x38,0x00,0x00,0x00,
1040 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1041 			 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
1042 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1043 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,MISC,0x00,EOT}},
1044 		{0x8, "MIDI port",
1045 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1046 			{0x00,0x03,0x00,0x0a,0x00,EOT}},
1047 		{0x9, "Game port",
1048 			{0x30,0x60,0x61,EOT},
1049 			{0x00,0x02,0x01,EOT}},
1050 		{0xa, "Consumer IR",
1051 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1052 			{0x00,0x03,0x10,0x0b,0x00,EOT}},
1053 		{EOT}}},
1054 	{0x8728, "IT8728F", {
1055 		{NOLDN, NULL,
1056 			{0x02,0x07,0x20,0x21,0x22,0x23,0x24,0x2b,0x2e,0x2f,EOT},
1057 			{NANA,NANA,0x87,0x28,0x01,0x00,0x00,MISC,0x00,0x00,EOT}},
1058 		{0x0, "Floppy",
1059 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
1060 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
1061 		{0x1, "COM1",
1062 			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
1063 			{0x00,0x03,0xf8,0x04,0x00,0x50,EOT}},
1064 		{0x2, "COM2",
1065 			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
1066 			{0x00,0x02,0xf8,0x03,0x00,0x50,EOT}},
1067 		{0x3, "Parallel port",
1068 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
1069 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
1070 		{0x4, "Environment controller",
1071 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
1072 			 0xf3,0xf4,0xf5,0xf6,0xF9,0xFA,0xFB,EOT},
1073 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
1074 			 0x00,0x00,MISC,MISC,MISC,MISC,MISC,EOT}},
1075 		{0x5, "Keyboard",
1076 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
1077 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
1078 		{0x6, "Mouse",
1079 			{0x30,0x70,0x71,0xf0,EOT},
1080 			{0x00,0x0c,0x02,0x00,EOT}},
1081 		{0x7, "GPIO",
1082 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x2d,0x60,
1083 			 0x61,0x62,0x63,0x64,0x65,0x70,0x71,0x72,0x73,
1084 			 0x74,0xb0,0xb1,0xb2,0xb3,0xb4,0xb8,0xb9,0xba,
1085 			 0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,
1086 			 0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xe0,0xe1,
1087 			 0xe2,0xe3,0xe4,0xe9,0xf0,0xf1,0xf2,0xf3,0xf4,
1088 			 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,EOT},
1089 			{0x00,0xf3,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
1090 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x38,
1091 			 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
1092 			 0x00,0x00,0x00,0x01,0x00,0x00,0x40,0x00,0x01,
1093 			 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
1094 			 0x00,0x00,0x00,MISC,0x00,0x00,0x00,0x00,0x00,
1095 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
1096 		{0xa, "Consumer IR",
1097 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1098 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
1099 		{EOT}}},
1100 	{0x8761, "IT8761E", {
1101 		{EOT}}},
1102 	{0x8772, "IT8772F", {
1103 		{NOLDN, NULL,
1104 			{0x20,0x21,0x22,0x23,0x24,0x2e,0x2f,EOT},
1105 			{0x87,0x72,0x02,0x00,0x00,0x00,0x00,EOT}},
1106 		{0x1, "COM1",
1107 			{0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
1108 			{0x00,0x03,0xf8,0x04,0x00,0x50,EOT}},
1109 		{0x4, "Environment controller",
1110 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
1111 			 0xf3,0xf4,0xf5,0xf6,0xf9,0xfa,0xfb,EOT},
1112 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
1113 			 0x00,0x00,MISC,MISC,MISC,MISC,MISC,EOT}},
1114 		{0x5, "Keyboard",
1115 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
1116 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
1117 		{0x6, "Mouse",
1118 			{0x30,0x70,0x71,0xf0,EOT},
1119 			{0x00,0x0c,0x02,0x00,EOT}},
1120 		{0x7, "GPIO",
1121 			{0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,	/* 25 .. 2c */
1122 			 0x60,0x61,0x62,0x63,				/* 60 .. 64 */
1123 			 0x70,0x71,0x72,0x73,0x74,			/* 70 .. 74 */
1124 			 0xb0,0xb1,0xb2,0xb3,0xb4,			/* b0 .. b4 */
1125 			 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,			/* b8 .. bd */
1126 			 0xc0,0xc1,0xc2,0xc3,0xc4,			/* c0 .. c4 */
1127 			 0xc8,0xc9,0xca,0xcb,0xcc,0xcd,			/* c8 .. cd */
1128 			 0xe0,0xe1,0xe2,0xe3,0xe4,0xe9,			/* e0 .. e9 */
1129 			 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,			/* f0 .. f5 */
1130 			 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,			/* f6 .. fb */
1131 			 EOT},
1132 			{0x00,0xf3,0x00,0x00,0x00,0x00,MISC,0x01,	/* 25 .. 2c */
1133 			 0x00,0x00,0x00,0x00,				/* 60 .. 64 */
1134 			 0x00,0x00,0x20,0x38,0x00,			/* 70 .. 74 */
1135 			 0x00,0x00,0x00,0x00,0x00,			/* b0 .. b4 */
1136 			 0x20,0x00,0x00,0x00,0x00,0x00,			/* b8 .. bd */
1137 			 0x01,0x00,0x00,0x40,0x00,			/* c0 .. c4 */
1138 			 0x01,0x00,0x00,0x00,0x00,0x00,			/* c8 .. cd */
1139 			 0x00,0x00,0x00,0x00,0x00,MISC,			/* e0 .. e9 */
1140 			 0x00,0x00,0x00,0x00,0x00,0x00,			/* f0 .. f6 */
1141 			 0x00,0x00,0x00,0x00,0x00,0x00,			/* f6 .. fb */
1142 			 EOT}},
1143 		{0xa, "Consumer IR",
1144 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1145 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
1146 		{EOT}}},
1147 	{0x8780, "IT8780F", {
1148 		{EOT}}},
1149 	{0x8783, "IT8783E/F", {
1150 		{NOLDN, NULL,
1151 			{0x02,0x07,0x20,0x21,0x22,0x23,0x24,0x25,0x26,
1152 			 0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
1153 			 EOT},
1154 			{NANA,NANA,0x87,0x83,0x00,0x00,MISC,0x00,0x00,
1155 			 0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
1156 			 EOT}},
1157 		{0x0, "Floppy",
1158 			{0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
1159 			{0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
1160 		{0x1, "COM1",
1161 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1162 			{0x00,0x03,0xf8,0x04,0x00,EOT}},
1163 		{0x2, "COM2",
1164 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1165 			{0x00,0x02,0xf8,0x03,0x00,EOT}},
1166 		{0x3, "Parallel port",
1167 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
1168 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
1169 		{0x4, "Environment controller",
1170 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
1171 			 0xf3,0xf4,0xf5,0xf6,0xf7,EOT},
1172 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
1173 			 0x00,0x00,MISC,MISC,MISC,EOT}},
1174 		{0x5, "Keyboard",
1175 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
1176 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
1177 		{0x6, "Mouse",
1178 			{0x30,0x70,0x71,0xf0,EOT},
1179 			{0x00,0x0c,0x02,0x00,EOT}},
1180 		{0x7, "GPIO",
1181 			{0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x71,0x72,
1182 			 0x73,0x74,0x81,0x82,0x83,0x84,0x91,0x92,0x93,
1183 			 0x94,0xb0,0xb1,0xb2,0xb3,0xb4,0xb8,0xb9,0xba,
1184 			 0xbb,0xbc,0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,
1185 			 0xca,0xcb,0xcc,0xcd,0xe0,0xe1,0xe2,0xe3,0xe4,
1186 			 0xef,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
1187 			 0xf8,0xf9,0xfa,0xfb,EOT},
1188 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,MISC,
1189 			 0x38,0x00,0x00,MISC,0x38,0x00,0x00,MISC,0x38,
1190 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1191 			 0x00,0x00,0x01,0x00,0x00,0x40,0x00,0x01,0x00,
1192 			 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1193 			 MISC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1194 			 0x00,0x00,0x00,0x00,EOT}},
1195 		{0x8, "COM3",
1196 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1197 			{0x00,0x03,0xf8,0x04,0x00,EOT}},
1198 		{0x9, "COM4",
1199 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1200 			{0x00,0x02,0xf8,0x03,0x00,EOT}},
1201 		{0xa, "COM5",
1202 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1203 			{0x00,0x03,0xf8,0x04,0x00,EOT}},
1204 		{0xb, "COM6",
1205 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1206 			{0x00,0x02,0xf8,0x03,0x00,EOT}},
1207 		{0xc, "Consumer IR",
1208 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1209 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
1210 		{EOT}}},
1211 	{0x8784, "IT8784E-I", {
1212 		{NOLDN, NULL,
1213 			{0x02,0x07,0x20,0x21,0x22,0x23,0x24,0x25,0x26,
1214 			 0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
1215 			 EOT},
1216 			{NANA,NANA,0x87,0x86,MISC,0x40,RSVD,0x00,0xf3,
1217 			 0x00,0x00,0x00,0x00,0x48,0x89,0x00,0x00,0x00,
1218 			 EOT}},
1219 		{0x1, "COM1",
1220 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
1221 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,EOT}},
1222 		{0x2, "COM2",
1223 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
1224 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,EOT}},
1225 		{0x3, "Parallel port",
1226 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
1227 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
1228 		{0x4, "Environment controller",
1229 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
1230 			 0xf3,0xf4,0xf5,0xf6,0xfa,0xfb,0xfd,EOT},
1231 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
1232 			 0x00,0x00,MISC,MISC,MISC,MISC,MISC,EOT}},
1233 		{0x5, "Keyboard",
1234 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
1235 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
1236 		{0x6, "Mouse",
1237 			{0x30,0x70,0x71,0xf0,EOT},
1238 			{0x00,0x0c,0x02,0x00,EOT}},
1239 		{0x7, "GPIO",
1240 			{0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,0x74,0xb0,
1241 			 0xb1,0xb2,0xb3,0xb4,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
1242 			 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
1243 			 0xcd,0xce,0xcf,0xd1,0xd2,0xd3,0xd4,0xd6,0xd7,0xd8,
1244 			 0xd9,0xe0,0xe1,0xe2,0xe3,0xe4,0xe7,0xf0,0xf1,0xf2,
1245 			 0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,EOT},
1246 			{0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,
1247 			 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
1248 			 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
1249 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1250 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1251 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
1252 		{0xa, "Consumer IR",
1253 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1254 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
1255 		{EOT}}},
1256 	{0x8786, "IT8786E-I", {
1257 		{NOLDN, NULL,
1258 			{0x02,0x07,0x20,0x21,0x22,0x23,0x24,0x25,0x26,
1259 			 0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
1260 			 EOT},
1261 			{NANA,NANA,0x87,0x86,0x03,0x40,RSVD,0x00,0xf3,
1262 			 0x00,0x00,0x00,0x00,0x48,0x89,0x00,0x00,0x00,
1263 			 EOT}},
1264 		{0x1, "COM1",
1265 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
1266 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,EOT}},
1267 		{0x2, "COM2",
1268 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
1269 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,EOT}},
1270 		{0x3, "Parallel port",
1271 			{0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
1272 			{0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
1273 		{0x4, "Environment controller",
1274 			{0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
1275 			 0xf3,0xf4,0xf5,0xf6,0xfa,0xfb,0xfc,EOT},
1276 			{0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
1277 			 0x00,0x00,MISC,MISC,MISC,MISC,MISC,EOT}},
1278 		{0x5, "Keyboard",
1279 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
1280 			{0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
1281 		{0x6, "Mouse",
1282 			{0x30,0x70,0x71,0xf0,EOT},
1283 			{0x00,0x0c,0x02,0x00,EOT}},
1284 		{0x7, "GPIO",
1285 			{0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,0x74,0xb0,
1286 			 0xb1,0xb2,0xb3,0xb4,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
1287 			 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
1288 			 0xcd,0xce,0xcf,0xd1,0xd2,0xd3,0xd4,0xd6,0xd7,0xd8,
1289 			 0xd9,0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,
1290 			 0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,EOT},
1291 			{0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,
1292 			 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
1293 			 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
1294 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1295 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1296 			 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
1297 		{0x8, "COM3",
1298 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
1299 			{0x00,0x03,0xf8,0x0b,0x00,0x50,0x00,EOT}},
1300 		{0x9, "COM4",
1301 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
1302 			{0x00,0x02,0xf8,0x0a,0x00,0x50,0x00,EOT}},
1303 		{0xa, "Consumer IR",
1304 			{0x30,0x60,0x61,0x70,0xf0,EOT},
1305 			{0x00,0x03,0x10,0x0b,0x06,EOT}},
1306 		{0xb, "COM5",
1307 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
1308 			{0x00,0x03,0xf8,0x04,0x00,0x50,0x00,EOT}},
1309 		{0xc, "COM6",
1310 			{0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,EOT},
1311 			{0x00,0x02,0xf8,0x03,0x00,0x50,0x00,EOT}},
1312 		{EOT}}},
1313 	{0x8987, "IT8987", { /* global registers 0x24, 0x27, 0x28, 0x29, 0x2a, 0x2b are reserved */
1314 		{NOLDN, "Chip ID",
1315 			{0x20,0x21, EOT},
1316 			{0x89,0x87, EOT}},
1317 		{NOLDN, "Chip Version",
1318 			{0x22,EOT},
1319 			{0x03,EOT}},
1320 		{NOLDN, "Super I/O Control Register (SIOCTRL)",
1321 			{0x23,EOT},
1322 			{0x01,EOT}},
1323 		{NOLDN, "Super I/O Configuration Register (SIOIRQ)",
1324 			{0x25,EOT},
1325 			{0x00,EOT}},
1326 		{NOLDN, "Super I/O General Purpose Register (SIOGP)",
1327 			{0x26,EOT},
1328 			{0x00,EOT}},
1329 		{NOLDN, "Super I/O Power Mode Register (SIOPWR)",
1330 			{0x2d,EOT},
1331 			{0x00,EOT}},
1332 		{NOLDN, "Depth 2 I/O Address (D2ADR)",
1333 			{0x2e,EOT},
1334 			{0x00,EOT}},
1335 		{NOLDN, "Depth 2 I/O Data (D2DAT)",
1336 			{0x2f,EOT},
1337 			{0x00,EOT}},
1338 		{0x04, "System Wake-Up Control (SWUC)",
1339 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
1340 			{0x00,0x00,0x00,0x00,0x00,0x00,0x01,EOT}},
1341 		{0x05, "KBC/Mouse Interface",
1342 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
1343 			{0x00,0x00,0x00,0x00,0x00,0x0c,0x01,EOT}},
1344 		{0x06, "KBC/Keyboard Interface",
1345 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
1346 			{0x00,0x00,0x60,0x00,0x64,0x01,0x01,EOT}},
1347 		{0xa, "Consumer IR",
1348 			{0x30,0x60,0x61,0x70,0x71,EOT},
1349 			{0x00,0x03,0x10,0x00,0x02,EOT}},
1350 		{0x0f, "Shared Memory/Flash Interface (SMFI)",
1351 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,EOT},
1352 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,EOT}},
1353 		{0x10, "Real Time Clock (RTC)",
1354 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,0xf1,0xf2,EOT},
1355 			{0x00,0x00,0x70,0x00,0x72,0x08,0x00,0x00,0x49,0x4a,EOT}},
1356 		{0x11, "Power Management I/F Channel 1 (PMC1)",
1357 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
1358 			{0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
1359 		{0x12, "Power Management I/F Channel 2 (PMC2)",
1360 			{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x71,0xf0,EOT},
1361 			{0x00,0x00,0x68,0x00,0x6c,0x00,0x00,0x01,0x01,NANA,EOT}},
1362 		{0x13, "Serial Peripheral Interface (SSPI)",
1363 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
1364 			{0x00,0x03,0x00,0x00,0x00,0x00,0x00,EOT}},
1365 		{0x14, "Platform Environment Control Interface (PECI)",
1366 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
1367 			{0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
1368 		{0x17, "Power Management I/F Channel 3 (PMC3)",
1369 			{0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
1370 			{0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
1371 		{0x18, "Power Management I/F Channel 4 (PMC4)",
1372 			{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x71,0xf0,EOT},
1373 			{0x00,0x00,0x68,0x00,0x6c,0x00,0x00,0x01,0x01,NANA,EOT}},
1374 		{0x19, "Power Management I/F Channel 5 (PMC5)",
1375 			{0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x71,0xf0,EOT},
1376 			{0x00,0x00,0x68,0x00,0x6c,0x00,0x00,0x01,0x01,NANA,EOT}},
1377 			{EOT}}},
1378 	{EOT}
1379 };
1380 
1381 static const struct superio_registers ec_table[] = {
1382 	{0x8613, "IT8613E", {
1383 		{NOLDN, NULL,
1384 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
1385 			 0x0a,0x0b,0x0c,0x0e,0x0f,0x11,0x12,0x13,0x14,0x16,
1386 			 0x17,0x19,0x1a,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,
1387 			 0x24,0x25,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,
1388 			 0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x38,0x39,0x3a,
1389 			 0x3b,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x50,
1390 			 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,
1391 			 0x5b,0x5c,0x5d,0x5e,0x5f,0x68,0x69,0x6a,0x6b,0x6c,
1392 			 0x6d,0x6e,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x78,
1393 			 0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x80,0x81,0x82,0x83,
1394 			 0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,
1395 			 0x8e,0x8f,0x90,0x91,0x98,0x99,0x9c,0x9d,0x9e,0x9f,
1396 			 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xb4,0xb5,0xb6,
1397 			 0xb7,0xb8,0xb9,EOT},
1398 			{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,
1399 			 0x44,0x00,0x00,MISC,MISC,NANA,NANA,0x00,0x40,0x00,
1400 			 0x00,MISC,MISC,NANA,NANA,0x00,0x00,MISC,MISC,MISC,
1401 			 MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,
1402 			 MISC,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1403 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,0x00,
1404 			 0x00,0x7f,0x7f,0x7f,0x40,0x00,0x00,0x90,0x00,0x00,
1405 			 0x12,0x60,0x00,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,
1406 			 0x7f,0x0f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x0f,0x7f,
1407 			 0x7f,0x7f,0x00,0x00,0x7f,0x0f,MISC,MISC,MISC,MISC,
1408 			 NANA,NANA,NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00,
1409 			 0x00,MISC,0x00,0x00,0x00,0x00,0x00,NANA,0x00,NANA,
1410 			 0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x0f,NANA,NANA,NANA,
1411 			 NANA,NANA,NANA,EOT}},
1412 		{EOT}}},
1413 	{0x8625, "IT8625E", {
1414 		{NOLDN, NULL,
1415 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
1416 			 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
1417 			 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
1418 			 0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,
1419 			 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,
1420 			 0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,
1421 			 0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x46,
1422 			 0x47,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,
1423 			 0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0x62,
1424 			 0x63,0x64,0x65,0x66,0x68,0x69,0x6a,0x6b,0x6c,0x6d,
1425 			 0x6e,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x78,0x79,
1426 			 0x7a,0x7b,0x7c,0x7d,0x7e,0x80,0x81,0x82,0x83,0x84,
1427 			 0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,
1428 			 0x8f,0x90,0x91,0x92,0x93,0x94,0x98,0x99,0x9c,0x9d,
1429 			 0x9e,0x9f,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa8,
1430 			 0xa9,0xaa,0xab,0xac,0xad,0xae,0xb2,0xb3,0xb4,0xb5,
1431 			 0xb6,0xb7,0xb8,0xb9,EOT},
1432 			{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
1433 			 0x44,0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x00,
1434 			 0x40,0x00,0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,
1435 			 0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1436 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1437 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1438 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1439 			 NANA,0x00,0x00,0x7f,0x7f,0x7f,0x40,0x00,0x00,0x90,
1440 			 0x00,0x00,0x12,0x60,0x00,0x00,0x00,0x7f,0x7f,0x7f,
1441 			 0x00,0x00,0x7f,0x0f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,
1442 			 0x0f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x0f,0x7f,0x7f,
1443 			 0x7f,0x00,0x00,0x7f,0x0f,NANA,NANA,NANA,NANA,NANA,
1444 			 NANA,NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1445 			 NANA,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,NANA,
1446 			 0x00,NANA,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x0f,0x7f,
1447 			 0x7f,0x7f,0x00,0x00,0x7f,0x0f,NANA,NANA,NANA,NANA,
1448 			 NANA,NANA,NANA,NANA,EOT}},
1449 		{EOT}}},
1450 	{0x8659, "IT8659E", {
1451 		{NOLDN, NULL,
1452 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
1453 			 0x0a,0x0b,0x0c,0x0d,0x0e,0x10,0x11,0x13,0x14,0x15,
1454 			 0x16,0x18,0x19,0x1b,0x1c,0x20,0x22,0x23,0x27,0x28,
1455 			 0x29,0x2a,0x2b,0x30,0x31,0x34,0x35,0x36,0x37,0x38,
1456 			 0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x50,0x51,
1457 			 0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5b,0x5c,
1458 			 0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x66,
1459 			 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x88,0x89,0x8a,
1460 			 0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
1461 			 0x95,0x96,0x97,0x98,0x99,0x9c,0x9d,0x9e,0x9f,0xc0,
1462 			 0xc1,0xc2,0xc3,0xc4,EOT},
1463 			{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
1464 			 0x44,0x0f,0x00,NANA,NANA,NANA,NANA,0x07,0x40,0x00,
1465 			 0x00,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1466 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1467 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x00,
1468 			 0x7f,0x7f,0x7f,0x40,0x00,0x00,0x90,0x00,0x12,0x60,
1469 			 0x00,0x00,0x00,0x7f,0x7f,0x7f,0x80,0x00,0x7f,0x0f,
1470 			 0x7f,0x7f,0x7f,0x80,0x00,0x7f,0x0f,0x00,0x00,0x00,
1471 			 0x00,0x00,0x00,0x00,NANA,0xff,0x00,0x00,0x00,0xff,
1472 			 0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,NANA,0x00,
1473 			 0x00,NANA,NANA,NANA,EOT}},
1474 		{EOT}}},
1475 	{0x8716, "IT8716F", {
1476 		{NOLDN, NULL,
1477 			{0x00,0x04,0x05,0x06,0x07,0x08,0x09,0x0b,0x0c,0x10,
1478 			 0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x1b,0x1c,0x1d,
1479 			 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
1480 			 0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,
1481 			 0x44,0x45,0x48,0x50,0x51,0x52,0x53,0x54,0x56,0x57,
1482 			 0x59,0x5c,
1483 			 0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x68,
1484 			 0x69,0x6a,0x6b,0x6c,0x6d,0x70,0x71,0x72,0x73,0x74,
1485 			 0x75,0x84,0x85,0x86,0x87,0x88,0x89,0x8c,0x8d,0x8e,
1486 			 0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x98,0x99,0x9a,
1487 			 0x9b,0x9c,0x9d,EOT},
1488 			{0x18,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x00,NANA,
1489 			 NANA,NANA,0x07,0x50,NANA,NANA,NANA,NANA,NANA,NANA,
1490 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1491 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1492 			 NANA,NANA,RSVD,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,
1493 			 0x00,0x00,
1494 			 0x00,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,
1495 			 0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,
1496 			 0x7f,NANA,NANA,NANA,NANA,0x00,0x00,0x02,0x00,0x99,
1497 			 0x99,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,
1498 			 0x00,0x00,0x7f,EOT}},
1499 		{EOT}}},
1500 	{0x8718, "IT8718F", {
1501 		{NOLDN, NULL,
1502 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
1503 			 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
1504 			 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
1505 			 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
1506 			 0x2a,0x2b,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
1507 			 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
1508 			 0x42,0x43,0x44,0x45,0x50,0x51,0x52,0x53,0x54,0x56,
1509 			 0x57,0x58,0x59,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,
1510 			 0x62,0x63,0x64,0x65,0x68,0x69,0x6a,0x6b,0x6c,0x6d,
1511 			 0x70,0x71,0x72,0x73,0x74,0x75,0x80,0x81,0x82,0x83,
1512 			 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,
1513 			 0x92,0x94,0x95,0x96,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,
1514 			 0xa6,EOT},
1515 			{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
1516 			 0x40,0x09,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x07,
1517 			 0x50,MISC,MISC,MISC,NANA,NANA,NANA,NANA,NANA,NANA,
1518 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1519 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1520 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1521 			 NANA,NANA,NANA,NANA,0x00,0x00,0x7f,0x7f,0x7f,0x00,
1522 			 0x00,0x90,0x00,0x12,0x00,0x00,0x00,0x00,0x7f,0x7f,
1523 			 0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,
1524 			 0x7f,0x7f,0x7f,0x00,0x00,0x7f,NANA,NANA,NANA,NANA,
1525 			 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xff,0x00,
1526 			 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1527 			 0x00,EOT}},
1528 		{EOT}}},
1529 	{0x8720, "IT8720F", {
1530 		{NOLDN, NULL,
1531 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
1532 			 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
1533 			 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
1534 			 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
1535 			 0x2a,0x2b,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
1536 			 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
1537 			 0x42,0x43,0x44,0x45,0x50,0x51,0x52,0x53,0x54,0x55,
1538 			 0x56,0x57,0x58,0x59,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,
1539 			 0x61,0x62,0x63,0x64,0x65,0x68,0x69,0x6a,0x6b,0x6c,
1540 			 0x6d,0x70,0x71,0x72,0x73,0x74,0x75,0x80,0x81,0x82,
1541 			 0x83,0x84,0x85,0x86,0x87,
1542 			 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,
1543 			 0x92,0x94,0x95,0x96,EOT},
1544 			{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
1545 			 0x58,0x09,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x07,
1546 			 0x50,MISC,MISC,MISC,NANA,NANA,NANA,NANA,NANA,NANA,
1547 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1548 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1549 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1550 			 NANA,NANA,NANA,NANA,0x00,0x00,0x7f,0x7f,0x7f,0x50,
1551 			 0x00,0x00,0x90,0x00,0x12,0x60,0x00,0x00,0x00,0x7f,
1552 			 0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,
1553 			 0x7f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,NANA,NANA,NANA,
1554 			 NANA,NANA,NANA,NANA,NANA,
1555 			 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xff,0x00,
1556 			 0x00,0xff,0x00,0x00,EOT}},
1557 		{EOT}}},
1558 	{0x8728, "IT8728F", {
1559 		{NOLDN, NULL,
1560 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
1561 			 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
1562 			 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
1563 			 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29,0x2a,
1564 			 0x2b,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,
1565 			 0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,
1566 			 0x43,0x44,0x45,0x50,0x51,0x52,0x53,0x54,0x55,0x56,
1567 			 0x57,0x58,0x59,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,
1568 			 0x62,0x63,0x64,0x65,0x66,0x68,0x69,0x6a,0x6b,0x6c,
1569 			 0x6d,0x6e,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x80,
1570 			 0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,
1571 			 0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x94,0x95,
1572 			 0x96,0x98,0x99,0x9c,0x9d,0x9e,0x9f,EOT},
1573 			{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
1574 			 0x58,0x0f,0x00,MISC,MISC,MISC,MISC,MISC,MISC,0x07,
1575 			 0x40,0x00,0x00,0x00,NANA,NANA,NANA,MISC,MISC,MISC,
1576 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1577 			 NANA,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,
1578 			 MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,
1579 			 MISC,MISC,MISC,0x00,0x00,0x7f,0x7f,0x7f,0x40,0x00,
1580 			 0x00,0x90,0x00,0x12,0x60,0x00,0x00,0x00,0x7f,0x7f,
1581 			 0x7f,0x00,0x00,0x7f,0x0f,0x7f,0x7f,0x7f,0x00,0x00,
1582 			 0x7f,0x0f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x0f,NANA,
1583 			 NANA,NANA,NANA,MISC,MISC,MISC,MISC,0x00,0x00,0x00,
1584 			 0x00,0x00,0x00,0x00,NANA,0xff,0x00,0x00,0xff,0x00,
1585 			 0x00,0x00,0x00,0x00,MISC,0x00,MISC,EOT}},
1586 		{EOT}}},
1587 	{0x8783, "IT8783E/F", {
1588 		{NOLDN, NULL,
1589 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
1590 			 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
1591 			 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
1592 			 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
1593 			 0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,
1594 			 0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,
1595 			 0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
1596 			 0x48,0x49,0x4a,0x4b,0x50,0x51,0x52,0x53,0x54,0x55,
1597 			 0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,
1598 			 0x60,0x61,0x62,0x63,0x64,0x65,0x68,0x69,0x6a,0x6b,
1599 			 0x6c,0x6d,0x70,0x71,0x72,0x73,0x74,0x75,0x88,0x89,
1600 			 0x8a,0x8b,0x8c,0x8d,0x8e,EOT},
1601 			{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
1602 			 0x54,0x09,0x00,NANA,NANA,NANA,MISC,MISC,MISC,0x07,
1603 			 0x50,MISC,MISC,MISC,NANA,NANA,NANA,MISC,MISC,MISC,
1604 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1605 			 NANA,NANA,NANA,NANA,NANA,NANA,MISC,MISC,MISC,MISC,
1606 			 MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,
1607 			 MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,0x5f,0x74,
1608 			 0x2d,0x40,0xab,0x22,0x00,0x00,0x7f,0x7f,0x7f,0x50,
1609 			 0x00,0x00,0x90,0x00,MISC,0x12,0x60,0x00,0x00,0x00,
1610 			 0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,
1611 			 0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,MISC,0x00,
1612 			 0x00,0x00,0x00,MISC,0x02,EOT}},
1613 		{EOT}}},
1614 	{0x8784, "IT8784E-I", {
1615 		{NOLDN, NULL,
1616 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
1617 			 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
1618 			 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
1619 			 0x20,0x21,0x22,0x23,0x24,0x27,0x28,0x29,0x2a,0x2b,
1620 			 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
1621 			 0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x50,0x51,
1622 			 0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5b,0x5c,
1623 			 0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x66,
1624 			 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x70,0x71,0x72,
1625 			 0x73,0x74,0x75,0x76,0x80,0x81,0x82,0x83,0x84,0x85,
1626 			 0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
1627 			 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,
1628 			 0x9c,0x9d,0x9e,0x9f,0xc0,0xc1,0xc2,0xc3,0xc4,EOT},
1629 			{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,
1630 			 0x44,0x0F,0x00,NANA,NANA,NANA,MISC,MISC,MISC,0x07,
1631 			 0x40,0x00,0x00,0x00,NANA,NANA,NANA,MISC,MISC,MISC,
1632 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1633 			 MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,
1634 			 MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,0x00,0x00,
1635 			 0x7f,0x7f,0x7f,0x40,0x00,0x00,0x90,0x00,0x12,0x60,
1636 			 0x00,0x00,0x00,0x7f,0x7f,0x7f,0x80,0x00,0x7f,0x0f,
1637 			 0x7f,0x7f,0x7f,0x80,0x00,0x7f,0x0f,0x7f,0x7f,0x7f,
1638 			 0x80,0x00,0x7f,0x0f,NANA,NANA,NANA,NANA,MISC,MISC
1639 			 MISC,MISC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,
1640 			 0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,MISC,0x00,
1641 			 0x00,MISC,0x00,MISC,0x00,0x00,MISC,MISC,MISC,EOT}},
1642 		{EOT}}},
1643 	{0x8786, "IT8786E-I", {
1644 		{NOLDN, NULL,
1645 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
1646 			 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
1647 			 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
1648 			 0x20,0x21,0x22,0x23,0x24,0x27,0x28,0x29,0x2a,0x2b,
1649 			 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
1650 			 0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x50,0x51,
1651 			 0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5b,0x5c,
1652 			 0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x66,
1653 			 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x70,0x71,0x72,
1654 			 0x73,0x74,0x75,0x76,0x80,0x81,0x82,0x83,0x84,0x85,
1655 			 0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
1656 			 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,
1657 			 0x9c,0x9d,0x9e,0x9f,EOT},
1658 			{0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,
1659 			 0x44,0x0F,0x00,NANA,NANA,NANA,MISC,MISC,MISC,0x07,
1660 			 0x40,0x00,0x00,0x00,NANA,NANA,NANA,MISC,MISC,MISC,
1661 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1662 			 MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,
1663 			 MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,0x00,0x00,
1664 			 0x7f,0x7f,0x7f,0x40,0x00,0x00,0x90,0x00,0x12,0x60,
1665 			 0x00,0x00,0x00,0x7f,0x7f,0x7f,0x80,0x00,0x7f,0x0f,
1666 			 0x7f,0x7f,0x7f,0x80,0x00,0x7f,0x0f,0x7f,0x7f,0x7f,
1667 			 0x80,0x00,0x7f,0x0f,NANA,NANA,NANA,NANA,MISC,MISC
1668 			 MISC,MISC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,
1669 			 0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,MISC,0x00,
1670 			 0x00,MISC,0x00,MISC,EOT}},
1671 		{EOT}}},
1672 	{EOT}
1673 };
1674 
1675 static const struct superio_registers bram_table[] = {
1676 	{0x8516, "IT8516???", {
1677 		{NOLDN, NULL,
1678 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
1679 			 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,EOT},
1680 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1681 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1682 		{NOLDN, NULL,
1683 			{0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
1684 			 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,EOT},
1685 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1686 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1687 		{NOLDN, NULL,
1688 			{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
1689 			 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT},
1690 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1691 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1692 		{NOLDN, NULL,
1693 			{0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
1694 			 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,EOT},
1695 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1696 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1697 		{NOLDN, NULL,
1698 			{0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
1699 			 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,EOT},
1700 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1701 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1702 		{NOLDN, NULL,
1703 			{0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
1704 			 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,EOT},
1705 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1706 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1707 		{NOLDN, NULL,
1708 			{0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
1709 			 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,EOT},
1710 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1711 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1712 		{NOLDN, NULL,
1713 			{0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,
1714 			 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,EOT},
1715 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1716 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1717 		{NOLDN, NULL,
1718 			{0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
1719 			 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,EOT},
1720 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1721 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1722 		{NOLDN, NULL,
1723 			{0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
1724 			 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,EOT},
1725 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1726 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1727 		{NOLDN, NULL,
1728 			{0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,
1729 			 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,EOT},
1730 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1731 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1732 		{NOLDN, NULL,
1733 			{0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,
1734 			 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,EOT},
1735 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1736 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1737 		{NOLDN, NULL,
1738 			{0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,
1739 			 0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,EOT},
1740 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1741 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1742 		{EOT}}},
1743 {0x8987, "IT8987", {
1744 		{NOLDN, NULL,
1745 			{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
1746 			 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,EOT},
1747 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1748 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1749 		{NOLDN, NULL,
1750 			{0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
1751 			 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,EOT},
1752 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1753 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1754 		{NOLDN, NULL,
1755 			{0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
1756 			 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT},
1757 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1758 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1759 		{NOLDN, NULL,
1760 			{0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
1761 			 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,EOT},
1762 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1763 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1764 		{NOLDN, NULL,
1765 			{0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
1766 			 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,EOT},
1767 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1768 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1769 		{NOLDN, NULL,
1770 			{0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
1771 			 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,EOT},
1772 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1773 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1774 		{NOLDN, NULL,
1775 			{0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
1776 			 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,EOT},
1777 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1778 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1779 		{NOLDN, NULL,
1780 			{0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,
1781 			 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,EOT},
1782 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1783 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1784 		{NOLDN, NULL,
1785 			{0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
1786 			 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,EOT},
1787 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1788 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1789 		{NOLDN, NULL,
1790 			{0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
1791 			 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,EOT},
1792 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1793 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1794 		{NOLDN, NULL,
1795 			{0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,
1796 			 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,EOT},
1797 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1798 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1799 		{NOLDN, NULL,
1800 			{0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,
1801 			 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,EOT},
1802 			{NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
1803 			 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
1804 		{EOT}}},
1805 	{EOT}
1806 };
1807 
1808 /* Works for: IT8661F/IT8770F */
1809 static const uint8_t initkey_it8661f[][4] = {
1810 	{0x86, 0x61, 0x55, 0x55},	/* 0x3f0 */
1811 	{0x86, 0x61, 0x55, 0xaa},	/* 0x3bd */
1812 	{0x86, 0x61, 0xaa, 0x55},	/* 0x370 */
1813 };
1814 
1815 /* Works for: IT8671F/IT8687R, IT8673F */
1816 static const uint8_t initkey_it8671f[][4] = {
1817 	{0x86, 0x80, 0x55, 0x55},	/* 0x3f0 */
1818 	{0x86, 0x80, 0x55, 0xaa},	/* 0x3bd */
1819 	{0x86, 0x80, 0xaa, 0x55},	/* 0x370 */
1820 };
1821 
1822 /* Works for: IT8661F/IT8770F, IT8671F/IT8687R, IT8673F. */
1823 static const uint8_t initkey_mbpnp[] = {
1824 	0x6a, 0xb5, 0xda, 0xed, 0xf6, 0xfb, 0x7d, 0xbe, 0xdf, 0x6f, 0x37,
1825 	0x1b, 0x0d, 0x86, 0xc3, 0x61, 0xb0, 0x58, 0x2c, 0x16, 0x8b, 0x45,
1826 	0xa2, 0xd1, 0xe8, 0x74, 0x3a, 0x9d, 0xce, 0xe7, 0x73, 0x39,
1827 };
1828 
1829 /* Works for: IT8661F/IT8770F, IT8671F/IT8687R, IT8673F. */
enter_conf_mode_ite_legacy(uint16_t port,const uint8_t init[][4])1830 static void enter_conf_mode_ite_legacy(uint16_t port, const uint8_t init[][4])
1831 {
1832 	int i, idx;
1833 
1834 	/* Determine Super I/O config port. */
1835 	idx = (port == 0x3f0) ? 0 : ((port == 0x3bd) ? 1 : 2);
1836 	for (i = 0; i < 4; i++)
1837 		OUTB(init[idx][i], ISA_PNP_ADDR);
1838 
1839 	/* Sequentially write the 32 MB PnP init values. */
1840 	for (i = 0; i < 32; i++)
1841 		OUTB(initkey_mbpnp[i], port);
1842 }
1843 
enter_conf_mode_ite(uint16_t port)1844 static void enter_conf_mode_ite(uint16_t port)
1845 {
1846 	OUTB(0x87, port);
1847 	OUTB(0x01, port);
1848 	OUTB(0x55, port);
1849 	OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
1850 }
1851 
enter_conf_mode_ite_it8502e(uint16_t port)1852 static void enter_conf_mode_ite_it8502e(uint16_t port)
1853 {
1854 	OUTB(0x85, port);
1855 	OUTB(0x02, port);
1856 	OUTB(0x55, port);
1857 	OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
1858 }
1859 
enter_conf_mode_ite_it8761e(uint16_t port)1860 static void enter_conf_mode_ite_it8761e(uint16_t port)
1861 {
1862 	OUTB(0x87, port);
1863 	OUTB(0x61, port);
1864 	OUTB(0x55, port);
1865 	OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
1866 }
1867 
enter_conf_mode_ite_it8228e(uint16_t port)1868 static void enter_conf_mode_ite_it8228e(uint16_t port)
1869 {
1870 	OUTB(0x82, port);
1871 	OUTB(0x28, port);
1872 	OUTB(0x55, port);
1873 	OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
1874 }
1875 
enter_conf_mode_ite_it8987e(uint16_t port)1876 static void enter_conf_mode_ite_it8987e(uint16_t port)
1877 {
1878 	OUTB(0x89, port);
1879 	OUTB(0x87, port);
1880 	OUTB(0x55, port);
1881 	OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
1882 }
1883 
exit_conf_mode_ite(uint16_t port)1884 static void exit_conf_mode_ite(uint16_t port)
1885 {
1886 	regwrite(port, 0x02, 0x02);
1887 }
1888 
1889 static int chip_found_at_port;
1890 
probe_idregs_ite_helper(const char * init,uint16_t port)1891 static void probe_idregs_ite_helper(const char *init, uint16_t port)
1892 {
1893 	uint16_t id, chipver, ecport;
1894 
1895 	probing_for("ITE", init, port);
1896 
1897 	id = regval(port, CHIP_ID_BYTE1_REG) << 8;
1898 	id |= regval(port, CHIP_ID_BYTE2_REG);
1899 	chipver = regval(port, CHIP_VERSION_REG) & 0x0f; /* Only bits 3..0 */
1900 
1901 	if (superio_unknown(reg_table, id)) {
1902 		if (verbose)
1903 			printf(NOTFOUND "id=0x%04x, rev=0x%01x\n", id, chipver);
1904 		return;
1905 	}
1906 
1907 	printf("Found ITE %s (id=0x%04x, rev=0x%01x) at 0x%x\n",
1908 	       get_superio_name(reg_table, id), id, chipver, port);
1909 	chip_found = 1;
1910 	chip_found_at_port = 1;
1911 
1912 	dump_superio("ITE", reg_table, port, id, LDN_SEL);
1913 
1914 	if (extra_dump) {
1915 		regwrite(port, LDN_SEL, 0x04); /* Select LDN 4 (EC). */
1916 
1917 		/* Get EC base address (stored in LDN 4, index 0x60/0x61). */
1918 		ecport = regval(port, 0x60) << 8;
1919 		ecport |= regval(port, 0x61);
1920 
1921 		/* EC address register = EC base address + 5. */
1922 		ecport += 5;
1923 
1924 		printf("Environment controller (0x%04x)\n", ecport);
1925 		dump_superio("ITE-EC", ec_table, ecport, id, LDN_SEL);
1926 
1927 		regwrite(port, LDN_SEL, 0x10); /* Select LDN 16 (BRAM). */
1928 		/* Get EC base address (stored in LDN 16, index 0x62/0x63). */
1929 		ecport = regval(port, 0x62) << 8;
1930 		ecport |= regval(port, 0x63);
1931 		printf("BRAM (0x%04x)\n", ecport);
1932 		dump_superio("ITE-BRAM", bram_table, ecport, id, LDN_SEL);
1933 	}
1934 }
1935 
probe_idregs_ite(uint16_t port)1936 void probe_idregs_ite(uint16_t port)
1937 {
1938 	chip_found_at_port = 0;
1939 
1940 	if (port == 0x3f0 || port == 0x3bd || port == 0x370) {
1941 		enter_conf_mode_ite_legacy(port, initkey_it8661f);
1942 		probe_idregs_ite_helper("(init=legacy/it8661f) ", port);
1943 		exit_conf_mode_ite(port);
1944 		if (chip_found_at_port)
1945 			return;
1946 
1947 		enter_conf_mode_ite_legacy(port, initkey_it8671f);
1948 		probe_idregs_ite_helper("(init=legacy/it8671f) ", port);
1949 		exit_conf_mode_ite(port);
1950 		if (chip_found_at_port)
1951 			return;
1952 	} else {
1953 		enter_conf_mode_ite(port);
1954 		probe_idregs_ite_helper("(init=standard) ", port);
1955 		exit_conf_mode_ite(port);
1956 		if (chip_found_at_port)
1957 			return;
1958 
1959 		enter_conf_mode_ite_it8502e(port);
1960 		probe_idregs_ite_helper("(init=it8502e) ", port);
1961 		exit_conf_mode_ite(port);
1962 		if (chip_found_at_port)
1963 			return;
1964 
1965 		enter_conf_mode_ite_it8761e(port);
1966 		probe_idregs_ite_helper("(init=it8761e) ", port);
1967 		exit_conf_mode_ite(port);
1968 		if (chip_found_at_port)
1969 			return;
1970 
1971 		enter_conf_mode_ite_it8228e(port);
1972 		probe_idregs_ite_helper("(init=it8228e) ", port);
1973 		exit_conf_mode_ite(port);
1974 		if (chip_found_at_port)
1975 			return;
1976 
1977 		enter_conf_mode_ite_it8987e(port);
1978 		probe_idregs_ite_helper("(init=it8987e) ", port);
1979 		exit_conf_mode_ite(port);
1980 		if (chip_found_at_port)
1981 			return;
1982 
1983 		enter_conf_mode_winbond_fintek_ite_8787(port);
1984 		probe_idregs_ite_helper("(init=0x87,0x87) ", port);
1985 		exit_conf_mode_winbond_fintek_ite_8787(port);
1986 		if (chip_found_at_port)
1987 			return;
1988 	}
1989 }
1990 
print_ite_chips(void)1991 void print_ite_chips(void)
1992 {
1993 	print_vendor_chips("ITE", reg_table);
1994 	print_vendor_chips("ITE-EC", ec_table);
1995 }
1996