blob: 17e4452cf0baacf68cf368714db5eb88e52da069 [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.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
Paul Menzela46a7122013-02-23 18:37:27 +010019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Uwe Hermann0120e1a2007-09-16 18:11:03 +000020 */
21
22#include "superiotool.h"
23
Uwe Hermann07024692007-09-20 22:13:48 +000024#define CHIP_ID_BYTE1_REG 0x20
25#define CHIP_ID_BYTE2_REG 0x21
26#define CHIP_VERSION_REG 0x22
Urja Rannikko38204a22008-10-23 23:33:18 +000027#define ISA_PNP_ADDR 0x279
Uwe Hermann07024692007-09-20 22:13:48 +000028
Uwe Hermann246be7d2007-10-31 22:22:11 +000029static const struct superio_registers reg_table[] = {
Uwe Hermannebb73f22008-11-12 19:08:58 +000030 {0x8228, "IT8228E", {
31 {EOT}}},
Donald Huang03e54de2010-08-10 23:34:51 +000032 {0x8500, "IT8500B/E", {
33 {NOLDN, NULL,
34 {0x20,0x21,0x22,0x23,0x25,0x2d,0x2e,0x2f,0x30,EOT},
35 {0x85,0x00,0x01,0x01,0x00,0x00,NANA,NANA,0x00,EOT}},
36 {0x04, "System Wake-Up Control (SWUC)",
37 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
38 {0x00,0x00,0x00,0x00,0x00,0x00,0x01,EOT}},
39 {0x05, "KBC/Mouse Interface",
40 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
41 {0x00,0x00,0x00,0x00,0x00,0x0c,0x01,EOT}},
42 {0x06, "KBC/Keyboard Interface",
43 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
44 {0x00,0x00,0x60,0x00,0x64,0x01,0x01,EOT}},
45 {0x0f, "Shared Memory/Flash Interface (SMFI)",
46 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,EOT},
47 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,EOT}},
48 {0x10, "BRAM",
49 {0x30,0x62,0x63,0x70,0x71,0xf3,0xf4,0xf5,EOT},
50 {0x00,0x00,0x72,0x08,0x01,NANA,NANA,NANA,EOT}},
51 {0x11, "Power Management I/F Channel 1 (PMC1)",
52 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
53 {0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
54 {0x12, "Power Management I/F Channel 2 (PMC2)",
55 {0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x71,0xf0,EOT},
56 {0x00,0x00,0x68,0x00,0x6c,0x00,0x00,0x01,0x01,NANA,EOT}},
57 {EOT}}},
Anton Kochkov106f7ff2010-06-29 21:26:17 +000058 {0x8502, "IT8502E/TE/G", {
59 {NOLDN, NULL,
60 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
61 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
62 {0x85,0x02,0x71,0x01,NANA,0x00,0x00,NANA,NANA,NANA,
63 NANA,NANA,NANA,0x00,NANA,EOT}},
64 {0x1, "UART1",
65 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
66 {0x00,0x03,0xf8,0x00,0x00,0x04,0x02,0x00,EOT}},
67 {0x4, "System Wake-Up",
68 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
69 {0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,EOT}},
70 {0x5, "Mouse",
71 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
72 {0x01,0x00,0x00,0x00,0x00,0x0C,0x01,NANA,EOT}},
73 {0x6, "Keyboard",
74 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
75 {0x01,0x00,0x60,0x00,0x64,0x01,0x01,NANA,EOT}},
76 {0xf, "Shared Memory/Flash",
77 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,
78 0xf6,EOT},
79 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
80 0x00,EOT}},
81 {0x10, "BRAM",
82 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf3,0xf4,
83 0xf5,EOT},
84 {0x00,0x00,0x70,0x00,0x72,0x08,0x01,NANA,NANA,
85 NANA,EOT}},
86 {0x11, "Power Channel 1",
87 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
88
89 {0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
90 {0x12, "Power Channel 2",
91 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
92 {0x00,0x00,0x68,0x00,0x6c,0x01,0x01,EOT}},
93 {0x17, "Power Channel 3",
94 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
95 {0x00,0x00,0x6a,0x00,0x6e,0x01,0x01,EOT}},
96 {EOT}}},
Anders Juel Jensenb850eb82010-01-23 15:50:12 +000097 {0x8510, "IT8510E/TE/G", {
Anders Juel Jensen28e4af52010-08-22 19:41:47 +000098 {NOLDN, "Chip ID",
99 {0x20,0x21, EOT},
100 {0x85,0x10, EOT}},
101 {NOLDN, "Chip Version",
102 {0x22,EOT},
103 {0x21,EOT}},
104 {NOLDN, "Super I/O Control Reigster (SIOCTRL)",
105 {0x23,EOT},
106 {0x01,EOT}},
107 {NOLDN, "Super I/O Configuration Register (SIOIRQ)",
108 {0x25,EOT},
109 {0x00,EOT}},
110 {NOLDN, "Super I/O General Purpose Register (SIOGP)",
111 {0x26,EOT},
112 {0x00,EOT}},
113 {NOLDN, "Super I/O Power Mode Register (SIOPWR)",
114 {0x2d,EOT},
115 {0x00,EOT}},
116 {NOLDN, "Logical Device Activate Register (LDA)",
117 {0x30,EOT},
118 {0x00,EOT}},
119 {NOLDN, "I/O Port Base Address for Descriptor 0 (IOBAD0)",
120 {0x60,0x61,EOT},
121 {NANA,NANA,EOT}},
122 {NOLDN, "I/O Port Base Address for Descriptor 1 (IOBAD1)",
123 {0x62,0x63,EOT},
124 {NANA,NANA,EOT}},
125 {NOLDN, "Interupt Request Number and Wake-Up on IRQ Enable (IRQNUMX)",
126 {0x70,EOT},
127 {NANA,EOT}},
128 {NOLDN, "Interrupt Request Type Select (IRQTP)",
129 {0x71,EOT},
130 {NANA,EOT}},
131 {NOLDN, "DMA Channel Select 0 (DMAS0)",
132 {0x74,EOT},
133 {0x04,EOT}},
134 {NOLDN, "DMA Channel Select 1 (DMAS1)",
135 {0x75,EOT},
136 {0x04,EOT}},
137 {0x4, "System Wakup-Up (SWUC)",
138 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
139 {0x00,0x00,0x00,0x00,0x00,0x00,0x03,EOT}},
140 {0x5, "Keyboard/Mouse",
141 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
142 {0x00,0x00,0x00,0x00,0x00,0x0c,0x03,EOT}},
143 {0x6, "Keyboard/Mouse",
144 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
145 {0x00,0x00,0x60,0x00,0x64,0x01,0x03,EOT}},
146 {0xf, "Shared Memory/Flash Interface (SMFI)",
147 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,0xf6,0xf7,0xf8,EOT},
148 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
149 {0x10, "Real Time Clock (RTC)",
150 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,0xf1,0xf2,EOT},
151 {0x00,0x00,0x70,0x00,0x72,0x08,0x00,0x00,0x49,0x4a,EOT}},
152 {0x11, "Power Management Interface Channel 1",
153 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
154 {0x00,0x00,0x62,0x00,0x66,0x01,0x03,EOT}},
155 {0x12, "Power Management Interface Channel 2",
156 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
157 {0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}},
Anders Juel Jensenb850eb82010-01-23 15:50:12 +0000158 {EOT}}},
159 {0x8511, "IT8511E/TE/G", {
Anton Kochkov106f7ff2010-06-29 21:26:17 +0000160 {NOLDN, NULL,
161 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
162 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
163 {0x85,0x11,0x10,0x01,NANA,0x00,0x00,NANA,NANA,NANA,
164 NANA,NANA,NANA,0x00,NANA,EOT}},
165 {0x4, "System Wake-Up",
166 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
167 {0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,EOT}},
168 {0x5, "Mouse",
169 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
170 {0x01,0x00,0x00,0x00,0x00,0x0C,0x03,NANA,EOT}},
171 {0x6, "Keyboard",
172 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
173 {0x01,0x00,0x60,0x00,0x64,0x01,0x03,NANA,EOT}},
174 {0xf, "Shared Memory/Flash",
175 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,
176 0xf6,EOT},
177 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
178 0x00,EOT}},
179 {0x10, "Real-Time Clock",
180 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,0xf1,
181 0xf2,0xf3,0xf4,0xf5,EOT},
182 {0x00,0x00,0x70,0x00,0x72,0x08,0x00,0x00,0x49,
183 0x4A,NANA,NANA,NANA,EOT}},
184 {0x11, "Power Channel 1",
185 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
186 {0x00,0x00,0x62,0x00,0x66,0x01,0x03,EOT}},
187 {0x12, "Power Channel 2",
188 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
189 {0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}},
Anders Juel Jensenb850eb82010-01-23 15:50:12 +0000190 {EOT}}},
Anton Kochkov7b5df5a2010-05-09 15:30:45 +0000191 {0x8512, "IT8512E/F/G", {
Anton Kochkov106f7ff2010-06-29 21:26:17 +0000192 {NOLDN, NULL,
193 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
194 0x2A,0x2B,0x2C,0x2D,0x2E,EOT},
195 {0x85,0x12,0x22,0x01,NANA,0x00,0x00,NANA,NANA,NANA,
196 NANA,NANA,NANA,0x00,NANA,EOT}},
197 {0x4, "System Wake-Up",
198 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
199 {0x00,0x00,0x00,0x00,0x00,0x00,0x03,EOT}},
200 {0x5, "Mouse",
201 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
202 {0x00,0x00,0x00,0x00,0x00,0x0C,0x03,NANA,EOT}},
203 {0x6, "Keyboard",
204 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
205 {0x00,0x00,0x60,0x00,0x64,0x01,0x03,NANA,EOT}},
206 {0xf, "Shared Memory/Flash",
207 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf4,0xf5,
208 0xf6,EOT},
209 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
210 0x00,EOT}},
211 {0x10, "BRAM",
212 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf3,0xf4,
213 0xf5,EOT},
214 {0x00,0x00,0x70,0x00,0x72,0x08,0x00,NANA,NANA,
215 NANA,EOT}},
216 {0x11, "Power Channel 1",
217 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
218 {0x00,0x00,0x62,0x00,0x66,0x01,0x03,EOT}},
219 {0x12, "Power Channel 2",
220 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
221 {0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}},
Anton Kochkov7b5df5a2010-05-09 15:30:45 +0000222 {EOT}}},
223 {0x8513, "IT8513E/F/G", {
224 {EOT}}},
Nico Huber28a13242013-04-25 15:10:46 +0200225 {0x8516, "IT8516???", {
226 {NOLDN, "Chip ID",
227 {0x20,0x21, EOT},
228 {0x85,0x16, EOT}},
229 {NOLDN, "Chip Version",
230 {0x22,EOT},
231 {0x63,EOT}},
232 {NOLDN, "Super I/O Control Reigster (SIOCTRL)",
233 {0x23,EOT},
234 {0x01,EOT}},
235 {NOLDN, "Super I/O Configuration Register (SIOIRQ)",
236 {0x25,EOT},
237 {0x00,EOT}},
238 {NOLDN, "Super I/O General Purpose Register (SIOGP)",
239 {0x26,EOT},
240 {0x00,EOT}},
241 {NOLDN, "Super I/O Power Mode Register (SIOPWR)",
242 {0x2d,EOT},
243 {0x00,EOT}},
244 {0x01, "UART1",
245 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
246 {0x00,0x03,0xf8,0x00,0x00,0x04,0x02,EOT}},
247 {0x02, "UART2",
248 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
249 {0x00,0x02,0xf8,0x00,0x00,0x04,0x02,EOT}},
250 {0x04, "System Wakup-Up (SWUC)",
251 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
252 {0x00,0x00,0x00,0x00,0x00,0x00,0x01,EOT}},
253 {0x05, "Mouse",
254 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
255 {0x00,0x00,0x00,0x00,0x00,0x0C,0x01,EOT}},
256 {0x06, "Keyboard",
257 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
258 {0x00,0x00,0x60,0x00,0x64,0x01,0x01,EOT}},
259 {0x0f, "Shared Memory/Flash Interface (SMFI)",
260 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,
261 0xf4,0xf5,EOT},
262 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,
263 NANA,NANA,EOT}},
264 {0x10, "BRAM / Real Time Clock (RTC)",
265 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,
266 0xf1,0xf2,0xf3,0xf4,0xf5,EOT},
267 {0x00,0x00,0x70,0x00,0x72,0x08,0x01,
268 NANA,NANA,NANA,NANA,NANA,EOT}},
269 {0x11, "Power Management Interface Channel 1",
270 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
271 {0x00,0x00,0x62,0x00,0x66,0x01,0x01,EOT}},
272 {0x12, "Power Management Interface Channel 2",
273 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
274 {0x00,0x00,0x68,0x00,0x6c,0x01,0x01,EOT}},
275 {0x17, "Power Management Interface Channel 3",
276 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT},
277 {0x00,0x00,0x6a,0x00,0x6e,0x01,0x01,EOT}},
278 {EOT}}},
Urja Rannikko38204a22008-10-23 23:33:18 +0000279 {0x8661, "IT8661F/IT8770F", {
Robinson P. Tryondc817692007-10-05 13:47:04 +0000280 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000281 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x20,0x21,0x22,
282 0x23,0x24,EOT},
283 {NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x86,0x61,0x00,
284 0x00,0x00,EOT}},
Robinson P. Tryondc817692007-10-05 13:47:04 +0000285 {0x0, "Floppy",
286 {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0xf0,EOT},
287 {0x00,0x00,0x03,0xf0,0x06,0x02,0x02,0x00,EOT}},
288 {0x1, "COM1",
289 {0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
290 {0x00,0x00,0x03,0xf8,0x04,0x02,0x00,EOT}},
291 {0x2, "COM2",
292 {0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
293 {0x00,0x00,0x02,0xf8,0x03,0x02,0x00,EOT}},
294 {0x3, "Parallel port",
295 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x74,
296 0xf0,EOT},
297 {0x00,0x00,0x03,0x78,0x07,0x78,0x07,0x02,0x03,
298 0x03,EOT}},
299 {0x4, "IR",
300 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,
301 0x74,0x75,0xf0,EOT},
302 {0x00,0x00,0x02,0xe8,0x03,0x00,0x0a,0x02,0x0b,0x02,
303 0x01,0x00,0x00,EOT}},
304 {0x5, "GPIO",
305 {0x25,0x26,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
306 0x70,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,
307 0xf9,0xfa,0xfb,0xfc,EOT},
308 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
309 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
310 0x00,0x00,0x00,0x00,EOT}},
311 {EOT}}},
Urja Rannikko38204a22008-10-23 23:33:18 +0000312 {0x8673, "IT8673F", {
313 {EOT}}},
314 {0x8681, "IT8671F/IT8687R", {
Anders Jenbo14db1c02010-05-08 23:28:33 +0000315 {NOLDN, NULL,
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000316 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x20,0x21,0x22,
317 0x23,0x24,0x25,0x26,0x2e,0x2f,EOT},
318 {NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x86,0x81,0x00,
319 0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
320 {0x0, "Floppy",
321 {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0xf0,EOT},
322 {0x00,0x00,0x03,0xf0,0x06,0x02,0x02,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000323 {0x1, "COM1",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000324 {0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
325 {0x00,0x00,0x03,0xf8,0x04,0x02,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000326 {0x2, "COM2",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000327 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,
328 0x74,0x75,0xf0,0xf1,EOT},
329 {0x00,0x00,0x02,0xf8,0x03,0x00,0x03,0x02,0x0a,0x02,
330 0x00,0x01,0x00,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000331 {0x3, "Parallel port",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000332 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x74,
333 0xf0,EOT},
334 {0x00,0x00,0x03,0x78,0x07,0x78,0x07,0x02,0x03,
335 0x03,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000336 {0x4, "APC",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000337 {0x30,0xf0,0xf1,0xf2,0xf4,0xf5,0xf6,EOT},
338 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000339 {0x5, "Keyboard",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000340 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
341 {MISC,0x00,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
Anders Jenbo14db1c02010-05-08 23:28:33 +0000342 {0x6, "Mouse",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000343 {0x30,0x70,0x71,0xf0,EOT},
344 {0x00,0x0c,0x02,0x00,EOT}},
345 {0x7, "GPIO",
346 {0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,
347 0x70,0x71,0x72,0x73,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,
348 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff,
349 0xe0,0xe1,0xe2,0xe3,0xe4,EOT},
350 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
351 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
352 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
353 0x00,0x00,0x00,0x00,0x00,EOT}},
Urja Rannikko38204a22008-10-23 23:33:18 +0000354 {EOT}}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000355 {0x8701, "IT8703F", {
356 {NOLDN, NULL,
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000357 {0x20,0x21,0x23,0x24,0x26,0x29,0x2a,0x2b,EOT},
358 {0x87,0x00,0x00,0x80,0x00,0x00,0x7c,0xc0,EOT}},
359 {0x0, "Floppy",
360 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,0xf2,0xf3,0xf4,
361 0xf5,EOT},
362 {0x00,0x03,0xf0,0x06,0x02,0x0e,0x00,0xff,0x00,0x00,
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000363 0x00,EOT}},
364 {0x1, "Parallel port",
365 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
366 {0x00,0x03,0x78,0x00,0x80,0x07,0x03,0x03,EOT}},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000367 {0x2, "COM1",
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000368 {0x30,0x60,0x61,0x70,0xf0,EOT},
369 {0x00,0x03,0xf8,0x04,0x00,EOT}},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000370 {0x3, "COM2",
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000371 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
372 {0x00,0x02,0xf8,0x03,0x00,0x00,0x00,0x7f,EOT}},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000373 {0x5, "Keyboard",
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000374 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000375 {0x01,0x00,0x60,0x00,0x64,0x01,0x0c,0x80,EOT}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000376 {0x6, "Consumer IR",
377 {0x30,0x60,0x61,0x70,EOT},
378 {0x00,0x00,0x00,0x00,EOT}},
379 {0x7, "Game port, MIDI, GPIO set 1",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000380 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,EOT},
381 {0x00,0x02,0x01,0x03,0x30,0x00,0xff,0x00,0x00,EOT}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000382 {0x8, "GPIO set 2",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000383 {0x30,0xf0,0xf1,0xf2,0xf3,0xf5,EOT},
384 {0x00,0xff,0x00,0x00,0x00,0x00,EOT}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000385 {0x9, "GPIO set 3 and 4",
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000386 {0x30,0x60,0x61,0xf0,0xf1,0xf2,0xf3,0xf4,EOT},
387 {0x00,0x02,0x90,0xff,0x00,0x00,0x00,0x00,EOT}},
388 {0xa, "ACPI",
389 {0x30,0x70,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
390 0xf3,0xf4,0xf6,0xf7,0xf9,EOT},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000391 {0x00,0x00,0x00,0x00,NANA,NANA,0x00,0x00,0x00,0x00,
392 NANA,NANA,0x00,0x00,0x00,EOT}},
Uwe Hermann4bdd6432010-05-14 16:40:55 +0000393 {0xc, "GPIO set 5, 6 and 7",
394 {0x30,0x60,0x61,0xf0,0xf3,0xf6,EOT},
395 {0x00,0x03,0x70,0x00,0xff,0xff,EOT}},
Luc Verhaegen7a0f01f2009-07-12 14:24:06 +0000396 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000397 {0x8702, "IT8702F", {
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000398 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000399 {0x8705, "IT8705F/AF / IT8700F", {
Robinson P. Tryon43541032007-10-04 15:44:19 +0000400 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000401 {0x20,0x21,0x22,0x23,0x24,EOT},
402 {0x87,0x05,0x00,0x00,NANA,EOT}},
Robinson P. Tryon43541032007-10-04 15:44:19 +0000403 {0x0, "Floppy",
404 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
405 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
406 {0x1, "COM1",
407 {0x30,0x60,0x61,0x70,0xf0,EOT},
408 {0x00,0x03,0xf8,0x04,0x00,EOT}},
409 {0x2, "COM2",
410 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
411 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
412 {0x3, "Parallel port",
413 {0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
414 0xf0,EOT},
415 {0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
416 0x03,EOT}},
417 {0x4, "Environment controller",
418 {0x2b,0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
419 0xf3,0xf4,0xf5,0xf6,EOT},
420 {0x00,0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
421 0x00,0x00,NANA,NANA,EOT}},
422 {0x5, "GPIO",
Robinson P. Tryondc817692007-10-05 13:47:04 +0000423 {0x25,0x26,0x27,0x28,0x29,0x2a,0x60,0x61,0x62,0x63,
424 0x64,0x65,0x70,0x71,0x72,0xb0,0xb1,0xb2,0xb3,0xb4,
425 0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,
426 0xc3,0xc4,0xc5,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xd0,
427 0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd8,0xd9,0xda,0xf0,
428 0xf1,0xf2,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,
429 0xfd,0xfe,0xff,EOT},
Robinson P. Tryon43541032007-10-04 15:44:19 +0000430 {0x00,0x00,0x00,0xff,0xe0,0xff,0x00,0x00,0x00,0x00,
431 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
432 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
433 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
434 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
435 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Robinson P. Tryondc817692007-10-05 13:47:04 +0000436 0x00,NANA,0x00,EOT}},
Robinson P. Tryon43541032007-10-04 15:44:19 +0000437 {0x6, "Game port",
438 {0x30,0x60,0x61,EOT},
439 {0x00,0x02,0x01,EOT}},
440 {0x7, "Consumer IR",
441 {0x30,0x60,0x61,0x70,0xf0,EOT},
442 {0x00,0x03,0x10,0x0b,0x00,EOT}},
443 {0x8, "MIDI port",
444 {0x30,0x60,0x61,0x70,0xf0,EOT},
445 {0x00,0x03,0x00,0x0a,0x00,EOT}},
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000446 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000447 {0x8706, "IT8706R", { /* TODO: Not yet in sensors-detect */
448 /* This is a "Special General Purpose I/O chip". */
449 {EOT}}},
Mattias Mattsson25bf69a2010-08-02 02:34:20 +0000450 {0x8707, "IT8707F", {
451 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000452 {0x8708, "IT8708F", {
Uwe Hermann2c290e32007-09-20 00:00:49 +0000453 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000454 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
455 0x2a,0x2e,0x2f,EOT},
456 {0x87,0x08,0x00,0x00,NANA,0x3f,0x00,0xff,0xff,0xff,
457 0xff,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000458 {0x0, "Floppy",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000459 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
460 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000461 {0x1, "COM1",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000462 {0x30,0x60,0x61,0x70,0xf0,EOT},
463 {0x00,0x03,0xf8,0x04,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000464 {0x2, "COM2",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000465 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
466 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000467 {0x3, "Parallel port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000468 {0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
469 0xf0,EOT},
470 {0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
471 0x03,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000472 {0x4, "SWC",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000473 {0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
474 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,EOT},
475 {NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00,
476 0x00,0x00,0x00,0x00,0x00,NANA,NANA,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000477 {0x5, "Keyboard",
Uwe Hermann2c290e32007-09-20 00:00:49 +0000478 /* Note: 0x30 can actually be 0x00 _or_ 0x01. */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000479 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
480 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000481 {0x6, "Mouse",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000482 {0x30,0x70,0x71,0xf0,EOT},
483 {0x00,0x0c,0x02,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000484 {0x7, "GPIO",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000485 {0x70,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,
486 0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,
487 0xc9,0xca,0xcb,0xcc,0xcd,0xd0,0xd1,0xd2,0xd3,0xd4,
488 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xf0,0xf1,
489 0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,
490 0xfc,EOT},
491 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
492 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
493 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
494 0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x00,
495 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,
496 0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000497 {0x8, "Game port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000498 {0x30,0x60,0x61,EOT},
499 {0x00,0x02,0x01,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000500 {0x9, "Consumer IR",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000501 {0x30,0x60,0x61,0x70,0xf0,EOT},
502 {0x00,0x03,0x10,0x0b,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000503 {0xa, "MIDI port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000504 {0x30,0x60,0x61,0x70,0xf0,EOT},
505 {0x00,0x03,0x00,0x0a,0x00,EOT}},
506 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000507 {0x8710, "IT8710F", { /* TODO: Not yet in sensors-detect */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000508 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000509 {0x8711, "IT8711F", { /* 0x8711 is a guess, not found in datasheet. */
510 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000511 {0x8712, "IT8712F", {
Uwe Hermann2c290e32007-09-20 00:00:49 +0000512 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000513 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
514 {0x87,0x12,0x08,0x00,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000515 {0x0, "Floppy",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000516 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
517 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000518 {0x1, "COM1",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000519 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
520 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000521 {0x2, "COM2",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000522 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
523 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000524 {0x3, "Parallel port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000525 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
526 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000527 {0x4, "Environment controller",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000528 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
529 0xf4,0xf5,0xf6,EOT},
530 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
531 0x00,NANA,NANA,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000532 {0x5, "Keyboard",
533 /* TODO: 0xf0: Error in datasheet? */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000534 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
535 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000536 {0x6, "Mouse",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000537 {0x30,0x70,0x71,0xf0,EOT},
538 {0x00,0x0c,0x02,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000539 {0x7, "GPIO", /* TODO: 0x72, 0x73: Errors in datasheet? */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000540 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
541 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
542 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
543 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
544 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
545 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
546 {0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
Uwe Hermann07024692007-09-20 22:13:48 +0000547 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000548 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
549 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
550 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
551 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000552 {0x8, "MIDI port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000553 {0x30,0x60,0x61,0x70,0xf0,EOT},
554 {0x00,0x03,0x00,0x0a,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000555 {0x9, "Game port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000556 {0x30,0x60,0x61,EOT},
557 {0x00,0x02,0x01,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000558 {0xa, "Consumer IR",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000559 {0x30,0x60,0x61,0x70,0xf0,EOT},
560 {0x00,0x03,0x10,0x0b,0x00,EOT}},
561 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000562 {0x8716, "IT8716F", {
Uwe Hermann2c290e32007-09-20 00:00:49 +0000563 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000564 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
565 {0x87,0x16,0x01,0x00,0x00,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000566 {0x0, "Floppy",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000567 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
568 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000569 {0x1, "COM1",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000570 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
571 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000572 {0x2, "COM2",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000573 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
574 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000575 {0x3, "Parallel port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000576 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
577 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000578 {0x4, "Environment controller",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000579 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
580 0xf4,0xf5,0xf6,EOT},
581 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
582 0x00,NANA,NANA,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000583 {0x5, "Keyboard",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000584 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
585 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000586 {0x6, "Mouse",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000587 {0x30,0x70,0x71,0xf0,EOT},
588 {0x00,0x0c,0x02,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000589 {0x7, "GPIO",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000590 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
591 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
592 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
593 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
594 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
595 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
596 {0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
597 0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,
598 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
599 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
600 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
601 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000602 {0x8, "MIDI port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000603 {0x30,0x60,0x61,0x70,0xf0,EOT},
604 {0x00,0x03,0x00,0x0a,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000605 {0x9, "Game port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000606 {0x30,0x60,0x61,EOT},
607 {0x00,0x02,0x01,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000608 {0xa, "Consumer IR",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000609 {0x30,0x60,0x61,0x70,0xf0,EOT},
610 {0x00,0x03,0x10,0x0b,0x00,EOT}},
611 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000612 {0x8718, "IT8718F", {
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000613 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000614 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
615 {0x87,0x18,0x01,0x00,0x00,0x00,EOT}},
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000616 {0x0, "Floppy",
617 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
618 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
619 {0x1, "COM1",
620 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
621 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
622 {0x2, "COM2",
623 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
624 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
625 {0x3, "Parallel port",
626 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
627 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
628 {0x4, "Environment controller",
629 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
630 0xf4,0xf5,0xf6,EOT},
631 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
632 0x00,NANA,NANA,EOT}},
633 {0x5, "Keyboard",
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000634 /* 0xf0: Datasheet page 33: 0x00; page 56: 0x08. */
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000635 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
636 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
637 {0x6, "Mouse",
638 {0x30,0x70,0x71,0xf0,EOT},
639 {0x00,0x0c,0x02,0x00,EOT}},
640 {0x7, "GPIO",
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000641 /* 0x2c: Datasheet page 30: 0x00; page 43: 0x1f. */
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000642 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
643 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
644 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000645 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,0xc9,0xca,0xcb,
646 0xcc,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xf0,
647 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
648 0xfb,0xfc,0xfd,0xfe,0xff,EOT},
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000649 {0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
650 0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,
651 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000652 0x01,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x40,
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000653 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
654 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000655 0x00,NANA,0x00,0x00,0x00,EOT}},
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000656 {0xa, "Consumer IR",
657 {0x30,0x60,0x61,0x70,0xf0,EOT},
658 {0x00,0x03,0x10,0x0b,0x00,EOT}},
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000659 {EOT}}},
Christian Ruppert7c2eec02011-02-03 16:00:28 +0000660 {0x8720, "IT8720F", {
661 {NOLDN, NULL,
662 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
663 {0x87,0x20,0x05,0x00,0x00,0x00,EOT}},
664 {0x0, "Floppy",
665 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
666 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
667 {0x1, "COM1",
668 {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
669 {0x00,0x03,0xf8,0x04,0x00,0x50,EOT}},
670 {0x2, "COM2",
671 {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
672 {0x00,0x02,0xf8,0x03,0x00,0x50,EOT}},
673 {0x3, "Parallel port",
674 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
675 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
676 {0x4, "Environment controller",
677 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
678 0xf4,0xf5,0xf6,EOT},
679 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
680 0x00,NANA,NANA,EOT}},
681 {0x5, "Keyboard",
682 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
683 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
684 {0x6, "Mouse",
685 {0x30,0x70,0x71,0xf0,EOT},
686 {0x00,0x0c,0x02,0x00,EOT}},
687 {0x7, "GPIO",
688 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
689 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
690 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
691 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
692 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe9,0xf0,
693 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
694 0xfb,0xfc,0xfd,0xfe,0xff,EOT},
695 {0x00,0xff,0x00,0x40,0x00,0x00,0x03,0x00,0x00,0x00,
696 0x00,0x00,0x00,0x00,0x00,NANA,0x38,0x00,0x00,0x00,
697 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
698 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
699 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,
700 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
701 0x00,NANA,0x00,0x00,0x00,EOT}},
702 {0xa, "Consumer IR",
703 {0x30,0x60,0x61,0x70,0xf0,EOT},
704 {0x00,0x03,0x10,0x0b,0x06,EOT}},
Uwe Hermanncfb6ac72008-10-01 20:16:58 +0000705 {EOT}}},
Uwe Hermannf9bd9ae2011-01-01 22:05:57 +0000706 {0x8721, "IT8721F", {
707 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000708 {0x8722, "IT8722F", {
709 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000710 {0x8726, "IT8726F", {
711 /* Datasheet wrongly says that the ID is 0x8716. */
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000712 {NOLDN, NULL,
713 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
714 {0x87,0x26,0x01,0x00,MISC,0x00,EOT}},
715 {0x0, "Floppy",
716 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
717 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
718 {0x1, "COM1",
719 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
720 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
721 {0x2, "COM2",
722 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
723 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
724 {0x3, "Parallel port",
725 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
726 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
727 {0x4, "Environment controller",
728 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
729 0xf4,0xf5,0xf6,EOT},
730 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
731 0x00,MISC,MISC,EOT}},
732 {0x5, "Keyboard",
733 /* 0xf0: Datasheet page 35: 0x00; page 59: 0x08. */
734 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
735 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
736 {0x6, "Mouse",
737 {0x30,0x70,0x71,0xf0,EOT},
738 {0x00,0x0c,0x02,0x00,EOT}},
739 {0x7, "GPIO",
740 /* 0x2c: Datasheet page 33: 0x00; page 45: 0x1f. */
741 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
742 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
743 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
744 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
745 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
746 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
747 {0x01,0x00,0x00,0x40,0x00,0x00,0x1f,0x00,0x00,0x00,
748 0x00,0x00,0x00,0x00,0x00,MISC,0x38,0x00,0x00,0x00,
749 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
750 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
751 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
752 0x00,0x00,0x00,0x00,0x00,0x00,0x00,MISC,0x00,EOT}},
753 {0x8, "MIDI port",
754 {0x30,0x60,0x61,0x70,0xf0,EOT},
755 {0x00,0x03,0x00,0x0a,0x00,EOT}},
756 {0x9, "Game port",
757 {0x30,0x60,0x61,EOT},
758 {0x00,0x02,0x01,EOT}},
759 {0xa, "Consumer IR",
760 {0x30,0x60,0x61,0x70,0xf0,EOT},
761 {0x00,0x03,0x10,0x0b,0x00,EOT}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000762 {EOT}}},
Андрей Павловab9b71d2013-03-17 19:11:05 +0300763 {0x8728, "IT8728F", {
764 {NOLDN, NULL,
765 {0x02,0x07,0x20,0x21,0x22,0x23,0x24,0x2b,0x2e,0x2f,EOT},
766 {NANA,NANA,0x87,0x28,0x01,0x00,0x00,MISC,0x00,0x00,EOT}},
767 {0x0, "Floppy",
768 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
769 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
770 {0x1, "COM1",
771 {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
772 {0x00,0x03,0xf8,0x04,0x00,0x50,EOT}},
773 {0x2, "COM2",
774 {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT},
775 {0x00,0x02,0xf8,0x03,0x00,0x50,EOT}},
776 {0x3, "Parallel port",
777 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
778 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
779 {0x4, "Environment controller",
780 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
781 0xf3,0xf4,0xf5,0xf6,0xF9,0xFA,0xFB,EOT},
782 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
783 0x00,0x00,MISC,MISC,MISC,MISC,MISC,EOT}},
784 {0x5, "Keyboard",
785 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
786 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x48,EOT}},
787 {0x6, "Mouse",
788 {0x30,0x70,0x71,0xf0,EOT},
789 {0x00,0x0c,0x02,0x00,EOT}},
790 {0x7, "GPIO",
791 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x2d,0x60,
792 0x61,0x62,0x63,0x64,0x65,0x70,0x71,0x72,0x73,
793 0x74,0xb0,0xb1,0xb2,0xb3,0xb4,0xb8,0xb9,0xba,
794 0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,
795 0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xe0,0xe1,
796 0xe2,0xe3,0xe4,0xe9,0xf0,0xf1,0xf2,0xf3,0xf4,
797 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,EOT},
798 {0x00,0xf3,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
799 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x38,
800 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
801 0x00,0x00,0x00,0x01,0x00,0x00,0x40,0x00,0x01,
802 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
803 0x00,0x00,0x00,MISC,0x00,0x00,0x00,0x00,0x00,
804 0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}},
805 {0xa, "Consumer IR",
806 {0x30,0x60,0x61,0x70,0xf0,EOT},
807 {0x00,0x03,0x10,0x0b,0x06,EOT}},
808 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000809 {0x8761, "IT8761E", {
810 {EOT}}},
Stefan Reinauerd7a75ec2011-10-25 17:12:53 +0000811 {0x8772, "IT8772F", {
812 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000813 {0x8780, "IT8780F", {
814 {EOT}}},
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000815 {EOT}
816};
817
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000818static const struct superio_registers ec_table[] = {
819 {0x8716, "IT8716F", {
820 {NOLDN, NULL,
821 {0x00,0x04,0x05,0x06,0x07,0x08,0x09,0x0b,0x0c,0x10,
822 0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x1b,0x1c,0x1d,
823 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
824 0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,
825 0x44,0x45,0x48,0x50,0x51,0x52,0x53,0x54,0x56,0x57,
Uwe Hermann8cb24582008-05-08 13:50:23 +0000826 0x59,0x5c,
827 0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x68,
828 0x69,0x6a,0x6b,0x6c,0x6d,0x70,0x71,0x72,0x73,0x74,
829 0x75,0x84,0x85,0x86,0x87,0x88,0x89,0x8c,0x8d,0x8e,
830 0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x98,0x99,0x9a,
831 0x9b,0x9c,0x9d,EOT},
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000832 {0x18,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x00,NANA,
833 NANA,NANA,0x07,0x50,NANA,NANA,NANA,NANA,NANA,NANA,
834 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
835 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
836 NANA,NANA,RSVD,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,
Uwe Hermann8cb24582008-05-08 13:50:23 +0000837 0x00,0x00,
838 0x00,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000839 0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,
840 0x7f,NANA,NANA,NANA,NANA,0x00,0x00,0x02,0x00,0x99,
841 0x99,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,
842 0x00,0x00,0x7f,EOT}},
843 {EOT}}},
Uwe Hermannbbd337e2008-05-08 14:37:12 +0000844 {0x8718, "IT8718F", {
845 {NOLDN, NULL,
846 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
847 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
848 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
849 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
850 0x2a,0x2b,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
851 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
852 0x42,0x43,0x44,0x45,0x50,0x51,0x52,0x53,0x54,0x56,
853 0x57,0x58,0x59,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,
854 0x62,0x63,0x64,0x65,0x68,0x69,0x6a,0x6b,0x6c,0x6d,
855 0x70,0x71,0x72,0x73,0x74,0x75,0x80,0x81,0x82,0x83,
856 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,
857 0x92,0x94,0x95,0x96,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,
858 0xa6,EOT},
859 {0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
860 0x40,0x09,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x07,
861 0x50,MISC,MISC,MISC,NANA,NANA,NANA,NANA,NANA,NANA,
862 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
863 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
864 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
865 NANA,NANA,NANA,NANA,0x00,0x00,0x7f,0x7f,0x7f,0x00,
866 0x00,0x90,0x00,0x12,0x00,0x00,0x00,0x00,0x7f,0x7f,
867 0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,
868 0x7f,0x7f,0x7f,0x00,0x00,0x7f,NANA,NANA,NANA,NANA,
869 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xff,0x00,
870 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
871 0x00,EOT}},
872 {EOT}}},
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000873 {EOT}
874};
875
Nico Huber28a13242013-04-25 15:10:46 +0200876static const struct superio_registers bram_table[] = {
877 {0x8516, "IT8516???", {
878 {NOLDN, NULL,
879 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
880 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,EOT},
881 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
882 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
883 {NOLDN, NULL,
884 {0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
885 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,EOT},
886 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
887 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
888 {NOLDN, NULL,
889 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,
890 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT},
891 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
892 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
893 {NOLDN, NULL,
894 {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
895 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,EOT},
896 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
897 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
898 {NOLDN, NULL,
899 {0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
900 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,EOT},
901 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
902 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
903 {NOLDN, NULL,
904 {0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
905 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,EOT},
906 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
907 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
908 {NOLDN, NULL,
909 {0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
910 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,EOT},
911 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
912 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
913 {NOLDN, NULL,
914 {0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,
915 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,EOT},
916 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
917 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
918 {NOLDN, NULL,
919 {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
920 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,EOT},
921 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
922 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
923 {NOLDN, NULL,
924 {0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
925 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,EOT},
926 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
927 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
928 {NOLDN, NULL,
929 {0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,
930 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,EOT},
931 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
932 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
933 {NOLDN, NULL,
934 {0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,
935 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,EOT},
936 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
937 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
938 {NOLDN, NULL,
939 {0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,
940 0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,EOT},
941 {NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
942 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,EOT}},
943 {EOT}}},
944 {EOT}
945};
946
Urja Rannikko38204a22008-10-23 23:33:18 +0000947/* Works for: IT8661F/IT8770F */
948static const uint8_t initkey_it8661f[][4] = {
949 {0x86, 0x61, 0x55, 0x55}, /* 0x3f0 */
950 {0x86, 0x61, 0x55, 0xaa}, /* 0x3bd */
951 {0x86, 0x61, 0xaa, 0x55}, /* 0x370 */
952};
953
954/* Works for: IT8671F/IT8687R, IT8673F */
955static const uint8_t initkey_it8671f[][4] = {
956 {0x86, 0x80, 0x55, 0x55}, /* 0x3f0 */
957 {0x86, 0x80, 0x55, 0xaa}, /* 0x3bd */
958 {0x86, 0x80, 0xaa, 0x55}, /* 0x370 */
959};
960
961/* Works for: IT8661F/IT8770F, IT8671F/IT8687R, IT8673F. */
962static const uint8_t initkey_mbpnp[] = {
963 0x6a, 0xb5, 0xda, 0xed, 0xf6, 0xfb, 0x7d, 0xbe, 0xdf, 0x6f, 0x37,
964 0x1b, 0x0d, 0x86, 0xc3, 0x61, 0xb0, 0x58, 0x2c, 0x16, 0x8b, 0x45,
965 0xa2, 0xd1, 0xe8, 0x74, 0x3a, 0x9d, 0xce, 0xe7, 0x73, 0x39,
966};
967
968/* Works for: IT8661F/IT8770F, IT8671F/IT8687R, IT8673F. */
969static void enter_conf_mode_ite_legacy(uint16_t port, const uint8_t init[][4])
970{
971 int i, idx;
972
973 /* Determine Super I/O config port. */
974 idx = (port == 0x3f0) ? 0 : ((port == 0x3bd) ? 1 : 2);
975 for (i = 0; i < 4; i++)
Andriy Gaponb64aa602008-10-28 22:13:38 +0000976 OUTB(init[idx][i], ISA_PNP_ADDR);
Urja Rannikko38204a22008-10-23 23:33:18 +0000977
978 /* Sequentially write the 32 MB PnP init values. */
979 for (i = 0; i < 32; i++)
Andriy Gaponb64aa602008-10-28 22:13:38 +0000980 OUTB(initkey_mbpnp[i], port);
Urja Rannikko38204a22008-10-23 23:33:18 +0000981}
982
Uwe Hermann3acf31e2007-09-19 01:55:35 +0000983static void enter_conf_mode_ite(uint16_t port)
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000984{
Andriy Gaponb64aa602008-10-28 22:13:38 +0000985 OUTB(0x87, port);
986 OUTB(0x01, port);
987 OUTB(0x55, port);
988 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
Uwe Hermann25a6c0f2007-09-19 00:48:42 +0000989}
990
Anton Kochkov106f7ff2010-06-29 21:26:17 +0000991static void enter_conf_mode_ite_it8502e(uint16_t port)
992{
993 OUTB(0x85, port);
994 OUTB(0x02, port);
995 OUTB(0x55, port);
996 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
997}
998
Uwe Hermannebb73f22008-11-12 19:08:58 +0000999static void enter_conf_mode_ite_it8761e(uint16_t port)
1000{
1001 OUTB(0x87, port);
1002 OUTB(0x61, port);
1003 OUTB(0x55, port);
1004 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
1005}
1006
1007static void enter_conf_mode_ite_it8228e(uint16_t port)
1008{
1009 OUTB(0x82, port);
1010 OUTB(0x28, port);
1011 OUTB(0x55, port);
1012 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
1013}
1014
Uwe Hermann3acf31e2007-09-19 01:55:35 +00001015static void exit_conf_mode_ite(uint16_t port)
Uwe Hermann25a6c0f2007-09-19 00:48:42 +00001016{
1017 regwrite(port, 0x02, 0x02);
1018}
1019
Stefan Reinauerd7ce71d2010-12-30 16:57:58 +00001020static int chip_found_at_port;
1021
Uwe Hermannafe83092007-09-28 15:45:43 +00001022static void probe_idregs_ite_helper(const char *init, uint16_t port)
Uwe Hermann25a6c0f2007-09-19 00:48:42 +00001023{
Uwe Hermanneec5ff42008-03-01 18:49:39 +00001024 uint16_t id, chipver, ecport;
Uwe Hermann25a6c0f2007-09-19 00:48:42 +00001025
Uwe Hermann8b8d0392007-10-04 15:23:38 +00001026 probing_for("ITE", init, port);
1027
Uwe Hermann07024692007-09-20 22:13:48 +00001028 id = regval(port, CHIP_ID_BYTE1_REG) << 8;
1029 id |= regval(port, CHIP_ID_BYTE2_REG);
1030 chipver = regval(port, CHIP_VERSION_REG) & 0x0f; /* Only bits 3..0 */
1031
1032 if (superio_unknown(reg_table, id)) {
Uwe Hermann8b8d0392007-10-04 15:23:38 +00001033 if (verbose)
1034 printf(NOTFOUND "id=0x%04x, rev=0x%01x\n", id, chipver);
Uwe Hermann0120e1a2007-09-16 18:11:03 +00001035 return;
1036 }
1037
Uwe Hermann8b8d0392007-10-04 15:23:38 +00001038 printf("Found ITE %s (id=0x%04x, rev=0x%01x) at 0x%x\n",
Uwe Hermann07024692007-09-20 22:13:48 +00001039 get_superio_name(reg_table, id), id, chipver, port);
Uwe Hermanne9d46162007-10-07 20:01:23 +00001040 chip_found = 1;
Stefan Reinauerd7ce71d2010-12-30 16:57:58 +00001041 chip_found_at_port = 1;
Uwe Hermann0120e1a2007-09-16 18:11:03 +00001042
Stefan Reinauer7a51e502008-12-01 14:18:57 +00001043 dump_superio("ITE", reg_table, port, id, LDN_SEL);
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +00001044
1045 if (extra_dump) {
Stefan Reinauer7a51e502008-12-01 14:18:57 +00001046 regwrite(port, LDN_SEL, 0x04); /* Select LDN 4 (EC). */
Uwe Hermanneec5ff42008-03-01 18:49:39 +00001047
1048 /* Get EC base address (stored in LDN 4, index 0x60/0x61). */
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +00001049 ecport = regval(port, 0x60) << 8;
1050 ecport |= regval(port, 0x61);
Uwe Hermanneec5ff42008-03-01 18:49:39 +00001051
1052 /* EC address register = EC base address + 5. */
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +00001053 ecport += 5;
1054
Uwe Hermanneec5ff42008-03-01 18:49:39 +00001055 printf("Environment controller (0x%04x)\n", ecport);
Stefan Reinauer7a51e502008-12-01 14:18:57 +00001056 dump_superio("ITE-EC", ec_table, ecport, id, LDN_SEL);
Nico Huber28a13242013-04-25 15:10:46 +02001057
1058 regwrite(port, LDN_SEL, 0x10); /* Select LDN 16 (BRAM). */
1059 /* Get EC base address (stored in LDN 16, index 0x62/0x63). */
1060 ecport = regval(port, 0x62) << 8;
1061 ecport |= regval(port, 0x63);
1062 printf("BRAM (0x%04x)\n", ecport);
1063 dump_superio("ITE-BRAM", bram_table, ecport, id, LDN_SEL);
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +00001064 }
Uwe Hermannb4db2202007-09-20 23:37:56 +00001065}
Uwe Hermann25a6c0f2007-09-19 00:48:42 +00001066
Uwe Hermannb4db2202007-09-20 23:37:56 +00001067void probe_idregs_ite(uint16_t port)
1068{
Stefan Reinauerd7ce71d2010-12-30 16:57:58 +00001069 chip_found_at_port = 0;
1070
Urja Rannikko38204a22008-10-23 23:33:18 +00001071 if (port == 0x3f0 || port == 0x3bd || port == 0x370) {
1072 enter_conf_mode_ite_legacy(port, initkey_it8661f);
1073 probe_idregs_ite_helper("(init=legacy/it8661f) ", port);
1074 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001075 if (chip_found_at_port)
1076 return;
Uwe Hermannb4db2202007-09-20 23:37:56 +00001077
Urja Rannikko38204a22008-10-23 23:33:18 +00001078 enter_conf_mode_ite_legacy(port, initkey_it8671f);
1079 probe_idregs_ite_helper("(init=legacy/it8671f) ", port);
1080 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001081 if (chip_found_at_port)
1082 return;
Urja Rannikko38204a22008-10-23 23:33:18 +00001083 } else {
1084 enter_conf_mode_ite(port);
Uwe Hermannebb73f22008-11-12 19:08:58 +00001085 probe_idregs_ite_helper("(init=standard) ", port);
1086 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001087 if (chip_found_at_port)
1088 return;
Uwe Hermannebb73f22008-11-12 19:08:58 +00001089
Anton Kochkov106f7ff2010-06-29 21:26:17 +00001090 enter_conf_mode_ite_it8502e(port);
1091 probe_idregs_ite_helper("(init=it8502e) ", port);
1092 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001093 if (chip_found_at_port)
1094 return;
Anton Kochkov106f7ff2010-06-29 21:26:17 +00001095
Uwe Hermannebb73f22008-11-12 19:08:58 +00001096 enter_conf_mode_ite_it8761e(port);
1097 probe_idregs_ite_helper("(init=it8761e) ", port);
1098 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001099 if (chip_found_at_port)
1100 return;
Uwe Hermannebb73f22008-11-12 19:08:58 +00001101
1102 enter_conf_mode_ite_it8228e(port);
1103 probe_idregs_ite_helper("(init=it8228e) ", port);
Urja Rannikko38204a22008-10-23 23:33:18 +00001104 exit_conf_mode_ite(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001105 if (chip_found_at_port)
1106 return;
Urja Rannikko38204a22008-10-23 23:33:18 +00001107
1108 enter_conf_mode_winbond_fintek_ite_8787(port);
1109 probe_idregs_ite_helper("(init=0x87,0x87) ", port);
1110 exit_conf_mode_winbond_fintek_ite_8787(port);
Uwe Hermannc55bcde2011-06-09 20:56:29 +02001111 if (chip_found_at_port)
1112 return;
Urja Rannikko38204a22008-10-23 23:33:18 +00001113 }
Uwe Hermann0120e1a2007-09-16 18:11:03 +00001114}
Robinson P. Tryon552cfb72008-01-15 22:30:55 +00001115
1116void print_ite_chips(void)
1117{
1118 print_vendor_chips("ITE", reg_table);
Stefan Reinauer7a51e502008-12-01 14:18:57 +00001119 print_vendor_chips("ITE-EC", ec_table);
Robinson P. Tryon552cfb72008-01-15 22:30:55 +00001120}