blob: 8ecefb5c7cd6f3f01dac3594c294c4570dc096a4 [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
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 */
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}}},
Urja Rannikko38204a22008-10-23 23:33:18 +000032 {0x8661, "IT8661F/IT8770F", {
Robinson P. Tryondc817692007-10-05 13:47:04 +000033 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +000034 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x20,0x21,0x22,
35 0x23,0x24,EOT},
36 {NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x86,0x61,0x00,
37 0x00,0x00,EOT}},
Robinson P. Tryondc817692007-10-05 13:47:04 +000038 {0x0, "Floppy",
39 {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0xf0,EOT},
40 {0x00,0x00,0x03,0xf0,0x06,0x02,0x02,0x00,EOT}},
41 {0x1, "COM1",
42 {0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
43 {0x00,0x00,0x03,0xf8,0x04,0x02,0x00,EOT}},
44 {0x2, "COM2",
45 {0x30,0x31,0x60,0x61,0x70,0x71,0xf0,EOT},
46 {0x00,0x00,0x02,0xf8,0x03,0x02,0x00,EOT}},
47 {0x3, "Parallel port",
48 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x74,
49 0xf0,EOT},
50 {0x00,0x00,0x03,0x78,0x07,0x78,0x07,0x02,0x03,
51 0x03,EOT}},
52 {0x4, "IR",
53 {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x72,0x73,
54 0x74,0x75,0xf0,EOT},
55 {0x00,0x00,0x02,0xe8,0x03,0x00,0x0a,0x02,0x0b,0x02,
56 0x01,0x00,0x00,EOT}},
57 {0x5, "GPIO",
58 {0x25,0x26,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,
59 0x70,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,
60 0xf9,0xfa,0xfb,0xfc,EOT},
61 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
62 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
63 0x00,0x00,0x00,0x00,EOT}},
64 {EOT}}},
Urja Rannikko38204a22008-10-23 23:33:18 +000065 {0x8673, "IT8673F", {
66 {EOT}}},
67 {0x8681, "IT8671F/IT8687R", {
68 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +000069 {0x8702, "IT8702F", {
Uwe Hermann0120e1a2007-09-16 18:11:03 +000070 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +000071 {0x8705, "IT8705F/AF / IT8700F", {
Robinson P. Tryon43541032007-10-04 15:44:19 +000072 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +000073 {0x20,0x21,0x22,0x23,0x24,EOT},
74 {0x87,0x05,0x00,0x00,NANA,EOT}},
Robinson P. Tryon43541032007-10-04 15:44:19 +000075 {0x0, "Floppy",
76 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
77 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
78 {0x1, "COM1",
79 {0x30,0x60,0x61,0x70,0xf0,EOT},
80 {0x00,0x03,0xf8,0x04,0x00,EOT}},
81 {0x2, "COM2",
82 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
83 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
84 {0x3, "Parallel port",
85 {0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
86 0xf0,EOT},
87 {0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
88 0x03,EOT}},
89 {0x4, "Environment controller",
90 {0x2b,0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,
91 0xf3,0xf4,0xf5,0xf6,EOT},
92 {0x00,0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,
93 0x00,0x00,NANA,NANA,EOT}},
94 {0x5, "GPIO",
Robinson P. Tryondc817692007-10-05 13:47:04 +000095 {0x25,0x26,0x27,0x28,0x29,0x2a,0x60,0x61,0x62,0x63,
96 0x64,0x65,0x70,0x71,0x72,0xb0,0xb1,0xb2,0xb3,0xb4,
97 0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,
98 0xc3,0xc4,0xc5,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xd0,
99 0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd8,0xd9,0xda,0xf0,
100 0xf1,0xf2,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,
101 0xfd,0xfe,0xff,EOT},
Robinson P. Tryon43541032007-10-04 15:44:19 +0000102 {0x00,0x00,0x00,0xff,0xe0,0xff,0x00,0x00,0x00,0x00,
103 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
104 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
105 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
106 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
107 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Robinson P. Tryondc817692007-10-05 13:47:04 +0000108 0x00,NANA,0x00,EOT}},
Robinson P. Tryon43541032007-10-04 15:44:19 +0000109 {0x6, "Game port",
110 {0x30,0x60,0x61,EOT},
111 {0x00,0x02,0x01,EOT}},
112 {0x7, "Consumer IR",
113 {0x30,0x60,0x61,0x70,0xf0,EOT},
114 {0x00,0x03,0x10,0x0b,0x00,EOT}},
115 {0x8, "MIDI port",
116 {0x30,0x60,0x61,0x70,0xf0,EOT},
117 {0x00,0x03,0x00,0x0a,0x00,EOT}},
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000118 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000119 {0x8706, "IT8706R", { /* TODO: Not yet in sensors-detect */
120 /* This is a "Special General Purpose I/O chip". */
121 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000122 {0x8708, "IT8708F", {
Uwe Hermann2c290e32007-09-20 00:00:49 +0000123 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000124 {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
125 0x2a,0x2e,0x2f,EOT},
126 {0x87,0x08,0x00,0x00,NANA,0x3f,0x00,0xff,0xff,0xff,
127 0xff,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000128 {0x0, "Floppy",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000129 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
130 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000131 {0x1, "COM1",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000132 {0x30,0x60,0x61,0x70,0xf0,EOT},
133 {0x00,0x03,0xf8,0x04,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000134 {0x2, "COM2",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000135 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
136 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000137 {0x3, "Parallel port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000138 {0x30,0x60,0x61,0x62,0x63,0x64,0x65,0x70,0x74,
139 0xf0,EOT},
140 {0x00,0x03,0x78,0x07,0x78,0x00,0x80,0x07,0x03,
141 0x03,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000142 {0x4, "SWC",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000143 {0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,
144 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,EOT},
145 {NANA,NANA,0x00,0x00,0x00,0x00,0x00,0x00,
146 0x00,0x00,0x00,0x00,0x00,NANA,NANA,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000147 {0x5, "Keyboard",
Uwe Hermann2c290e32007-09-20 00:00:49 +0000148 /* Note: 0x30 can actually be 0x00 _or_ 0x01. */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000149 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
150 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000151 {0x6, "Mouse",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000152 {0x30,0x70,0x71,0xf0,EOT},
153 {0x00,0x0c,0x02,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000154 {0x7, "GPIO",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000155 {0x70,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,
156 0xbb,0xbc,0xbd,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,
157 0xc9,0xca,0xcb,0xcc,0xcd,0xd0,0xd1,0xd2,0xd3,0xd4,
158 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xf0,0xf1,
159 0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,
160 0xfc,EOT},
161 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
162 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
163 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
164 0x00,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x00,
165 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,
166 0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000167 {0x8, "Game port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000168 {0x30,0x60,0x61,EOT},
169 {0x00,0x02,0x01,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000170 {0x9, "Consumer IR",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000171 {0x30,0x60,0x61,0x70,0xf0,EOT},
172 {0x00,0x03,0x10,0x0b,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000173 {0xa, "MIDI port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000174 {0x30,0x60,0x61,0x70,0xf0,EOT},
175 {0x00,0x03,0x00,0x0a,0x00,EOT}},
176 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000177 {0x8710, "IT8710F", { /* TODO: Not yet in sensors-detect */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000178 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000179 {0x8711, "IT8711F", { /* 0x8711 is a guess, not found in datasheet. */
180 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000181 {0x8712, "IT8712F", {
Uwe Hermann2c290e32007-09-20 00:00:49 +0000182 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000183 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
184 {0x87,0x12,0x08,0x00,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000185 {0x0, "Floppy",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000186 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
187 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000188 {0x1, "COM1",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000189 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
190 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000191 {0x2, "COM2",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000192 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
193 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000194 {0x3, "Parallel port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000195 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
196 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000197 {0x4, "Environment controller",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000198 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
199 0xf4,0xf5,0xf6,EOT},
200 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
201 0x00,NANA,NANA,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000202 {0x5, "Keyboard",
203 /* TODO: 0xf0: Error in datasheet? */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000204 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
205 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000206 {0x6, "Mouse",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000207 {0x30,0x70,0x71,0xf0,EOT},
208 {0x00,0x0c,0x02,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000209 {0x7, "GPIO", /* TODO: 0x72, 0x73: Errors in datasheet? */
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000210 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
211 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
212 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
213 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
214 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
215 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
216 {0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
Uwe Hermann07024692007-09-20 22:13:48 +0000217 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000218 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
219 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
220 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
221 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000222 {0x8, "MIDI port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000223 {0x30,0x60,0x61,0x70,0xf0,EOT},
224 {0x00,0x03,0x00,0x0a,0x00,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000225 {0x9, "Game port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000226 {0x30,0x60,0x61,EOT},
227 {0x00,0x02,0x01,EOT}},
Uwe Hermann07024692007-09-20 22:13:48 +0000228 {0xa, "Consumer IR",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000229 {0x30,0x60,0x61,0x70,0xf0,EOT},
230 {0x00,0x03,0x10,0x0b,0x00,EOT}},
231 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000232 {0x8716, "IT8716F", {
Uwe Hermann2c290e32007-09-20 00:00:49 +0000233 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000234 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
235 {0x87,0x16,0x01,0x00,0x00,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000236 {0x0, "Floppy",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000237 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
238 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000239 {0x1, "COM1",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000240 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
241 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000242 {0x2, "COM2",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000243 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
244 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000245 {0x3, "Parallel port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000246 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
247 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000248 {0x4, "Environment controller",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000249 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
250 0xf4,0xf5,0xf6,EOT},
251 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
252 0x00,NANA,NANA,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000253 {0x5, "Keyboard",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000254 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
255 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000256 {0x6, "Mouse",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000257 {0x30,0x70,0x71,0xf0,EOT},
258 {0x00,0x0c,0x02,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000259 {0x7, "GPIO",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000260 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
261 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
262 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
263 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
264 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
265 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
266 {0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
267 0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,
268 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
269 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
270 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
271 0x00,0x00,0x00,0x00,0x00,0x00,0x00,NANA,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000272 {0x8, "MIDI port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000273 {0x30,0x60,0x61,0x70,0xf0,EOT},
274 {0x00,0x03,0x00,0x0a,0x00,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000275 {0x9, "Game port",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000276 {0x30,0x60,0x61,EOT},
277 {0x00,0x02,0x01,EOT}},
Uwe Hermann11887f22007-12-07 23:55:20 +0000278 {0xa, "Consumer IR",
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000279 {0x30,0x60,0x61,0x70,0xf0,EOT},
280 {0x00,0x03,0x10,0x0b,0x00,EOT}},
281 {EOT}}},
Uwe Hermann07024692007-09-20 22:13:48 +0000282 {0x8718, "IT8718F", {
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000283 {NOLDN, NULL,
Uwe Hermannb0ae9762008-10-14 16:34:38 +0000284 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
285 {0x87,0x18,0x01,0x00,0x00,0x00,EOT}},
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000286 {0x0, "Floppy",
287 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
288 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
289 {0x1, "COM1",
290 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
291 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
292 {0x2, "COM2",
293 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
294 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
295 {0x3, "Parallel port",
296 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
297 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
298 {0x4, "Environment controller",
299 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
300 0xf4,0xf5,0xf6,EOT},
301 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
302 0x00,NANA,NANA,EOT}},
303 {0x5, "Keyboard",
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000304 /* 0xf0: Datasheet page 33: 0x00; page 56: 0x08. */
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000305 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
306 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x00,EOT}},
307 {0x6, "Mouse",
308 {0x30,0x70,0x71,0xf0,EOT},
309 {0x00,0x0c,0x02,0x00,EOT}},
310 {0x7, "GPIO",
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000311 /* 0x2c: Datasheet page 30: 0x00; page 43: 0x1f. */
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000312 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
313 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
314 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000315 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc8,0xc9,0xca,0xcb,
316 0xcc,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xf0,
317 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
318 0xfb,0xfc,0xfd,0xfe,0xff,EOT},
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000319 {0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
320 0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x00,0x00,
321 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000322 0x01,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x40,
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000323 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
324 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000325 0x00,NANA,0x00,0x00,0x00,EOT}},
Uwe Hermann420f6ab2007-09-21 14:48:04 +0000326 {0xa, "Consumer IR",
327 {0x30,0x60,0x61,0x70,0xf0,EOT},
328 {0x00,0x03,0x10,0x0b,0x00,EOT}},
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000329 {EOT}}},
Uwe Hermanncfb6ac72008-10-01 20:16:58 +0000330 {0x8720, "IT8720F", { /* From sensors-detect */
331 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000332 {0x8722, "IT8722F", {
333 {EOT}}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000334 {0x8726, "IT8726F", {
335 /* Datasheet wrongly says that the ID is 0x8716. */
Josh Profittb9c6b0e2008-10-14 16:28:50 +0000336 {NOLDN, NULL,
337 {0x20,0x21,0x22,0x23,0x24,0x2b,EOT},
338 {0x87,0x26,0x01,0x00,MISC,0x00,EOT}},
339 {0x0, "Floppy",
340 {0x30,0x60,0x61,0x70,0x74,0xf0,0xf1,EOT},
341 {0x00,0x03,0xf0,0x06,0x02,0x00,0x00,EOT}},
342 {0x1, "COM1",
343 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
344 {0x00,0x03,0xf8,0x04,0x00,0x50,0x00,0x7f,EOT}},
345 {0x2, "COM2",
346 {0x30,0x60,0x61,0x70,0xf0,0xf1,0xf2,0xf3,EOT},
347 {0x00,0x02,0xf8,0x03,0x00,0x50,0x00,0x7f,EOT}},
348 {0x3, "Parallel port",
349 {0x30,0x60,0x61,0x62,0x63,0x70,0x74,0xf0,EOT},
350 {0x00,0x03,0x78,0x07,0x78,0x07,0x03,0x03,EOT}},
351 {0x4, "Environment controller",
352 {0x30,0x60,0x61,0x62,0x63,0x70,0xf0,0xf1,0xf2,0xf3,
353 0xf4,0xf5,0xf6,EOT},
354 {0x00,0x02,0x90,0x02,0x30,0x09,0x00,0x00,0x00,0x00,
355 0x00,MISC,MISC,EOT}},
356 {0x5, "Keyboard",
357 /* 0xf0: Datasheet page 35: 0x00; page 59: 0x08. */
358 {0x30,0x60,0x61,0x62,0x63,0x70,0x71,0xf0,EOT},
359 {0x01,0x00,0x60,0x00,0x64,0x01,0x02,0x08,EOT}},
360 {0x6, "Mouse",
361 {0x30,0x70,0x71,0xf0,EOT},
362 {0x00,0x0c,0x02,0x00,EOT}},
363 {0x7, "GPIO",
364 /* 0x2c: Datasheet page 33: 0x00; page 45: 0x1f. */
365 {0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x60,0x61,0x62,
366 0x63,0x64,0x65,0x70,0x71,0x72,0x73,0x74,0xb0,0xb1,
367 0xb2,0xb3,0xb4,0xb5,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,
368 0xc0,0xc1,0xc2,0xc3,0xc4,0xc8,0xc9,0xca,0xcb,0xcc,
369 0xe0,0xe1,0xe2,0xe3,0xe4,0xf0,0xf1,0xf2,0xf3,0xf4,
370 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,EOT},
371 {0x01,0x00,0x00,0x40,0x00,0x00,0x1f,0x00,0x00,0x00,
372 0x00,0x00,0x00,0x00,0x00,MISC,0x38,0x00,0x00,0x00,
373 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
374 0x01,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x40,0x00,
375 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
376 0x00,0x00,0x00,0x00,0x00,0x00,0x00,MISC,0x00,EOT}},
377 {0x8, "MIDI port",
378 {0x30,0x60,0x61,0x70,0xf0,EOT},
379 {0x00,0x03,0x00,0x0a,0x00,EOT}},
380 {0x9, "Game port",
381 {0x30,0x60,0x61,EOT},
382 {0x00,0x02,0x01,EOT}},
383 {0xa, "Consumer IR",
384 {0x30,0x60,0x61,0x70,0xf0,EOT},
385 {0x00,0x03,0x10,0x0b,0x00,EOT}},
Uwe Hermann44bb7772007-10-07 21:50:29 +0000386 {EOT}}},
Uwe Hermannebb73f22008-11-12 19:08:58 +0000387 {0x8761, "IT8761E", {
388 {EOT}}},
389 {0x8780, "IT8780F", {
390 {EOT}}},
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000391 {EOT}
392};
393
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000394static const struct superio_registers ec_table[] = {
395 {0x8716, "IT8716F", {
396 {NOLDN, NULL,
397 {0x00,0x04,0x05,0x06,0x07,0x08,0x09,0x0b,0x0c,0x10,
398 0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x1b,0x1c,0x1d,
399 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
400 0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,
401 0x44,0x45,0x48,0x50,0x51,0x52,0x53,0x54,0x56,0x57,
Uwe Hermann8cb24582008-05-08 13:50:23 +0000402 0x59,0x5c,
403 0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x68,
404 0x69,0x6a,0x6b,0x6c,0x6d,0x70,0x71,0x72,0x73,0x74,
405 0x75,0x84,0x85,0x86,0x87,0x88,0x89,0x8c,0x8d,0x8e,
406 0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x98,0x99,0x9a,
407 0x9b,0x9c,0x9d,EOT},
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000408 {0x18,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x00,NANA,
409 NANA,NANA,0x07,0x50,NANA,NANA,NANA,NANA,NANA,NANA,
410 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
411 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
412 NANA,NANA,RSVD,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,
Uwe Hermann8cb24582008-05-08 13:50:23 +0000413 0x00,0x00,
414 0x00,0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000415 0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,
416 0x7f,NANA,NANA,NANA,NANA,0x00,0x00,0x02,0x00,0x99,
417 0x99,0x7f,0x7f,0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,
418 0x00,0x00,0x7f,EOT}},
419 {EOT}}},
Uwe Hermannbbd337e2008-05-08 14:37:12 +0000420 {0x8718, "IT8718F", {
421 {NOLDN, NULL,
422 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
423 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,
424 0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,
425 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,
426 0x2a,0x2b,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
427 0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,
428 0x42,0x43,0x44,0x45,0x50,0x51,0x52,0x53,0x54,0x56,
429 0x57,0x58,0x59,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,
430 0x62,0x63,0x64,0x65,0x68,0x69,0x6a,0x6b,0x6c,0x6d,
431 0x70,0x71,0x72,0x73,0x74,0x75,0x80,0x81,0x82,0x83,
432 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,
433 0x92,0x94,0x95,0x96,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,
434 0xa6,EOT},
435 {0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
436 0x40,0x09,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x07,
437 0x50,MISC,MISC,MISC,NANA,NANA,NANA,NANA,NANA,NANA,
438 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
439 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
440 NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,NANA,
441 NANA,NANA,NANA,NANA,0x00,0x00,0x7f,0x7f,0x7f,0x00,
442 0x00,0x90,0x00,0x12,0x00,0x00,0x00,0x00,0x7f,0x7f,
443 0x7f,0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x00,0x00,0x7f,
444 0x7f,0x7f,0x7f,0x00,0x00,0x7f,NANA,NANA,NANA,NANA,
445 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xff,0x00,
446 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
447 0x00,EOT}},
448 {EOT}}},
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000449 {EOT}
450};
451
Urja Rannikko38204a22008-10-23 23:33:18 +0000452/* Works for: IT8661F/IT8770F */
453static const uint8_t initkey_it8661f[][4] = {
454 {0x86, 0x61, 0x55, 0x55}, /* 0x3f0 */
455 {0x86, 0x61, 0x55, 0xaa}, /* 0x3bd */
456 {0x86, 0x61, 0xaa, 0x55}, /* 0x370 */
457};
458
459/* Works for: IT8671F/IT8687R, IT8673F */
460static const uint8_t initkey_it8671f[][4] = {
461 {0x86, 0x80, 0x55, 0x55}, /* 0x3f0 */
462 {0x86, 0x80, 0x55, 0xaa}, /* 0x3bd */
463 {0x86, 0x80, 0xaa, 0x55}, /* 0x370 */
464};
465
466/* Works for: IT8661F/IT8770F, IT8671F/IT8687R, IT8673F. */
467static const uint8_t initkey_mbpnp[] = {
468 0x6a, 0xb5, 0xda, 0xed, 0xf6, 0xfb, 0x7d, 0xbe, 0xdf, 0x6f, 0x37,
469 0x1b, 0x0d, 0x86, 0xc3, 0x61, 0xb0, 0x58, 0x2c, 0x16, 0x8b, 0x45,
470 0xa2, 0xd1, 0xe8, 0x74, 0x3a, 0x9d, 0xce, 0xe7, 0x73, 0x39,
471};
472
473/* Works for: IT8661F/IT8770F, IT8671F/IT8687R, IT8673F. */
474static void enter_conf_mode_ite_legacy(uint16_t port, const uint8_t init[][4])
475{
476 int i, idx;
477
478 /* Determine Super I/O config port. */
479 idx = (port == 0x3f0) ? 0 : ((port == 0x3bd) ? 1 : 2);
480 for (i = 0; i < 4; i++)
Andriy Gaponb64aa602008-10-28 22:13:38 +0000481 OUTB(init[idx][i], ISA_PNP_ADDR);
Urja Rannikko38204a22008-10-23 23:33:18 +0000482
483 /* Sequentially write the 32 MB PnP init values. */
484 for (i = 0; i < 32; i++)
Andriy Gaponb64aa602008-10-28 22:13:38 +0000485 OUTB(initkey_mbpnp[i], port);
Urja Rannikko38204a22008-10-23 23:33:18 +0000486}
487
Uwe Hermann3acf31e2007-09-19 01:55:35 +0000488static void enter_conf_mode_ite(uint16_t port)
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000489{
Andriy Gaponb64aa602008-10-28 22:13:38 +0000490 OUTB(0x87, port);
491 OUTB(0x01, port);
492 OUTB(0x55, port);
493 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
Uwe Hermann25a6c0f2007-09-19 00:48:42 +0000494}
495
Uwe Hermannebb73f22008-11-12 19:08:58 +0000496static void enter_conf_mode_ite_it8761e(uint16_t port)
497{
498 OUTB(0x87, port);
499 OUTB(0x61, port);
500 OUTB(0x55, port);
501 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
502}
503
504static void enter_conf_mode_ite_it8228e(uint16_t port)
505{
506 OUTB(0x82, port);
507 OUTB(0x28, port);
508 OUTB(0x55, port);
509 OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
510}
511
Uwe Hermann3acf31e2007-09-19 01:55:35 +0000512static void exit_conf_mode_ite(uint16_t port)
Uwe Hermann25a6c0f2007-09-19 00:48:42 +0000513{
514 regwrite(port, 0x02, 0x02);
515}
516
Uwe Hermannafe83092007-09-28 15:45:43 +0000517static void probe_idregs_ite_helper(const char *init, uint16_t port)
Uwe Hermann25a6c0f2007-09-19 00:48:42 +0000518{
Uwe Hermanneec5ff42008-03-01 18:49:39 +0000519 uint16_t id, chipver, ecport;
Uwe Hermann25a6c0f2007-09-19 00:48:42 +0000520
Uwe Hermann8b8d0392007-10-04 15:23:38 +0000521 probing_for("ITE", init, port);
522
Uwe Hermann07024692007-09-20 22:13:48 +0000523 id = regval(port, CHIP_ID_BYTE1_REG) << 8;
524 id |= regval(port, CHIP_ID_BYTE2_REG);
525 chipver = regval(port, CHIP_VERSION_REG) & 0x0f; /* Only bits 3..0 */
526
527 if (superio_unknown(reg_table, id)) {
Uwe Hermann8b8d0392007-10-04 15:23:38 +0000528 if (verbose)
529 printf(NOTFOUND "id=0x%04x, rev=0x%01x\n", id, chipver);
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000530 return;
531 }
532
Uwe Hermann8b8d0392007-10-04 15:23:38 +0000533 printf("Found ITE %s (id=0x%04x, rev=0x%01x) at 0x%x\n",
Uwe Hermann07024692007-09-20 22:13:48 +0000534 get_superio_name(reg_table, id), id, chipver, port);
Uwe Hermanne9d46162007-10-07 20:01:23 +0000535 chip_found = 1;
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000536
Uwe Hermann07024692007-09-20 22:13:48 +0000537 dump_superio("ITE", reg_table, port, id);
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000538
539 if (extra_dump) {
Uwe Hermanneec5ff42008-03-01 18:49:39 +0000540 regwrite(port, 0x07, 0x04); /* Select LDN 4 (EC). */
541
542 /* Get EC base address (stored in LDN 4, index 0x60/0x61). */
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000543 ecport = regval(port, 0x60) << 8;
544 ecport |= regval(port, 0x61);
Uwe Hermanneec5ff42008-03-01 18:49:39 +0000545
546 /* EC address register = EC base address + 5. */
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000547 ecport += 5;
548
Uwe Hermanneec5ff42008-03-01 18:49:39 +0000549 printf("Environment controller (0x%04x)\n", ecport);
Ronald Hoogenboom0be73bb2008-02-25 22:32:41 +0000550 dump_superio("ITE-EC", ec_table, ecport, id);
551 }
Uwe Hermannb4db2202007-09-20 23:37:56 +0000552}
Uwe Hermann25a6c0f2007-09-19 00:48:42 +0000553
Uwe Hermannb4db2202007-09-20 23:37:56 +0000554void probe_idregs_ite(uint16_t port)
555{
Urja Rannikko38204a22008-10-23 23:33:18 +0000556 if (port == 0x3f0 || port == 0x3bd || port == 0x370) {
557 enter_conf_mode_ite_legacy(port, initkey_it8661f);
558 probe_idregs_ite_helper("(init=legacy/it8661f) ", port);
559 exit_conf_mode_ite(port);
Uwe Hermannb4db2202007-09-20 23:37:56 +0000560
Urja Rannikko38204a22008-10-23 23:33:18 +0000561 enter_conf_mode_ite_legacy(port, initkey_it8671f);
562 probe_idregs_ite_helper("(init=legacy/it8671f) ", port);
563 exit_conf_mode_ite(port);
564 } else {
565 enter_conf_mode_ite(port);
Uwe Hermannebb73f22008-11-12 19:08:58 +0000566 probe_idregs_ite_helper("(init=standard) ", port);
567 exit_conf_mode_ite(port);
568
569 enter_conf_mode_ite_it8761e(port);
570 probe_idregs_ite_helper("(init=it8761e) ", port);
571 exit_conf_mode_ite(port);
572
573 enter_conf_mode_ite_it8228e(port);
574 probe_idregs_ite_helper("(init=it8228e) ", port);
Urja Rannikko38204a22008-10-23 23:33:18 +0000575 exit_conf_mode_ite(port);
576
577 enter_conf_mode_winbond_fintek_ite_8787(port);
578 probe_idregs_ite_helper("(init=0x87,0x87) ", port);
579 exit_conf_mode_winbond_fintek_ite_8787(port);
580 }
Uwe Hermann0120e1a2007-09-16 18:11:03 +0000581}
Robinson P. Tryon552cfb72008-01-15 22:30:55 +0000582
583void print_ite_chips(void)
584{
585 print_vendor_chips("ITE", reg_table);
Uwe Hermann969a9f62008-03-17 13:43:48 +0000586 print_vendor_chips("ITE EC", ec_table);
Robinson P. Tryon552cfb72008-01-15 22:30:55 +0000587}