blob: eef95de5eeea5ee910bd36a4347ccd371a753cff [file] [log] [blame]
Uwe Hermann0120e1a2007-09-16 18:11:03 +00001/*
Uwe Hermannafe83092007-09-28 15:45:43 +00002 * This file is part of the superiotool project.
Uwe Hermann0120e1a2007-09-16 18:11:03 +00003 *
4 * Copyright (C) 2007 Carl-Daniel Hailfinger
Uwe Hermannebb73f22008-11-12 19:08:58 +00005 * Copyright (C) 2007-2008 Uwe Hermann <uwe@hermann-uwe.de>
Uwe Hermann0120e1a2007-09-16 18:11:03 +00006 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
Uwe Hermann0120e1a2007-09-16 18:11:03 +000016 */
17
18#include "superiotool.h"
19
Uwe Hermann07024692007-09-20 22:13:48 +000020#define CHIP_ID_BYTE1_REG 0x20
21#define CHIP_ID_BYTE2_REG 0x21
22#define CHIP_VERSION_REG 0x22
Urja Rannikko38204a22008-10-23 23:33:18 +000023#define ISA_PNP_ADDR 0x279
Uwe Hermann07024692007-09-20 22:13:48 +000024
Uwe Hermann246be7d2007-10-31 22:22:11 +000025static const struct superio_registers reg_table[] = {
Uwe Hermannebb73f22008-11-12 19:08:58 +000026 {0x8228, "IT8228E", {
27 {EOT}}},
Donald Huang03e54de2010-08-10 23:34:51 +000028 {0x8500, "IT8500B/E", {
29 {NOLDN, NULL,
30 {0x20,0x21,0x22,0x23,0x25,0x2d,0x2e,0x2f,0x30,EOT},
31 {0x85,0x00,0x01,0x01,0x00,0x00,NANA,NANA,0x00,EOT}},
32 {0x04, "System Wake-Up Control (SWUC)",
33 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
34 {0x00,0x00,0x00,0x00,0x00,0x00,0x01,EOT}},
35 {0x05, "KBC/Mouse Interface",
36 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
37 {0x00,0x00,0x00,0x00,0x00,0x0c,0x01,EOT}},
38 {0x06, "KBC/Keyboard Interface",
39 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
40 {0x00,0x00,0x60,0x00,0x64,0x01,0x01,EOT}},
41 {0x0f, "Shared Memory/Flash Interface (SMFI)",
42 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,EOT},
43 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,EOT}},
44 {0x10, "BRAM",
45 {0x30,0x62,0x63,0x70,0x71,0xf3,0xf4,0xf5,EOT},
46 {0x00,0x00,0x72,0x08,0x01,NANA,NANA,NANA,EOT}},
47 {0x11, "Power Management I/F Channel 1 (PMC1)",
48 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
49 {0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
50 {0x12, "Power Management I/F Channel 2 (PMC2)",
51 {0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x71,0xf0,EOT},
52 {0x00,0x00,0x68,0x00,0x6c,0x00,0x00,0x01,0x01,NANA,EOT}},
53 {EOT}}},
Anton Kochkov106f7ff2010-06-29 21:26:17 +000054 {0x8502, "IT8502E/TE/G", {
55 {NOLDN, NULL,
56 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
57 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
58 {0x85,0x02,0x71,0x01,NANA,0x00,0x00,NANA,NANA,NANA,
59 NANA,NANA,NANA,0x00,NANA,EOT}},
60 {0x1, "UART1",
61 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
62 {0x00,0x03,0xf8,0x00,0x00,0x04,0x02,0x00,EOT}},
63 {0x4, "System Wake-Up",
64 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
65 {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,EOT}},
66 {0x5, "Mouse",
67 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
68 {0x01,0x00,0x00,0x00,0x00,0x0C,0x01,NANA,EOT}},
69 {0x6, "Keyboard",
70 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
71 {0x01,0x00,0x60,0x00,0x64,0x01,0x01,NANA,EOT}},
72 {0xf, "Shared Memory/Flash",
73 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,
74 0xf6,EOT},
75 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
76 0x00,EOT}},
77 {0x10, "BRAM",
78 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf3,0xf4,
79 0xf5,EOT},
80 {0x00,0x00,0x70,0x00,0x72,0x08,0x01,NANA,NANA,
81 NANA,EOT}},
82 {0x11, "Power Channel 1",
83 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
84
85 {0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
86 {0x12, "Power Channel 2",
87 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
88 {0x00,0x00,0x68,0x00,0x6c,0x01,0x01,EOT}},
89 {0x17, "Power Channel 3",
90 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
91 {0x00,0x00,0x6a,0x00,0x6e,0x01,0x01,EOT}},
92 {EOT}}},
Anders Juel Jensenb850eb82010-01-23 15:50:12 +000093 {0x8510, "IT8510E/TE/G", {
Anders Juel Jensen28e4af52010-08-22 19:41:47 +000094 {NOLDN, "Chip ID",
95 {0x20,0x21, EOT},
96 {0x85,0x10, EOT}},
97 {NOLDN, "Chip Version",
98 {0x22,EOT},
99 {0x21,EOT}},
100 {NOLDN, "Super I/O Control Reigster (SIOCTRL)",
101 {0x23,EOT},
102 {0x01,EOT}},
103 {NOLDN, "Super I/O Configuration Register (SIOIRQ)",
104 {0x25,EOT},
105 {0x00,EOT}},
106 {NOLDN, "Super I/O General Purpose Register (SIOGP)",
107 {0x26,EOT},
108 {0x00,EOT}},
109 {NOLDN, "Super I/O Power Mode Register (SIOPWR)",
110 {0x2d,EOT},
111 {0x00,EOT}},
112 {NOLDN, "Logical Device Activate Register (LDA)",
113 {0x30,EOT},
114 {0x00,EOT}},
115 {NOLDN, "I/O Port Base Address for Descriptor 0 (IOBAD0)",
116 {0x60,0x61,EOT},
117 {NANA,NANA,EOT}},
118 {NOLDN, "I/O Port Base Address for Descriptor 1 (IOBAD1)",
119 {0x62,0x63,EOT},
120 {NANA,NANA,EOT}},
121 {NOLDN, "Interupt Request Number and Wake-Up on IRQ Enable (IRQNUMX)",
122 {0x70,EOT},
123 {NANA,EOT}},
124 {NOLDN, "Interrupt Request Type Select (IRQTP)",
125 {0x71,EOT},
126 {NANA,EOT}},
127 {NOLDN, "DMA Channel Select 0 (DMAS0)",
128 {0x74,EOT},
129 {0x04,EOT}},
130 {NOLDN, "DMA Channel Select 1 (DMAS1)",
131 {0x75,EOT},
132 {0x04,EOT}},
133 {0x4, "System Wakup-Up (SWUC)",
134 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
135 {0x00,0x00,0x00,0x00,0x00,0x00,0x03,EOT}},
136 {0x5, "Keyboard/Mouse",
137 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
138 {0x00,0x00,0x00,0x00,0x00,0x0c,0x03,EOT}},
139 {0x6, "Keyboard/Mouse",
140 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
141 {0x00,0x00,0x60,0x00,0x64,0x01,0x03,EOT}},
142 {0xf, "Shared Memory/Flash Interface (SMFI)",
143 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,0xf6,0xf7,0xf8,EOT},
144 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
145 {0x10, "Real Time Clock (RTC)",
146 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,0xf1,0xf2,EOT},
147 {0x00,0x00,0x70,0x00,0x72,0x08,0x00,0x00,0x49,0x4a,EOT}},
148 {0x11, "Power Management Interface Channel 1",
149 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
150 {0x00,0x00,0x62,0x00,0x66,0x01,0x03,EOT}},
151 {0x12, "Power Management Interface Channel 2",
152 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
153 {0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}},
Anders Juel Jensenb850eb82010-01-23 15:50:12 +0000154 {EOT}}},
155 {0x8511, "IT8511E/TE/G", {
Anton Kochkov106f7ff2010-06-29 21:26:17 +0000156 {NOLDN, NULL,
157 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
158 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
159 {0x85,0x11,0x10,0x01,NANA,0x00,0x00,NANA,NANA,NANA,
160 NANA,NANA,NANA,0x00,NANA,EOT}},
161 {0x4, "System Wake-Up",
162 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
163 {0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,EOT}},
164 {0x5, "Mouse",
165 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
166 {0x01,0x00,0x00,0x00,0x00,0x0C,0x03,NANA,EOT}},
167 {0x6, "Keyboard",
168 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
169 {0x01,0x00,0x60,0x00,0x64,0x01,0x03,NANA,EOT}},
170 {0xf, "Shared Memory/Flash",
171 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,
172 0xf6,EOT},
173 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
174 0x00,EOT}},
175 {0x10, "Real-Time Clock",
176 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,0xf1,
177 0xf2,0xf3,0xf4,0xf5,EOT},
178 {0x00,0x00,0x70,0x00,0x72,0x08,0x00,0x00,0x49,
179 0x4A,NANA,NANA,NANA,EOT}},
180 {0x11, "Power Channel 1",
181 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
182 {0x00,0x00,0x62,0x00,0x66,0x01,0x03,EOT}},
183 {0x12, "Power Channel 2",
184 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
185 {0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}},
Anders Juel Jensenb850eb82010-01-23 15:50:12 +0000186 {EOT}}},
Anton Kochkov7b5df5a2010-05-09 15:30:45 +0000187 {0x8512, "IT8512E/F/G", {
Anton Kochkov106f7ff2010-06-29 21:26:17 +0000188 {NOLDN, NULL,
189 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
190 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
191 {0x85,0x12,0x22,0x01,NANA,0x00,0x00,NANA,NANA,NANA,
192 NANA,NANA,NANA,0x00,NANA,EOT}},
193 {0x4, "System Wake-Up",
194 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
195 {0x00,0x00,0x00,0x00,0x00,0x00,0x03,EOT}},
196 {0x5, "Mouse",
197 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
198 {0x00,0x00,0x00,0x00,0x00,0x0C,0x03,NANA,EOT}},
199 {0x6, "Keyboard",
200 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
201 {0x00,0x00,0x60,0x00,0x64,0x01,0x03,NANA,EOT}},
202 {0xf, "Shared Memory/Flash",
203 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,
204 0xf6,EOT},
205 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
206 0x00,EOT}},
207 {0x10, "BRAM",
208 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf3,0xf4,
209 0xf5,EOT},
210 {0x00,0x00,0x70,0x00,0x72,0x08,0x00,NANA,NANA,
211 NANA,EOT}},
212 {0x11, "Power Channel 1",
213 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
214 {0x00,0x00,0x62,0x00,0x66,0x01,0x03,EOT}},
215 {0x12, "Power Channel 2",
216 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
217 {0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}},
Anton Kochkov7b5df5a2010-05-09 15:30:45 +0000218 {EOT}}},
219 {0x8513, "IT8513E/F/G", {
220 {EOT}}},
Nico Huber28a13242013-04-25 15:10:46 +0200221 {0x8516, "IT8516???", {
222 {NOLDN, "Chip ID",
223 {0x20,0x21, EOT},
224 {0x85,0x16, EOT}},
225 {NOLDN, "Chip Version",
226 {0x22,EOT},
227 {0x63,EOT}},
228 {NOLDN, "Super I/O Control Reigster (SIOCTRL)",
229 {0x23,EOT},
230 {0x01,EOT}},
231 {NOLDN, "Super I/O Configuration Register (SIOIRQ)",
232 {0x25,EOT},
233 {0x00,EOT}},
234 {NOLDN, "Super I/O General Purpose Register (SIOGP)",
235 {0x26,EOT},
236 {0x00,EOT}},
237 {NOLDN, "Super I/O Power Mode Register (SIOPWR)",
238 {0x2d,EOT},
239 {0x00,EOT}},
240 {0x01, "UART1",
241 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
242 {0x00,0x03,0xf8,0x00,0x00,0x04,0x02,EOT}},
243 {0x02, "UART2",
244 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
245 {0x00,0x02,0xf8,0x00,0x00,0x04,0x02,EOT}},
246 {0x04, "System Wakup-Up (SWUC)",
247 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
248 {0x00,0x00,0x00,0x00,0x00,0x00,0x01,EOT}},
249 {0x05, "Mouse",
250 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
251 {0x00,0x00,0x00,0x00,0x00,0x0C,0x01,EOT}},
252 {0x06, "Keyboard",
253 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
254 {0x00,0x00,0x60,0x00,0x64,0x01,0x01,EOT}},
255 {0x0f, "Shared Memory/Flash Interface (SMFI)",
256 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,
257 0xf4,0xf5,EOT},
258 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,
259 NANA,NANA,EOT}},
260 {0x10, "BRAM / Real Time Clock (RTC)",
261 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,
262 0xf1,0xf2,0xf3,0xf4,0xf5,EOT},
263 {0x00,0x00,0x70,0x00,0x72,0x08,0x01,
264 NANA,NANA,NANA,NANA,NANA,EOT}},
265 {0x11, "Power Management Interface Channel 1",
266 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
267 {0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
268 {0x12, "Power Management Interface Channel 2",
269 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
270 {0x00,0x00,0x68,0x00,0x6c,0x01,0x01,EOT}},
271 {0x17, "Power Management Interface Channel 3",
272 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
273 {0x00,0x00,0x6a,0x00,0x6e,0x01,0x01,EOT}},
274 {EOT}}},
Urja Rannikko38204a22008-10-23 23:33:18 +0000275 {0x8661, "IT8661F/IT8770F", {
Robinson P. Tryondc817692007-10-05 13:47:04 +0000276 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000277 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x20,0x21,0x22,
278 0x23,0x24,EOT},
279 {NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x86,0x61,0x00,
280 0x00,0x00,EOT}},
Robinson P. Tryondc817692007-10-05 13:47:04 +0000281 {0x0, "Floppy",
282 {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0xf0,EOT},
283 {0x00,0x00,0x03,0xf0,0x06,0x02,0x02,0x00,EOT}},
284 {0x1, "COM1",
285 {0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
286 {0x00,0x00,0x03,0xf8,0x04,0x02,0x00,EOT}},
287 {0x2, "COM2",
288 {0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
289 {0x00,0x00,0x02,0xf8,0x03,0x02,0x00,EOT}},
290 {0x3, "Parallel port",
291 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x74,
292 0xf0,EOT},
293 {0x00,0x00,0x03,0x78,0x07,0x78,0x07,0x02,0x03,
294 0x03,EOT}},
295 {0x4, "IR",
296 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,
297 0x74,0x75,0xf0,EOT},
298 {0x00,0x00,0x02,0xe8,0x03,0x00,0x0a,0x02,0x0b,0x02,
299 0x01,0x00,0x00,EOT}},
300 {0x5, "GPIO",
301 {0x25,0x26,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
302 0x70,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,
303 0xf9,0xfa,0xfb,0xfc,EOT},
304 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
305 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
306 0x00,0x00,0x00,0x00,EOT}},
307 {EOT}}},
Urja Rannikko38204a22008-10-23 23:33:18 +0000308 {0x8673, "IT8673F", {
309 {EOT}}},
310 {0x8681, "IT8671F/IT8687R", {
Anders Jenbo14db1c02010-05-08 23:28:33 +0000311 {NOLDN, NULL,
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000312 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x20,0x21,0x22,
313 0x23,0x24,0x25,0x26,0x2e,0x2f,EOT},
314 {NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x86,0x81,0x00,
315 0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
316 {0x0, "Floppy",
317 {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0xf0,EOT},
318 {0x00,0x00,0x03,0xf0,0x06,0x02,0x02,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000319 {0x1, "COM1",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000320 {0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
321 {0x00,0x00,0x03,0xf8,0x04,0x02,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000322 {0x2, "COM2",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000323 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,
324 0x74,0x75,0xf0,0xf1,EOT},
325 {0x00,0x00,0x02,0xf8,0x03,0x00,0x03,0x02,0x0a,0x02,
326 0x00,0x01,0x00,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000327 {0x3, "Parallel port",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000328 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x74,
329 0xf0,EOT},
330 {0x00,0x00,0x03,0x78,0x07,0x78,0x07,0x02,0x03,
331 0x03,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000332 {0x4, "APC",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000333 {0x30,0xf0,0xf1,0xf2,0xf4,0xf5,0xf6,EOT},
334 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000335 {0x5, "Keyboard",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000336 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
337 {MISC,0x00,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000338 {0x6, "Mouse",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000339 {0x30,0x70,0x71,0xf0,EOT},
340 {0x00,0x0c,0x02,0x00,EOT}},
341 {0x7, "GPIO",
342 {0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,
343 0x70,0x71,0x72,0x73,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,
344 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff,
345 0xe0,0xe1,0xe2,0xe3,0xe4,EOT},
346 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
347 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
348 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
349 0x00,0x00,0x00,0x00,0x00,EOT}},
Urja Rannikko38204a22008-10-23 23:33:18 +0000350 {EOT}}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000351 {0x8701, "IT8703F", {
352 {NOLDN, NULL,
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000353 {0x20,0x21,0x23,0x24,0x26,0x29,0x2a,0x2b,EOT},
354 {0x87,0x00,0x00,0x80,0x00,0x00,0x7c,0xc0,EOT}},
355 {0x0, "Floppy",
356 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf3,0xf4,
357 0xf5,EOT},
358 {0x00,0x03,0xf0,0x06,0x02,0x0e,0x00,0xff,0x00,0x00,
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000359 0x00,EOT}},
360 {0x1, "Parallel port",
361 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
362 {0x00,0x03,0x78,0x00,0x80,0x07,0x03,0x03,EOT}},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000363 {0x2, "COM1",
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000364 {0x30,0x60,0x61,0x70,0xf0,EOT},
365 {0x00,0x03,0xf8,0x04,0x00,EOT}},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000366 {0x3, "COM2",
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000367 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
368 {0x00,0x02,0xf8,0x03,0x00,0x00,0x00,0x7f,EOT}},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000369 {0x5, "Keyboard",
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000370 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000371 {0x01,0x00,0x60,0x00,0x64,0x01,0x0c,0x80,EOT}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000372 {0x6, "Consumer IR",
373 {0x30,0x60,0x61,0x70,EOT},
374 {0x00,0x00,0x00,0x00,EOT}},
375 {0x7, "Game port, MIDI, GPIO set 1",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000376 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,EOT},
377 {0x00,0x02,0x01,0x03,0x30,0x00,0xff,0x00,0x00,EOT}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000378 {0x8, "GPIO set 2",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000379 {0x30,0xf0,0xf1,0xf2,0xf3,0xf5,EOT},
380 {0x00,0xff,0x00,0x00,0x00,0x00,EOT}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000381 {0x9, "GPIO set 3 and 4",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000382 {0x30,0x60,0x61,0xf0,0xf1,0xf2,0xf3,0xf4,EOT},
383 {0x00,0x02,0x90,0xff,0x00,0x00,0x00,0x00,EOT}},
384 {0xa, "ACPI",
385 {0x30,0x70,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
386 0xf3,0xf4,0xf6,0xf7,0xf9,EOT},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000387 {0x00,0x00,0x00,0x00,NANA,NANA,0x00,0x00,0x00,0x00,
388 NANA,NANA,0x00,0x00,0x00,EOT}},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000389 {0xc, "GPIO set 5, 6 and 7",
390 {0x30,0x60,0x61,0xf0,0xf3,0xf6,EOT},
391 {0x00,0x03,0x70,0x00,0xff,0xff,EOT}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000392 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000393 {0x8702, "IT8702F", {
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000394 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000395 {0x8705, "IT8705F/AF / IT8700F", {
Robinson P. Tryon43541032007-10-04 15:44:19 +0000396 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000397 {0x20,0x21,0x22,0x23,0x24,EOT},
398 {0x87,0x05,0x00,0x00,NANA,EOT}},
Robinson P. Tryon43541032007-10-04 15:44:19 +0000399 {0x0, "Floppy",
400 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
401 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
402 {0x1, "COM1",
403 {0x30,0x60,0x61,0x70,0xf0,EOT},
404 {0x00,0x03,0xf8,0x04,0x00,EOT}},
405 {0x2, "COM2",
406 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
407 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
408 {0x3, "Parallel port",
409 {0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
410 0xf0,EOT},
411 {0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
412 0x03,EOT}},
413 {0x4, "Environment controller",
414 {0x2b,0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
415 0xf3,0xf4,0xf5,0xf6,EOT},
416 {0x00,0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
417 0x00,0x00,NANA,NANA,EOT}},
418 {0x5, "GPIO",
Robinson P. Tryondc817692007-10-05 13:47:04 +0000419 {0x25,0x26,0x27,0x28,0x29,0x2a,0x60,0x61,0x62,0x63,
420 0x64,0x65,0x70,0x71,0x72,0xb0,0xb1,0xb2,0xb3,0xb4,
421 0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,
422 0xc3,0xc4,0xc5,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xd0,
423 0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd8,0xd9,0xda,0xf0,
424 0xf1,0xf2,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,
425 0xfd,0xfe,0xff,EOT},
Robinson P. Tryon43541032007-10-04 15:44:19 +0000426 {0x00,0x00,0x00,0xff,0xe0,0xff,0x00,0x00,0x00,0x00,
427 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
428 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
429 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
430 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
431 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Robinson P. Tryondc817692007-10-05 13:47:04 +0000432 0x00,NANA,0x00,EOT}},
Robinson P. Tryon43541032007-10-04 15:44:19 +0000433 {0x6, "Game port",
434 {0x30,0x60,0x61,EOT},
435 {0x00,0x02,0x01,EOT}},
436 {0x7, "Consumer IR",
437 {0x30,0x60,0x61,0x70,0xf0,EOT},
438 {0x00,0x03,0x10,0x0b,0x00,EOT}},
439 {0x8, "MIDI port",
440 {0x30,0x60,0x61,0x70,0xf0,EOT},
441 {0x00,0x03,0x00,0x0a,0x00,EOT}},
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000442 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000443 {0x8706, "IT8706R", { /* TODO: Not yet in sensors-detect */
444 /* This is a "Special General Purpose I/O chip". */
445 {EOT}}},
Mattias Mattsson25bf69a2010-08-02 02:34:20 +0000446 {0x8707, "IT8707F", {
447 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000448 {0x8708, "IT8708F", {
Uwe Hermann2c290e32007-09-20 00:00:49 +0000449 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000450 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
451 0x2a,0x2e,0x2f,EOT},
452 {0x87,0x08,0x00,0x00,NANA,0x3f,0x00,0xff,0xff,0xff,
453 0xff,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000454 {0x0, "Floppy",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000455 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
456 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000457 {0x1, "COM1",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000458 {0x30,0x60,0x61,0x70,0xf0,EOT},
459 {0x00,0x03,0xf8,0x04,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000460 {0x2, "COM2",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000461 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
462 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000463 {0x3, "Parallel port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000464 {0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
465 0xf0,EOT},
466 {0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
467 0x03,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000468 {0x4, "SWC",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000469 {0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
470 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,EOT},
471 {NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00,
472 0x00,0x00,0x00,0x00,0x00,NANA,NANA,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000473 {0x5, "Keyboard",
Uwe Hermann2c290e32007-09-20 00:00:49 +0000474 /* Note: 0x30 can actually be 0x00 _or_ 0x01. */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000475 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
476 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000477 {0x6, "Mouse",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000478 {0x30,0x70,0x71,0xf0,EOT},
479 {0x00,0x0c,0x02,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000480 {0x7, "GPIO",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000481 {0x70,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,
482 0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,
483 0xc9,0xca,0xcb,0xcc,0xcd,0xd0,0xd1,0xd2,0xd3,0xd4,
484 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xf0,0xf1,
485 0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,
486 0xfc,EOT},
487 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
488 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
489 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
490 0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x00,
491 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,
492 0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000493 {0x8, "Game port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000494 {0x30,0x60,0x61,EOT},
495 {0x00,0x02,0x01,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000496 {0x9, "Consumer IR",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000497 {0x30,0x60,0x61,0x70,0xf0,EOT},
498 {0x00,0x03,0x10,0x0b,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000499 {0xa, "MIDI port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000500 {0x30,0x60,0x61,0x70,0xf0,EOT},
501 {0x00,0x03,0x00,0x0a,0x00,EOT}},
502 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000503 {0x8710, "IT8710F", { /* TODO: Not yet in sensors-detect */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000504 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000505 {0x8711, "IT8711F", { /* 0x8711 is a guess, not found in datasheet. */
506 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000507 {0x8712, "IT8712F", {
Uwe Hermann2c290e32007-09-20 00:00:49 +0000508 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000509 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
510 {0x87,0x12,0x08,0x00,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000511 {0x0, "Floppy",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000512 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
513 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000514 {0x1, "COM1",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000515 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
516 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000517 {0x2, "COM2",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000518 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
519 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000520 {0x3, "Parallel port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000521 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
522 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000523 {0x4, "Environment controller",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000524 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
525 0xf4,0xf5,0xf6,EOT},
526 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
527 0x00,NANA,NANA,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000528 {0x5, "Keyboard",
529 /* TODO: 0xf0: Error in datasheet? */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000530 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
531 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000532 {0x6, "Mouse",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000533 {0x30,0x70,0x71,0xf0,EOT},
534 {0x00,0x0c,0x02,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000535 {0x7, "GPIO", /* TODO: 0x72, 0x73: Errors in datasheet? */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000536 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
537 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
538 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
539 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
540 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
541 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
542 {0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
Uwe Hermann07024692007-09-20 22:13:48 +0000543 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000544 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
545 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
546 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
547 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000548 {0x8, "MIDI port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000549 {0x30,0x60,0x61,0x70,0xf0,EOT},
550 {0x00,0x03,0x00,0x0a,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000551 {0x9, "Game port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000552 {0x30,0x60,0x61,EOT},
553 {0x00,0x02,0x01,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000554 {0xa, "Consumer IR",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000555 {0x30,0x60,0x61,0x70,0xf0,EOT},
556 {0x00,0x03,0x10,0x0b,0x00,EOT}},
557 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000558 {0x8716, "IT8716F", {
Uwe Hermann2c290e32007-09-20 00:00:49 +0000559 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000560 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
561 {0x87,0x16,0x01,0x00,0x00,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000562 {0x0, "Floppy",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000563 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
564 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000565 {0x1, "COM1",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000566 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
567 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000568 {0x2, "COM2",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000569 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
570 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000571 {0x3, "Parallel port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000572 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
573 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000574 {0x4, "Environment controller",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000575 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
576 0xf4,0xf5,0xf6,EOT},
577 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
578 0x00,NANA,NANA,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000579 {0x5, "Keyboard",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000580 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
581 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000582 {0x6, "Mouse",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000583 {0x30,0x70,0x71,0xf0,EOT},
584 {0x00,0x0c,0x02,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000585 {0x7, "GPIO",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000586 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
587 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
588 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
589 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
590 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
591 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
592 {0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
593 0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,
594 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
595 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
596 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
597 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000598 {0x8, "MIDI port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000599 {0x30,0x60,0x61,0x70,0xf0,EOT},
600 {0x00,0x03,0x00,0x0a,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000601 {0x9, "Game port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000602 {0x30,0x60,0x61,EOT},
603 {0x00,0x02,0x01,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000604 {0xa, "Consumer IR",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000605 {0x30,0x60,0x61,0x70,0xf0,EOT},
606 {0x00,0x03,0x10,0x0b,0x00,EOT}},
607 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000608 {0x8718, "IT8718F", {
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000609 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000610 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
611 {0x87,0x18,0x01,0x00,0x00,0x00,EOT}},
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000612 {0x0, "Floppy",
613 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
614 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
615 {0x1, "COM1",
616 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
617 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
618 {0x2, "COM2",
619 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
620 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
621 {0x3, "Parallel port",
622 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
623 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
624 {0x4, "Environment controller",
625 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
626 0xf4,0xf5,0xf6,EOT},
627 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
628 0x00,NANA,NANA,EOT}},
629 {0x5, "Keyboard",
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000630 /* 0xf0: Datasheet page 33: 0x00; page 56: 0x08. */
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000631 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
632 {0x01,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",
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000637 /* 0x2c: Datasheet page 30: 0x00; page 43: 0x1f. */
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000638 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
639 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
640 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000641 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,0xc9,0xca,0xcb,
642 0xcc,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xf0,
643 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
644 0xfb,0xfc,0xfd,0xfe,0xff,EOT},
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000645 {0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
646 0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,
647 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000648 0x01,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x40,
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000649 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
650 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000651 0x00,NANA,0x00,0x00,0x00,EOT}},
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000652 {0xa, "Consumer IR",
653 {0x30,0x60,0x61,0x70,0xf0,EOT},
654 {0x00,0x03,0x10,0x0b,0x00,EOT}},
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000655 {EOT}}},
Christian Ruppert7c2eec02011-02-03 16:00:28 +0000656 {0x8720, "IT8720F", {
657 {NOLDN, NULL,
658 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
659 {0x87,0x20,0x05,0x00,0x00,0x00,EOT}},
660 {0x0, "Floppy",
661 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
662 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
663 {0x1, "COM1",
664 {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
665 {0x00,0x03,0xf8,0x04,0x00,0x50,EOT}},
666 {0x2, "COM2",
667 {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
668 {0x00,0x02,0xf8,0x03,0x00,0x50,EOT}},
669 {0x3, "Parallel port",
670 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
671 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
672 {0x4, "Environment controller",
673 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
674 0xf4,0xf5,0xf6,EOT},
675 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
676 0x00,NANA,NANA,EOT}},
677 {0x5, "Keyboard",
678 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
679 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
680 {0x6, "Mouse",
681 {0x30,0x70,0x71,0xf0,EOT},
682 {0x00,0x0c,0x02,0x00,EOT}},
683 {0x7, "GPIO",
684 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
685 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
686 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
687 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
688 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe9,0xf0,
689 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
690 0xfb,0xfc,0xfd,0xfe,0xff,EOT},
691 {0x00,0xff,0x00,0x40,0x00,0x00,0x03,0x00,0x00,0x00,
692 0x00,0x00,0x00,0x00,0x00,NANA,0x38,0x00,0x00,0x00,
693 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
694 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
695 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,
696 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
697 0x00,NANA,0x00,0x00,0x00,EOT}},
698 {0xa, "Consumer IR",
699 {0x30,0x60,0x61,0x70,0xf0,EOT},
700 {0x00,0x03,0x10,0x0b,0x06,EOT}},
Uwe Hermanncfb6ac72008-10-01 20:16:58 +0000701 {EOT}}},
Uwe Hermannf9bd9ae2011-01-01 22:05:57 +0000702 {0x8721, "IT8721F", {
703 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000704 {0x8722, "IT8722F", {
705 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000706 {0x8726, "IT8726F", {
707 /* Datasheet wrongly says that the ID is 0x8716. */
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000708 {NOLDN, NULL,
709 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
710 {0x87,0x26,0x01,0x00,MISC,0x00,EOT}},
711 {0x0, "Floppy",
712 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
713 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
714 {0x1, "COM1",
715 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
716 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
717 {0x2, "COM2",
718 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
719 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
720 {0x3, "Parallel port",
721 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
722 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
723 {0x4, "Environment controller",
724 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
725 0xf4,0xf5,0xf6,EOT},
726 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
727 0x00,MISC,MISC,EOT}},
728 {0x5, "Keyboard",
729 /* 0xf0: Datasheet page 35: 0x00; page 59: 0x08. */
730 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
731 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
732 {0x6, "Mouse",
733 {0x30,0x70,0x71,0xf0,EOT},
734 {0x00,0x0c,0x02,0x00,EOT}},
735 {0x7, "GPIO",
736 /* 0x2c: Datasheet page 33: 0x00; page 45: 0x1f. */
737 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
738 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
739 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
740 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
741 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
742 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
743 {0x01,0x00,0x00,0x40,0x00,0x00,0x1f,0x00,0x00,0x00,
744 0x00,0x00,0x00,0x00,0x00,MISC,0x38,0x00,0x00,0x00,
745 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
746 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
747 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
748 0x00,0x00,0x00,0x00,0x00,0x00,0x00,MISC,0x00,EOT}},
749 {0x8, "MIDI port",
750 {0x30,0x60,0x61,0x70,0xf0,EOT},
751 {0x00,0x03,0x00,0x0a,0x00,EOT}},
752 {0x9, "Game port",
753 {0x30,0x60,0x61,EOT},
754 {0x00,0x02,0x01,EOT}},
755 {0xa, "Consumer IR",
756 {0x30,0x60,0x61,0x70,0xf0,EOT},
757 {0x00,0x03,0x10,0x0b,0x00,EOT}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000758 {EOT}}},
Андрей Павловab9b71d2013-03-17 19:11:05 +0300759 {0x8728, "IT8728F", {
760 {NOLDN, NULL,
761 {0x02,0x07,0x20,0x21,0x22,0x23,0x24,0x2b,0x2e,0x2f,EOT},
762 {NANA,NANA,0x87,0x28,0x01,0x00,0x00,MISC,0x00,0x00,EOT}},
763 {0x0, "Floppy",
764 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
765 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
766 {0x1, "COM1",
767 {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
768 {0x00,0x03,0xf8,0x04,0x00,0x50,EOT}},
769 {0x2, "COM2",
770 {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
771 {0x00,0x02,0xf8,0x03,0x00,0x50,EOT}},
772 {0x3, "Parallel port",
773 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
774 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
775 {0x4, "Environment controller",
776 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
777 0xf3,0xf4,0xf5,0xf6,0xF9,0xFA,0xFB,EOT},
778 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
779 0x00,0x00,MISC,MISC,MISC,MISC,MISC,EOT}},
780 {0x5, "Keyboard",
781 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
782 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
783 {0x6, "Mouse",
784 {0x30,0x70,0x71,0xf0,EOT},
785 {0x00,0x0c,0x02,0x00,EOT}},
786 {0x7, "GPIO",
787 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x2d,0x60,
788 0x61,0x62,0x63,0x64,0x65,0x70,0x71,0x72,0x73,
789 0x74,0xb0,0xb1,0xb2,0xb3,0xb4,0xb8,0xb9,0xba,
790 0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,
791 0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xe0,0xe1,
792 0xe2,0xe3,0xe4,0xe9,0xf0,0xf1,0xf2,0xf3,0xf4,
793 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,EOT},
794 {0x00,0xf3,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
795 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x38,
796 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
797 0x00,0x00,0x00,0x01,0x00,0x00,0x40,0x00,0x01,
798 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
799 0x00,0x00,0x00,MISC,0x00,0x00,0x00,0x00,0x00,
800 0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
801 {0xa, "Consumer IR",
802 {0x30,0x60,0x61,0x70,0xf0,EOT},
803 {0x00,0x03,0x10,0x0b,0x06,EOT}},
804 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000805 {0x8761, "IT8761E", {
806 {EOT}}},
Stefan Reinauerd7a75ec2011-10-25 17:12:53 +0000807 {0x8772, "IT8772F", {
808 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000809 {0x8780, "IT8780F", {
810 {EOT}}},
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000811 {EOT}
812};
813
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000814static const struct superio_registers ec_table[] = {
815 {0x8716, "IT8716F", {
816 {NOLDN, NULL,
817 {0x00,0x04,0x05,0x06,0x07,0x08,0x09,0x0b,0x0c,0x10,
818 0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x1b,0x1c,0x1d,
819 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
820 0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,
821 0x44,0x45,0x48,0x50,0x51,0x52,0x53,0x54,0x56,0x57,
Uwe Hermann8cb24582008-05-08 13:50:23 +0000822 0x59,0x5c,
823 0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x68,
824 0x69,0x6a,0x6b,0x6c,0x6d,0x70,0x71,0x72,0x73,0x74,
825 0x75,0x84,0x85,0x86,0x87,0x88,0x89,0x8c,0x8d,0x8e,
826 0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x98,0x99,0x9a,
827 0x9b,0x9c,0x9d,EOT},
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000828 {0x18,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x00,NANA,
829 NANA,NANA,0x07,0x50,NANA,NANA,NANA,NANA,NANA,NANA,
830 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
831 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
832 NANA,NANA,RSVD,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,
Uwe Hermann8cb24582008-05-08 13:50:23 +0000833 0x00,0x00,
834 0x00,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000835 0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,
836 0x7f,NANA,NANA,NANA,NANA,0x00,0x00,0x02,0x00,0x99,
837 0x99,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,
838 0x00,0x00,0x7f,EOT}},
839 {EOT}}},
Uwe Hermannbbd337e2008-05-08 14:37:12 +0000840 {0x8718, "IT8718F", {
841 {NOLDN, NULL,
842 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
843 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
844 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
845 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
846 0x2a,0x2b,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
847 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
848 0x42,0x43,0x44,0x45,0x50,0x51,0x52,0x53,0x54,0x56,
849 0x57,0x58,0x59,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,
850 0x62,0x63,0x64,0x65,0x68,0x69,0x6a,0x6b,0x6c,0x6d,
851 0x70,0x71,0x72,0x73,0x74,0x75,0x80,0x81,0x82,0x83,
852 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,
853 0x92,0x94,0x95,0x96,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,
854 0xa6,EOT},
855 {0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
856 0x40,0x09,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x07,
857 0x50,MISC,MISC,MISC,NANA,NANA,NANA,NANA,NANA,NANA,
858 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
859 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
860 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
861 NANA,NANA,NANA,NANA,0x00,0x00,0x7f,0x7f,0x7f,0x00,
862 0x00,0x90,0x00,0x12,0x00,0x00,0x00,0x00,0x7f,0x7f,
863 0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,
864 0x7f,0x7f,0x7f,0x00,0x00,0x7f,NANA,NANA,NANA,NANA,
865 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xff,0x00,
866 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
867 0x00,EOT}},
868 {EOT}}},
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000869 {EOT}
870};
871
Nico Huber28a13242013-04-25 15:10:46 +0200872static const struct superio_registers bram_table[] = {
873 {0x8516, "IT8516???", {
874 {NOLDN, NULL,
875 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
876 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,EOT},
877 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
878 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
879 {NOLDN, NULL,
880 {0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
881 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,EOT},
882 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
883 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
884 {NOLDN, NULL,
885 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
886 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT},
887 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
888 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
889 {NOLDN, NULL,
890 {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
891 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,EOT},
892 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
893 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
894 {NOLDN, NULL,
895 {0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
896 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,EOT},
897 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
898 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
899 {NOLDN, NULL,
900 {0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
901 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,EOT},
902 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
903 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
904 {NOLDN, NULL,
905 {0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
906 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,EOT},
907 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
908 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
909 {NOLDN, NULL,
910 {0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,
911 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,EOT},
912 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
913 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
914 {NOLDN, NULL,
915 {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
916 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,EOT},
917 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
918 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
919 {NOLDN, NULL,
920 {0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
921 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,EOT},
922 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
923 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
924 {NOLDN, NULL,
925 {0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,
926 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,EOT},
927 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
928 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
929 {NOLDN, NULL,
930 {0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,
931 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,EOT},
932 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
933 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
934 {NOLDN, NULL,
935 {0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,
936 0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,EOT},
937 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
938 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
939 {EOT}}},
940 {EOT}
941};
942
Urja Rannikko38204a22008-10-23 23:33:18 +0000943/* Works for: IT8661F/IT8770F */
944static const uint8_t initkey_it8661f[][4] = {
945 {0x86, 0x61, 0x55, 0x55}, /* 0x3f0 */
946 {0x86, 0x61, 0x55, 0xaa}, /* 0x3bd */
947 {0x86, 0x61, 0xaa, 0x55}, /* 0x370 */
948};
949
950/* Works for: IT8671F/IT8687R, IT8673F */
951static const uint8_t initkey_it8671f[][4] = {
952 {0x86, 0x80, 0x55, 0x55}, /* 0x3f0 */
953 {0x86, 0x80, 0x55, 0xaa}, /* 0x3bd */
954 {0x86, 0x80, 0xaa, 0x55}, /* 0x370 */
955};
956
957/* Works for: IT8661F/IT8770F, IT8671F/IT8687R, IT8673F. */
958static const uint8_t initkey_mbpnp[] = {
959 0x6a, 0xb5, 0xda, 0xed, 0xf6, 0xfb, 0x7d, 0xbe, 0xdf, 0x6f, 0x37,
960 0x1b, 0x0d, 0x86, 0xc3, 0x61, 0xb0, 0x58, 0x2c, 0x16, 0x8b, 0x45,
961 0xa2, 0xd1, 0xe8, 0x74, 0x3a, 0x9d, 0xce, 0xe7, 0x73, 0x39,
962};
963
964/* Works for: IT8661F/IT8770F, IT8671F/IT8687R, IT8673F. */
965static void enter_conf_mode_ite_legacy(uint16_t port, const uint8_t init[][4])
966{
967 int i, idx;
968
969 /* Determine Super I/O config port. */
970 idx = (port == 0x3f0) ? 0 : ((port == 0x3bd) ? 1 : 2);
971 for (i = 0; i < 4; i++)
Andriy Gaponb64aa602008-10-28 22:13:38 +0000972 OUTB(init[idx][i], ISA_PNP_ADDR);
Urja Rannikko38204a22008-10-23 23:33:18 +0000973
974 /* Sequentially write the 32 MB PnP init values. */
975 for (i = 0; i < 32; i++)
Andriy Gaponb64aa602008-10-28 22:13:38 +0000976 OUTB(initkey_mbpnp[i], port);
Urja Rannikko38204a22008-10-23 23:33:18 +0000977}
978
Uwe Hermann3acf31e2007-09-19 01:55:35 +0000979static void enter_conf_mode_ite(uint16_t port)
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000980{
Andriy Gaponb64aa602008-10-28 22:13:38 +0000981 OUTB(0x87, port);
982 OUTB(0x01, port);
983 OUTB(0x55, port);
984 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
Uwe Hermann25a6c0f2007-09-19 00:48:42 +0000985}
986
Anton Kochkov106f7ff2010-06-29 21:26:17 +0000987static void enter_conf_mode_ite_it8502e(uint16_t port)
988{
989 OUTB(0x85, port);
990 OUTB(0x02, port);
991 OUTB(0x55, port);
992 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
993}
994
Uwe Hermannebb73f22008-11-12 19:08:58 +0000995static void enter_conf_mode_ite_it8761e(uint16_t port)
996{
997 OUTB(0x87, port);
998 OUTB(0x61, port);
999 OUTB(0x55, port);
1000 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
1001}
1002
1003static void enter_conf_mode_ite_it8228e(uint16_t port)
1004{
1005 OUTB(0x82, port);
1006 OUTB(0x28, port);
1007 OUTB(0x55, port);
1008 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
1009}
1010
Uwe Hermann3acf31e2007-09-19 01:55:35 +00001011static void exit_conf_mode_ite(uint16_t port)
Uwe Hermann25a6c0f2007-09-19 00:48:42 +00001012{
1013 regwrite(port, 0x02, 0x02);
1014}
1015
Stefan Reinauerd7ce71d2010-12-30 16:57:58 +00001016static int chip_found_at_port;
1017
Uwe Hermannafe83092007-09-28 15:45:43 +00001018static void probe_idregs_ite_helper(const char *init, uint16_t port)
Uwe Hermann25a6c0f2007-09-19 00:48:42 +00001019{
Uwe Hermanneec5ff42008-03-01 18:49:39 +00001020 uint16_t id, chipver, ecport;
Uwe Hermann25a6c0f2007-09-19 00:48:42 +00001021
Uwe Hermann8b8d0392007-10-04 15:23:38 +00001022 probing_for("ITE", init, port);
1023
Uwe Hermann07024692007-09-20 22:13:48 +00001024 id = regval(port, CHIP_ID_BYTE1_REG) << 8;
1025 id |= regval(port, CHIP_ID_BYTE2_REG);
1026 chipver = regval(port, CHIP_VERSION_REG) & 0x0f; /* Only bits 3..0 */
1027
1028 if (superio_unknown(reg_table, id)) {
Uwe Hermann8b8d0392007-10-04 15:23:38 +00001029 if (verbose)
1030 printf(NOTFOUND "id=0x%04x, rev=0x%01x\n", id, chipver);
Uwe Hermann0120e1a2007-09-16 18:11:03 +00001031 return;
1032 }
1033
Uwe Hermann8b8d0392007-10-04 15:23:38 +00001034 printf("Found ITE %s (id=0x%04x, rev=0x%01x) at 0x%x\n",
Uwe Hermann07024692007-09-20 22:13:48 +00001035 get_superio_name(reg_table, id), id, chipver, port);
Uwe Hermanne9d46162007-10-07 20:01:23 +00001036 chip_found = 1;
Stefan Reinauerd7ce71d2010-12-30 16:57:58 +00001037 chip_found_at_port = 1;
Uwe Hermann0120e1a2007-09-16 18:11:03 +00001038
Stefan Reinauer7a51e502008-12-01 14:18:57 +00001039 dump_superio("ITE", reg_table, port, id, LDN_SEL);
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +00001040
1041 if (extra_dump) {
Stefan Reinauer7a51e502008-12-01 14:18:57 +00001042 regwrite(port, LDN_SEL, 0x04); /* Select LDN 4 (EC). */
Uwe Hermanneec5ff42008-03-01 18:49:39 +00001043
1044 /* Get EC base address (stored in LDN 4, index 0x60/0x61). */
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +00001045 ecport = regval(port, 0x60) << 8;
1046 ecport |= regval(port, 0x61);
Uwe Hermanneec5ff42008-03-01 18:49:39 +00001047
1048 /* EC address register = EC base address + 5. */
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +00001049 ecport += 5;
1050
Uwe Hermanneec5ff42008-03-01 18:49:39 +00001051 printf("Environment controller (0x%04x)\n", ecport);
Stefan Reinauer7a51e502008-12-01 14:18:57 +00001052 dump_superio("ITE-EC", ec_table, ecport, id, LDN_SEL);
Nico Huber28a13242013-04-25 15:10:46 +02001053
1054 regwrite(port, LDN_SEL, 0x10); /* Select LDN 16 (BRAM). */
1055 /* Get EC base address (stored in LDN 16, index 0x62/0x63). */
1056 ecport = regval(port, 0x62) << 8;
1057 ecport |= regval(port, 0x63);
1058 printf("BRAM (0x%04x)\n", ecport);
1059 dump_superio("ITE-BRAM", bram_table, ecport, id, LDN_SEL);
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +00001060 }
Uwe Hermannb4db2202007-09-20 23:37:56 +00001061}
Uwe Hermann25a6c0f2007-09-19 00:48:42 +00001062
Uwe Hermannb4db2202007-09-20 23:37:56 +00001063void probe_idregs_ite(uint16_t port)
1064{
Stefan Reinauerd7ce71d2010-12-30 16:57:58 +00001065 chip_found_at_port = 0;
1066
Urja Rannikko38204a22008-10-23 23:33:18 +00001067 if (port == 0x3f0 || port == 0x3bd || port == 0x370) {
1068 enter_conf_mode_ite_legacy(port, initkey_it8661f);
1069 probe_idregs_ite_helper("(init=legacy/it8661f) ", port);
1070 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001071 if (chip_found_at_port)
1072 return;
Uwe Hermannb4db2202007-09-20 23:37:56 +00001073
Urja Rannikko38204a22008-10-23 23:33:18 +00001074 enter_conf_mode_ite_legacy(port, initkey_it8671f);
1075 probe_idregs_ite_helper("(init=legacy/it8671f) ", port);
1076 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001077 if (chip_found_at_port)
1078 return;
Urja Rannikko38204a22008-10-23 23:33:18 +00001079 } else {
1080 enter_conf_mode_ite(port);
Uwe Hermannebb73f22008-11-12 19:08:58 +00001081 probe_idregs_ite_helper("(init=standard) ", port);
1082 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001083 if (chip_found_at_port)
1084 return;
Uwe Hermannebb73f22008-11-12 19:08:58 +00001085
Anton Kochkov106f7ff2010-06-29 21:26:17 +00001086 enter_conf_mode_ite_it8502e(port);
1087 probe_idregs_ite_helper("(init=it8502e) ", port);
1088 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001089 if (chip_found_at_port)
1090 return;
Anton Kochkov106f7ff2010-06-29 21:26:17 +00001091
Uwe Hermannebb73f22008-11-12 19:08:58 +00001092 enter_conf_mode_ite_it8761e(port);
1093 probe_idregs_ite_helper("(init=it8761e) ", port);
1094 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001095 if (chip_found_at_port)
1096 return;
Uwe Hermannebb73f22008-11-12 19:08:58 +00001097
1098 enter_conf_mode_ite_it8228e(port);
1099 probe_idregs_ite_helper("(init=it8228e) ", port);
Urja Rannikko38204a22008-10-23 23:33:18 +00001100 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001101 if (chip_found_at_port)
1102 return;
Urja Rannikko38204a22008-10-23 23:33:18 +00001103
1104 enter_conf_mode_winbond_fintek_ite_8787(port);
1105 probe_idregs_ite_helper("(init=0x87,0x87) ", port);
1106 exit_conf_mode_winbond_fintek_ite_8787(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001107 if (chip_found_at_port)
1108 return;
Urja Rannikko38204a22008-10-23 23:33:18 +00001109 }
Uwe Hermann0120e1a2007-09-16 18:11:03 +00001110}
Robinson P. Tryon552cfb72008-01-15 22:30:55 +00001111
1112void print_ite_chips(void)
1113{
1114 print_vendor_chips("ITE", reg_table);
Stefan Reinauer7a51e502008-12-01 14:18:57 +00001115 print_vendor_chips("ITE-EC", ec_table);
Robinson P. Tryon552cfb72008-01-15 22:30:55 +00001116}