root/lm-sensors/trunk/lib/chips.c @ 2356

Revision 2356, 251.0 KB (checked in by khali, 9 years ago)

Add support for 2.6 ds1621.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/*
2    chips.c - Part of libsensors, a Linux library for reading sensor data.
3    Copyright (c) 1998, 1999  Frodo Looijaard <frodol@dds.nl>
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 2 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18*/
19
20#include "chips.h"
21#include "data.h"
22#include "sensors.h"
23#include "kernel/include/sensors.h"
24
25/* For each chip, a list of features;
26   For each feature, the number, its name, the logical mapping (for example,
27   fan1_div belongs to fan1), the compute mapping, an access field, the
28   SYSCTL id of the /proc field, the value location of the /proc field,
29   and the magnitude.
30   The access field  indicates whether resources are readable and writable.
31   Sometimes, a resource is neither; in this case, it is just a catch-all
32   category, for mappings.
33   The value location is the byte-offset where this value can be found in
34   the sysctl buffer.
35   The magnitude is the 10-power through which the read value must be
36   divided. */
37
38
39#define VALUE(x) (x-1) * sizeof(long)
40#define NOMAP SENSORS_NO_MAPPING
41#define R SENSORS_MODE_R
42#define RW SENSORS_MODE_RW
43
44static sensors_chip_feature lm78_features[] =
45  { 
46    { SENSORS_LM78_IN0, "in0", NOMAP, NOMAP, 
47                        R, LM78_SYSCTL_IN0, VALUE(3), 2 },
48    { SENSORS_LM78_IN1, "in1", NOMAP, NOMAP,
49                        R, LM78_SYSCTL_IN1, VALUE(3), 2 },
50    { SENSORS_LM78_IN2, "in2", NOMAP, NOMAP,
51                        R, LM78_SYSCTL_IN2, VALUE(3), 2 },
52    { SENSORS_LM78_IN3, "in3", NOMAP, NOMAP,
53                        R, LM78_SYSCTL_IN3, VALUE(3), 2 },
54    { SENSORS_LM78_IN4, "in4", NOMAP, NOMAP,
55                        R, LM78_SYSCTL_IN4, VALUE(3), 2 },
56    { SENSORS_LM78_IN5, "in5", NOMAP, NOMAP,
57                        R, LM78_SYSCTL_IN5, VALUE(3), 2 },
58    { SENSORS_LM78_IN6, "in6", NOMAP, NOMAP,
59                        R, LM78_SYSCTL_IN6, VALUE(3), 2 },
60    { SENSORS_LM78_IN0_MIN, "in0_min", SENSORS_LM78_IN0, SENSORS_LM78_IN0,
61                            RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
62    { SENSORS_LM78_IN1_MIN, "in1_min", SENSORS_LM78_IN1, SENSORS_LM78_IN1,
63                            RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
64    { SENSORS_LM78_IN2_MIN, "in2_min", SENSORS_LM78_IN2, SENSORS_LM78_IN2,
65                            RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
66    { SENSORS_LM78_IN3_MIN, "in3_min", SENSORS_LM78_IN3, SENSORS_LM78_IN3,
67                            RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
68    { SENSORS_LM78_IN4_MIN, "in4_min", SENSORS_LM78_IN4, SENSORS_LM78_IN4,
69                            RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
70/* swap 5 and 6 min/max because compute lines will be inverting */
71    { SENSORS_LM78_IN5_MIN, "in5_min", SENSORS_LM78_IN5, SENSORS_LM78_IN5,
72                            RW, LM78_SYSCTL_IN5, VALUE(2), 2, "in5_max", 3 },
73    { SENSORS_LM78_IN6_MIN, "in6_min", SENSORS_LM78_IN6, SENSORS_LM78_IN6,
74                            RW, LM78_SYSCTL_IN6, VALUE(2), 2, "in6_max", 3 },
75    { SENSORS_LM78_IN0_MAX, "in0_max", SENSORS_LM78_IN0, SENSORS_LM78_IN0,
76                            RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
77    { SENSORS_LM78_IN1_MAX, "in1_max", SENSORS_LM78_IN1, SENSORS_LM78_IN1,
78                            RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
79    { SENSORS_LM78_IN2_MAX, "in2_max", SENSORS_LM78_IN2, SENSORS_LM78_IN2,
80                            RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
81    { SENSORS_LM78_IN3_MAX, "in3_max", SENSORS_LM78_IN3, SENSORS_LM78_IN3,
82                            RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
83    { SENSORS_LM78_IN4_MAX, "in4_max", SENSORS_LM78_IN4, SENSORS_LM78_IN4,
84                            RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
85    { SENSORS_LM78_IN5_MAX, "in5_max", SENSORS_LM78_IN5, SENSORS_LM78_IN5,
86                            RW, LM78_SYSCTL_IN5, VALUE(1), 2, "in5_min", 3 },
87    { SENSORS_LM78_IN6_MAX, "in6_max", SENSORS_LM78_IN6, SENSORS_LM78_IN6,
88                            RW, LM78_SYSCTL_IN6, VALUE(1), 2, "in6_min", 3 },
89    { SENSORS_LM78_FAN1, "fan1", NOMAP, NOMAP,
90                         R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
91    { SENSORS_LM78_FAN2, "fan2", NOMAP, NOMAP,
92                         R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
93    { SENSORS_LM78_FAN3, "fan3", NOMAP, NOMAP,
94                         R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
95    { SENSORS_LM78_FAN1_MIN, "fan1_min", SENSORS_LM78_FAN1, SENSORS_LM78_FAN1,
96                             RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
97    { SENSORS_LM78_FAN2_MIN, "fan2_min", SENSORS_LM78_FAN2, SENSORS_LM78_FAN2,
98                             RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
99    { SENSORS_LM78_FAN3_MIN, "fan3_min", SENSORS_LM78_FAN3, SENSORS_LM78_FAN3,
100                             RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
101    { SENSORS_LM78_TEMP, "temp", NOMAP, NOMAP,
102                         R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
103    { SENSORS_LM78_TEMP_HYST, "temp_hyst", SENSORS_LM78_TEMP,
104                              SENSORS_LM78_TEMP, RW, 
105                              LM78_SYSCTL_TEMP, VALUE(2), 1 },
106    { SENSORS_LM78_TEMP_OVER, "temp_over", SENSORS_LM78_TEMP,
107                              SENSORS_LM78_TEMP, RW, 
108                              LM78_SYSCTL_TEMP, VALUE(1), 1 },
109    { SENSORS_LM78_VID, "vid", NOMAP, NOMAP,
110                        R, LM78_SYSCTL_VID, VALUE(1), 2 },
111    { SENSORS_LM78_FAN1_DIV, "fan1_div", SENSORS_LM78_FAN1, NOMAP,
112                             RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 
113                             0 },
114    { SENSORS_LM78_FAN2_DIV, "fan2_div", SENSORS_LM78_FAN2, NOMAP,
115                             RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 
116                             0 },
117    { SENSORS_LM78_FAN3_DIV, "fan3_div", SENSORS_LM78_FAN3, NOMAP,
118                              R, LM78_SYSCTL_FAN_DIV, VALUE(3), 
119                              0 },
120    { SENSORS_LM78_ALARMS, "alarms", NOMAP, NOMAP, 
121                           R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
122    { 0 }
123  };
124
125static sensors_chip_feature lm78j_features[] =
126  { 
127    { SENSORS_LM78J_IN0, "in0", NOMAP, NOMAP, 
128                         R, LM78_SYSCTL_IN0, VALUE(3), 2 },
129    { SENSORS_LM78J_IN1, "in1", NOMAP, NOMAP,
130                         R, LM78_SYSCTL_IN1, VALUE(3), 2 },
131    { SENSORS_LM78J_IN2, "in2", NOMAP, NOMAP,
132                         R, LM78_SYSCTL_IN2, VALUE(3), 2 },
133    { SENSORS_LM78J_IN3, "in3", NOMAP, NOMAP,
134                         R, LM78_SYSCTL_IN3, VALUE(3), 2 },
135    { SENSORS_LM78J_IN4, "in4", NOMAP, NOMAP,
136                         R, LM78_SYSCTL_IN4, VALUE(3), 2 },
137    { SENSORS_LM78J_IN5, "in5", NOMAP, NOMAP,
138                         R, LM78_SYSCTL_IN5, VALUE(3), 2 },
139    { SENSORS_LM78J_IN6, "in6", NOMAP, NOMAP,
140                         R, LM78_SYSCTL_IN6, VALUE(3), 2 },
141    { SENSORS_LM78J_IN0_MIN, "in0_min", SENSORS_LM78J_IN0, SENSORS_LM78J_IN0,
142                             RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
143    { SENSORS_LM78J_IN1_MIN, "in1_min", SENSORS_LM78J_IN1, SENSORS_LM78J_IN1,
144                             RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
145    { SENSORS_LM78J_IN2_MIN, "in2_min", SENSORS_LM78J_IN2, SENSORS_LM78J_IN2,
146                             RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
147    { SENSORS_LM78J_IN3_MIN, "in3_min", SENSORS_LM78J_IN3, SENSORS_LM78J_IN3,
148                             RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
149    { SENSORS_LM78J_IN4_MIN, "in4_min", SENSORS_LM78J_IN4, SENSORS_LM78J_IN4,
150                             RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
151/* swap 5 and 6 min/max because compute lines will be inverting */
152    { SENSORS_LM78J_IN5_MIN, "in5_min", SENSORS_LM78J_IN5, SENSORS_LM78J_IN5,
153                             RW, LM78_SYSCTL_IN5, VALUE(2), 2, "in5_max", 3 },
154    { SENSORS_LM78J_IN6_MIN, "in6_min", SENSORS_LM78J_IN6, SENSORS_LM78J_IN6,
155                             RW, LM78_SYSCTL_IN6, VALUE(2), 2, "in6_max", 3 },
156    { SENSORS_LM78J_IN0_MAX, "in0_max", SENSORS_LM78J_IN0, SENSORS_LM78J_IN0,
157                             RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
158    { SENSORS_LM78J_IN1_MAX, "in1_max", SENSORS_LM78J_IN1, SENSORS_LM78J_IN1,
159                             RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
160    { SENSORS_LM78J_IN2_MAX, "in2_max", SENSORS_LM78J_IN2, SENSORS_LM78J_IN2,
161                             RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
162    { SENSORS_LM78J_IN3_MAX, "in3_max", SENSORS_LM78J_IN3, SENSORS_LM78J_IN3,
163                             RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
164    { SENSORS_LM78J_IN4_MAX, "in4_max", SENSORS_LM78J_IN4, SENSORS_LM78J_IN4,
165                             RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
166    { SENSORS_LM78J_IN5_MAX, "in5_max", SENSORS_LM78J_IN5, SENSORS_LM78J_IN5,
167                             RW, LM78_SYSCTL_IN5, VALUE(1), 2, "in5_min", 3 },
168    { SENSORS_LM78J_IN6_MAX, "in6_max", SENSORS_LM78J_IN6, SENSORS_LM78J_IN6,
169                             RW, LM78_SYSCTL_IN6, VALUE(1), 2, "in6_min", 3 },
170    { SENSORS_LM78J_FAN1, "fan1", NOMAP, NOMAP,
171                          R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
172    { SENSORS_LM78J_FAN2, "fan2", NOMAP, NOMAP,
173                          R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
174    { SENSORS_LM78J_FAN3, "fan3", NOMAP, NOMAP,
175                          R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
176    { SENSORS_LM78J_FAN1_MIN, "fan1_min", SENSORS_LM78J_FAN1,
177                              SENSORS_LM78J_FAN1, RW, 
178                              LM78_SYSCTL_FAN1, VALUE(1), 0 },
179    { SENSORS_LM78J_FAN2_MIN, "fan2_min", SENSORS_LM78J_FAN2,
180                              SENSORS_LM78J_FAN2, RW, 
181                              LM78_SYSCTL_FAN2, VALUE(1), 0 },
182    { SENSORS_LM78J_FAN3_MIN, "fan3_min", SENSORS_LM78J_FAN3,
183                              SENSORS_LM78J_FAN3, RW, 
184                              LM78_SYSCTL_FAN3, VALUE(1), 0 },
185    { SENSORS_LM78J_TEMP, "temp", NOMAP, NOMAP,
186                          R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
187    { SENSORS_LM78J_TEMP_HYST, "temp_hyst", SENSORS_LM78J_TEMP,
188                               SENSORS_LM78J_TEMP, RW, 
189                               LM78_SYSCTL_TEMP, VALUE(2), 1 },
190    { SENSORS_LM78J_TEMP_OVER, "temp_over", SENSORS_LM78J_TEMP,
191                               SENSORS_LM78J_TEMP, RW, 
192                               LM78_SYSCTL_TEMP, VALUE(1), 1 },
193    { SENSORS_LM78J_VID, "vid", NOMAP, NOMAP,
194                         R, LM78_SYSCTL_VID, VALUE(1), 2 },
195    { SENSORS_LM78J_FAN1_DIV, "fan1_div", SENSORS_LM78J_FAN1,
196                              NOMAP, RW, 
197                              LM78_SYSCTL_FAN_DIV, VALUE(1), 0 },
198    { SENSORS_LM78J_FAN2_DIV, "fan2_div", SENSORS_LM78J_FAN2,
199                              NOMAP, RW,
200                              LM78_SYSCTL_FAN_DIV, VALUE(2), 0 },
201    { SENSORS_LM78J_FAN3_DIV, "fan3_div", SENSORS_LM78J_FAN3,
202                              NOMAP, R,
203                              LM78_SYSCTL_FAN_DIV, VALUE(3), 0 },
204    { SENSORS_LM78J_ALARMS, "alarms", NOMAP, NOMAP, 
205                            R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
206    { 0 }
207  };
208
209static sensors_chip_feature lm79_features[] =
210  { 
211    { SENSORS_LM79_IN0, "in0", NOMAP, NOMAP, 
212                        R, LM78_SYSCTL_IN0, VALUE(3), 2 },
213    { SENSORS_LM79_IN1, "in1", NOMAP, NOMAP,
214                        R, LM78_SYSCTL_IN1, VALUE(3), 2 },
215    { SENSORS_LM79_IN2, "in2", NOMAP, NOMAP,
216                        R, LM78_SYSCTL_IN2, VALUE(3), 2 },
217    { SENSORS_LM79_IN3, "in3", NOMAP, NOMAP,
218                        R, LM78_SYSCTL_IN3, VALUE(3), 2 },
219    { SENSORS_LM79_IN4, "in4", NOMAP, NOMAP,
220                        R, LM78_SYSCTL_IN4, VALUE(3), 2 },
221    { SENSORS_LM79_IN5, "in5", NOMAP, NOMAP,
222                        R, LM78_SYSCTL_IN5, VALUE(3), 2 },
223    { SENSORS_LM79_IN6, "in6", NOMAP, NOMAP,
224                        R, LM78_SYSCTL_IN6, VALUE(3), 2 },
225    { SENSORS_LM79_IN0_MIN, "in0_min", SENSORS_LM79_IN0, SENSORS_LM79_IN0,
226                            RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
227    { SENSORS_LM79_IN1_MIN, "in1_min", SENSORS_LM79_IN1, SENSORS_LM79_IN1,
228                            RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
229    { SENSORS_LM79_IN2_MIN, "in2_min", SENSORS_LM79_IN2, SENSORS_LM79_IN2,
230                            RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
231    { SENSORS_LM79_IN3_MIN, "in3_min", SENSORS_LM79_IN3, SENSORS_LM79_IN3,
232                            RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
233    { SENSORS_LM79_IN4_MIN, "in4_min", SENSORS_LM79_IN4, SENSORS_LM79_IN4,
234                            RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
235/* swap 5 and 6 min/max because compute lines will be inverting */
236    { SENSORS_LM79_IN5_MIN, "in5_min", SENSORS_LM79_IN5, SENSORS_LM79_IN5,
237                            RW, LM78_SYSCTL_IN5, VALUE(2), 2, "in5_max", 3 },
238    { SENSORS_LM79_IN6_MIN, "in6_min", SENSORS_LM79_IN6, SENSORS_LM79_IN6,
239                            RW, LM78_SYSCTL_IN6, VALUE(2), 2, "in6_max", 3 },
240    { SENSORS_LM79_IN0_MAX, "in0_max", SENSORS_LM79_IN0, SENSORS_LM79_IN0,
241                            RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
242    { SENSORS_LM79_IN1_MAX, "in1_max", SENSORS_LM79_IN1, SENSORS_LM79_IN1,
243                            RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
244    { SENSORS_LM79_IN2_MAX, "in2_max", SENSORS_LM79_IN2, SENSORS_LM79_IN2,
245                            RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
246    { SENSORS_LM79_IN3_MAX, "in3_max", SENSORS_LM79_IN3, SENSORS_LM79_IN3,
247                            RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
248    { SENSORS_LM79_IN4_MAX, "in4_max", SENSORS_LM79_IN4, SENSORS_LM79_IN4,
249                            RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
250    { SENSORS_LM79_IN5_MAX, "in5_max", SENSORS_LM79_IN5, SENSORS_LM79_IN5,
251                            RW, LM78_SYSCTL_IN5, VALUE(1), 2, "in5_min", 3 },
252    { SENSORS_LM79_IN6_MAX, "in6_max", SENSORS_LM79_IN6, SENSORS_LM79_IN6,
253                            RW, LM78_SYSCTL_IN6, VALUE(1), 2, "in6_min", 3 },
254    { SENSORS_LM79_FAN1, "fan1", NOMAP, NOMAP,
255                         R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
256    { SENSORS_LM79_FAN2, "fan2", NOMAP, NOMAP,
257                         R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
258    { SENSORS_LM79_FAN3, "fan3", NOMAP, NOMAP,
259                         R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
260    { SENSORS_LM79_FAN1_MIN, "fan1_min", SENSORS_LM79_FAN1, SENSORS_LM79_FAN1,
261                             RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
262    { SENSORS_LM79_FAN2_MIN, "fan2_min", SENSORS_LM79_FAN2, SENSORS_LM79_FAN2,
263                             RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
264    { SENSORS_LM79_FAN3_MIN, "fan3_min", SENSORS_LM79_FAN3, SENSORS_LM79_FAN3,
265                             RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
266    { SENSORS_LM79_TEMP, "temp", NOMAP, NOMAP,
267                         R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
268    { SENSORS_LM79_TEMP_HYST, "temp_hyst", SENSORS_LM79_TEMP,
269                              SENSORS_LM79_TEMP, RW, 
270                              LM78_SYSCTL_TEMP, VALUE(2), 1 },
271    { SENSORS_LM79_TEMP_OVER, "temp_over", SENSORS_LM79_TEMP,
272                              SENSORS_LM79_TEMP, RW, 
273                              LM78_SYSCTL_TEMP, VALUE(1), 1 },
274    { SENSORS_LM79_VID, "vid", NOMAP, NOMAP,
275                        R, LM78_SYSCTL_VID, VALUE(1), 2 },
276    { SENSORS_LM79_FAN1_DIV, "fan1_div", SENSORS_LM79_FAN1, NOMAP,
277                             RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 
278                             0 },
279    { SENSORS_LM79_FAN2_DIV, "fan2_div", SENSORS_LM79_FAN2, NOMAP,
280                             RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 
281                             0 },
282    { SENSORS_LM79_FAN3_DIV, "fan3_div", SENSORS_LM79_FAN3, NOMAP,
283                              R, LM78_SYSCTL_FAN_DIV, VALUE(3), 
284                              0 },
285    { SENSORS_LM79_ALARMS, "alarms", NOMAP, NOMAP, 
286                           R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
287    { 0 }
288  };
289
290
291static sensors_chip_feature lm75_features[] =
292  {
293    { SENSORS_LM75_TEMP, "temp", NOMAP, NOMAP,
294                         R, LM75_SYSCTL_TEMP, VALUE(3), 1 },
295    { SENSORS_LM75_TEMP_HYST, "temp_hyst", SENSORS_LM75_TEMP,
296                              SENSORS_LM75_TEMP, RW, 
297                              LM75_SYSCTL_TEMP, VALUE(2), 1 },
298    { SENSORS_LM75_TEMP_OVER, "temp_over", SENSORS_LM75_TEMP,
299                              SENSORS_LM75_TEMP, RW, 
300                              LM75_SYSCTL_TEMP, VALUE(1), 1 },
301    { 0 }
302  };
303
304static sensors_chip_feature adm1021_features[] =
305  {
306    { SENSORS_ADM1021_TEMP, "temp", NOMAP, NOMAP,
307                              R, ADM1021_SYSCTL_TEMP, VALUE(3), 
308                              0 },
309    { SENSORS_ADM1021_TEMP_HYST, "temp_low", SENSORS_ADM1021_TEMP,
310                              SENSORS_ADM1021_TEMP, RW, 
311                              ADM1021_SYSCTL_TEMP, VALUE(2), 0 },
312    { SENSORS_ADM1021_TEMP_OVER, "temp_over", SENSORS_ADM1021_TEMP,
313                              SENSORS_ADM1021_TEMP, RW,
314                              ADM1021_SYSCTL_TEMP, VALUE(1), 0 },
315    { SENSORS_ADM1021_REMOTE_TEMP, "remote_temp", NOMAP, 
316                              NOMAP, R, 
317                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
318    { SENSORS_ADM1021_REMOTE_TEMP_HYST, "remote_temp_low", 
319                              SENSORS_ADM1021_REMOTE_TEMP,
320                              SENSORS_ADM1021_REMOTE_TEMP, RW, 
321                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
322    { SENSORS_ADM1021_REMOTE_TEMP_OVER, "remote_temp_over", 
323                              SENSORS_ADM1021_REMOTE_TEMP,
324                              SENSORS_ADM1021_REMOTE_TEMP, RW,
325                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
326    { SENSORS_ADM1021_ALARMS, "alarms", NOMAP,
327                              NOMAP, R,
328                              ADM1021_SYSCTL_ALARMS, VALUE(1), 0 },
329    { SENSORS_ADM1021_DIE_CODE, "die_code", NOMAP,
330                              NOMAP, R,
331                              ADM1021_SYSCTL_DIE_CODE, VALUE(1), 0 },
332    { 0 }
333  };
334
335static sensors_chip_feature adm1023_features[] =
336  {
337    { SENSORS_ADM1021_TEMP, "temp", NOMAP, NOMAP,
338                              R, ADM1021_SYSCTL_TEMP, VALUE(3), 
339                              0 },
340    { SENSORS_ADM1021_TEMP_HYST, "temp_low", SENSORS_ADM1021_TEMP,
341                              SENSORS_ADM1021_TEMP, RW, 
342                              ADM1021_SYSCTL_TEMP, VALUE(2), 0 },
343    { SENSORS_ADM1021_TEMP_OVER, "temp_over", SENSORS_ADM1021_TEMP,
344                              SENSORS_ADM1021_TEMP, RW,
345                              ADM1021_SYSCTL_TEMP, VALUE(1), 0 },
346    { SENSORS_ADM1021_REMOTE_TEMP, "remote_temp", NOMAP, 
347                              NOMAP, R, 
348                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(4), 3 },
349    { SENSORS_ADM1021_REMOTE_TEMP_HYST, "remote_temp_low", 
350                              SENSORS_ADM1021_REMOTE_TEMP,
351                              SENSORS_ADM1021_REMOTE_TEMP, RW, 
352                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(2), 3 },
353    { SENSORS_ADM1021_REMOTE_TEMP_OVER, "remote_temp_over", 
354                              SENSORS_ADM1021_REMOTE_TEMP,
355                              SENSORS_ADM1021_REMOTE_TEMP, RW,
356                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(1), 3 },
357    { SENSORS_ADM1021_ALARMS, "alarms", NOMAP,
358                              NOMAP, R,
359                              ADM1021_SYSCTL_ALARMS, VALUE(1), 0 },
360    { 0 }
361  };
362
363static sensors_chip_feature max1617_features[] =
364  {
365    { SENSORS_MAX1617_TEMP, "temp", NOMAP, NOMAP,
366                              R, ADM1021_SYSCTL_TEMP, VALUE(3), 
367                              0 },
368    { SENSORS_MAX1617_TEMP_HYST, "temp_low", SENSORS_MAX1617_TEMP,
369                              SENSORS_MAX1617_TEMP, RW, 
370                              ADM1021_SYSCTL_TEMP, VALUE(2), 0 },
371    { SENSORS_MAX1617_TEMP_OVER, "temp_over", SENSORS_MAX1617_TEMP,
372                              SENSORS_MAX1617_TEMP, RW,
373                              ADM1021_SYSCTL_TEMP, VALUE(1), 0 },
374    { SENSORS_MAX1617_REMOTE_TEMP, "remote_temp", NOMAP, 
375                              NOMAP, R, 
376                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
377    { SENSORS_MAX1617_REMOTE_TEMP_HYST, "remote_temp_low", 
378                              SENSORS_MAX1617_REMOTE_TEMP,
379                              SENSORS_MAX1617_REMOTE_TEMP, RW, 
380                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
381    { SENSORS_MAX1617_REMOTE_TEMP_OVER, "remote_temp_over", 
382                              SENSORS_MAX1617_REMOTE_TEMP,
383                              SENSORS_MAX1617_REMOTE_TEMP, RW,
384                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
385    { SENSORS_MAX1617_ALARMS, "alarms", NOMAP,
386                              NOMAP, R,
387                              ADM1021_SYSCTL_ALARMS, VALUE(1), 0 },
388    { 0 }
389  };
390
391static sensors_chip_feature max1617a_features[] =
392  {
393    { SENSORS_MAX1617A_TEMP, "temp", NOMAP, NOMAP,
394                              R, ADM1021_SYSCTL_TEMP, VALUE(3), 
395                              0 },
396    { SENSORS_MAX1617A_TEMP_HYST, "temp_low", SENSORS_MAX1617A_TEMP,
397                              SENSORS_MAX1617A_TEMP, RW, 
398                              ADM1021_SYSCTL_TEMP, VALUE(2), 0 },
399    { SENSORS_MAX1617A_TEMP_OVER, "temp_over", SENSORS_MAX1617A_TEMP,
400                              SENSORS_MAX1617A_TEMP, RW,
401                              ADM1021_SYSCTL_TEMP, VALUE(1), 0 },
402    { SENSORS_MAX1617A_REMOTE_TEMP, "remote_temp", NOMAP, 
403                              NOMAP, R, 
404                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
405    { SENSORS_MAX1617A_REMOTE_TEMP_HYST, "remote_temp_low", 
406                              SENSORS_MAX1617A_REMOTE_TEMP,
407                              SENSORS_MAX1617A_REMOTE_TEMP, RW, 
408                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
409    { SENSORS_MAX1617A_REMOTE_TEMP_OVER, "remote_temp_over", 
410                              SENSORS_MAX1617A_REMOTE_TEMP,
411                              SENSORS_MAX1617A_REMOTE_TEMP, RW,
412                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
413    { SENSORS_MAX1617A_ALARMS, "alarms", NOMAP,
414                              NOMAP, R,
415                              ADM1021_SYSCTL_ALARMS, VALUE(1), 0 },
416    { 0 }
417  };
418
419static sensors_chip_feature gl518_features[] =
420  {
421    { SENSORS_GL518_VDD, "vdd", NOMAP,NOMAP,
422                            R, GL518_SYSCTL_VDD, VALUE(3), 2, "in0_input", 3 },
423    { SENSORS_GL518_VIN1, "vin1", NOMAP,NOMAP,
424                             R, GL518_SYSCTL_VIN1, VALUE(3), 
425                             2 },
426    { SENSORS_GL518_VIN2, "vin2", NOMAP,NOMAP,
427                             R, GL518_SYSCTL_VIN2, VALUE(3), 
428                             2 },
429    { SENSORS_GL518_VIN3, "vin3", NOMAP,NOMAP,
430                             R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
431    { SENSORS_GL518_VDD_MIN, "vdd_min", SENSORS_GL518_VDD,
432                                SENSORS_GL518_VDD, RW,
433                                GL518_SYSCTL_VDD, VALUE(1), 2 , "in0_min", 3 },
434    { SENSORS_GL518_VIN1_MIN, "vin1_min", SENSORS_GL518_VIN1, 
435                                 SENSORS_GL518_VIN1, RW,
436                                 GL518_SYSCTL_VIN1, VALUE(1), 2 },
437    { SENSORS_GL518_VIN2_MIN, "vin2_min", SENSORS_GL518_VIN2, 
438                                 SENSORS_GL518_VIN2, RW,
439                                 GL518_SYSCTL_VIN2, VALUE(1), 2 },
440    { SENSORS_GL518_VIN3_MIN, "vin3_min", SENSORS_GL518_VIN3, 
441                                 SENSORS_GL518_VIN3, RW,
442                                 GL518_SYSCTL_VIN3, VALUE(1), 2 },
443    { SENSORS_GL518_VDD_MAX, "vdd_max", SENSORS_GL518_VDD,
444                                SENSORS_GL518_VDD, RW,
445                                GL518_SYSCTL_VDD, VALUE(2), 2 , "in0_max", 3 },
446    { SENSORS_GL518_VIN1_MAX, "vin1_max", SENSORS_GL518_VIN1, 
447                                 SENSORS_GL518_VIN1, RW,
448                                 GL518_SYSCTL_VIN1, VALUE(2), 2 },
449    { SENSORS_GL518_VIN2_MAX, "vin2_max", SENSORS_GL518_VIN2, 
450                                 SENSORS_GL518_VIN2, RW,
451                                 GL518_SYSCTL_VIN2, VALUE(2), 2 },
452    { SENSORS_GL518_VIN3_MAX, "vin3_max", SENSORS_GL518_VIN3, 
453                                 SENSORS_GL518_VIN3, RW,
454                                 GL518_SYSCTL_VIN3, VALUE(2), 2 },
455    { SENSORS_GL518_FAN1, "fan1", NOMAP, NOMAP,
456                             R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
457    { SENSORS_GL518_FAN2, "fan2", NOMAP, NOMAP,
458                             R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
459    { SENSORS_GL518_FAN1_MIN, "fan1_min", SENSORS_GL518_FAN1, 
460                                 SENSORS_GL518_FAN1, RW,
461                                 GL518_SYSCTL_FAN1, VALUE(1), 0 },
462    { SENSORS_GL518_FAN2_MIN, "fan2_min", SENSORS_GL518_FAN2, 
463                                 SENSORS_GL518_FAN2, RW,
464                                 GL518_SYSCTL_FAN2, VALUE(1), 0 },
465    { SENSORS_GL518_TEMP, "temp", NOMAP, NOMAP,
466                             R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
467    { SENSORS_GL518_TEMP_HYST, "temp_hyst", SENSORS_GL518_TEMP, 
468                                  SENSORS_GL518_TEMP, RW,
469                                  GL518_SYSCTL_TEMP, VALUE(2), 1 },
470    { SENSORS_GL518_TEMP_OVER, "temp_over", SENSORS_GL518_TEMP, 
471                                  SENSORS_GL518_TEMP, RW,
472                                  GL518_SYSCTL_TEMP, VALUE(1), 1 },
473    { SENSORS_GL518_FAN1_DIV, "fan1_div", SENSORS_GL518_FAN1, 
474                                 NOMAP, RW,
475                                 GL518_SYSCTL_FAN_DIV, VALUE(1), 0 },
476    { SENSORS_GL518_FAN2_DIV, "fan2_div", SENSORS_GL518_FAN2, 
477                                 NOMAP, RW,
478                                 GL518_SYSCTL_FAN_DIV, VALUE(2), 0 },
479    { SENSORS_GL518_ALARMS, "alarms", NOMAP,
480                               NOMAP, R,
481                               GL518_SYSCTL_ALARMS, VALUE(1), 0 },
482    { SENSORS_GL518_BEEP_ENABLE, "beep_enable", SENSORS_GL518_ALARMS,
483                               NOMAP, RW,
484                               GL518_SYSCTL_BEEP, VALUE(1), 0 },
485    { SENSORS_GL518_BEEPS, "beeps", SENSORS_GL518_ALARMS,
486                               SENSORS_GL518_ALARMS, RW,
487                               GL518_SYSCTL_BEEP, VALUE(2), 0 },
488    { SENSORS_GL518_FAN1OFF, "fan1_off", SENSORS_GL518_FAN1,
489                               NOMAP, RW,
490                               GL518_SYSCTL_FAN1OFF, VALUE(1), 0, "fan1_auto", 0 },
491    { SENSORS_GL518_FAN1PIN, "fan1_off_pin", SENSORS_GL518_FAN1OFF,
492                               NOMAP, RW,
493                               GL518_SYSCTL_FAN1OFF, VALUE(2), 0 },
494    { SENSORS_GL518_ITERATE, "iterate", NOMAP,
495                               NOMAP, RW,
496                               GL518_SYSCTL_ITERATE, VALUE(1), 0 },
497    { 0 }
498  };
499
500static sensors_chip_feature gl520_features[] =
501  {
502    { SENSORS_GL520_VDD, "vdd", NOMAP,NOMAP,
503                            R, GL520_SYSCTL_VDD, VALUE(3), 2 },
504    { SENSORS_GL520_VIN1, "vin1", NOMAP,NOMAP,
505                             R, GL520_SYSCTL_VIN1, VALUE(3), 
506                             2 },
507    { SENSORS_GL520_VIN2, "vin2", NOMAP,NOMAP,
508                             R, GL520_SYSCTL_VIN2, VALUE(3), 
509                             2 },
510    { SENSORS_GL520_VIN3, "vin3", NOMAP,NOMAP,
511                             R, GL520_SYSCTL_VIN3, VALUE(3), 2 },
512    { SENSORS_GL520_VIN4, "vin4", NOMAP,NOMAP,
513                             R, GL520_SYSCTL_VIN4, VALUE(3), 2 },
514    { SENSORS_GL520_VDD_MIN, "vdd_min", SENSORS_GL520_VDD,
515                                SENSORS_GL520_VDD, RW,
516                                GL520_SYSCTL_VDD, VALUE(1), 2 },
517    { SENSORS_GL520_VIN1_MIN, "vin1_min", SENSORS_GL520_VIN1, 
518                                 SENSORS_GL520_VIN1, RW,
519                                 GL520_SYSCTL_VIN1, VALUE(1), 2 },
520    { SENSORS_GL520_VIN2_MIN, "vin2_min", SENSORS_GL520_VIN2, 
521                                 SENSORS_GL520_VIN2, RW,
522                                 GL520_SYSCTL_VIN2, VALUE(1), 2 },
523    { SENSORS_GL520_VIN3_MIN, "vin3_min", SENSORS_GL520_VIN3, 
524                                 SENSORS_GL520_VIN3, RW,
525                                 GL520_SYSCTL_VIN3, VALUE(1), 2 },
526    { SENSORS_GL520_VIN4_MIN, "vin4_min", SENSORS_GL520_VIN4, 
527                                 SENSORS_GL520_VIN4, RW,
528                                 GL520_SYSCTL_VIN4, VALUE(1), 2 },
529    { SENSORS_GL520_VDD_MAX, "vdd_max", SENSORS_GL520_VDD,
530                                SENSORS_GL520_VDD, RW,
531                                GL520_SYSCTL_VDD, VALUE(2), 2 },
532    { SENSORS_GL520_VIN1_MAX, "vin1_max", SENSORS_GL520_VIN1, 
533                                 SENSORS_GL520_VIN1, RW,
534                                 GL520_SYSCTL_VIN1, VALUE(2), 2 },
535    { SENSORS_GL520_VIN2_MAX, "vin2_max", SENSORS_GL520_VIN2, 
536                                 SENSORS_GL520_VIN2, RW,
537                                 GL520_SYSCTL_VIN2, VALUE(2), 2 },
538    { SENSORS_GL520_VIN3_MAX, "vin3_max", SENSORS_GL520_VIN3, 
539                                 SENSORS_GL520_VIN3, RW,
540                                 GL520_SYSCTL_VIN3, VALUE(2), 2 },
541    { SENSORS_GL520_VIN4_MAX, "vin4_max", SENSORS_GL520_VIN4, 
542                                 SENSORS_GL520_VIN4, RW,
543                                 GL520_SYSCTL_VIN4, VALUE(2), 2 },
544    { SENSORS_GL520_FAN1, "fan1", NOMAP, NOMAP,
545                             R, GL520_SYSCTL_FAN1, VALUE(2), 0 },
546    { SENSORS_GL520_FAN2, "fan2", NOMAP, NOMAP,
547                             R, GL520_SYSCTL_FAN2, VALUE(2), 0 },
548    { SENSORS_GL520_FAN1_MIN, "fan1_min", SENSORS_GL520_FAN1, 
549                                 SENSORS_GL520_FAN1, RW,
550                                 GL520_SYSCTL_FAN1, VALUE(1), 0 },
551    { SENSORS_GL520_FAN2_MIN, "fan2_min", SENSORS_GL520_FAN2, 
552                                 SENSORS_GL520_FAN2, RW,
553                                 GL520_SYSCTL_FAN2, VALUE(1), 0 },
554    { SENSORS_GL520_TEMP1, "temp1", NOMAP, NOMAP,
555                             R, GL520_SYSCTL_TEMP1, VALUE(3), 1 },
556    { SENSORS_GL520_TEMP1_HYST, "temp1_hyst", SENSORS_GL520_TEMP1, 
557                                  SENSORS_GL520_TEMP1, RW,
558                                  GL520_SYSCTL_TEMP1, VALUE(2), 1 },
559    { SENSORS_GL520_TEMP1_OVER, "temp1_over", SENSORS_GL520_TEMP1, 
560                                  SENSORS_GL520_TEMP1, RW,
561                                  GL520_SYSCTL_TEMP1, VALUE(1), 1 },
562    { SENSORS_GL520_TEMP2, "temp2", NOMAP, NOMAP,
563                             R, GL520_SYSCTL_TEMP2, VALUE(3), 1 },
564    { SENSORS_GL520_TEMP2_HYST, "temp2_hyst", SENSORS_GL520_TEMP2, 
565                                  SENSORS_GL520_TEMP2, RW,
566                                  GL520_SYSCTL_TEMP2, VALUE(2), 1 },
567    { SENSORS_GL520_TEMP2_OVER, "temp2_over", SENSORS_GL520_TEMP2, 
568                                  SENSORS_GL520_TEMP2, RW,
569                                  GL520_SYSCTL_TEMP2, VALUE(1), 1 },
570    { SENSORS_GL520_VID, "vid", NOMAP, NOMAP,
571                              R, GL520_SYSCTL_VID, VALUE(1), 2 },
572    { SENSORS_GL520_FAN1_DIV, "fan1_div", SENSORS_GL520_FAN1, 
573                                 NOMAP, RW,
574                                 GL520_SYSCTL_FAN_DIV, VALUE(1), 0 },
575    { SENSORS_GL520_FAN2_DIV, "fan2_div", SENSORS_GL520_FAN2, 
576                                 NOMAP, RW,
577                                 GL520_SYSCTL_FAN_DIV, VALUE(2), 0 },
578    { SENSORS_GL520_ALARMS, "alarms", NOMAP,
579                               NOMAP, R,
580                               GL520_SYSCTL_ALARMS, VALUE(1), 0 },
581    { SENSORS_GL520_BEEP_ENABLE, "beep_enable", SENSORS_GL520_ALARMS,
582                               NOMAP, RW,
583                               GL520_SYSCTL_BEEP, VALUE(1), 0 },
584    { SENSORS_GL520_BEEPS, "beeps", SENSORS_GL520_ALARMS,
585                               SENSORS_GL520_ALARMS, RW,
586                               GL520_SYSCTL_BEEP, VALUE(2), 0 },
587    { SENSORS_GL520_FAN1OFF, "fan1_off", SENSORS_GL520_FAN1,
588                               NOMAP, RW,
589                               GL520_SYSCTL_FAN1OFF, VALUE(1), 0 },
590    { SENSORS_GL520_TWOTEMPS, "two_temps", NOMAP,
591                               NOMAP, RW,
592                               GL520_SYSCTL_CONFIG, VALUE(1), 0 },
593    { 0 }
594  };
595
596static sensors_chip_feature lm80_features[] =
597  { 
598    { SENSORS_LM80_IN0, "in0", NOMAP, NOMAP, 
599                        R, LM80_SYSCTL_IN0, VALUE(3), 2 },
600    { SENSORS_LM80_IN1, "in1", NOMAP, NOMAP,
601                        R, LM80_SYSCTL_IN1, VALUE(3), 2 },
602    { SENSORS_LM80_IN2, "in2", NOMAP, NOMAP,
603                        R, LM80_SYSCTL_IN2, VALUE(3), 2 },
604    { SENSORS_LM80_IN3, "in3", NOMAP, NOMAP,
605                        R, LM80_SYSCTL_IN3, VALUE(3), 2 },
606    { SENSORS_LM80_IN4, "in4", NOMAP, NOMAP,
607                        R, LM80_SYSCTL_IN4, VALUE(3), 2 },
608    { SENSORS_LM80_IN5, "in5", NOMAP, NOMAP,
609                        R, LM80_SYSCTL_IN5, VALUE(3), 2 },
610    { SENSORS_LM80_IN6, "in6", NOMAP, NOMAP,
611                        R, LM80_SYSCTL_IN6, VALUE(3), 2 },
612    { SENSORS_LM80_IN0_MIN, "in0_min", SENSORS_LM80_IN0, SENSORS_LM80_IN0,
613                            RW, LM80_SYSCTL_IN0, VALUE(1), 2 },
614    { SENSORS_LM80_IN1_MIN, "in1_min", SENSORS_LM80_IN1, SENSORS_LM80_IN1,
615                            RW, LM80_SYSCTL_IN1, VALUE(1), 2 },
616    { SENSORS_LM80_IN2_MIN, "in2_min", SENSORS_LM80_IN2, SENSORS_LM80_IN2,
617                            RW, LM80_SYSCTL_IN2, VALUE(1), 2 },
618    { SENSORS_LM80_IN3_MIN, "in3_min", SENSORS_LM80_IN3, SENSORS_LM80_IN3,
619                            RW, LM80_SYSCTL_IN3, VALUE(1), 2 },
620    { SENSORS_LM80_IN4_MIN, "in4_min", SENSORS_LM80_IN4, SENSORS_LM80_IN4,
621                            RW, LM80_SYSCTL_IN4, VALUE(1), 2 },
622    { SENSORS_LM80_IN5_MIN, "in5_min", SENSORS_LM80_IN5, SENSORS_LM80_IN5,
623                            RW, LM80_SYSCTL_IN5, VALUE(1), 2 },
624    { SENSORS_LM80_IN6_MIN, "in6_min", SENSORS_LM80_IN6, SENSORS_LM80_IN6,
625                            RW, LM80_SYSCTL_IN6, VALUE(1), 2 },
626    { SENSORS_LM80_IN0_MAX, "in0_max", SENSORS_LM80_IN0, SENSORS_LM80_IN0,
627                            RW, LM80_SYSCTL_IN0, VALUE(2), 2 },
628    { SENSORS_LM80_IN1_MAX, "in1_max", SENSORS_LM80_IN1, SENSORS_LM80_IN1,
629                            RW, LM80_SYSCTL_IN1, VALUE(2), 2 },
630    { SENSORS_LM80_IN2_MAX, "in2_max", SENSORS_LM80_IN2, SENSORS_LM80_IN2,
631                            RW, LM80_SYSCTL_IN2, VALUE(2), 2 },
632    { SENSORS_LM80_IN3_MAX, "in3_max", SENSORS_LM80_IN3, SENSORS_LM80_IN3,
633                            RW, LM80_SYSCTL_IN3, VALUE(2), 2 },
634    { SENSORS_LM80_IN4_MAX, "in4_max", SENSORS_LM80_IN4, SENSORS_LM80_IN4,
635                            RW, LM80_SYSCTL_IN4, VALUE(2), 2 },
636    { SENSORS_LM80_IN5_MAX, "in5_max", SENSORS_LM80_IN5, SENSORS_LM80_IN5,
637                            RW, LM80_SYSCTL_IN5, VALUE(2), 2 },
638    { SENSORS_LM80_IN6_MAX, "in6_max", SENSORS_LM80_IN6, SENSORS_LM80_IN6,
639                            RW, LM80_SYSCTL_IN6, VALUE(2), 2 },
640    { SENSORS_LM80_FAN1, "fan1", NOMAP, NOMAP,
641                         R, LM80_SYSCTL_FAN1, VALUE(2), 0 },
642    { SENSORS_LM80_FAN2, "fan2", NOMAP, NOMAP,
643                         R, LM80_SYSCTL_FAN2, VALUE(2), 0 },
644    { SENSORS_LM80_FAN1_MIN, "fan1_min", SENSORS_LM80_FAN1, NOMAP,
645                             RW, LM80_SYSCTL_FAN1, VALUE(1), 0 },
646    { SENSORS_LM80_FAN2_MIN, "fan2_min", SENSORS_LM80_FAN2, NOMAP,
647                             RW, LM80_SYSCTL_FAN2, VALUE(1), 0 },
648    { SENSORS_LM80_TEMP, "temp", NOMAP, NOMAP,
649                         R, LM80_SYSCTL_TEMP, VALUE(5), 2 },
650    { SENSORS_LM80_TEMP_HOT_HYST, "temp_hot_hyst", SENSORS_LM80_TEMP,
651                              SENSORS_LM80_TEMP, RW, 
652                              LM80_SYSCTL_TEMP, VALUE(2), 2, "temp1_max_hyst", 3 },
653    { SENSORS_LM80_TEMP_HOT_MAX, "temp_hot_max", SENSORS_LM80_TEMP,
654                              SENSORS_LM80_TEMP, RW, 
655                              LM80_SYSCTL_TEMP, VALUE(1), 2, "temp1_max", 3 },
656    { SENSORS_LM80_TEMP_OS_HYST, "temp_os_hyst", SENSORS_LM80_TEMP,
657                              SENSORS_LM80_TEMP, RW, 
658                              LM80_SYSCTL_TEMP, VALUE(4), 2, "temp1_crit_hyst", 3 },
659    { SENSORS_LM80_TEMP_OS_MAX, "temp_os_max", SENSORS_LM80_TEMP,
660                              SENSORS_LM80_TEMP, RW, 
661                              LM80_SYSCTL_TEMP, VALUE(3), 2, "temp1_crit", 3 },
662    { SENSORS_LM80_FAN1_DIV, "fan1_div", SENSORS_LM80_FAN1, NOMAP,
663                             RW, LM80_SYSCTL_FAN_DIV, VALUE(1), 
664                             0 },
665    { SENSORS_LM80_FAN2_DIV, "fan2_div", SENSORS_LM80_FAN2, NOMAP,
666                             RW, LM80_SYSCTL_FAN_DIV, VALUE(2), 
667                             0 },
668    { SENSORS_LM80_ALARMS, "alarms", NOMAP, NOMAP, 
669                           R, LM80_SYSCTL_ALARMS, VALUE(1), 0 },
670    { 0 }
671  };
672
673
674static sensors_chip_feature lm83_features[] =
675  {
676    { SENSORS_LM83_LOCAL_TEMP, "temp1", NOMAP, NOMAP,
677                         R, LM83_SYSCTL_LOCAL_TEMP, VALUE(2), 0 },
678    { SENSORS_LM83_LOCAL_HIGH, "temp1_high", SENSORS_LM83_LOCAL_TEMP,
679                              SENSORS_LM83_LOCAL_TEMP, RW, 
680                              LM83_SYSCTL_LOCAL_TEMP, VALUE(1), 0 },
681    { SENSORS_LM83_REMOTE1_TEMP, "temp2", NOMAP, NOMAP,
682                         R, LM83_SYSCTL_REMOTE1_TEMP, VALUE(2), 0 },
683    { SENSORS_LM83_REMOTE1_HIGH, "temp2_high", SENSORS_LM83_REMOTE1_TEMP,
684                              SENSORS_LM83_REMOTE1_TEMP, RW, 
685                              LM83_SYSCTL_REMOTE1_TEMP, VALUE(1), 0 },
686    { SENSORS_LM83_REMOTE2_TEMP, "temp3", NOMAP, NOMAP,
687                         R, LM83_SYSCTL_REMOTE2_TEMP, VALUE(2), 0 },
688    { SENSORS_LM83_REMOTE2_HIGH, "temp3_high", SENSORS_LM83_REMOTE2_TEMP,
689                              SENSORS_LM83_REMOTE2_TEMP, RW, 
690                              LM83_SYSCTL_REMOTE2_TEMP, VALUE(1), 0 },
691    { SENSORS_LM83_REMOTE3_TEMP, "temp4", NOMAP, NOMAP,
692                         R, LM83_SYSCTL_REMOTE3_TEMP, VALUE(2), 0 },
693    { SENSORS_LM83_REMOTE3_HIGH, "temp4_high", SENSORS_LM83_REMOTE3_TEMP,
694                              SENSORS_LM83_REMOTE3_TEMP, RW, 
695                              LM83_SYSCTL_REMOTE3_TEMP, VALUE(1), 0 },
696    { SENSORS_LM83_TCRIT, "tcrit", NOMAP, NOMAP,
697                         RW, LM83_SYSCTL_TCRIT, VALUE(1), 0 },
698    { SENSORS_LM83_ALARMS, "alarms", NOMAP, NOMAP,
699                         R, LM83_SYSCTL_ALARMS, VALUE(1), 0 },
700    { 0 }
701  };
702
703
704static sensors_chip_feature lm90_features[] =
705  {
706    { SENSORS_LM90_LOCAL_TEMP, "temp1",
707      NOMAP, NOMAP,
708      R, LM90_SYSCTL_LOCAL_TEMP, VALUE(3), 0 },
709    { SENSORS_LM90_LOCAL_HIGH, "temp1_high",
710      SENSORS_LM90_LOCAL_TEMP, SENSORS_LM90_LOCAL_TEMP,
711      RW, LM90_SYSCTL_LOCAL_TEMP, VALUE(1), 0 },
712    { SENSORS_LM90_LOCAL_LOW, "temp1_low",
713      SENSORS_LM90_LOCAL_TEMP, SENSORS_LM90_LOCAL_TEMP,
714      RW, LM90_SYSCTL_LOCAL_TEMP, VALUE(2), 0 },
715    { SENSORS_LM90_REMOTE_TEMP, "temp2",
716      NOMAP, NOMAP,
717      R, LM90_SYSCTL_REMOTE_TEMP, VALUE(3), 1 },
718    { SENSORS_LM90_REMOTE_HIGH, "temp2_high",
719      SENSORS_LM90_REMOTE_TEMP, SENSORS_LM90_REMOTE_TEMP,
720      RW, LM90_SYSCTL_REMOTE_TEMP, VALUE(1), 1 },
721    { SENSORS_LM90_REMOTE_LOW, "temp2_low",
722      SENSORS_LM90_REMOTE_TEMP, SENSORS_LM90_REMOTE_TEMP,
723      RW, LM90_SYSCTL_REMOTE_TEMP, VALUE(2), 1 },
724    { SENSORS_LM90_LOCAL_TCRIT, "tcrit1",
725      SENSORS_LM90_LOCAL_TEMP, SENSORS_LM90_LOCAL_TEMP,
726      RW, LM90_SYSCTL_LOCAL_TCRIT, VALUE(1), 0, "temp1_crit", 3 },
727    { SENSORS_LM90_REMOTE_TCRIT, "tcrit2",
728      SENSORS_LM90_REMOTE_TEMP, SENSORS_LM90_REMOTE_TEMP,
729      RW, LM90_SYSCTL_REMOTE_TCRIT, VALUE(1), 0, "temp2_crit", 3 },
730    { SENSORS_LM90_LOCAL_TCRIT_HYST, "hyst1",
731      SENSORS_LM90_LOCAL_TCRIT, SENSORS_LM90_LOCAL_TCRIT,
732      RW, LM90_SYSCTL_LOCAL_HYST, VALUE(1), 0, "temp1_crit_hyst", 3 },
733    { SENSORS_LM90_REMOTE_TCRIT_HYST, "hyst2",
734      SENSORS_LM90_REMOTE_TCRIT, SENSORS_LM90_REMOTE_TCRIT,
735      R, LM90_SYSCTL_REMOTE_HYST, VALUE(1), 0, "temp2_crit_hyst", 3 },
736    { SENSORS_LM90_ALARMS, "alarms",
737      NOMAP, NOMAP,
738      R, LM90_SYSCTL_ALARMS, VALUE(1), 0 },
739    { 0 }
740  };
741
742
743static sensors_chip_feature w83781d_features[] =
744  { 
745    { SENSORS_W83781D_IN0, "in0", NOMAP, NOMAP, 
746                        R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
747    { SENSORS_W83781D_IN1, "in1", NOMAP, NOMAP,
748                        R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
749    { SENSORS_W83781D_IN2, "in2", NOMAP, NOMAP,
750                        R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
751    { SENSORS_W83781D_IN3, "in3", NOMAP, NOMAP,
752                        R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
753    { SENSORS_W83781D_IN4, "in4", NOMAP, NOMAP,
754                        R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
755    { SENSORS_W83781D_IN5, "in5", NOMAP, NOMAP,
756                        R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
757    { SENSORS_W83781D_IN6, "in6", NOMAP, NOMAP,
758                        R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
759    { SENSORS_W83781D_IN0_MIN, "in0_min", SENSORS_W83781D_IN0, 
760                        SENSORS_W83781D_IN0, RW, 
761                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
762    { SENSORS_W83781D_IN1_MIN, "in1_min", SENSORS_W83781D_IN1, 
763                        SENSORS_W83781D_IN1, RW, 
764                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
765    { SENSORS_W83781D_IN2_MIN, "in2_min", SENSORS_W83781D_IN2, 
766                        SENSORS_W83781D_IN2, RW, 
767                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
768    { SENSORS_W83781D_IN3_MIN, "in3_min", SENSORS_W83781D_IN3, 
769                        SENSORS_W83781D_IN3, RW, 
770                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
771    { SENSORS_W83781D_IN4_MIN, "in4_min", SENSORS_W83781D_IN4, 
772                        SENSORS_W83781D_IN4, RW, 
773                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
774/* swap 5 and 6 min/max because compute lines will be inverting */
775    { SENSORS_W83781D_IN5_MIN, "in5_min", SENSORS_W83781D_IN5, 
776                        SENSORS_W83781D_IN5, RW, 
777                        W83781D_SYSCTL_IN5, VALUE(2), 2, "in5_max", 3 },
778    { SENSORS_W83781D_IN6_MIN, "in6_min", SENSORS_W83781D_IN6, 
779                        SENSORS_W83781D_IN6, RW, 
780                        W83781D_SYSCTL_IN6, VALUE(2), 2, "in6_max", 3 },
781    { SENSORS_W83781D_IN0_MAX, "in0_max", SENSORS_W83781D_IN0, 
782                        SENSORS_W83781D_IN0, RW,
783                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
784    { SENSORS_W83781D_IN1_MAX, "in1_max", SENSORS_W83781D_IN1, 
785                        SENSORS_W83781D_IN1, RW, 
786                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
787    { SENSORS_W83781D_IN2_MAX, "in2_max", SENSORS_W83781D_IN2, 
788                        SENSORS_W83781D_IN2, RW, 
789                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
790    { SENSORS_W83781D_IN3_MAX, "in3_max", SENSORS_W83781D_IN3, 
791                        SENSORS_W83781D_IN3, RW, 
792                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
793    { SENSORS_W83781D_IN4_MAX, "in4_max", SENSORS_W83781D_IN4, 
794                        SENSORS_W83781D_IN4, RW,
795                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
796    { SENSORS_W83781D_IN5_MAX, "in5_max", SENSORS_W83781D_IN5, 
797                        SENSORS_W83781D_IN5, RW, 
798                        W83781D_SYSCTL_IN5, VALUE(1), 2, "in5_min", 3 },
799    { SENSORS_W83781D_IN6_MAX, "in6_max", SENSORS_W83781D_IN6, 
800                        SENSORS_W83781D_IN6, RW, 
801                        W83781D_SYSCTL_IN6, VALUE(1), 2, "in6_min", 3 },
802    { SENSORS_W83781D_FAN1, "fan1", NOMAP, NOMAP,
803                        R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
804    { SENSORS_W83781D_FAN2, "fan2", NOMAP, NOMAP,
805                        R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
806    { SENSORS_W83781D_FAN3, "fan3", NOMAP, NOMAP,
807                        R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
808    { SENSORS_W83781D_FAN1_MIN, "fan1_min", SENSORS_W83781D_FAN1,
809                        SENSORS_W83781D_FAN1, RW, 
810                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
811    { SENSORS_W83781D_FAN2_MIN, "fan2_min", SENSORS_W83781D_FAN2, 
812                        SENSORS_W83781D_FAN2, RW, 
813                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
814    { SENSORS_W83781D_FAN3_MIN, "fan3_min", SENSORS_W83781D_FAN3, 
815                        SENSORS_W83781D_FAN3, RW, 
816                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
817    { SENSORS_W83781D_TEMP1, "temp1", NOMAP, NOMAP,
818                         R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
819    { SENSORS_W83781D_TEMP1_HYST, "temp1_hyst", SENSORS_W83781D_TEMP1,
820                         SENSORS_W83781D_TEMP1, RW, 
821                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
822    { SENSORS_W83781D_TEMP1_OVER, "temp1_over", SENSORS_W83781D_TEMP1,
823                         SENSORS_W83781D_TEMP1, RW, 
824                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
825    { SENSORS_W83781D_TEMP2, "temp2", NOMAP, NOMAP,
826                         R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
827    { SENSORS_W83781D_TEMP2_HYST, "temp2_hyst", SENSORS_W83781D_TEMP2,
828                         SENSORS_W83781D_TEMP2, RW, 
829                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
830    { SENSORS_W83781D_TEMP2_OVER, "temp2_over", SENSORS_W83781D_TEMP2,
831                         SENSORS_W83781D_TEMP2, RW, 
832                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
833    { SENSORS_W83781D_TEMP3, "temp3", NOMAP, NOMAP,
834                         R, W83781D_SYSCTL_TEMP3, VALUE(3), 1 },
835    { SENSORS_W83781D_TEMP3_HYST, "temp3_hyst", SENSORS_W83781D_TEMP3,
836                         SENSORS_W83781D_TEMP3, RW, 
837                         W83781D_SYSCTL_TEMP3, VALUE(2), 1 },
838    { SENSORS_W83781D_TEMP3_OVER, "temp3_over", SENSORS_W83781D_TEMP3,
839                         SENSORS_W83781D_TEMP3, RW, 
840                         W83781D_SYSCTL_TEMP3, VALUE(1), 1 },
841    { SENSORS_W83781D_VID, "vid", NOMAP, NOMAP,
842                         R, W83781D_SYSCTL_VID, VALUE(1), 3 },
843    { SENSORS_W83781D_VRM, "vrm", NOMAP, NOMAP,
844                         RW, W83781D_SYSCTL_VRM, VALUE(1), 1 },
845    { SENSORS_W83781D_FAN1_DIV, "fan1_div", SENSORS_W83781D_FAN1, 
846                         NOMAP, RW, 
847                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
848    { SENSORS_W83781D_FAN2_DIV, "fan2_div", SENSORS_W83781D_FAN2, 
849                         NOMAP, RW, 
850                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
851    { SENSORS_W83781D_FAN3_DIV, "fan3_div", SENSORS_W83781D_FAN3, 
852                         NOMAP, RW, 
853                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
854    { SENSORS_W83781D_ALARMS, "alarms", NOMAP, NOMAP, 
855                         R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
856    { SENSORS_W83781D_BEEP_ENABLE, "beep_enable", SENSORS_W83781D_ALARMS,
857                         NOMAP, RW,
858                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
859    { SENSORS_W83781D_BEEPS, "beeps", SENSORS_W83781D_ALARMS,
860                         SENSORS_W83781D_ALARMS, RW,
861                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
862    { 0 }
863  };
864 
865static sensors_chip_feature as99127f_features[] =
866  { 
867    { SENSORS_W83782D_IN0, "in0", NOMAP, NOMAP, 
868                        R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
869    { SENSORS_W83782D_IN1, "in1", NOMAP, NOMAP,
870                        R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
871    { SENSORS_W83782D_IN2, "in2", NOMAP, NOMAP,
872                        R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
873    { SENSORS_W83782D_IN3, "in3", NOMAP, NOMAP,
874                        R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
875    { SENSORS_W83782D_IN4, "in4", NOMAP, NOMAP,
876                        R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
877    { SENSORS_W83782D_IN5, "in5", NOMAP, NOMAP,
878                        R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
879    { SENSORS_W83782D_IN6, "in6", NOMAP, NOMAP,
880                        R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
881    { SENSORS_W83782D_IN0_MIN, "in0_min", SENSORS_W83782D_IN0, 
882                        SENSORS_W83782D_IN0, RW, 
883                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
884    { SENSORS_W83782D_IN1_MIN, "in1_min", SENSORS_W83782D_IN1, 
885                        SENSORS_W83782D_IN1, RW, 
886                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
887    { SENSORS_W83782D_IN2_MIN, "in2_min", SENSORS_W83782D_IN2, 
888                        SENSORS_W83782D_IN2, RW, 
889                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
890    { SENSORS_W83782D_IN3_MIN, "in3_min", SENSORS_W83782D_IN3, 
891                        SENSORS_W83782D_IN3, RW, 
892                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
893    { SENSORS_W83782D_IN4_MIN, "in4_min", SENSORS_W83782D_IN4, 
894                        SENSORS_W83782D_IN4, RW, 
895                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
896/* swap 5 and 6 min/max because compute lines will be inverting */
897    { SENSORS_W83782D_IN5_MIN, "in5_min", SENSORS_W83782D_IN5, 
898                        SENSORS_W83782D_IN5, RW, 
899                        W83781D_SYSCTL_IN5, VALUE(2), 2, "in5_max", 3 },
900    { SENSORS_W83782D_IN6_MIN, "in6_min", SENSORS_W83782D_IN6, 
901                        SENSORS_W83782D_IN6, RW, 
902                        W83781D_SYSCTL_IN6, VALUE(2), 2, "in6_max", 3 },
903    { SENSORS_W83782D_IN0_MAX, "in0_max", SENSORS_W83782D_IN0, 
904                        SENSORS_W83782D_IN0, RW,
905                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
906    { SENSORS_W83782D_IN1_MAX, "in1_max", SENSORS_W83782D_IN1, 
907                        SENSORS_W83782D_IN1, RW, 
908                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
909    { SENSORS_W83782D_IN2_MAX, "in2_max", SENSORS_W83782D_IN2, 
910                        SENSORS_W83782D_IN2, RW, 
911                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
912    { SENSORS_W83782D_IN3_MAX, "in3_max", SENSORS_W83782D_IN3, 
913                        SENSORS_W83782D_IN3, RW, 
914                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
915    { SENSORS_W83782D_IN4_MAX, "in4_max", SENSORS_W83782D_IN4, 
916                        SENSORS_W83782D_IN4, RW,
917                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
918    { SENSORS_W83782D_IN5_MAX, "in5_max", SENSORS_W83782D_IN5, 
919                        SENSORS_W83782D_IN5, RW, 
920                        W83781D_SYSCTL_IN5, VALUE(1), 2, "in5_min", 3 },
921    { SENSORS_W83782D_IN6_MAX, "in6_max", SENSORS_W83782D_IN6, 
922                        SENSORS_W83782D_IN6, RW, 
923                        W83781D_SYSCTL_IN6, VALUE(1), 2, "in6_min", 3 },
924    { SENSORS_W83782D_FAN1, "fan1", NOMAP, NOMAP,
925                        R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
926    { SENSORS_W83782D_FAN2, "fan2", NOMAP, NOMAP,
927                        R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
928    { SENSORS_W83781D_FAN3, "fan3", NOMAP, NOMAP,
929                        R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
930    { SENSORS_W83782D_FAN1_MIN, "fan1_min", SENSORS_W83782D_FAN1,
931                        SENSORS_W83782D_FAN1, RW, 
932                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
933    { SENSORS_W83782D_FAN2_MIN, "fan2_min", SENSORS_W83782D_FAN2, 
934                        SENSORS_W83782D_FAN2, RW, 
935                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
936    { SENSORS_W83781D_FAN3_MIN, "fan3_min", SENSORS_W83781D_FAN3, 
937                        SENSORS_W83782D_FAN3, RW, 
938                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
939    { SENSORS_W83782D_TEMP1, "temp1", NOMAP, NOMAP,
940                         R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
941    { SENSORS_W83782D_TEMP1_HYST, "temp1_hyst", SENSORS_W83782D_TEMP1,
942                         SENSORS_W83782D_TEMP1, RW, 
943                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
944    { SENSORS_W83782D_TEMP1_OVER, "temp1_over", SENSORS_W83782D_TEMP1,
945                         SENSORS_W83782D_TEMP1, RW, 
946                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
947    { SENSORS_W83782D_TEMP2, "temp2", NOMAP, NOMAP,
948                         R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
949    { SENSORS_W83782D_TEMP2_HYST, "temp2_hyst", SENSORS_W83782D_TEMP2,
950                         SENSORS_W83782D_TEMP2, RW, 
951                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
952    { SENSORS_W83782D_TEMP2_OVER, "temp2_over", SENSORS_W83782D_TEMP2,
953                         SENSORS_W83782D_TEMP2, RW, 
954                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
955    { SENSORS_W83782D_TEMP3, "temp3", NOMAP, NOMAP,
956                         R, W83781D_SYSCTL_TEMP3, VALUE(3), 1 },
957    { SENSORS_W83782D_TEMP3_HYST, "temp3_hyst", SENSORS_W83782D_TEMP3,
958                         SENSORS_W83782D_TEMP3, RW, 
959                         W83781D_SYSCTL_TEMP3, VALUE(2), 1 },
960    { SENSORS_W83782D_TEMP3_OVER, "temp3_over", SENSORS_W83782D_TEMP3,
961                         SENSORS_W83782D_TEMP3, RW, 
962                         W83781D_SYSCTL_TEMP3, VALUE(1), 1 },
963    { SENSORS_W83782D_VID, "vid", NOMAP, NOMAP,
964                         R, W83781D_SYSCTL_VID, VALUE(1), 3 },
965    { SENSORS_W83782D_VRM, "vrm", NOMAP, NOMAP,
966                         RW, W83781D_SYSCTL_VRM, VALUE(1), 1 },
967    { SENSORS_W83782D_FAN1_DIV, "fan1_div", SENSORS_W83782D_FAN1, 
968                         NOMAP, RW, 
969                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
970    { SENSORS_W83782D_FAN2_DIV, "fan2_div", SENSORS_W83782D_FAN2, 
971                         NOMAP, RW, 
972                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
973    { SENSORS_W83782D_FAN3_DIV, "fan3_div", SENSORS_W83781D_FAN3, 
974                         NOMAP, RW, 
975                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
976    { SENSORS_W83782D_ALARMS, "alarms", NOMAP, NOMAP, 
977                         R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
978    { SENSORS_W83782D_BEEP_ENABLE, "beep_enable", SENSORS_W83782D_ALARMS,
979                         NOMAP, RW,
980                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
981    { SENSORS_W83782D_BEEPS, "beeps", SENSORS_W83782D_ALARMS,
982                         SENSORS_W83782D_ALARMS, RW,
983                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
984    { 0 }
985  };
986
987/* macro for ASB100 Bach voltage in/min/max entries */
988#define SENSORS_ASB100_IN_MIN_MAX(nr) \
989        { SENSORS_ASB100_IN##nr, "in" #nr, NOMAP, \
990                NOMAP, R, ASB100_SYSCTL_IN##nr, \
991                VALUE(3), 2 }, \
992        { SENSORS_ASB100_IN##nr##_MIN, "in" #nr "_min", SENSORS_ASB100_IN##nr, \
993                SENSORS_ASB100_IN##nr, RW, ASB100_SYSCTL_IN##nr, \
994                VALUE(1), 2 }, \
995        { SENSORS_ASB100_IN##nr##_MAX, "in" #nr "_max", SENSORS_ASB100_IN##nr, \
996                SENSORS_ASB100_IN##nr, RW, ASB100_SYSCTL_IN##nr, \
997                VALUE(2), 2 }
998
999/* macro for ASB100 Bach fan/min/div entries */
1000#define SENSORS_ASB100_FAN_MIN_DIV(nr, divmode) \
1001        { SENSORS_ASB100_FAN##nr, "fan" #nr, NOMAP, \
1002                NOMAP, R, ASB100_SYSCTL_FAN##nr, \
1003                VALUE(2), 0 }, \
1004        { SENSORS_ASB100_FAN##nr##_MIN, "fan" #nr "_min", \
1005                SENSORS_ASB100_FAN##nr, SENSORS_ASB100_FAN##nr, \
1006                RW, ASB100_SYSCTL_FAN##nr, VALUE(1), 0 }, \
1007        { SENSORS_ASB100_FAN##nr##_DIV, "fan" #nr "_div", \
1008                SENSORS_ASB100_FAN##nr,  NOMAP, \
1009                divmode, ASB100_SYSCTL_FAN_DIV, VALUE(nr), 0 }
1010
1011/* macro for ASB100 Bach temperature/overtemp/hysteresis entries */
1012#define SENSORS_ASB100_TEMP_OVER_HYST(nr) \
1013        { SENSORS_ASB100_TEMP##nr, "temp" #nr, NOMAP, \
1014                NOMAP, R, ASB100_SYSCTL_TEMP##nr, \
1015                VALUE(3), 1 }, \
1016        { SENSORS_ASB100_TEMP##nr##_OVER, "temp" #nr "_over", \
1017                SENSORS_ASB100_TEMP##nr, SENSORS_ASB100_TEMP##nr, \
1018                RW, ASB100_SYSCTL_TEMP##nr, VALUE(1), 1 }, \
1019        { SENSORS_ASB100_TEMP##nr##_HYST, "temp" #nr "_hyst", \
1020                SENSORS_ASB100_TEMP##nr, SENSORS_ASB100_TEMP##nr, \
1021                RW, ASB100_SYSCTL_TEMP##nr, VALUE(2), 1 }
1022
1023static sensors_chip_feature asb100_features[] = { 
1024        SENSORS_ASB100_IN_MIN_MAX(0),
1025        SENSORS_ASB100_IN_MIN_MAX(1),
1026        SENSORS_ASB100_IN_MIN_MAX(2),
1027        SENSORS_ASB100_IN_MIN_MAX(3),
1028        SENSORS_ASB100_IN_MIN_MAX(4),
1029        SENSORS_ASB100_IN_MIN_MAX(5),
1030        SENSORS_ASB100_IN_MIN_MAX(6),
1031        SENSORS_ASB100_FAN_MIN_DIV(1, RW),
1032        SENSORS_ASB100_FAN_MIN_DIV(2, RW),
1033        SENSORS_ASB100_FAN_MIN_DIV(3, RW),
1034        SENSORS_ASB100_TEMP_OVER_HYST(1),
1035        SENSORS_ASB100_TEMP_OVER_HYST(2),
1036        SENSORS_ASB100_TEMP_OVER_HYST(3),
1037        SENSORS_ASB100_TEMP_OVER_HYST(4),
1038        { SENSORS_ASB100_VID, "vid", NOMAP,
1039                NOMAP, R,
1040                ASB100_SYSCTL_VID, VALUE(1), 3 },
1041        { SENSORS_ASB100_VRM, "vrm", NOMAP,
1042                NOMAP, RW,
1043                ASB100_SYSCTL_VRM, VALUE(1), 1 },
1044        { SENSORS_ASB100_ALARMS, "alarms", NOMAP, 
1045                NOMAP, R,
1046                ASB100_SYSCTL_ALARMS, VALUE(1), 0 },
1047        { 0 }
1048};
1049 
1050static sensors_chip_feature w83782d_features[] =
1051  { 
1052    { SENSORS_W83782D_IN0, "in0", NOMAP, NOMAP, 
1053                        R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
1054    { SENSORS_W83782D_IN1, "in1", NOMAP, NOMAP,
1055                        R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
1056    { SENSORS_W83782D_IN2, "in2", NOMAP, NOMAP,
1057                        R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
1058    { SENSORS_W83782D_IN3, "in3", NOMAP, NOMAP,
1059                        R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
1060    { SENSORS_W83782D_IN4, "in4", NOMAP, NOMAP,
1061                        R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
1062    { SENSORS_W83782D_IN5, "in5", NOMAP, NOMAP,
1063                        R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
1064    { SENSORS_W83782D_IN6, "in6", NOMAP, NOMAP,
1065                        R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
1066    { SENSORS_W83782D_IN7, "in7", NOMAP, NOMAP,
1067                        R, W83781D_SYSCTL_IN7, VALUE(3), 2 },
1068    { SENSORS_W83782D_IN8, "in8", NOMAP, NOMAP,
1069                        R, W83781D_SYSCTL_IN8, VALUE(3), 2 },
1070    { SENSORS_W83782D_IN0_MIN, "in0_min", SENSORS_W83782D_IN0, 
1071                        SENSORS_W83782D_IN0, RW, 
1072                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
1073    { SENSORS_W83782D_IN1_MIN, "in1_min", SENSORS_W83782D_IN1, 
1074                        SENSORS_W83782D_IN1, RW, 
1075                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
1076    { SENSORS_W83782D_IN2_MIN, "in2_min", SENSORS_W83782D_IN2, 
1077                        SENSORS_W83782D_IN2, RW, 
1078                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
1079    { SENSORS_W83782D_IN3_MIN, "in3_min", SENSORS_W83782D_IN3, 
1080                        SENSORS_W83782D_IN3, RW, 
1081                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
1082    { SENSORS_W83782D_IN4_MIN, "in4_min", SENSORS_W83782D_IN4, 
1083                        SENSORS_W83782D_IN4, RW, 
1084                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
1085    { SENSORS_W83782D_IN5_MIN, "in5_min", SENSORS_W83782D_IN5, 
1086                        SENSORS_W83782D_IN5, RW, 
1087                        W83781D_SYSCTL_IN5, VALUE(1), 2 },
1088    { SENSORS_W83782D_IN6_MIN, "in6_min", SENSORS_W83782D_IN6, 
1089                        SENSORS_W83782D_IN6, RW, 
1090                        W83781D_SYSCTL_IN6, VALUE(1), 2 },
1091    { SENSORS_W83782D_IN7_MIN, "in7_min", SENSORS_W83782D_IN7, 
1092                        SENSORS_W83782D_IN7, RW, 
1093                        W83781D_SYSCTL_IN7, VALUE(1), 2 },
1094    { SENSORS_W83782D_IN8_MIN, "in8_min", SENSORS_W83782D_IN8, 
1095                        SENSORS_W83782D_IN8, RW, 
1096                        W83781D_SYSCTL_IN8, VALUE(1), 2 },
1097    { SENSORS_W83782D_IN0_MAX, "in0_max", SENSORS_W83782D_IN0, 
1098                        SENSORS_W83782D_IN0, RW,
1099                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
1100    { SENSORS_W83782D_IN1_MAX, "in1_max", SENSORS_W83782D_IN1, 
1101                        SENSORS_W83782D_IN1, RW, 
1102                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
1103    { SENSORS_W83782D_IN2_MAX, "in2_max", SENSORS_W83782D_IN2, 
1104                        SENSORS_W83782D_IN2, RW, 
1105                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
1106    { SENSORS_W83782D_IN3_MAX, "in3_max", SENSORS_W83782D_IN3, 
1107                        SENSORS_W83782D_IN3, RW, 
1108                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
1109    { SENSORS_W83782D_IN4_MAX, "in4_max", SENSORS_W83782D_IN4, 
1110                        SENSORS_W83782D_IN4, RW,
1111                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
1112    { SENSORS_W83782D_IN5_MAX, "in5_max", SENSORS_W83782D_IN5, 
1113                        SENSORS_W83782D_IN5, RW, 
1114                        W83781D_SYSCTL_IN5, VALUE(2), 2 },
1115    { SENSORS_W83782D_IN6_MAX, "in6_max", SENSORS_W83782D_IN6, 
1116                        SENSORS_W83782D_IN6, RW, 
1117                        W83781D_SYSCTL_IN6, VALUE(2), 2 },
1118    { SENSORS_W83782D_IN7_MAX, "in7_max", SENSORS_W83782D_IN7, 
1119                        SENSORS_W83782D_IN7, RW, 
1120                        W83781D_SYSCTL_IN7, VALUE(2), 2 },
1121    { SENSORS_W83782D_IN8_MAX, "in8_max", SENSORS_W83782D_IN8, 
1122                        SENSORS_W83782D_IN8, RW, 
1123                        W83781D_SYSCTL_IN8, VALUE(2), 2 },
1124    { SENSORS_W83782D_FAN1, "fan1", NOMAP, NOMAP,
1125                        R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
1126    { SENSORS_W83782D_FAN2, "fan2", NOMAP, NOMAP,
1127                        R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
1128    { SENSORS_W83781D_FAN3, "fan3", NOMAP, NOMAP,
1129                        R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
1130    { SENSORS_W83782D_FAN1_MIN, "fan1_min", SENSORS_W83782D_FAN1,
1131                        SENSORS_W83782D_FAN1, RW, 
1132                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
1133    { SENSORS_W83782D_FAN2_MIN, "fan2_min", SENSORS_W83782D_FAN2, 
1134                        SENSORS_W83782D_FAN2, RW, 
1135                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
1136    { SENSORS_W83781D_FAN3_MIN, "fan3_min", SENSORS_W83781D_FAN3, 
1137                        SENSORS_W83782D_FAN3, RW, 
1138                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
1139    { SENSORS_W83782D_TEMP1, "temp1", NOMAP, NOMAP,
1140                         R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
1141    { SENSORS_W83782D_TEMP1_HYST, "temp1_hyst", SENSORS_W83782D_TEMP1,
1142                         SENSORS_W83782D_TEMP1, RW, 
1143                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
1144    { SENSORS_W83782D_TEMP1_OVER, "temp1_over", SENSORS_W83782D_TEMP1,
1145                         SENSORS_W83782D_TEMP1, RW, 
1146                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
1147    { SENSORS_W83782D_TEMP2, "temp2", NOMAP, NOMAP,
1148                         R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
1149    { SENSORS_W83782D_TEMP2_HYST, "temp2_hyst", SENSORS_W83782D_TEMP2,
1150                         SENSORS_W83782D_TEMP2, RW, 
1151                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
1152    { SENSORS_W83782D_TEMP2_OVER, "temp2_over", SENSORS_W83782D_TEMP2,
1153                         SENSORS_W83782D_TEMP2, RW, 
1154                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
1155    { SENSORS_W83782D_TEMP3, "temp3", NOMAP, NOMAP,
1156                         R, W83781D_SYSCTL_TEMP3, VALUE(3), 1 },
1157    { SENSORS_W83782D_TEMP3_HYST, "temp3_hyst", SENSORS_W83782D_TEMP3,
1158                         SENSORS_W83782D_TEMP3, RW, 
1159                         W83781D_SYSCTL_TEMP3, VALUE(2), 1 },
1160    { SENSORS_W83782D_TEMP3_OVER, "temp3_over", SENSORS_W83782D_TEMP3,
1161                         SENSORS_W83782D_TEMP3, RW, 
1162                         W83781D_SYSCTL_TEMP3, VALUE(1), 1 },
1163    { SENSORS_W83782D_VID, "vid", NOMAP, NOMAP,
1164                         R, W83781D_SYSCTL_VID, VALUE(1), 3 },
1165    { SENSORS_W83782D_VRM, "vrm", NOMAP, NOMAP,
1166                         RW, W83781D_SYSCTL_VRM, VALUE(1), 1 },
1167    { SENSORS_W83782D_FAN1_DIV, "fan1_div", SENSORS_W83782D_FAN1, 
1168                         NOMAP, RW, 
1169                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
1170    { SENSORS_W83782D_FAN2_DIV, "fan2_div", SENSORS_W83782D_FAN2, 
1171                         NOMAP, RW, 
1172                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
1173    { SENSORS_W83782D_FAN3_DIV, "fan3_div", SENSORS_W83781D_FAN3, 
1174                         NOMAP, RW, 
1175                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
1176    { SENSORS_W83782D_ALARMS, "alarms", NOMAP, NOMAP, 
1177                         R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
1178    { SENSORS_W83782D_BEEP_ENABLE, "beep_enable", SENSORS_W83782D_ALARMS,
1179                         NOMAP, RW,
1180                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
1181    { SENSORS_W83782D_BEEPS, "beeps", SENSORS_W83782D_ALARMS,
1182                         SENSORS_W83782D_ALARMS, RW,
1183                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
1184    { SENSORS_W83782D_SENS1, "sensor1", NOMAP, NOMAP,
1185                         RW, W83781D_SYSCTL_SENS1, VALUE(1), 0 },
1186    { SENSORS_W83782D_SENS2, "sensor2", NOMAP, NOMAP,
1187                         RW, W83781D_SYSCTL_SENS2, VALUE(1), 0 },
1188    { SENSORS_W83782D_SENS3, "sensor3", NOMAP, NOMAP,
1189                         RW, W83781D_SYSCTL_SENS3, VALUE(1), 0 },
1190    { 0 }
1191  };
1192 
1193static sensors_chip_feature w83783s_features[] =
1194  { 
1195    { SENSORS_W83783S_IN0, "in0", NOMAP, NOMAP, 
1196                        R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
1197    { SENSORS_W83783S_IN1, "in1", NOMAP, NOMAP,
1198                        R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
1199    { SENSORS_W83783S_IN2, "in2", NOMAP, NOMAP,
1200                        R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
1201    { SENSORS_W83783S_IN3, "in3", NOMAP, NOMAP,
1202                        R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
1203    { SENSORS_W83783S_IN4, "in4", NOMAP, NOMAP,
1204                        R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
1205    { SENSORS_W83783S_IN5, "in5", NOMAP, NOMAP,
1206                        R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
1207    { SENSORS_W83783S_IN6, "in6", NOMAP, NOMAP,
1208                        R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
1209    { SENSORS_W83783S_IN0_MIN, "in0_min", SENSORS_W83783S_IN0, 
1210                        SENSORS_W83783S_IN0, RW, 
1211                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
1212    { SENSORS_W83783S_IN1_MIN, "in1_min", SENSORS_W83783S_IN1, 
1213                        SENSORS_W83783S_IN1, RW, 
1214                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
1215    { SENSORS_W83783S_IN2_MIN, "in2_min", SENSORS_W83783S_IN2, 
1216                        SENSORS_W83783S_IN2, RW, 
1217                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
1218    { SENSORS_W83783S_IN3_MIN, "in3_min", SENSORS_W83783S_IN3, 
1219                        SENSORS_W83783S_IN3, RW, 
1220                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
1221    { SENSORS_W83783S_IN4_MIN, "in4_min", SENSORS_W83783S_IN4, 
1222                        SENSORS_W83783S_IN4, RW, 
1223                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
1224    { SENSORS_W83783S_IN5_MIN, "in5_min", SENSORS_W83783S_IN5, 
1225                        SENSORS_W83783S_IN5, RW, 
1226                        W83781D_SYSCTL_IN5, VALUE(1), 2 },
1227    { SENSORS_W83783S_IN6_MIN, "in6_min", SENSORS_W83783S_IN6, 
1228                        SENSORS_W83783S_IN6, RW, 
1229                        W83781D_SYSCTL_IN6, VALUE(1), 2 },
1230    { SENSORS_W83783S_IN0_MAX, "in0_max", SENSORS_W83783S_IN0, 
1231                        SENSORS_W83783S_IN0, RW,
1232                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
1233    { SENSORS_W83783S_IN1_MAX, "in1_max", SENSORS_W83783S_IN1, 
1234                        SENSORS_W83783S_IN1, RW, 
1235                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
1236    { SENSORS_W83783S_IN2_MAX, "in2_max", SENSORS_W83783S_IN2, 
1237                        SENSORS_W83783S_IN2, RW, 
1238                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
1239    { SENSORS_W83783S_IN3_MAX, "in3_max", SENSORS_W83783S_IN3, 
1240                        SENSORS_W83783S_IN3, RW, 
1241                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
1242    { SENSORS_W83783S_IN4_MAX, "in4_max", SENSORS_W83783S_IN4, 
1243                        SENSORS_W83783S_IN4, RW,
1244                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
1245    { SENSORS_W83783S_IN5_MAX, "in5_max", SENSORS_W83783S_IN5, 
1246                        SENSORS_W83783S_IN5, RW, 
1247                        W83781D_SYSCTL_IN5, VALUE(2), 2 },
1248    { SENSORS_W83783S_IN6_MAX, "in6_max", SENSORS_W83783S_IN6, 
1249                        SENSORS_W83783S_IN6, RW, 
1250                        W83781D_SYSCTL_IN6, VALUE(2), 2 },
1251    { SENSORS_W83783S_FAN1, "fan1", NOMAP, NOMAP,
1252                        R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
1253    { SENSORS_W83783S_FAN2, "fan2", NOMAP, NOMAP,
1254                        R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
1255    { SENSORS_W83783S_FAN3, "fan3", NOMAP, NOMAP,
1256                        R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
1257    { SENSORS_W83783S_FAN1_MIN, "fan1_min", SENSORS_W83783S_FAN1,
1258                        SENSORS_W83783S_FAN1, RW, 
1259                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
1260    { SENSORS_W83783S_FAN2_MIN, "fan2_min", SENSORS_W83783S_FAN2, 
1261                        SENSORS_W83783S_FAN2, RW, 
1262                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
1263    { SENSORS_W83783S_FAN3_MIN, "fan3_min", SENSORS_W83783S_FAN3, 
1264                        SENSORS_W83783S_FAN3, RW, 
1265                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
1266    { SENSORS_W83782D_TEMP1, "temp1", NOMAP, NOMAP,
1267                         R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
1268    { SENSORS_W83782D_TEMP1_HYST, "temp1_hyst", SENSORS_W83782D_TEMP1,
1269                         SENSORS_W83782D_TEMP1, RW, 
1270                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
1271    { SENSORS_W83782D_TEMP1_OVER, "temp1_over", SENSORS_W83782D_TEMP1,
1272                         SENSORS_W83782D_TEMP1, RW, 
1273                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
1274    { SENSORS_W83782D_TEMP2, "temp2", NOMAP, NOMAP,
1275                         R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
1276    { SENSORS_W83782D_TEMP2_HYST, "temp2_hyst", SENSORS_W83782D_TEMP2,
1277                         SENSORS_W83782D_TEMP2, RW, 
1278                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
1279    { SENSORS_W83782D_TEMP2_OVER, "temp2_over", SENSORS_W83782D_TEMP2,
1280                         SENSORS_W83782D_TEMP2, RW, 
1281                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
1282    { SENSORS_W83783S_VID, "vid", NOMAP, NOMAP,
1283                         R, W83781D_SYSCTL_VID, VALUE(1), 3 },
1284    { SENSORS_W83783S_VRM, "vrm", NOMAP, NOMAP,
1285                         RW, W83781D_SYSCTL_VRM, VALUE(1), 1 },
1286    { SENSORS_W83783S_FAN1_DIV, "fan1_div", SENSORS_W83783S_FAN1, 
1287                         NOMAP, RW, 
1288                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
1289    { SENSORS_W83783S_FAN2_DIV, "fan2_div", SENSORS_W83783S_FAN2, 
1290                         NOMAP, RW, 
1291                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
1292    { SENSORS_W83783S_FAN3_DIV, "fan3_div", SENSORS_W83783S_FAN3, 
1293                         NOMAP, RW, 
1294                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
1295    { SENSORS_W83783S_ALARMS, "alarms", NOMAP, NOMAP, 
1296                         R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
1297    { SENSORS_W83783S_BEEP_ENABLE, "beep_enable", SENSORS_W83783S_ALARMS,
1298                         NOMAP, RW,
1299                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
1300    { SENSORS_W83783S_BEEPS, "beeps", SENSORS_W83783S_ALARMS,
1301                         SENSORS_W83783S_ALARMS, RW,
1302                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
1303    { SENSORS_W83783S_SENS1, "sensor1", NOMAP, NOMAP,
1304                         RW, W83781D_SYSCTL_SENS1, VALUE(1), 0 },
1305    { SENSORS_W83783S_SENS2, "sensor2", NOMAP, NOMAP,
1306                         RW, W83781D_SYSCTL_SENS2, VALUE(1), 0 },
1307    { 0 }
1308  };
1309 
1310static sensors_chip_feature w83791d_features[] =
1311  { 
1312    { SENSORS_W83791D_IN0, "in0", NOMAP, NOMAP, 
1313                        R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
1314    { SENSORS_W83791D_IN1, "in1", NOMAP, NOMAP,
1315                        R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
1316    { SENSORS_W83791D_IN2, "in2", NOMAP, NOMAP,
1317                        R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
1318    { SENSORS_W83791D_IN3, "in3", NOMAP, NOMAP,
1319                        R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
1320    { SENSORS_W83791D_IN4, "in4", NOMAP, NOMAP,
1321                        R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
1322    { SENSORS_W83791D_IN5, "in5", NOMAP, NOMAP,
1323                        R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
1324    { SENSORS_W83791D_IN6, "in6", NOMAP, NOMAP,
1325                        R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
1326    { SENSORS_W83791D_IN7, "in7", NOMAP, NOMAP,
1327                        R, W83781D_SYSCTL_IN7, VALUE(3), 2 },
1328    { SENSORS_W83791D_IN8, "in8", NOMAP, NOMAP,
1329                        R, W83781D_SYSCTL_IN8, VALUE(3), 2 },
1330    { SENSORS_W83791D_IN9, "in9", NOMAP, NOMAP,
1331                        R, W83781D_SYSCTL_IN9, VALUE(3), 2 },
1332    { SENSORS_W83791D_IN0_MIN, "in0_min", SENSORS_W83791D_IN0, 
1333                        SENSORS_W83791D_IN0, RW, 
1334                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
1335    { SENSORS_W83791D_IN1_MIN, "in1_min", SENSORS_W83791D_IN1, 
1336                        SENSORS_W83791D_IN1, RW, 
1337                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
1338    { SENSORS_W83791D_IN2_MIN, "in2_min", SENSORS_W83791D_IN2, 
1339                        SENSORS_W83791D_IN2, RW, 
1340                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
1341    { SENSORS_W83791D_IN3_MIN, "in3_min", SENSORS_W83791D_IN3, 
1342                        SENSORS_W83791D_IN3, RW, 
1343                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
1344    { SENSORS_W83791D_IN4_MIN, "in4_min", SENSORS_W83791D_IN4, 
1345                        SENSORS_W83791D_IN4, RW, 
1346                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
1347    { SENSORS_W83791D_IN5_MIN, "in5_min", SENSORS_W83791D_IN5, 
1348                        SENSORS_W83791D_IN5, RW, 
1349                        W83781D_SYSCTL_IN5, VALUE(1), 2 },
1350    { SENSORS_W83791D_IN6_MIN, "in6_min", SENSORS_W83791D_IN6, 
1351                        SENSORS_W83791D_IN6, RW, 
1352                        W83781D_SYSCTL_IN6, VALUE(1), 2 },
1353    { SENSORS_W83791D_IN7_MIN, "in7_min", SENSORS_W83791D_IN7, 
1354                        SENSORS_W83791D_IN7, RW, 
1355                        W83781D_SYSCTL_IN7, VALUE(1), 2 },
1356    { SENSORS_W83791D_IN8_MIN, "in8_min", SENSORS_W83791D_IN8, 
1357                        SENSORS_W83791D_IN8, RW, 
1358                        W83781D_SYSCTL_IN8, VALUE(1), 2 },
1359    { SENSORS_W83791D_IN9_MIN, "in9_min", SENSORS_W83791D_IN9, 
1360                        SENSORS_W83791D_IN9, RW, 
1361                        W83781D_SYSCTL_IN9, VALUE(1), 2 },
1362    { SENSORS_W83791D_IN0_MAX, "in0_max", SENSORS_W83791D_IN0, 
1363                        SENSORS_W83791D_IN0, RW,
1364                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
1365    { SENSORS_W83791D_IN1_MAX, "in1_max", SENSORS_W83791D_IN1, 
1366                        SENSORS_W83791D_IN1, RW, 
1367                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
1368    { SENSORS_W83791D_IN2_MAX, "in2_max", SENSORS_W83791D_IN2, 
1369                        SENSORS_W83791D_IN2, RW, 
1370                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
1371    { SENSORS_W83791D_IN3_MAX, "in3_max", SENSORS_W83791D_IN3, 
1372                        SENSORS_W83791D_IN3, RW, 
1373                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
1374    { SENSORS_W83791D_IN4_MAX, "in4_max", SENSORS_W83791D_IN4, 
1375                        SENSORS_W83791D_IN4, RW,
1376                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
1377    { SENSORS_W83791D_IN5_MAX, "in5_max", SENSORS_W83791D_IN5, 
1378                        SENSORS_W83791D_IN5, RW, 
1379                        W83781D_SYSCTL_IN5, VALUE(2), 2 },
1380    { SENSORS_W83791D_IN6_MAX, "in6_max", SENSORS_W83791D_IN6, 
1381                        SENSORS_W83791D_IN6, RW, 
1382                        W83781D_SYSCTL_IN6, VALUE(2), 2 },
1383    { SENSORS_W83791D_IN7_MAX, "in7_max", SENSORS_W83791D_IN7, 
1384                        SENSORS_W83791D_IN7, RW, 
1385                        W83781D_SYSCTL_IN7, VALUE(2), 2 },
1386    { SENSORS_W83791D_IN8_MAX, "in8_max", SENSORS_W83791D_IN8, 
1387                        SENSORS_W83791D_IN8, RW, 
1388                        W83781D_SYSCTL_IN8, VALUE(2), 2 },
1389    { SENSORS_W83791D_IN9_MAX, "in9_max", SENSORS_W83791D_IN9, 
1390                        SENSORS_W83791D_IN9, RW, 
1391                        W83781D_SYSCTL_IN9, VALUE(2), 2 },
1392    { SENSORS_W83791D_FAN1, "fan1", NOMAP, NOMAP,
1393                        R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
1394    { SENSORS_W83791D_FAN2, "fan2", NOMAP, NOMAP,
1395                        R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
1396    { SENSORS_W83791D_FAN3, "fan3", NOMAP, NOMAP,
1397                        R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
1398    { SENSORS_W83791D_FAN4, "fan4", NOMAP, NOMAP,
1399                        R, W83781D_SYSCTL_FAN4, VALUE(2), 0 },
1400    { SENSORS_W83791D_FAN5, "fan5", NOMAP, NOMAP,
1401                        R, W83781D_SYSCTL_FAN5, VALUE(2), 0 },
1402    { SENSORS_W83791D_FAN1_MIN, "fan1_min", SENSORS_W83791D_FAN1,
1403                        SENSORS_W83791D_FAN1, RW, 
1404                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
1405    { SENSORS_W83791D_FAN2_MIN, "fan2_min", SENSORS_W83791D_FAN2, 
1406                        SENSORS_W83791D_FAN2, RW, 
1407                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
1408    { SENSORS_W83791D_FAN3_MIN, "fan3_min", SENSORS_W83791D_FAN3, 
1409                        SENSORS_W83791D_FAN3, RW, 
1410                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
1411    { SENSORS_W83791D_FAN4_MIN, "fan4_min", SENSORS_W83791D_FAN4, 
1412                        SENSORS_W83791D_FAN4, RW, 
1413                        W83781D_SYSCTL_FAN4, VALUE(1), 0 },
1414    { SENSORS_W83791D_FAN5_MIN, "fan5_min", SENSORS_W83791D_FAN5, 
1415                        SENSORS_W83791D_FAN5, RW, 
1416                        W83781D_SYSCTL_FAN5, VALUE(1), 0 },
1417    { SENSORS_W83791D_TEMP1, "temp1", NOMAP, NOMAP,
1418                         R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
1419    { SENSORS_W83791D_TEMP1_HYST, "temp1_hyst", SENSORS_W83791D_TEMP1,
1420                         SENSORS_W83791D_TEMP1, RW, 
1421                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
1422    { SENSORS_W83791D_TEMP1_OVER, "temp1_over", SENSORS_W83791D_TEMP1,
1423                         SENSORS_W83791D_TEMP1, RW, 
1424                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
1425    { SENSORS_W83791D_TEMP2, "temp2", NOMAP, NOMAP,
1426                         R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
1427    { SENSORS_W83791D_TEMP2_HYST, "temp2_hyst", SENSORS_W83791D_TEMP2,
1428                         SENSORS_W83791D_TEMP2, RW, 
1429                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
1430    { SENSORS_W83791D_TEMP2_OVER, "temp2_over", SENSORS_W83791D_TEMP2,
1431                         SENSORS_W83791D_TEMP2, RW, 
1432                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
1433    { SENSORS_W83791D_TEMP3, "temp3", NOMAP, NOMAP,
1434                         R, W83781D_SYSCTL_TEMP3, VALUE(3), 1 },
1435    { SENSORS_W83791D_TEMP3_HYST, "temp3_hyst", SENSORS_W83791D_TEMP3,
1436                         SENSORS_W83791D_TEMP3, RW, 
1437                         W83781D_SYSCTL_TEMP3, VALUE(2), 1 },
1438    { SENSORS_W83791D_TEMP3_OVER, "temp3_over", SENSORS_W83791D_TEMP3,
1439                         SENSORS_W83791D_TEMP3, RW, 
1440                         W83781D_SYSCTL_TEMP3, VALUE(1), 1 },
1441    { SENSORS_W83791D_VID, "vid", NOMAP, NOMAP,
1442                         R, W83781D_SYSCTL_VID, VALUE(1), 3 },
1443    { SENSORS_W83791D_VRM, "vrm", NOMAP, NOMAP,
1444                         RW, W83781D_SYSCTL_VRM, VALUE(1), 1 },
1445    { SENSORS_W83791D_FAN1_DIV, "fan1_div", SENSORS_W83791D_FAN1, 
1446                         NOMAP, RW, 
1447                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
1448    { SENSORS_W83791D_FAN2_DIV, "fan2_div", SENSORS_W83791D_FAN2, 
1449                         NOMAP, RW, 
1450                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
1451    { SENSORS_W83791D_FAN3_DIV, "fan3_div", SENSORS_W83781D_FAN3, 
1452                         NOMAP, RW, 
1453                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
1454    { SENSORS_W83791D_FAN4_DIV, "fan4_div", SENSORS_W83791D_FAN4, 
1455                         NOMAP, RW, 
1456                         W83781D_SYSCTL_FAN_DIV, VALUE(4), 0 },
1457    { SENSORS_W83791D_FAN5_DIV, "fan5_div", SENSORS_W83791D_FAN5, 
1458                         NOMAP, RW, 
1459                         W83781D_SYSCTL_FAN_DIV, VALUE(5), 0 },
1460    { SENSORS_W83791D_ALARMS, "alarms", NOMAP, NOMAP, 
1461                         R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
1462    { SENSORS_W83791D_BEEP_ENABLE, "beep_enable", SENSORS_W83791D_ALARMS,
1463                         NOMAP, RW,
1464                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
1465    { SENSORS_W83791D_BEEPS, "beeps", SENSORS_W83791D_ALARMS,
1466                         SENSORS_W83791D_ALARMS, RW,
1467                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
1468    { 0 }
1469  };
1470
1471static sensors_chip_feature w83l785ts_features[] =
1472  {
1473    { SENSORS_W83L785TS_TEMP, "temp", NOMAP, NOMAP,
1474                        R, W83L785TS_SYSCTL_TEMP, VALUE(2), 0 },
1475    { SENSORS_W83L785TS_TEMP_OVER, "temp_over", SENSORS_W83L785TS_TEMP,
1476                        SENSORS_W83L785TS_TEMP, R,
1477                        W83L785TS_SYSCTL_TEMP, VALUE(1), 0 },
1478    { 0 }
1479  };
1480
1481static sensors_chip_feature adm9240_features[] =
1482  { 
1483    { SENSORS_ADM9240_IN0, "2.5V", NOMAP, NOMAP, 
1484                        R, ADM9240_SYSCTL_IN0, VALUE(3), 2 },
1485    { SENSORS_ADM9240_IN1, "Vccp1", NOMAP, NOMAP,
1486                        R, ADM9240_SYSCTL_IN1, VALUE(3), 2 },
1487    { SENSORS_ADM9240_IN2, "3.3V", NOMAP, NOMAP,
1488                        R, ADM9240_SYSCTL_IN2, VALUE(3), 2 },
1489    { SENSORS_ADM9240_IN3, "5V", NOMAP, NOMAP,
1490                        R, ADM9240_SYSCTL_IN3, VALUE(3), 2 },
1491    { SENSORS_ADM9240_IN4, "12V", NOMAP, NOMAP,
1492                        R, ADM9240_SYSCTL_IN4, VALUE(3), 2 },
1493    { SENSORS_ADM9240_IN5, "Vccp2", NOMAP, NOMAP,
1494                        R, ADM9240_SYSCTL_IN5, VALUE(3), 2 },
1495    { SENSORS_ADM9240_IN0_MIN, "2.5V_min", SENSORS_ADM9240_IN0, 
1496                        SENSORS_ADM9240_IN0, RW, 
1497                        ADM9240_SYSCTL_IN0, VALUE(1), 2 },
1498    { SENSORS_ADM9240_IN1_MIN, "Vccp1_min", SENSORS_ADM9240_IN1, 
1499                        SENSORS_ADM9240_IN1, RW, 
1500                        ADM9240_SYSCTL_IN1, VALUE(1), 2 },
1501    { SENSORS_ADM9240_IN2_MIN, "3.3V_min", SENSORS_ADM9240_IN2, 
1502                        SENSORS_ADM9240_IN2, RW, 
1503                        ADM9240_SYSCTL_IN2, VALUE(1), 2 },
1504    { SENSORS_ADM9240_IN3_MIN, "5V_min", SENSORS_ADM9240_IN3, 
1505                        SENSORS_ADM9240_IN3, RW, 
1506                        ADM9240_SYSCTL_IN3, VALUE(1), 2 },
1507    { SENSORS_ADM9240_IN4_MIN, "12V_min", SENSORS_ADM9240_IN4, 
1508                        SENSORS_ADM9240_IN4, RW, 
1509                        ADM9240_SYSCTL_IN4, VALUE(1), 2 },
1510    { SENSORS_ADM9240_IN5_MIN, "Vccp2_min", SENSORS_ADM9240_IN5, 
1511                        SENSORS_ADM9240_IN5, RW, 
1512                        ADM9240_SYSCTL_IN5, VALUE(1), 2 },
1513    { SENSORS_ADM9240_IN0_MAX, "2.5V_max", SENSORS_ADM9240_IN0, 
1514                        SENSORS_ADM9240_IN0, RW,
1515                        ADM9240_SYSCTL_IN0, VALUE(2), 2 },
1516    { SENSORS_ADM9240_IN1_MAX, "Vccp1_max", SENSORS_ADM9240_IN1, 
1517                        SENSORS_ADM9240_IN1, RW, 
1518                        ADM9240_SYSCTL_IN1, VALUE(2), 2 },
1519    { SENSORS_ADM9240_IN2_MAX, "3.3V_max", SENSORS_ADM9240_IN2, 
1520                        SENSORS_ADM9240_IN2, RW, 
1521                        ADM9240_SYSCTL_IN2, VALUE(2), 2 },
1522    { SENSORS_ADM9240_IN3_MAX, "5V_max", SENSORS_ADM9240_IN3, 
1523                        SENSORS_ADM9240_IN3, RW, 
1524                        ADM9240_SYSCTL_IN3, VALUE(2), 2 },
1525    { SENSORS_ADM9240_IN4_MAX, "12V_max", SENSORS_ADM9240_IN4, 
1526                        SENSORS_ADM9240_IN4, RW,
1527                        ADM9240_SYSCTL_IN4, VALUE(2), 2 },
1528    { SENSORS_ADM9240_IN5_MAX, "Vccp2_max", SENSORS_ADM9240_IN5, 
1529                        SENSORS_ADM9240_IN5, RW, 
1530                        ADM9240_SYSCTL_IN5, VALUE(2), 2 },
1531    { SENSORS_ADM9240_FAN1, "fan1", NOMAP, NOMAP,
1532                        R, ADM9240_SYSCTL_FAN1, VALUE(2), 0 },
1533    { SENSORS_ADM9240_FAN2, "fan2", NOMAP, NOMAP,
1534                        R, ADM9240_SYSCTL_FAN2, VALUE(2), 0 },
1535    { SENSORS_ADM9240_FAN1_MIN, "fan1_min", SENSORS_ADM9240_FAN1,
1536                        SENSORS_ADM9240_FAN1, RW, 
1537                        ADM9240_SYSCTL_FAN1, VALUE(1), 0 },
1538    { SENSORS_ADM9240_FAN2_MIN, "fan2_min", SENSORS_ADM9240_FAN2, 
1539                        SENSORS_ADM9240_FAN2, RW, 
1540                        ADM9240_SYSCTL_FAN2, VALUE(1), 0 },
1541    { SENSORS_ADM9240_TEMP, "temp", NOMAP, NOMAP,
1542                         R, ADM9240_SYSCTL_TEMP, VALUE(3), 1 },
1543    { SENSORS_ADM9240_TEMP_HYST, "temp_hyst", SENSORS_ADM9240_TEMP,
1544                         SENSORS_ADM9240_TEMP, RW, 
1545                         ADM9240_SYSCTL_TEMP, VALUE(2), 1 },
1546    { SENSORS_ADM9240_TEMP_OVER, "temp_over", SENSORS_ADM9240_TEMP,
1547                         SENSORS_ADM9240_TEMP, RW, 
1548                         ADM9240_SYSCTL_TEMP, VALUE(1), 1 },
1549
1550    { SENSORS_ADM9240_VID, "vid", NOMAP, NOMAP,
1551                         R, ADM9240_SYSCTL_VID, VALUE(1), 2 },
1552    { SENSORS_ADM9240_FAN1_DIV, "fan1_div", SENSORS_ADM9240_FAN1, 
1553                         NOMAP, RW, 
1554                         ADM9240_SYSCTL_FAN_DIV, VALUE(1), 0 },
1555    { SENSORS_ADM9240_FAN2_DIV, "fan2_div", SENSORS_ADM9240_FAN2, 
1556                         NOMAP, RW, 
1557                         ADM9240_SYSCTL_FAN_DIV, VALUE(2), 0 },
1558    { SENSORS_ADM9240_ALARMS, "alarms", NOMAP, NOMAP, 
1559                         R, ADM9240_SYSCTL_ALARMS, VALUE(1), 0 },
1560    { SENSORS_ADM9240_ANALOG_OUT, "analog_out", NOMAP,
1561                         NOMAP, RW,
1562                         ADM9240_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1563    { 0 }
1564  };
1565
1566static sensors_chip_feature adm1024_features[] =
1567  { 
1568    { SENSORS_ADM1024_IN0, "2.5V", NOMAP, NOMAP, 
1569                        R, ADM1024_SYSCTL_IN0, VALUE(3), 2 },
1570    { SENSORS_ADM1024_IN1, "Vccp1", NOMAP, NOMAP,
1571                        R, ADM1024_SYSCTL_IN1, VALUE(3), 2 },
1572    { SENSORS_ADM1024_IN2, "3.3V", NOMAP, NOMAP,
1573                        R, ADM1024_SYSCTL_IN2, VALUE(3), 2 },
1574    { SENSORS_ADM1024_IN3, "5V", NOMAP, NOMAP,
1575                        R, ADM1024_SYSCTL_IN3, VALUE(3), 2 },
1576    { SENSORS_ADM1024_IN4, "12V", NOMAP, NOMAP,
1577                        R, ADM1024_SYSCTL_IN4, VALUE(3), 2 },
1578    { SENSORS_ADM1024_IN5, "Vccp2", NOMAP, NOMAP,
1579                        R, ADM1024_SYSCTL_IN5, VALUE(3), 2 },
1580    { SENSORS_ADM1024_IN0_MIN, "2.5V_min", SENSORS_ADM1024_IN0, 
1581                        SENSORS_ADM1024_IN0, RW, 
1582                        ADM1024_SYSCTL_IN0, VALUE(1), 2 },
1583    { SENSORS_ADM1024_IN1_MIN, "Vccp1_min", SENSORS_ADM1024_IN1, 
1584                        SENSORS_ADM1024_IN1, RW, 
1585                        ADM1024_SYSCTL_IN1, VALUE(1), 2 },
1586    { SENSORS_ADM1024_IN2_MIN, "3.3V_min", SENSORS_ADM1024_IN2, 
1587                        SENSORS_ADM1024_IN2, RW, 
1588                        ADM1024_SYSCTL_IN2, VALUE(1), 2 },
1589    { SENSORS_ADM1024_IN3_MIN, "5V_min", SENSORS_ADM1024_IN3, 
1590                        SENSORS_ADM1024_IN3, RW, 
1591                        ADM1024_SYSCTL_IN3, VALUE(1), 2 },
1592    { SENSORS_ADM1024_IN4_MIN, "12V_min", SENSORS_ADM1024_IN4, 
1593                        SENSORS_ADM1024_IN4, RW, 
1594                        ADM1024_SYSCTL_IN4, VALUE(1), 2 },
1595    { SENSORS_ADM1024_IN5_MIN, "Vccp2_min", SENSORS_ADM1024_IN5, 
1596                        SENSORS_ADM1024_IN5, RW, 
1597                        ADM1024_SYSCTL_IN5, VALUE(1), 2 },
1598    { SENSORS_ADM1024_IN0_MAX, "2.5V_max", SENSORS_ADM1024_IN0, 
1599                        SENSORS_ADM1024_IN0, RW,
1600                        ADM1024_SYSCTL_IN0, VALUE(2), 2 },
1601    { SENSORS_ADM1024_IN1_MAX, "Vccp1_max", SENSORS_ADM1024_IN1, 
1602                        SENSORS_ADM1024_IN1, RW, 
1603                        ADM1024_SYSCTL_IN1, VALUE(2), 2 },
1604    { SENSORS_ADM1024_IN2_MAX, "3.3V_max", SENSORS_ADM1024_IN2, 
1605                        SENSORS_ADM1024_IN2, RW, 
1606                        ADM1024_SYSCTL_IN2, VALUE(2), 2 },
1607    { SENSORS_ADM1024_IN3_MAX, "5V_max", SENSORS_ADM1024_IN3, 
1608                        SENSORS_ADM1024_IN3, RW, 
1609                        ADM1024_SYSCTL_IN3, VALUE(2), 2 },
1610    { SENSORS_ADM1024_IN4_MAX, "12V_max", SENSORS_ADM1024_IN4, 
1611                        SENSORS_ADM1024_IN4, RW,
1612                        ADM1024_SYSCTL_IN4, VALUE(2), 2 },
1613    { SENSORS_ADM1024_IN5_MAX, "Vccp2_max", SENSORS_ADM1024_IN5, 
1614                        SENSORS_ADM1024_IN5, RW, 
1615                        ADM1024_SYSCTL_IN5, VALUE(2), 2 },
1616    { SENSORS_ADM1024_FAN1, "fan1", NOMAP, NOMAP,
1617                        R, ADM1024_SYSCTL_FAN1, VALUE(2), 0 },
1618    { SENSORS_ADM1024_FAN2, "fan2", NOMAP, NOMAP,
1619                        R, ADM1024_SYSCTL_FAN2, VALUE(2), 0 },
1620    { SENSORS_ADM1024_FAN1_MIN, "fan1_min", SENSORS_ADM1024_FAN1,
1621                        SENSORS_ADM1024_FAN1, RW, 
1622                        ADM1024_SYSCTL_FAN1, VALUE(1), 0 },
1623    { SENSORS_ADM1024_FAN2_MIN, "fan2_min", SENSORS_ADM1024_FAN2, 
1624                        SENSORS_ADM1024_FAN2, RW, 
1625                        ADM1024_SYSCTL_FAN2, VALUE(1), 0 },
1626    { SENSORS_ADM1024_TEMP, "temp", NOMAP, NOMAP,
1627                         R, ADM1024_SYSCTL_TEMP, VALUE(3), 1 },
1628    { SENSORS_ADM1024_TEMP1, "temp1", NOMAP, NOMAP,
1629                         R, ADM1024_SYSCTL_TEMP1, VALUE(3), 1 },
1630    { SENSORS_ADM1024_TEMP2, "temp2", NOMAP, NOMAP,
1631                         R, ADM1024_SYSCTL_TEMP2, VALUE(3), 1 },
1632    { SENSORS_ADM1024_TEMP_HYST, "temp_hyst", SENSORS_ADM1024_TEMP,
1633                         SENSORS_ADM1024_TEMP, RW, 
1634                         ADM1024_SYSCTL_TEMP, VALUE(2), 1 },
1635    { SENSORS_ADM1024_TEMP_OVER, "temp_over", SENSORS_ADM1024_TEMP,
1636                         SENSORS_ADM1024_TEMP, RW, 
1637                         ADM1024_SYSCTL_TEMP, VALUE(1), 1 },
1638    { SENSORS_ADM1024_TEMP1_HYST, "temp1_hyst", SENSORS_ADM1024_TEMP1,
1639                         SENSORS_ADM1024_TEMP1, RW, 
1640                         ADM1024_SYSCTL_TEMP1, VALUE(2), 1 },
1641    { SENSORS_ADM1024_TEMP1_OVER, "temp1_over", SENSORS_ADM1024_TEMP1,
1642                         SENSORS_ADM1024_TEMP1, RW, 
1643                         ADM1024_SYSCTL_TEMP1, VALUE(1), 1 },
1644    { SENSORS_ADM1024_TEMP2_HYST, "temp2_hyst", SENSORS_ADM1024_TEMP2,
1645                         SENSORS_ADM1024_TEMP2, RW, 
1646                         ADM1024_SYSCTL_TEMP2, VALUE(2), 1 },
1647    { SENSORS_ADM1024_TEMP2_OVER, "temp2_over", SENSORS_ADM1024_TEMP2,
1648                         SENSORS_ADM1024_TEMP2, RW, 
1649                         ADM1024_SYSCTL_TEMP2, VALUE(1), 1 },
1650
1651    { SENSORS_ADM1024_VID, "vid", NOMAP, NOMAP,
1652                         R, ADM1024_SYSCTL_VID, VALUE(1), 2 },
1653    { SENSORS_ADM1024_FAN1_DIV, "fan1_div", SENSORS_ADM1024_FAN1, 
1654                         NOMAP, RW, 
1655                         ADM1024_SYSCTL_FAN_DIV, VALUE(1), 0 },
1656    { SENSORS_ADM1024_FAN2_DIV, "fan2_div", SENSORS_ADM1024_FAN2, 
1657                         NOMAP, RW, 
1658                         ADM1024_SYSCTL_FAN_DIV, VALUE(2), 0 },
1659    { SENSORS_ADM1024_ALARMS, "alarms", NOMAP, NOMAP, 
1660                         R, ADM1024_SYSCTL_ALARMS, VALUE(1), 0 },
1661    { SENSORS_ADM1024_ANALOG_OUT, "analog_out", NOMAP,
1662                         NOMAP, RW,
1663                         ADM1024_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1664    { 0 }
1665  };
1666
1667static sensors_chip_feature ds1780_features[] =
1668  { 
1669    { SENSORS_DS1780_IN0, "2.5V", NOMAP, NOMAP, 
1670                        R, ADM9240_SYSCTL_IN0, VALUE(3), 2 },
1671    { SENSORS_DS1780_IN1, "Vccp1", NOMAP, NOMAP,
1672                        R, ADM9240_SYSCTL_IN1, VALUE(3), 2 },
1673    { SENSORS_DS1780_IN2, "3.3V", NOMAP, NOMAP,
1674                        R, ADM9240_SYSCTL_IN2, VALUE(3), 2 },
1675    { SENSORS_DS1780_IN3, "5V", NOMAP, NOMAP,
1676                        R, ADM9240_SYSCTL_IN3, VALUE(3), 2 },
1677    { SENSORS_DS1780_IN4, "12V", NOMAP, NOMAP,
1678                        R, ADM9240_SYSCTL_IN4, VALUE(3), 2 },
1679    { SENSORS_DS1780_IN5, "Vccp2", NOMAP, NOMAP,
1680                        R, ADM9240_SYSCTL_IN5, VALUE(3), 2 },
1681    { SENSORS_DS1780_IN0_MIN, "2.5V_min", SENSORS_DS1780_IN0, 
1682                        SENSORS_DS1780_IN0, RW, 
1683                        ADM9240_SYSCTL_IN0, VALUE(1), 2 },
1684    { SENSORS_DS1780_IN1_MIN, "Vccp1_min", SENSORS_DS1780_IN1, 
1685                        SENSORS_DS1780_IN1, RW, 
1686                        ADM9240_SYSCTL_IN1, VALUE(1), 2 },
1687    { SENSORS_DS1780_IN2_MIN, "3.3V_min", SENSORS_DS1780_IN2, 
1688                        SENSORS_DS1780_IN2, RW, 
1689                        ADM9240_SYSCTL_IN2, VALUE(1), 2 },
1690    { SENSORS_DS1780_IN3_MIN, "5V_min", SENSORS_DS1780_IN3, 
1691                        SENSORS_DS1780_IN3, RW, 
1692                        ADM9240_SYSCTL_IN3, VALUE(1), 2 },
1693    { SENSORS_DS1780_IN4_MIN, "12V_min", SENSORS_DS1780_IN4, 
1694                        SENSORS_DS1780_IN4, RW, 
1695                        ADM9240_SYSCTL_IN4, VALUE(1), 2 },
1696    { SENSORS_DS1780_IN5_MIN, "Vccp2_min", SENSORS_DS1780_IN5, 
1697                        SENSORS_DS1780_IN5, RW, 
1698                        ADM9240_SYSCTL_IN5, VALUE(1), 2 },
1699    { SENSORS_DS1780_IN0_MAX, "2.5V_max", SENSORS_DS1780_IN0, 
1700                        SENSORS_DS1780_IN0, RW,
1701                        ADM9240_SYSCTL_IN0, VALUE(2), 2 },
1702    { SENSORS_DS1780_IN1_MAX, "Vccp1_max", SENSORS_DS1780_IN1, 
1703                        SENSORS_DS1780_IN1, RW, 
1704                        ADM9240_SYSCTL_IN1, VALUE(2), 2 },
1705    { SENSORS_DS1780_IN2_MAX, "3.3V_max", SENSORS_DS1780_IN2, 
1706                        SENSORS_DS1780_IN2, RW, 
1707                        ADM9240_SYSCTL_IN2, VALUE(2), 2 },
1708    { SENSORS_DS1780_IN3_MAX, "5V_max", SENSORS_DS1780_IN3, 
1709                        SENSORS_DS1780_IN3, RW, 
1710                        ADM9240_SYSCTL_IN3, VALUE(2), 2 },
1711    { SENSORS_DS1780_IN4_MAX, "12V_max", SENSORS_DS1780_IN4, 
1712                        SENSORS_DS1780_IN4, RW,
1713                        ADM9240_SYSCTL_IN4, VALUE(2), 2 },
1714    { SENSORS_DS1780_IN5_MAX, "Vccp2_max", SENSORS_DS1780_IN5, 
1715                        SENSORS_DS1780_IN5, RW, 
1716                        ADM9240_SYSCTL_IN5, VALUE(2), 2 },
1717    { SENSORS_DS1780_FAN1, "fan1", NOMAP, NOMAP,
1718                        R, ADM9240_SYSCTL_FAN1, VALUE(2), 0 },
1719    { SENSORS_DS1780_FAN2, "fan2", NOMAP, NOMAP,
1720                        R, ADM9240_SYSCTL_FAN2, VALUE(2), 0 },
1721    { SENSORS_DS1780_FAN1_MIN, "fan1_min", SENSORS_DS1780_FAN1,
1722                        SENSORS_DS1780_FAN1, RW, 
1723                        ADM9240_SYSCTL_FAN1, VALUE(1), 0 },
1724    { SENSORS_DS1780_FAN2_MIN, "fan2_min", SENSORS_DS1780_FAN2, 
1725                        SENSORS_DS1780_FAN2, RW, 
1726                        ADM9240_SYSCTL_FAN2, VALUE(1), 0 },
1727    { SENSORS_DS1780_TEMP, "temp", NOMAP, NOMAP,
1728                         R, ADM9240_SYSCTL_TEMP, VALUE(3), 1 },
1729    { SENSORS_DS1780_TEMP_HYST, "temp_hyst", SENSORS_DS1780_TEMP,
1730                         SENSORS_DS1780_TEMP, RW, 
1731                         ADM9240_SYSCTL_TEMP, VALUE(2), 1 },
1732    { SENSORS_DS1780_TEMP_OVER, "temp_over", SENSORS_DS1780_TEMP,
1733                         SENSORS_DS1780_TEMP, RW, 
1734                         ADM9240_SYSCTL_TEMP, VALUE(1), 1 },
1735
1736    { SENSORS_DS1780_VID, "vid", NOMAP, NOMAP,
1737                         R, ADM9240_SYSCTL_VID, VALUE(1), 2 },
1738    { SENSORS_DS1780_FAN1_DIV, "fan1_div", SENSORS_DS1780_FAN1, 
1739                         NOMAP, RW, 
1740                         ADM9240_SYSCTL_FAN_DIV, VALUE(1), 0 },
1741    { SENSORS_DS1780_FAN2_DIV, "fan2_div", SENSORS_DS1780_FAN2, 
1742                         NOMAP, RW, 
1743                         ADM9240_SYSCTL_FAN_DIV, VALUE(2), 0 },
1744    { SENSORS_DS1780_ALARMS, "alarms", NOMAP, NOMAP, 
1745                         R, ADM9240_SYSCTL_ALARMS, VALUE(1), 0 },
1746    { SENSORS_DS1780_ANALOG_OUT, "analog_out", NOMAP,
1747                         NOMAP, RW,
1748                         ADM9240_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1749    { 0 }
1750  };
1751
1752static sensors_chip_feature sis5595_features[] =
1753  { 
1754    { SENSORS_SIS5595_IN0, "in0", NOMAP, NOMAP, 
1755                        R, LM78_SYSCTL_IN0, VALUE(3), 2 },
1756    { SENSORS_SIS5595_IN1, "in1", NOMAP, NOMAP,
1757                        R, LM78_SYSCTL_IN1, VALUE(3), 2 },
1758    { SENSORS_SIS5595_IN2, "in2", NOMAP, NOMAP,
1759                        R, LM78_SYSCTL_IN2, VALUE(3), 2 },
1760    { SENSORS_SIS5595_IN3, "in3", NOMAP, NOMAP,
1761                        R, LM78_SYSCTL_IN3, VALUE(3), 2 },
1762    { SENSORS_SIS5595_IN4, "in4", NOMAP, NOMAP,
1763                        R, LM78_SYSCTL_IN4, VALUE(3), 2 },
1764    { SENSORS_SIS5595_IN0_MIN, "in0_min", SENSORS_SIS5595_IN0, SENSORS_SIS5595_IN0,
1765                            RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
1766    { SENSORS_SIS5595_IN1_MIN, "in1_min", SENSORS_SIS5595_IN1, SENSORS_SIS5595_IN1,
1767                            RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
1768    { SENSORS_SIS5595_IN2_MIN, "in2_min", SENSORS_SIS5595_IN2, SENSORS_SIS5595_IN2,
1769                            RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
1770    { SENSORS_SIS5595_IN3_MIN, "in3_min", SENSORS_SIS5595_IN3, SENSORS_SIS5595_IN3,
1771                            RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
1772    { SENSORS_SIS5595_IN4_MIN, "in4_min", SENSORS_SIS5595_IN4, SENSORS_SIS5595_IN4,
1773                            RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
1774    { SENSORS_SIS5595_IN0_MAX, "in0_max", SENSORS_SIS5595_IN0, SENSORS_SIS5595_IN0,
1775                            RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
1776    { SENSORS_SIS5595_IN1_MAX, "in1_max", SENSORS_SIS5595_IN1, SENSORS_SIS5595_IN1,
1777                            RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
1778    { SENSORS_SIS5595_IN2_MAX, "in2_max", SENSORS_SIS5595_IN2, SENSORS_SIS5595_IN2,
1779                            RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
1780    { SENSORS_SIS5595_IN3_MAX, "in3_max", SENSORS_SIS5595_IN3, SENSORS_SIS5595_IN3,
1781                            RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
1782    { SENSORS_SIS5595_IN4_MAX, "in4_max", SENSORS_SIS5595_IN4, SENSORS_SIS5595_IN4,
1783                            RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
1784    { SENSORS_SIS5595_FAN1, "fan1", NOMAP, NOMAP,
1785                         R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
1786    { SENSORS_SIS5595_FAN2, "fan2", NOMAP, NOMAP,
1787                         R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
1788    { SENSORS_SIS5595_FAN1_MIN, "fan1_min", SENSORS_SIS5595_FAN1, SENSORS_SIS5595_FAN1,
1789                             RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
1790    { SENSORS_SIS5595_FAN2_MIN, "fan2_min", SENSORS_SIS5595_FAN2, SENSORS_SIS5595_FAN2,
1791                             RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
1792    { SENSORS_SIS5595_TEMP, "temp", NOMAP, NOMAP,
1793                         R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
1794    { SENSORS_SIS5595_TEMP_HYST, "temp_hyst", SENSORS_SIS5595_TEMP,
1795                              SENSORS_SIS5595_TEMP, RW, 
1796                              LM78_SYSCTL_TEMP, VALUE(2), 1 },
1797    { SENSORS_SIS5595_TEMP_OVER, "temp_over", SENSORS_SIS5595_TEMP,
1798                              SENSORS_SIS5595_TEMP, RW, 
1799                              LM78_SYSCTL_TEMP, VALUE(1), 1 },
1800    { SENSORS_SIS5595_FAN1_DIV, "fan1_div", SENSORS_SIS5595_FAN1, NOMAP,
1801                             RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 
1802                             0 },
1803    { SENSORS_SIS5595_FAN2_DIV, "fan2_div", SENSORS_SIS5595_FAN2, NOMAP,
1804                             RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 
1805                             0 },
1806    { SENSORS_SIS5595_ALARMS, "alarms", NOMAP, NOMAP, 
1807                           R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
1808    { 0 }
1809  };
1810
1811static sensors_chip_feature maxi_cg_features[] =
1812  { 
1813    { SENSORS_MAXI_CG_FAN1, "fan1", NOMAP, NOMAP,
1814                         R, MAXI_SYSCTL_FAN1, VALUE(3), 0 },
1815    { SENSORS_MAXI_CG_FAN2, "fan2", NOMAP, NOMAP,
1816                         R, MAXI_SYSCTL_FAN2, VALUE(3), 0 },
1817    { SENSORS_MAXI_CG_FAN3, "fan3", NOMAP, NOMAP,
1818                         R, MAXI_SYSCTL_FAN3, VALUE(3), 0 },
1819    { SENSORS_MAXI_CG_FAN1_MIN, "fan1_min", SENSORS_MAXI_CG_FAN1, SENSORS_MAXI_CG_FAN1,
1820                             RW, MAXI_SYSCTL_FAN1, VALUE(1), 0 },
1821    { SENSORS_MAXI_CG_FAN2_MIN, "fan2_min", SENSORS_MAXI_CG_FAN2, SENSORS_MAXI_CG_FAN2,
1822                             RW, MAXI_SYSCTL_FAN2, VALUE(1), 0 },
1823    { SENSORS_MAXI_CG_FAN3_MIN, "fan3_min", SENSORS_MAXI_CG_FAN3, SENSORS_MAXI_CG_FAN3,
1824                             RW, MAXI_SYSCTL_FAN3, VALUE(1), 0 },
1825    { SENSORS_MAXI_CG_FAN1_DIV, "fan1_div", SENSORS_MAXI_CG_FAN1, NOMAP,
1826                             R, MAXI_SYSCTL_FAN1, VALUE(2), 0 },
1827    { SENSORS_MAXI_CG_FAN2_DIV, "fan2_div", SENSORS_MAXI_CG_FAN2, NOMAP,
1828                             R, MAXI_SYSCTL_FAN2, VALUE(2), 0 },
1829    { SENSORS_MAXI_CG_FAN3_DIV, "fan3_div", SENSORS_MAXI_CG_FAN3, NOMAP,
1830                             R, MAXI_SYSCTL_FAN3, VALUE(2), 0 },
1831    { SENSORS_MAXI_CG_TEMP1, "temp1", NOMAP, NOMAP,
1832                          R, MAXI_SYSCTL_TEMP1, VALUE(3), 1 },
1833    { SENSORS_MAXI_CG_TEMP2, "temp2", NOMAP, NOMAP,
1834                          R, MAXI_SYSCTL_TEMP2, VALUE(3), 1 },
1835    { SENSORS_MAXI_CG_TEMP3, "temp3", NOMAP, NOMAP,
1836                          R, MAXI_SYSCTL_TEMP3, VALUE(3), 1 },
1837    { SENSORS_MAXI_CG_TEMP4, "temp4", NOMAP, NOMAP,
1838                          R, MAXI_SYSCTL_TEMP4, VALUE(3), 1 },
1839    { SENSORS_MAXI_CG_TEMP5, "temp5", NOMAP, NOMAP,
1840                          R, MAXI_SYSCTL_TEMP5, VALUE(3), 1 },
1841    { SENSORS_MAXI_CG_TEMP1_MAX, "temp1_max", SENSORS_MAXI_CG_TEMP1,
1842                              SENSORS_MAXI_CG_TEMP1, R, 
1843                              MAXI_SYSCTL_TEMP1, VALUE(1), 1 },
1844    { SENSORS_MAXI_CG_TEMP2_MAX, "temp2_max", SENSORS_MAXI_CG_TEMP2,
1845                              SENSORS_MAXI_CG_TEMP2, R, 
1846                              MAXI_SYSCTL_TEMP2, VALUE(1), 1 },
1847    { SENSORS_MAXI_CG_TEMP3_MAX, "temp3_max", SENSORS_MAXI_CG_TEMP3,
1848                              SENSORS_MAXI_CG_TEMP3, R, 
1849                              MAXI_SYSCTL_TEMP3, VALUE(1), 1 },
1850    { SENSORS_MAXI_CG_TEMP4_MAX, "temp4_max", SENSORS_MAXI_CG_TEMP4,
1851                              SENSORS_MAXI_CG_TEMP4, R, 
1852                              MAXI_SYSCTL_TEMP4, VALUE(1), 1 },
1853    { SENSORS_MAXI_CG_TEMP5_MAX, "temp5_max", SENSORS_MAXI_CG_TEMP5,
1854                              SENSORS_MAXI_CG_TEMP5, R, 
1855                              MAXI_SYSCTL_TEMP5, VALUE(1), 1 },
1856    { SENSORS_MAXI_CG_TEMP1_HYST, "temp1_hyst", SENSORS_MAXI_CG_TEMP1,
1857                              SENSORS_MAXI_CG_TEMP1, R, 
1858                              MAXI_SYSCTL_TEMP1, VALUE(2), 1 },
1859    { SENSORS_MAXI_CG_TEMP2_HYST, "temp2_hyst", SENSORS_MAXI_CG_TEMP2,
1860                              SENSORS_MAXI_CG_TEMP2, R, 
1861                              MAXI_SYSCTL_TEMP2, VALUE(2), 1 },
1862    { SENSORS_MAXI_CG_TEMP3_HYST, "temp3_hyst", SENSORS_MAXI_CG_TEMP3,
1863                              SENSORS_MAXI_CG_TEMP3, R, 
1864                              MAXI_SYSCTL_TEMP3, VALUE(2), 1 },
1865    { SENSORS_MAXI_CG_TEMP4_HYST, "temp4_hyst", SENSORS_MAXI_CG_TEMP4,
1866                              SENSORS_MAXI_CG_TEMP4, R, 
1867                              MAXI_SYSCTL_TEMP4, VALUE(2), 1 },
1868    { SENSORS_MAXI_CG_TEMP5_HYST, "temp5_hyst", SENSORS_MAXI_CG_TEMP5,
1869                              SENSORS_MAXI_CG_TEMP5, R, 
1870                              MAXI_SYSCTL_TEMP5, VALUE(2), 1 },
1871    { SENSORS_MAXI_CG_PLL, "pll", NOMAP, NOMAP,
1872                        R, MAXI_SYSCTL_PLL, VALUE(3), 2 },
1873    { SENSORS_MAXI_CG_PLL_MIN, "pll_min", SENSORS_MAXI_CG_PLL, SENSORS_MAXI_CG_PLL,
1874                            RW, MAXI_SYSCTL_PLL, VALUE(1), 2 },
1875    { SENSORS_MAXI_CG_PLL_MAX, "pll_max", SENSORS_MAXI_CG_PLL, SENSORS_MAXI_CG_PLL,
1876                            RW, MAXI_SYSCTL_PLL, VALUE(2), 2 },
1877    { SENSORS_MAXI_CG_VID1, "vid1", NOMAP, NOMAP,
1878                         R, MAXI_SYSCTL_VID1, VALUE(3), 4 },
1879    { SENSORS_MAXI_CG_VID2, "vid2", NOMAP, NOMAP,
1880                         R, MAXI_SYSCTL_VID2, VALUE(3), 4 },
1881    { SENSORS_MAXI_CG_VID3, "vid3", NOMAP, NOMAP,
1882                         R, MAXI_SYSCTL_VID3, VALUE(3), 4 },
1883    { SENSORS_MAXI_CG_VID4, "vid4", NOMAP, NOMAP,
1884                         R, MAXI_SYSCTL_VID4, VALUE(3), 4 },
1885    { SENSORS_MAXI_CG_VID1_MIN, "vid1_min", SENSORS_MAXI_CG_VID1, SENSORS_MAXI_CG_VID1,
1886                             RW, MAXI_SYSCTL_VID1, VALUE(1), 4 },
1887    { SENSORS_MAXI_CG_VID2_MIN, "vid2_min", SENSORS_MAXI_CG_VID2, SENSORS_MAXI_CG_VID2,
1888                             RW, MAXI_SYSCTL_VID2, VALUE(1), 4 },
1889    { SENSORS_MAXI_CG_VID3_MIN, "vid3_min", SENSORS_MAXI_CG_VID3, SENSORS_MAXI_CG_VID3,
1890                             RW, MAXI_SYSCTL_VID3, VALUE(1), 4 },
1891    { SENSORS_MAXI_CG_VID4_MIN, "vid4_min", SENSORS_MAXI_CG_VID4, SENSORS_MAXI_CG_VID4,
1892                             RW, MAXI_SYSCTL_VID4, VALUE(1), 4 },
1893    { SENSORS_MAXI_CG_VID1_MAX, "vid1_max", SENSORS_MAXI_CG_VID1, SENSORS_MAXI_CG_VID1,
1894                             RW, MAXI_SYSCTL_VID1, VALUE(2), 4 },
1895    { SENSORS_MAXI_CG_VID2_MAX, "vid2_max", SENSORS_MAXI_CG_VID2, SENSORS_MAXI_CG_VID2,
1896                             RW, MAXI_SYSCTL_VID2, VALUE(2), 4 },
1897    { SENSORS_MAXI_CG_VID3_MAX, "vid3_max", SENSORS_MAXI_CG_VID3, SENSORS_MAXI_CG_VID3,
1898                             RW, MAXI_SYSCTL_VID3, VALUE(2), 4 },
1899    { SENSORS_MAXI_CG_VID4_MAX, "vid4_max", SENSORS_MAXI_CG_VID4, SENSORS_MAXI_CG_VID4,
1900                             RW, MAXI_SYSCTL_VID4, VALUE(2), 4 },
1901    { SENSORS_MAXI_CG_ALARMS, "alarms", NOMAP, NOMAP, 
1902                           R, MAXI_SYSCTL_ALARMS, VALUE(1), 0 },
1903    { 0 }
1904  };
1905
1906static sensors_chip_feature maxi_co_features[] =
1907  { 
1908    { SENSORS_MAXI_CO_FAN1, "fan1", NOMAP, NOMAP,
1909                         R, MAXI_SYSCTL_FAN1, VALUE(3), 0 },
1910    { SENSORS_MAXI_CO_FAN2, "fan2", NOMAP, NOMAP,
1911                         R, MAXI_SYSCTL_FAN2, VALUE(3), 0 },
1912    { SENSORS_MAXI_CO_FAN3, "fan3", NOMAP, NOMAP,
1913                         R, MAXI_SYSCTL_FAN3, VALUE(3), 0 },
1914    { SENSORS_MAXI_CO_FAN1_MIN, "fan1_min", SENSORS_MAXI_CO_FAN1, SENSORS_MAXI_CO_FAN1,
1915                             RW, MAXI_SYSCTL_FAN1, VALUE(1), 0 },
1916    { SENSORS_MAXI_CO_FAN2_MIN, "fan2_min", SENSORS_MAXI_CO_FAN2, SENSORS_MAXI_CO_FAN2,
1917                             RW, MAXI_SYSCTL_FAN2, VALUE(1), 0 },
1918    { SENSORS_MAXI_CO_FAN3_MIN, "fan3_min", SENSORS_MAXI_CO_FAN3, SENSORS_MAXI_CO_FAN3,
1919                             RW, MAXI_SYSCTL_FAN3, VALUE(1), 0 },
1920    { SENSORS_MAXI_CO_FAN1_DIV, "fan1_div", SENSORS_MAXI_CO_FAN1, NOMAP,
1921                             R, MAXI_SYSCTL_FAN1, VALUE(2), 0 },
1922    { SENSORS_MAXI_CO_FAN2_DIV, "fan2_div", SENSORS_MAXI_CO_FAN2, NOMAP,
1923                             R, MAXI_SYSCTL_FAN2, VALUE(2), 0 },
1924    { SENSORS_MAXI_CO_FAN3_DIV, "fan3_div", SENSORS_MAXI_CO_FAN3, NOMAP,
1925                             R, MAXI_SYSCTL_FAN3, VALUE(2), 0 },
1926    { SENSORS_MAXI_CO_TEMP1, "temp1", NOMAP, NOMAP,
1927                          R, MAXI_SYSCTL_TEMP1, VALUE(3), 1 },
1928    { SENSORS_MAXI_CO_TEMP2, "temp2", NOMAP, NOMAP,
1929                          R, MAXI_SYSCTL_TEMP2, VALUE(3), 1 },
1930    { SENSORS_MAXI_CO_TEMP3, "temp3", NOMAP, NOMAP,
1931                          R, MAXI_SYSCTL_TEMP3, VALUE(3), 1 },
1932    { SENSORS_MAXI_CO_TEMP4, "temp4", NOMAP, NOMAP,
1933                          R, MAXI_SYSCTL_TEMP4, VALUE(3), 1 },
1934    { SENSORS_MAXI_CO_TEMP5, "temp5", NOMAP, NOMAP,
1935                          R, MAXI_SYSCTL_TEMP5, VALUE(3), 1 },
1936    { SENSORS_MAXI_CO_TEMP1_MAX, "temp1_max", SENSORS_MAXI_CO_TEMP1,
1937                              SENSORS_MAXI_CO_TEMP1, R, 
1938                              MAXI_SYSCTL_TEMP1, VALUE(1), 1 },
1939    { SENSORS_MAXI_CO_TEMP2_MAX, "temp2_max", SENSORS_MAXI_CO_TEMP2,
1940                              SENSORS_MAXI_CO_TEMP2, R, 
1941                              MAXI_SYSCTL_TEMP2, VALUE(1), 1 },
1942    { SENSORS_MAXI_CO_TEMP3_MAX, "temp3_max", SENSORS_MAXI_CO_TEMP3,
1943                              SENSORS_MAXI_CO_TEMP3, R, 
1944                              MAXI_SYSCTL_TEMP3, VALUE(1), 1 },
1945    { SENSORS_MAXI_CO_TEMP4_MAX, "temp4_max", SENSORS_MAXI_CO_TEMP4,
1946                              SENSORS_MAXI_CO_TEMP4, R, 
1947                              MAXI_SYSCTL_TEMP4, VALUE(1), 1 },
1948    { SENSORS_MAXI_CO_TEMP5_MAX, "temp5_max", SENSORS_MAXI_CO_TEMP5,
1949                              SENSORS_MAXI_CO_TEMP5, R, 
1950                              MAXI_SYSCTL_TEMP5, VALUE(1), 1 },
1951    { SENSORS_MAXI_CO_TEMP1_HYST, "temp1_hyst", SENSORS_MAXI_CO_TEMP1,
1952                              SENSORS_MAXI_CO_TEMP1, R, 
1953                              MAXI_SYSCTL_TEMP1, VALUE(2), 1 },
1954    { SENSORS_MAXI_CO_TEMP2_HYST, "temp2_hyst", SENSORS_MAXI_CO_TEMP2,
1955                              SENSORS_MAXI_CO_TEMP2, R, 
1956                              MAXI_SYSCTL_TEMP2, VALUE(2), 1 },
1957    { SENSORS_MAXI_CO_TEMP3_HYST, "temp3_hyst", SENSORS_MAXI_CO_TEMP3,
1958                              SENSORS_MAXI_CO_TEMP3, R, 
1959                              MAXI_SYSCTL_TEMP3, VALUE(2), 1 },
1960    { SENSORS_MAXI_CO_TEMP4_HYST, "temp4_hyst", SENSORS_MAXI_CO_TEMP4,
1961                              SENSORS_MAXI_CO_TEMP4, R, 
1962                              MAXI_SYSCTL_TEMP4, VALUE(2), 1 },
1963    { SENSORS_MAXI_CO_TEMP5_HYST, "temp5_hyst", SENSORS_MAXI_CO_TEMP5,
1964                              SENSORS_MAXI_CO_TEMP5, R, 
1965                              MAXI_SYSCTL_TEMP5, VALUE(2), 1 },
1966    { SENSORS_MAXI_CO_PLL, "pll", NOMAP, NOMAP,
1967                        R, MAXI_SYSCTL_PLL, VALUE(3), 2 },
1968    { SENSORS_MAXI_CO_PLL_MIN, "pll_min", SENSORS_MAXI_CO_PLL, SENSORS_MAXI_CO_PLL,
1969                            RW, MAXI_SYSCTL_PLL, VALUE(1), 2 },
1970    { SENSORS_MAXI_CO_PLL_MAX, "pll_max", SENSORS_MAXI_CO_PLL, SENSORS_MAXI_CO_PLL,
1971                            RW, MAXI_SYSCTL_PLL, VALUE(2), 2 },
1972    { SENSORS_MAXI_CO_VID1, "vid1", NOMAP, NOMAP,
1973                         R, MAXI_SYSCTL_VID1, VALUE(3), 4 },
1974    { SENSORS_MAXI_CO_VID2, "vid2", NOMAP, NOMAP,
1975                         R, MAXI_SYSCTL_VID2, VALUE(3), 4 },
1976    { SENSORS_MAXI_CO_VID3, "vid3", NOMAP, NOMAP,
1977                         R, MAXI_SYSCTL_VID3, VALUE(3), 4 },
1978    { SENSORS_MAXI_CO_VID4, "vid4", NOMAP, NOMAP,
1979                         R, MAXI_SYSCTL_VID4, VALUE(3), 4 },
1980    { SENSORS_MAXI_CO_VID1_MIN, "vid1_min", SENSORS_MAXI_CO_VID1, SENSORS_MAXI_CO_VID1,
1981                             RW, MAXI_SYSCTL_VID1, VALUE(1), 4 },
1982    { SENSORS_MAXI_CO_VID2_MIN, "vid2_min", SENSORS_MAXI_CO_VID2, SENSORS_MAXI_CO_VID2,
1983                             RW, MAXI_SYSCTL_VID2, VALUE(1), 4 },
1984    { SENSORS_MAXI_CO_VID3_MIN, "vid3_min", SENSORS_MAXI_CO_VID3, SENSORS_MAXI_CO_VID3,
1985                             RW, MAXI_SYSCTL_VID3, VALUE(1), 4 },
1986    { SENSORS_MAXI_CO_VID4_MIN, "vid4_min", SENSORS_MAXI_CO_VID4, SENSORS_MAXI_CO_VID4,
1987                             RW, MAXI_SYSCTL_VID4, VALUE(1), 4 },
1988    { SENSORS_MAXI_CO_VID1_MAX, "vid1_max", SENSORS_MAXI_CO_VID1, SENSORS_MAXI_CO_VID1,
1989                             RW, MAXI_SYSCTL_VID1, VALUE(2), 4 },
1990    { SENSORS_MAXI_CO_VID2_MAX, "vid2_max", SENSORS_MAXI_CO_VID2, SENSORS_MAXI_CO_VID2,
1991                             RW, MAXI_SYSCTL_VID2, VALUE(2), 4 },
1992    { SENSORS_MAXI_CG_VID3_MAX, "vid3_max", SENSORS_MAXI_CO_VID3, SENSORS_MAXI_CO_VID3,
1993                             RW, MAXI_SYSCTL_VID3, VALUE(2), 4 },
1994    { SENSORS_MAXI_CO_VID4_MAX, "vid4_max", SENSORS_MAXI_CO_VID4, SENSORS_MAXI_CG_VID4,
1995                             RW, MAXI_SYSCTL_VID4, VALUE(2), 4 },
1996    { SENSORS_MAXI_CO_ALARMS, "alarms", NOMAP, NOMAP, 
1997                           R, MAXI_SYSCTL_ALARMS, VALUE(1), 0 },
1998    { 0 }
1999  };
2000
2001static sensors_chip_feature maxi_as_features[] =
2002  { 
2003    { SENSORS_MAXI_AS_FAN1, "fan1", NOMAP, NOMAP,
2004                         R, MAXI_SYSCTL_FAN1, VALUE(3), 0 },
2005    { SENSORS_MAXI_AS_FAN2, "fan2", NOMAP, NOMAP,
2006                         R, MAXI_SYSCTL_FAN2, VALUE(3), 0 },
2007    { SENSORS_MAXI_AS_FAN3, "fan3", NOMAP, NOMAP,
2008                         R, MAXI_SYSCTL_FAN3, VALUE(3), 0 },
2009    { SENSORS_MAXI_AS_FAN1_MIN, "fan1_min", SENSORS_MAXI_AS_FAN1, SENSORS_MAXI_AS_FAN1,
2010                             RW, MAXI_SYSCTL_FAN1, VALUE(1), 0 },
2011    { SENSORS_MAXI_AS_FAN2_MIN, "fan2_min", SENSORS_MAXI_AS_FAN2, SENSORS_MAXI_AS_FAN2,
2012                             RW, MAXI_SYSCTL_FAN2, VALUE(1), 0 },
2013    { SENSORS_MAXI_AS_FAN3_MIN, "fan3_min", SENSORS_MAXI_AS_FAN3, SENSORS_MAXI_AS_FAN3,
2014                             RW, MAXI_SYSCTL_FAN3, VALUE(1), 0 },
2015    { SENSORS_MAXI_AS_FAN1_DIV, "fan1_div", SENSORS_MAXI_AS_FAN1, NOMAP,
2016                             R, MAXI_SYSCTL_FAN1, VALUE(2), 0 },
2017    { SENSORS_MAXI_AS_FAN2_DIV, "fan2_div", SENSORS_MAXI_AS_FAN2, NOMAP,
2018                             R, MAXI_SYSCTL_FAN2, VALUE(2), 0 },
2019    { SENSORS_MAXI_AS_FAN3_DIV, "fan3_div", SENSORS_MAXI_AS_FAN3, NOMAP,
2020                             R, MAXI_SYSCTL_FAN3, VALUE(2), 0 },
2021    { SENSORS_MAXI_AS_TEMP1, "temp1", NOMAP, NOMAP,
2022                          R, MAXI_SYSCTL_TEMP1, VALUE(3), 1 },
2023    { SENSORS_MAXI_AS_TEMP2, "temp2", NOMAP, NOMAP,
2024                          R, MAXI_SYSCTL_TEMP2, VALUE(3), 1 },
2025    { SENSORS_MAXI_AS_TEMP3, "temp3", NOMAP, NOMAP,
2026                          R, MAXI_SYSCTL_TEMP3, VALUE(3), 1 },
2027    { SENSORS_MAXI_AS_TEMP4, "temp4", NOMAP, NOMAP,
2028                          R, MAXI_SYSCTL_TEMP4, VALUE(3), 1 },
2029    { SENSORS_MAXI_AS_TEMP5, "temp5", NOMAP, NOMAP,
2030                          R, MAXI_SYSCTL_TEMP5, VALUE(3), 1 },
2031    { SENSORS_MAXI_AS_TEMP1_MAX, "temp1_max", SENSORS_MAXI_AS_TEMP1,
2032                              SENSORS_MAXI_AS_TEMP1, R, 
2033                              MAXI_SYSCTL_TEMP1, VALUE(1), 1 },
2034    { SENSORS_MAXI_AS_TEMP2_MAX, "temp2_max", SENSORS_MAXI_AS_TEMP2,
2035                              SENSORS_MAXI_AS_TEMP2, R, 
2036                              MAXI_SYSCTL_TEMP2, VALUE(1), 1 },
2037    { SENSORS_MAXI_AS_TEMP3_MAX, "temp3_max", SENSORS_MAXI_AS_TEMP3,
2038                              SENSORS_MAXI_AS_TEMP3, R, 
2039                              MAXI_SYSCTL_TEMP3, VALUE(1), 1 },
2040    { SENSORS_MAXI_AS_TEMP4_MAX, "temp4_max", SENSORS_MAXI_AS_TEMP4,
2041                              SENSORS_MAXI_AS_TEMP4, R, 
2042                              MAXI_SYSCTL_TEMP4, VALUE(1), 1 },
2043    { SENSORS_MAXI_AS_TEMP5_MAX, "temp5_max", SENSORS_MAXI_AS_TEMP5,
2044                              SENSORS_MAXI_AS_TEMP5, R, 
2045                              MAXI_SYSCTL_TEMP5, VALUE(1), 1 },
2046    { SENSORS_MAXI_AS_TEMP1_HYST, "temp1_hyst", SENSORS_MAXI_AS_TEMP1,
2047                              SENSORS_MAXI_AS_TEMP1, R, 
2048                              MAXI_SYSCTL_TEMP1, VALUE(2), 1 },
2049    { SENSORS_MAXI_AS_TEMP2_HYST, "temp2_hyst", SENSORS_MAXI_AS_TEMP2,
2050                              SENSORS_MAXI_AS_TEMP2, R, 
2051                              MAXI_SYSCTL_TEMP2, VALUE(2), 1 },
2052    { SENSORS_MAXI_AS_TEMP3_HYST, "temp3_hyst", SENSORS_MAXI_AS_TEMP3,
2053                              SENSORS_MAXI_AS_TEMP3, R, 
2054                              MAXI_SYSCTL_TEMP3, VALUE(2), 1 },
2055    { SENSORS_MAXI_AS_TEMP4_HYST, "temp4_hyst", SENSORS_MAXI_AS_TEMP4,
2056                              SENSORS_MAXI_AS_TEMP4, R, 
2057                              MAXI_SYSCTL_TEMP4, VALUE(2), 1 },
2058    { SENSORS_MAXI_AS_TEMP5_HYST, "temp5_hyst", SENSORS_MAXI_AS_TEMP5,
2059                              SENSORS_MAXI_AS_TEMP5, R, 
2060                              MAXI_SYSCTL_TEMP5, VALUE(2), 1 },
2061    { SENSORS_MAXI_AS_PLL, "pll", NOMAP, NOMAP,
2062                        R, MAXI_SYSCTL_PLL, VALUE(3), 2 },
2063    { SENSORS_MAXI_AS_PLL_MIN, "pll_min", SENSORS_MAXI_AS_PLL, SENSORS_MAXI_AS_PLL,
2064                            RW, MAXI_SYSCTL_PLL, VALUE(1), 2 },
2065    { SENSORS_MAXI_AS_PLL_MAX, "pll_max", SENSORS_MAXI_AS_PLL, SENSORS_MAXI_AS_PLL,
2066                            RW, MAXI_SYSCTL_PLL, VALUE(2), 2 },
2067    { SENSORS_MAXI_AS_VID1, "vid1", NOMAP, NOMAP,
2068                         R, MAXI_SYSCTL_VID1, VALUE(3), 4 },
2069    { SENSORS_MAXI_AS_VID2, "vid2", NOMAP, NOMAP,
2070                         R, MAXI_SYSCTL_VID2, VALUE(3), 4 },
2071    { SENSORS_MAXI_AS_VID3, "vid3", NOMAP, NOMAP,
2072                         R, MAXI_SYSCTL_VID3, VALUE(3), 4 },
2073    { SENSORS_MAXI_AS_VID4, "vid4", NOMAP, NOMAP,
2074                         R, MAXI_SYSCTL_VID4, VALUE(3), 4 },
2075    { SENSORS_MAXI_AS_VID1_MIN, "vid1_min", SENSORS_MAXI_AS_VID1, SENSORS_MAXI_AS_VID1,
2076                             RW, MAXI_SYSCTL_VID1, VALUE(1), 4 },
2077    { SENSORS_MAXI_AS_VID2_MIN, "vid2_min", SENSORS_MAXI_AS_VID2, SENSORS_MAXI_AS_VID2,
2078                             RW, MAXI_SYSCTL_VID2, VALUE(1), 4 },
2079    { SENSORS_MAXI_AS_VID3_MIN, "vid3_min", SENSORS_MAXI_AS_VID3, SENSORS_MAXI_AS_VID3,
2080                             RW, MAXI_SYSCTL_VID3, VALUE(1), 4 },
2081    { SENSORS_MAXI_AS_VID4_MIN, "vid4_min", SENSORS_MAXI_AS_VID4, SENSORS_MAXI_AS_VID4,
2082                             RW, MAXI_SYSCTL_VID4, VALUE(1), 4 },
2083    { SENSORS_MAXI_AS_VID1_MAX, "vid1_max", SENSORS_MAXI_AS_VID1, SENSORS_MAXI_AS_VID1,
2084                             RW, MAXI_SYSCTL_VID1, VALUE(2), 4 },
2085    { SENSORS_MAXI_AS_VID2_MAX, "vid2_max", SENSORS_MAXI_AS_VID2, SENSORS_MAXI_AS_VID2,
2086                             RW, MAXI_SYSCTL_VID2, VALUE(2), 4 },
2087    { SENSORS_MAXI_AS_VID3_MAX, "vid3_max", SENSORS_MAXI_AS_VID3, SENSORS_MAXI_AS_VID3,
2088                             RW, MAXI_SYSCTL_VID3, VALUE(2), 4 },
2089    { SENSORS_MAXI_AS_VID4_MAX, "vid4_max", SENSORS_MAXI_AS_VID4, SENSORS_MAXI_CG_VID4,
2090                             RW, MAXI_SYSCTL_VID4, VALUE(2), 4 },
2091    { SENSORS_MAXI_AS_ALARMS, "alarms", NOMAP, NOMAP, 
2092                           R, MAXI_SYSCTL_ALARMS, VALUE(1), 0 },
2093    { 0 }
2094  };
2095
2096static sensors_chip_feature thmc50_features[] =
2097  {
2098    { SENSORS_THMC50_TEMP, "temp", NOMAP, NOMAP,
2099                              R, THMC50_SYSCTL_TEMP, VALUE(3), 
2100                              0 },
2101    { SENSORS_THMC50_TEMP_HYST, "temp_hyst", SENSORS_THMC50_TEMP,
2102                              SENSORS_THMC50_TEMP, RW, 
2103                              THMC50_SYSCTL_TEMP, VALUE(2), 0 },
2104    { SENSORS_THMC50_TEMP_OVER, "temp_over", SENSORS_THMC50_TEMP,
2105                              SENSORS_THMC50_TEMP, RW,
2106                              THMC50_SYSCTL_TEMP, VALUE(1), 0 },
2107    { SENSORS_THMC50_REMOTE_TEMP, "remote_temp", NOMAP, 
2108                              NOMAP, R, 
2109                              THMC50_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
2110    { SENSORS_THMC50_REMOTE_TEMP_HYST, "remote_temp_hyst", 
2111                              SENSORS_THMC50_REMOTE_TEMP,
2112                              SENSORS_THMC50_REMOTE_TEMP, RW, 
2113                              THMC50_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
2114    { SENSORS_THMC50_REMOTE_TEMP_OVER, "remote_temp_over", 
2115                              SENSORS_THMC50_REMOTE_TEMP,
2116                              SENSORS_THMC50_REMOTE_TEMP, RW,
2117                              THMC50_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
2118    { SENSORS_THMC50_INTER_MASK, "analog output", NOMAP,
2119                              NOMAP, RW,
2120                              THMC50_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
2121    { SENSORS_THMC50_INTER, "interrupts", NOMAP,
2122                              NOMAP, R,
2123                              THMC50_SYSCTL_INTER, VALUE(1), 0 },
2124    { SENSORS_THMC50_INTER_MASK, "interrupt mask", NOMAP,
2125                              NOMAP, RW,
2126                              THMC50_SYSCTL_INTER_MASK, VALUE(1), 0 },
2127    { SENSORS_THMC50_DIE_CODE, "die_code", NOMAP,
2128                              NOMAP, R,
2129                              THMC50_SYSCTL_DIE_CODE, VALUE(1), 0 },
2130    { 0 }
2131  };
2132
2133static sensors_chip_feature adm1025_features[] =
2134  { 
2135    { SENSORS_ADM1025_IN0, "in0", NOMAP, NOMAP, 
2136                        R, ADM1025_SYSCTL_IN0, VALUE(3), 2 },
2137    { SENSORS_ADM1025_IN1, "in1", NOMAP, NOMAP,
2138                        R, ADM1025_SYSCTL_IN1, VALUE(3), 2 },
2139    { SENSORS_ADM1025_IN2, "in2", NOMAP, NOMAP,
2140                        R, ADM1025_SYSCTL_IN2, VALUE(3), 2 },
2141    { SENSORS_ADM1025_IN3, "in3", NOMAP, NOMAP,
2142                        R, ADM1025_SYSCTL_IN3, VALUE(3), 2 },
2143    { SENSORS_ADM1025_IN4, "in4", NOMAP, NOMAP,
2144                        R, ADM1025_SYSCTL_IN4, VALUE(3), 2 },
2145    { SENSORS_ADM1025_IN5, "in5", NOMAP, NOMAP,
2146                        R, ADM1025_SYSCTL_IN5, VALUE(3), 2 },
2147    { SENSORS_ADM1025_IN0_MIN, "in0_min", SENSORS_ADM1025_IN0, 
2148                        SENSORS_ADM1025_IN0, RW, 
2149                        ADM1025_SYSCTL_IN0, VALUE(1), 2 },
2150    { SENSORS_ADM1025_IN1_MIN, "in1_min", SENSORS_ADM1025_IN1, 
2151                        SENSORS_ADM1025_IN1, RW, 
2152                        ADM1025_SYSCTL_IN1, VALUE(1), 2 },
2153    { SENSORS_ADM1025_IN2_MIN, "in2_min", SENSORS_ADM1025_IN2, 
2154                        SENSORS_ADM1025_IN2, RW, 
2155                        ADM1025_SYSCTL_IN2, VALUE(1), 2 },
2156    { SENSORS_ADM1025_IN3_MIN, "in3_min", SENSORS_ADM1025_IN3, 
2157                        SENSORS_ADM1025_IN3, RW, 
2158                        ADM1025_SYSCTL_IN3, VALUE(1), 2 },
2159    { SENSORS_ADM1025_IN4_MIN, "in4_min", SENSORS_ADM1025_IN4, 
2160                        SENSORS_ADM1025_IN4, RW, 
2161                        ADM1025_SYSCTL_IN4, VALUE(1), 2 },
2162    { SENSORS_ADM1025_IN5_MIN, "in5_min", SENSORS_ADM1025_IN5, 
2163                        SENSORS_ADM1025_IN5, RW, 
2164                        ADM1025_SYSCTL_IN5, VALUE(1), 2 },
2165    { SENSORS_ADM1025_IN0_MAX, "in0_max", SENSORS_ADM1025_IN0, 
2166                        SENSORS_ADM1025_IN0, RW,
2167                        ADM1025_SYSCTL_IN0, VALUE(2), 2 },
2168    { SENSORS_ADM1025_IN1_MAX, "in1_max", SENSORS_ADM1025_IN1, 
2169                        SENSORS_ADM1025_IN1, RW, 
2170                        ADM1025_SYSCTL_IN1, VALUE(2), 2 },
2171    { SENSORS_ADM1025_IN2_MAX, "in2_max", SENSORS_ADM1025_IN2, 
2172                        SENSORS_ADM1025_IN2, RW, 
2173                        ADM1025_SYSCTL_IN2, VALUE(2), 2 },
2174    { SENSORS_ADM1025_IN3_MAX, "in3_max", SENSORS_ADM1025_IN3, 
2175                        SENSORS_ADM1025_IN3, RW, 
2176                        ADM1025_SYSCTL_IN3, VALUE(2), 2 },
2177    { SENSORS_ADM1025_IN4_MAX, "in4_max", SENSORS_ADM1025_IN4, 
2178                        SENSORS_ADM1025_IN4, RW,
2179                        ADM1025_SYSCTL_IN4, VALUE(2), 2 },
2180    { SENSORS_ADM1025_IN5_MAX, "in5_max", SENSORS_ADM1025_IN5, 
2181                        SENSORS_ADM1025_IN5, RW, 
2182                        ADM1025_SYSCTL_IN5, VALUE(2), 2 },
2183    { SENSORS_ADM1025_TEMP1, "temp1", NOMAP, NOMAP,
2184                         R, ADM1025_SYSCTL_RTEMP, VALUE(3), 1 },
2185    { SENSORS_ADM1025_TEMP1_LOW, "temp1_low", SENSORS_ADM1025_TEMP1,
2186                         SENSORS_ADM1025_TEMP1, RW, 
2187                         ADM1025_SYSCTL_RTEMP, VALUE(2), 1 },
2188    { SENSORS_ADM1025_TEMP1_HIGH, "temp1_high", SENSORS_ADM1025_TEMP1,
2189                         SENSORS_ADM1025_TEMP1, RW, 
2190                         ADM1025_SYSCTL_RTEMP, VALUE(1), 1 },
2191    { SENSORS_ADM1025_TEMP2, "temp2", NOMAP, NOMAP,
2192                         R, ADM1025_SYSCTL_TEMP, VALUE(3), 1 },
2193    { SENSORS_ADM1025_TEMP2_LOW, "temp2_low", SENSORS_ADM1025_TEMP2,
2194                         SENSORS_ADM1025_TEMP2, RW, 
2195                         ADM1025_SYSCTL_TEMP, VALUE(2), 1 },
2196    { SENSORS_ADM1025_TEMP2_HIGH, "temp2_high", SENSORS_ADM1025_TEMP2,
2197                         SENSORS_ADM1025_TEMP2, RW, 
2198                         ADM1025_SYSCTL_TEMP, VALUE(1), 1 },
2199    { SENSORS_ADM1025_VID, "vid", NOMAP, NOMAP,
2200                         R, ADM1025_SYSCTL_VID, VALUE(1), 3 },
2201    { SENSORS_ADM1025_VRM, "vrm", NOMAP, NOMAP,
2202                         RW, ADM1025_SYSCTL_VRM, VALUE(1), 1 },
2203    { SENSORS_ADM1025_ALARMS, "alarms", NOMAP, NOMAP, 
2204                         R, ADM1025_SYSCTL_ALARMS, VALUE(1), 0 },
2205    { 0 }
2206  };
2207
2208
2209static sensors_chip_feature adm1026_features[] = {
2210    { SENSORS_ADM1026_ALARMS, "alarms",
2211                NOMAP, NOMAP, R,
2212                ADM1026_SYSCTL_ALARMS, VALUE(1), 0 },
2213    { SENSORS_ADM1026_ALARM_MASK, "alarm_mask",
2214                SENSORS_ADM1026_ALARMS, NOMAP, R,
2215                ADM1026_SYSCTL_ALARM_MASK, VALUE(1), 0 },
2216    { SENSORS_ADM1026_GPIO, "gpio",
2217                NOMAP, NOMAP, R,
2218                ADM1026_SYSCTL_GPIO, VALUE(1), 0 },
2219    { SENSORS_ADM1026_GPIO_MASK, "gpio_mask",
2220                SENSORS_ADM1026_GPIO, NOMAP, R,
2221                ADM1026_SYSCTL_GPIO_MASK, VALUE(1), 0 },
2222    { SENSORS_ADM1026_VID, "vid",
2223                NOMAP, NOMAP, RW,
2224                ADM1026_SYSCTL_VID, VALUE(1), 3 },
2225    { SENSORS_ADM1026_VRM, "vrm",
2226                NOMAP, NOMAP, RW,
2227                ADM1026_SYSCTL_VRM, VALUE(1), 1 },
2228    { SENSORS_ADM1026_PWM, "pwm",
2229                NOMAP, NOMAP, RW,
2230                ADM1026_SYSCTL_PWM, VALUE(1), 0 },
2231    { SENSORS_ADM1026_AFC_PWM, "afc_pwm",
2232                NOMAP, NOMAP, RW,
2233                ADM1026_SYSCTL_PWM, VALUE(1), 0 },
2234    { SENSORS_ADM1026_DAC, "analog_out",
2235                NOMAP, NOMAP, RW,
2236                ADM1026_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
2237    { SENSORS_ADM1026_AFC_DAC, "afc_analog_out",
2238                SENSORS_ADM1026_DAC, NOMAP, RW,
2239                ADM1026_SYSCTL_AFC, VALUE(2), 0 },
2240
2241    { SENSORS_ADM1026_IN0, "in0",
2242                NOMAP, NOMAP, R,
2243                ADM1026_SYSCTL_IN0, VALUE(3), 3 },
2244    { SENSORS_ADM1026_IN0_MIN, "in0_min",
2245                SENSORS_ADM1026_IN0, SENSORS_ADM1026_IN0, RW,
2246                ADM1026_SYSCTL_IN0, VALUE(1), 3 },
2247    { SENSORS_ADM1026_IN0_MAX, "in0_max",
2248                SENSORS_ADM1026_IN0, SENSORS_ADM1026_IN0, RW,
2249                ADM1026_SYSCTL_IN0, VALUE(2), 3 },
2250    { SENSORS_ADM1026_IN1, "in1",
2251                NOMAP, NOMAP, R,
2252                ADM1026_SYSCTL_IN1, VALUE(3), 3 },
2253    { SENSORS_ADM1026_IN1_MIN, "in1_min",
2254                SENSORS_ADM1026_IN1, SENSORS_ADM1026_IN1, RW,
2255                ADM1026_SYSCTL_IN1, VALUE(1), 3 },
2256    { SENSORS_ADM1026_IN1_MAX, "in1_max",
2257                SENSORS_ADM1026_IN1, SENSORS_ADM1026_IN1, RW,
2258                ADM1026_SYSCTL_IN1, VALUE(2), 3 },
2259    { SENSORS_ADM1026_IN2, "in2",
2260                NOMAP, NOMAP, R,
2261                ADM1026_SYSCTL_IN2, VALUE(3), 3 },
2262    { SENSORS_ADM1026_IN2_MIN, "in2_min",
2263                SENSORS_ADM1026_IN2, SENSORS_ADM1026_IN2, RW,
2264                ADM1026_SYSCTL_IN2, VALUE(1), 3 },
2265    { SENSORS_ADM1026_IN2_MAX, "in2_max",
2266                SENSORS_ADM1026_IN2, SENSORS_ADM1026_IN2, RW,
2267                ADM1026_SYSCTL_IN2, VALUE(2), 3 },
2268    { SENSORS_ADM1026_IN3, "in3",
2269                NOMAP, NOMAP, R,
2270                ADM1026_SYSCTL_IN3, VALUE(3), 3 },
2271    { SENSORS_ADM1026_IN3_MIN, "in3_min",
2272                SENSORS_ADM1026_IN3, SENSORS_ADM1026_IN3, RW,
2273                ADM1026_SYSCTL_IN3, VALUE(1), 3 },
2274    { SENSORS_ADM1026_IN3_MAX, "in3_max",
2275                SENSORS_ADM1026_IN3, SENSORS_ADM1026_IN3, RW,
2276                ADM1026_SYSCTL_IN3, VALUE(2), 3 },
2277    { SENSORS_ADM1026_IN4, "in4",
2278                NOMAP, NOMAP, R,
2279                ADM1026_SYSCTL_IN4, VALUE(3), 3 },
2280    { SENSORS_ADM1026_IN4_MIN, "in4_min",
2281                SENSORS_ADM1026_IN4, SENSORS_ADM1026_IN4, RW,
2282                ADM1026_SYSCTL_IN4, VALUE(1), 3 },
2283    { SENSORS_ADM1026_IN4_MAX, "in4_max",
2284                SENSORS_ADM1026_IN4, SENSORS_ADM1026_IN4, RW,
2285                ADM1026_SYSCTL_IN4, VALUE(2), 3 },
2286    { SENSORS_ADM1026_IN5, "in5",
2287                NOMAP, NOMAP, R,
2288                ADM1026_SYSCTL_IN5, VALUE(3), 3 },
2289    { SENSORS_ADM1026_IN5_MIN, "in5_min",
2290                SENSORS_ADM1026_IN5, SENSORS_ADM1026_IN5, RW,
2291                ADM1026_SYSCTL_IN5, VALUE(1), 3 },
2292    { SENSORS_ADM1026_IN5_MAX, "in5_max",
2293                SENSORS_ADM1026_IN5, SENSORS_ADM1026_IN5, RW,
2294                ADM1026_SYSCTL_IN5, VALUE(2), 3 },
2295    { SENSORS_ADM1026_IN6, "in6",
2296                NOMAP, NOMAP, R,
2297                ADM1026_SYSCTL_IN6, VALUE(3), 3 },
2298    { SENSORS_ADM1026_IN6_MIN, "in6_min",
2299                SENSORS_ADM1026_IN6, SENSORS_ADM1026_IN6, RW,
2300                ADM1026_SYSCTL_IN6, VALUE(1), 3 },
2301    { SENSORS_ADM1026_IN6_MAX, "in6_max",
2302                SENSORS_ADM1026_IN6, SENSORS_ADM1026_IN6, RW,
2303                ADM1026_SYSCTL_IN6, VALUE(2), 3 },
2304    { SENSORS_ADM1026_IN7, "in7",
2305                NOMAP, NOMAP, R,
2306                ADM1026_SYSCTL_IN7, VALUE(3), 3 },
2307    { SENSORS_ADM1026_IN7_MIN, "in7_min",
2308                SENSORS_ADM1026_IN7, SENSORS_ADM1026_IN7, RW,
2309                ADM1026_SYSCTL_IN7, VALUE(1), 3 },
2310    { SENSORS_ADM1026_IN7_MAX, "in7_max",
2311                SENSORS_ADM1026_IN7, SENSORS_ADM1026_IN7, RW,
2312                ADM1026_SYSCTL_IN7, VALUE(2), 3 },
2313    { SENSORS_ADM1026_IN8, "in8",
2314                NOMAP, NOMAP, R,
2315                ADM1026_SYSCTL_IN8, VALUE(3), 3 },
2316    { SENSORS_ADM1026_IN8_MIN, "in8_min",
2317                SENSORS_ADM1026_IN8, SENSORS_ADM1026_IN8, RW,
2318                ADM1026_SYSCTL_IN8, VALUE(1), 3 },
2319    { SENSORS_ADM1026_IN8_MAX, "in8_max",
2320                SENSORS_ADM1026_IN8, SENSORS_ADM1026_IN8, RW,
2321                ADM1026_SYSCTL_IN8, VALUE(2), 3 },
2322    { SENSORS_ADM1026_IN9, "in9",
2323                NOMAP, NOMAP, R,
2324                ADM1026_SYSCTL_IN9, VALUE(3), 3 },
2325    { SENSORS_ADM1026_IN9_MIN, "in9_min",
2326                SENSORS_ADM1026_IN9, SENSORS_ADM1026_IN9, RW,
2327                ADM1026_SYSCTL_IN9, VALUE(1), 3 },
2328    { SENSORS_ADM1026_IN9_MAX, "in9_max",
2329                SENSORS_ADM1026_IN9, SENSORS_ADM1026_IN9, RW,
2330                ADM1026_SYSCTL_IN9, VALUE(2), 3 },
2331    { SENSORS_ADM1026_IN10, "in10",
2332                NOMAP, NOMAP, R,
2333                ADM1026_SYSCTL_IN10, VALUE(3), 3 },
2334    { SENSORS_ADM1026_IN10_MIN, "in10_min",
2335                SENSORS_ADM1026_IN10, SENSORS_ADM1026_IN10, RW,
2336                ADM1026_SYSCTL_IN10, VALUE(1), 3 },
2337    { SENSORS_ADM1026_IN10_MAX, "in10_max",
2338                SENSORS_ADM1026_IN10, SENSORS_ADM1026_IN10, RW,
2339                ADM1026_SYSCTL_IN10, VALUE(2), 3 },
2340    { SENSORS_ADM1026_IN11, "in11",
2341                NOMAP, NOMAP, R,
2342                ADM1026_SYSCTL_IN11, VALUE(3), 3 },
2343    { SENSORS_ADM1026_IN11_MIN, "in11_min",
2344                SENSORS_ADM1026_IN11, SENSORS_ADM1026_IN11, RW,
2345                ADM1026_SYSCTL_IN11, VALUE(1), 3 },
2346    { SENSORS_ADM1026_IN11_MAX, "in11_max",
2347                SENSORS_ADM1026_IN11, SENSORS_ADM1026_IN11, RW,
2348                ADM1026_SYSCTL_IN11, VALUE(2), 3 },
2349    { SENSORS_ADM1026_IN12, "in12",
2350                NOMAP, NOMAP, R,
2351                ADM1026_SYSCTL_IN12, VALUE(3), 3 },
2352    { SENSORS_ADM1026_IN12_MIN, "in12_min",
2353                SENSORS_ADM1026_IN12, SENSORS_ADM1026_IN12, RW,
2354                ADM1026_SYSCTL_IN12, VALUE(1), 3 },
2355    { SENSORS_ADM1026_IN12_MAX, "in12_max",
2356                SENSORS_ADM1026_IN12, SENSORS_ADM1026_IN12, RW,
2357                ADM1026_SYSCTL_IN12, VALUE(2), 3 },
2358    { SENSORS_ADM1026_IN13, "in13",
2359                NOMAP, NOMAP, R,
2360                ADM1026_SYSCTL_IN13, VALUE(3), 3 },
2361    { SENSORS_ADM1026_IN13_MIN, "in13_min",
2362                SENSORS_ADM1026_IN13, SENSORS_ADM1026_IN13, RW,
2363                ADM1026_SYSCTL_IN13, VALUE(1), 3 },
2364    { SENSORS_ADM1026_IN13_MAX, "in13_max",
2365                SENSORS_ADM1026_IN13, SENSORS_ADM1026_IN13, RW,
2366                ADM1026_SYSCTL_IN13, VALUE(2), 3 },
2367    { SENSORS_ADM1026_IN14, "in14",
2368                NOMAP, NOMAP, R,
2369                ADM1026_SYSCTL_IN14, VALUE(3), 3 },
2370    { SENSORS_ADM1026_IN14_MIN, "in14_min",
2371                SENSORS_ADM1026_IN14, SENSORS_ADM1026_IN14, RW,
2372                ADM1026_SYSCTL_IN14, VALUE(1), 3 },
2373    { SENSORS_ADM1026_IN14_MAX, "in14_max",
2374                SENSORS_ADM1026_IN14, SENSORS_ADM1026_IN14, RW,
2375                ADM1026_SYSCTL_IN14, VALUE(2), 3 },
2376    { SENSORS_ADM1026_IN15, "in15",
2377                NOMAP, NOMAP, R,
2378                ADM1026_SYSCTL_IN15, VALUE(3), 3 },
2379    { SENSORS_ADM1026_IN15_MIN, "in15_min",
2380                SENSORS_ADM1026_IN15, SENSORS_ADM1026_IN15, RW,
2381                ADM1026_SYSCTL_IN15, VALUE(1), 3 },
2382    { SENSORS_ADM1026_IN15_MAX, "in15_max",
2383                SENSORS_ADM1026_IN15, SENSORS_ADM1026_IN15, RW,
2384                ADM1026_SYSCTL_IN15, VALUE(2), 3 },
2385    { SENSORS_ADM1026_IN16, "in16",
2386                NOMAP, NOMAP, R,
2387                ADM1026_SYSCTL_IN16, VALUE(3), 3 },
2388    { SENSORS_ADM1026_IN16_MIN, "in16_min",
2389                SENSORS_ADM1026_IN16, SENSORS_ADM1026_IN16, RW,
2390                ADM1026_SYSCTL_IN16, VALUE(1), 3 },
2391    { SENSORS_ADM1026_IN16_MAX, "in16_max",
2392                SENSORS_ADM1026_IN16, SENSORS_ADM1026_IN16, RW,
2393                ADM1026_SYSCTL_IN16, VALUE(2), 3 },
2394    { SENSORS_ADM1026_FAN0, "fan0",
2395                NOMAP, NOMAP, R,
2396                ADM1026_SYSCTL_FAN0, VALUE(2), 0 },
2397    { SENSORS_ADM1026_FAN0_MIN, "fan0_min",
2398                SENSORS_ADM1026_FAN0, SENSORS_ADM1026_FAN0, RW,
2399                ADM1026_SYSCTL_FAN0, VALUE(1), 0 },
2400    { SENSORS_ADM1026_FAN0_DIV, "fan0_div",
2401                SENSORS_ADM1026_FAN0, NOMAP, RW,
2402                ADM1026_SYSCTL_FAN_DIV, VALUE(1), 0 },
2403    { SENSORS_ADM1026_FAN1, "fan1",
2404                NOMAP, NOMAP, R,
2405                ADM1026_SYSCTL_FAN1, VALUE(2), 0 },
2406    { SENSORS_ADM1026_FAN1_MIN, "fan1_min",
2407                SENSORS_ADM1026_FAN1, SENSORS_ADM1026_FAN1, RW,
2408                ADM1026_SYSCTL_FAN1, VALUE(1), 0 },
2409    { SENSORS_ADM1026_FAN1_DIV, "fan1_div",
2410                SENSORS_ADM1026_FAN1, NOMAP, RW,
2411                ADM1026_SYSCTL_FAN_DIV, VALUE(2), 0 },
2412    { SENSORS_ADM1026_FAN2, "fan2",
2413                NOMAP, NOMAP, R,
2414                ADM1026_SYSCTL_FAN2, VALUE(2), 0 },
2415    { SENSORS_ADM1026_FAN2_MIN, "fan2_min",
2416                SENSORS_ADM1026_FAN2, SENSORS_ADM1026_FAN2, RW,
2417                ADM1026_SYSCTL_FAN2, VALUE(1), 0 },
2418    { SENSORS_ADM1026_FAN2_DIV, "fan2_div",
2419                SENSORS_ADM1026_FAN2, NOMAP, RW,
2420                ADM1026_SYSCTL_FAN_DIV, VALUE(3), 0 },
2421    { SENSORS_ADM1026_FAN3, "fan3",
2422                NOMAP, NOMAP, R,
2423                ADM1026_SYSCTL_FAN3, VALUE(2), 0 },
2424    { SENSORS_ADM1026_FAN3_MIN, "fan3_min",
2425                SENSORS_ADM1026_FAN3, SENSORS_ADM1026_FAN3, RW,
2426                ADM1026_SYSCTL_FAN3, VALUE(1), 0 },
2427    { SENSORS_ADM1026_FAN3_DIV, "fan3_div",
2428                SENSORS_ADM1026_FAN3, NOMAP, RW,
2429                ADM1026_SYSCTL_FAN_DIV, VALUE(4), 0 },
2430    { SENSORS_ADM1026_FAN4, "fan4",
2431                NOMAP, NOMAP, R,
2432                ADM1026_SYSCTL_FAN4, VALUE(2), 0 },
2433    { SENSORS_ADM1026_FAN4_MIN, "fan4_min",
2434                SENSORS_ADM1026_FAN4, SENSORS_ADM1026_FAN4, RW,
2435                ADM1026_SYSCTL_FAN4, VALUE(1), 0 },
2436    { SENSORS_ADM1026_FAN4_DIV, "fan4_div",
2437                SENSORS_ADM1026_FAN4, NOMAP, RW,
2438                ADM1026_SYSCTL_FAN_DIV, VALUE(5), 0 },
2439    { SENSORS_ADM1026_FAN5, "fan5",
2440                NOMAP, NOMAP, R,
2441                ADM1026_SYSCTL_FAN5, VALUE(2), 0 },
2442    { SENSORS_ADM1026_FAN5_MIN, "fan5_min",
2443                SENSORS_ADM1026_FAN5, SENSORS_ADM1026_FAN5, RW,
2444                ADM1026_SYSCTL_FAN5, VALUE(1), 0 },
2445    { SENSORS_ADM1026_FAN5_DIV, "fan5_div",
2446                SENSORS_ADM1026_FAN5, NOMAP, RW,
2447                ADM1026_SYSCTL_FAN_DIV, VALUE(6), 0 },
2448    { SENSORS_ADM1026_FAN6, "fan6",
2449                NOMAP, NOMAP, R,
2450                ADM1026_SYSCTL_FAN6, VALUE(2), 0 },
2451    { SENSORS_ADM1026_FAN6_MIN, "fan6_min",
2452                SENSORS_ADM1026_FAN6, SENSORS_ADM1026_FAN6, RW,
2453                ADM1026_SYSCTL_FAN6, VALUE(1), 0 },
2454    { SENSORS_ADM1026_FAN6_DIV, "fan6_div",
2455                SENSORS_ADM1026_FAN6, NOMAP, RW,
2456                ADM1026_SYSCTL_FAN_DIV, VALUE(7), 0 },
2457    { SENSORS_ADM1026_FAN7, "fan7",
2458                NOMAP, NOMAP, R,
2459                ADM1026_SYSCTL_FAN7, VALUE(2), 0 },
2460    { SENSORS_ADM1026_FAN7_MIN, "fan7_min",
2461                SENSORS_ADM1026_FAN7, SENSORS_ADM1026_FAN7, RW,
2462                ADM1026_SYSCTL_FAN7, VALUE(1), 0 },
2463    { SENSORS_ADM1026_FAN7_DIV, "fan7_div",
2464                SENSORS_ADM1026_FAN7, NOMAP, RW,
2465                ADM1026_SYSCTL_FAN_DIV, VALUE(8), 0 },
2466    { SENSORS_ADM1026_TEMP1, "temp1",
2467                NOMAP, NOMAP, R,
2468                ADM1026_SYSCTL_TEMP1, VALUE(3), 0 },
2469    { SENSORS_ADM1026_TEMP1_MIN, "temp1_min",
2470                SENSORS_ADM1026_TEMP1, SENSORS_ADM1026_TEMP1, RW,
2471                ADM1026_SYSCTL_TEMP1, VALUE(1), 0 },
2472    { SENSORS_ADM1026_TEMP1_MAX, "temp1_max",
2473                SENSORS_ADM1026_TEMP1, SENSORS_ADM1026_TEMP1, RW,
2474                ADM1026_SYSCTL_TEMP1, VALUE(2), 0 },
2475    { SENSORS_ADM1026_TEMP1_OFFSET, "temp1_offset",
2476                SENSORS_ADM1026_TEMP1, NOMAP, RW,
2477                ADM1026_SYSCTL_TEMP_OFFSET1, VALUE(1), 0 },
2478    { SENSORS_ADM1026_TEMP1_TMIN, "temp1_tmin",
2479                SENSORS_ADM1026_TEMP1, SENSORS_ADM1026_TEMP1, RW,
2480                ADM1026_SYSCTL_TEMP_TMIN1, VALUE(1), 0 },
2481    { SENSORS_ADM1026_TEMP1_THERM, "temp1_therm",
2482                SENSORS_ADM1026_TEMP1, SENSORS_ADM1026_TEMP1, RW,
2483                ADM1026_SYSCTL_TEMP_THERM1, VALUE(1), 0 },
2484    { SENSORS_ADM1026_TEMP2, "temp2",
2485                NOMAP, NOMAP, R,
2486                ADM1026_SYSCTL_TEMP2, VALUE(3), 0 },
2487    { SENSORS_ADM1026_TEMP2_MIN, "temp2_min",
2488                SENSORS_ADM1026_TEMP2, SENSORS_ADM1026_TEMP2, RW,
2489                ADM1026_SYSCTL_TEMP2, VALUE(1), 0 },
2490    { SENSORS_ADM1026_TEMP2_MAX, "temp2_max",
2491                SENSORS_ADM1026_TEMP2, SENSORS_ADM1026_TEMP2, RW,
2492                ADM1026_SYSCTL_TEMP2, VALUE(2), 0 },
2493    { SENSORS_ADM1026_TEMP2_OFFSET, "temp2_offset",
2494                SENSORS_ADM1026_TEMP2, NOMAP, RW,
2495                ADM1026_SYSCTL_TEMP_OFFSET2, VALUE(1), 0 },
2496    { SENSORS_ADM1026_TEMP2_TMIN, "temp2_tmin",
2497                SENSORS_ADM1026_TEMP2, SENSORS_ADM1026_TEMP2, RW,
2498                ADM1026_SYSCTL_TEMP_TMIN2, VALUE(1), 0 },
2499    { SENSORS_ADM1026_TEMP2_THERM, "temp2_therm",
2500                SENSORS_ADM1026_TEMP2, SENSORS_ADM1026_TEMP2, RW,
2501                ADM1026_SYSCTL_TEMP_THERM2, VALUE(1), 0 },
2502    { SENSORS_ADM1026_TEMP3, "temp3",
2503                NOMAP, NOMAP, R,
2504                ADM1026_SYSCTL_TEMP3, VALUE(3), 0 },
2505    { SENSORS_ADM1026_TEMP3_MIN, "temp3_min",
2506                SENSORS_ADM1026_TEMP3, SENSORS_ADM1026_TEMP3, RW,
2507                ADM1026_SYSCTL_TEMP3, VALUE(1), 0 },
2508    { SENSORS_ADM1026_TEMP3_MAX, "temp3_max",
2509                SENSORS_ADM1026_TEMP3, SENSORS_ADM1026_TEMP3, RW,
2510                ADM1026_SYSCTL_TEMP3, VALUE(2), 0 },
2511    { SENSORS_ADM1026_TEMP3_OFFSET, "temp3_offset",
2512                SENSORS_ADM1026_TEMP3, NOMAP, RW,
2513                ADM1026_SYSCTL_TEMP_OFFSET3, VALUE(1), 0 },
2514    { SENSORS_ADM1026_TEMP3_TMIN, "temp3_tmin",
2515                SENSORS_ADM1026_TEMP3, SENSORS_ADM1026_TEMP3, RW,
2516                ADM1026_SYSCTL_TEMP_TMIN3, VALUE(1), 0 },
2517    { SENSORS_ADM1026_TEMP3_THERM, "temp3_therm",
2518                SENSORS_ADM1026_TEMP3, SENSORS_ADM1026_TEMP3, RW,
2519                ADM1026_SYSCTL_TEMP_THERM3, VALUE(1), 0 },
2520    { 0 }
2521  };
2522
2523
2524static sensors_chip_feature via686a_features[] =
2525  { 
2526    { SENSORS_VIA686A_IN0, "2.0V", NOMAP, NOMAP, 
2527                        R, VIA686A_SYSCTL_IN0, VALUE(3), 2, "in0_input", 3 },
2528    { SENSORS_VIA686A_IN1, "2.5V", NOMAP, NOMAP,
2529                        R, VIA686A_SYSCTL_IN1, VALUE(3), 2, "in1_input", 3 },
2530    { SENSORS_VIA686A_IN2, "3.3V", NOMAP, NOMAP,
2531                        R, VIA686A_SYSCTL_IN2, VALUE(3), 2, "in2_input", 3 },
2532    { SENSORS_VIA686A_IN3, "5.0V", NOMAP, NOMAP,
2533                        R, VIA686A_SYSCTL_IN3, VALUE(3), 2, "in3_input", 3 },
2534    { SENSORS_VIA686A_IN4, "12V", NOMAP, NOMAP,
2535                        R, VIA686A_SYSCTL_IN4, VALUE(3), 2, "in4_input", 3 },
2536    { SENSORS_VIA686A_IN0_MIN, "in0_min", SENSORS_VIA686A_IN0,
2537                            SENSORS_VIA686A_IN0,
2538                            RW, VIA686A_SYSCTL_IN0, VALUE(1), 2 },
2539    { SENSORS_VIA686A_IN1_MIN, "in1_min", SENSORS_VIA686A_IN1,
2540                            SENSORS_VIA686A_IN1,
2541                            RW, VIA686A_SYSCTL_IN1, VALUE(1), 2 },
2542    { SENSORS_VIA686A_IN2_MIN, "in2_min", SENSORS_VIA686A_IN2,
2543                            SENSORS_VIA686A_IN2,
2544                            RW, VIA686A_SYSCTL_IN2, VALUE(1), 2 },
2545    { SENSORS_VIA686A_IN3_MIN, "in3_min", SENSORS_VIA686A_IN3,
2546                            SENSORS_VIA686A_IN3,
2547                            RW, VIA686A_SYSCTL_IN3, VALUE(1), 2 },
2548    { SENSORS_VIA686A_IN4_MIN, "in4_min", SENSORS_VIA686A_IN4,
2549                            SENSORS_VIA686A_IN4,
2550                            RW, VIA686A_SYSCTL_IN4, VALUE(1), 2 },
2551    { SENSORS_VIA686A_IN0_MAX, "in0_max", SENSORS_VIA686A_IN0,
2552                            SENSORS_VIA686A_IN0,
2553                            RW, VIA686A_SYSCTL_IN0, VALUE(2), 2 },
2554    { SENSORS_VIA686A_IN1_MAX, "in1_max", SENSORS_VIA686A_IN1,
2555                            SENSORS_VIA686A_IN1,
2556                            RW, VIA686A_SYSCTL_IN1, VALUE(2), 2 },
2557    { SENSORS_VIA686A_IN2_MAX, "in2_max", SENSORS_VIA686A_IN2,
2558                            SENSORS_VIA686A_IN2,
2559                            RW, VIA686A_SYSCTL_IN2, VALUE(2), 2 },
2560    { SENSORS_VIA686A_IN3_MAX, "in3_max", SENSORS_VIA686A_IN3,
2561                            SENSORS_VIA686A_IN3,
2562                            RW, VIA686A_SYSCTL_IN3, VALUE(2), 2 },
2563    { SENSORS_VIA686A_IN4_MAX, "in4_max", SENSORS_VIA686A_IN4,
2564                            SENSORS_VIA686A_IN4,
2565                            RW, VIA686A_SYSCTL_IN4, VALUE(2), 2 },
2566    { SENSORS_VIA686A_FAN1, "fan1", NOMAP, NOMAP,
2567                         R, VIA686A_SYSCTL_FAN1, VALUE(2), 0 },
2568    { SENSORS_VIA686A_FAN2, "fan2", NOMAP, NOMAP,
2569                         R, VIA686A_SYSCTL_FAN2, VALUE(2), 0 },
2570    { SENSORS_VIA686A_FAN1_MIN, "fan1_min", SENSORS_VIA686A_FAN1,
2571                             SENSORS_VIA686A_FAN1,
2572                             RW, VIA686A_SYSCTL_FAN1, VALUE(1), 0 },
2573    { SENSORS_VIA686A_FAN2_MIN, "fan2_min", SENSORS_VIA686A_FAN2,
2574                             SENSORS_VIA686A_FAN2,
2575                             RW, VIA686A_SYSCTL_FAN2, VALUE(1), 0 },
2576    { SENSORS_VIA686A_TEMP, "temp1", NOMAP, NOMAP,
2577                         R, VIA686A_SYSCTL_TEMP, VALUE(3), 1 },
2578    { SENSORS_VIA686A_TEMP_HYST, "temp1_hyst", SENSORS_VIA686A_TEMP,
2579                              SENSORS_VIA686A_TEMP, RW, 
2580                              VIA686A_SYSCTL_TEMP, VALUE(2), 1 },
2581    { SENSORS_VIA686A_TEMP_OVER, "temp1_over", SENSORS_VIA686A_TEMP,
2582                              SENSORS_VIA686A_TEMP, RW, 
2583                              VIA686A_SYSCTL_TEMP, VALUE(1), 1 },
2584    { SENSORS_VIA686A_TEMP2, "temp2", NOMAP, NOMAP,
2585                         R, VIA686A_SYSCTL_TEMP2, VALUE(3), 1 },
2586    { SENSORS_VIA686A_TEMP2_HYST, "temp2_hyst", SENSORS_VIA686A_TEMP2,
2587                              SENSORS_VIA686A_TEMP2, RW, 
2588                              VIA686A_SYSCTL_TEMP2, VALUE(2), 1 },
2589    { SENSORS_VIA686A_TEMP2_OVER, "temp2_over", SENSORS_VIA686A_TEMP2,
2590                              SENSORS_VIA686A_TEMP2, RW, 
2591                              VIA686A_SYSCTL_TEMP2, VALUE(1), 1 },
2592    { SENSORS_VIA686A_TEMP3, "temp3", NOMAP, NOMAP,
2593                         R, VIA686A_SYSCTL_TEMP3, VALUE(3), 1 },
2594    { SENSORS_VIA686A_TEMP3_HYST, "temp3_hyst", SENSORS_VIA686A_TEMP3,
2595                              SENSORS_VIA686A_TEMP3, RW, 
2596                              VIA686A_SYSCTL_TEMP3, VALUE(2), 1 },
2597    { SENSORS_VIA686A_TEMP3_OVER, "temp3_over", SENSORS_VIA686A_TEMP3,
2598                              SENSORS_VIA686A_TEMP3, RW, 
2599                              VIA686A_SYSCTL_TEMP3, VALUE(1), 1 },
2600    { SENSORS_VIA686A_FAN1_DIV, "fan1_div", SENSORS_VIA686A_FAN1,
2601                             NOMAP,
2602                             RW, VIA686A_SYSCTL_FAN_DIV, VALUE(1), 
2603                             0 },
2604    { SENSORS_VIA686A_FAN2_DIV, "fan2_div", SENSORS_VIA686A_FAN2,
2605                             NOMAP,
2606                             RW, VIA686A_SYSCTL_FAN_DIV, VALUE(2), 
2607                             0 },
2608    { SENSORS_VIA686A_ALARMS, "alarms", NOMAP, NOMAP, 
2609                           R, VIA686A_SYSCTL_ALARMS, VALUE(1) },
2610    { 0 }
2611  };
2612
2613static sensors_chip_feature ddcmon_features[] =
2614  {
2615    { SENSORS_DDCMON_MAN_ID, "Manufacturer ID",
2616                         NOMAP, NOMAP,
2617                         R, DDCMON_SYSCTL_ID, VALUE(1), 0 },
2618    { SENSORS_DDCMON_PROD_ID, "Model Number",
2619                         NOMAP, NOMAP,
2620                         R, DDCMON_SYSCTL_ID, VALUE(2), 0 },
2621    { SENSORS_DDCMON_VERSIZE, "Monitor Size (cm)",
2622                         NOMAP, NOMAP,
2623                         R, DDCMON_SYSCTL_SIZE, VALUE(1), 0 },
2624    { SENSORS_DDCMON_HORSIZE, "hsize",
2625                         SENSORS_DDCMON_VERSIZE, NOMAP,
2626                         R, DDCMON_SYSCTL_SIZE, VALUE(2), 0 },
2627    { SENSORS_DDCMON_VERSYNCMIN, "Vertical Sync (Hz)",
2628                         NOMAP, NOMAP,
2629                         R, DDCMON_SYSCTL_SYNC, VALUE(1), 0 },
2630    { SENSORS_DDCMON_VERSYNCMAX, "v_sync_max",
2631                         SENSORS_DDCMON_VERSYNCMIN, NOMAP,
2632                         R, DDCMON_SYSCTL_SYNC, VALUE(2), 0 },
2633    { SENSORS_DDCMON_HORSYNCMIN, "Horizontal Sync (KHz)",
2634                         NOMAP, NOMAP,
2635                         R, DDCMON_SYSCTL_SYNC, VALUE(3), 0 },
2636    { SENSORS_DDCMON_HORSYNCMAX, "h_sync_max",
2637                         SENSORS_DDCMON_HORSYNCMIN, NOMAP,
2638                         R, DDCMON_SYSCTL_SYNC, VALUE(4), 0 },
2639    { SENSORS_DDCMON_TIMINGS, "Established Timings",
2640                         NOMAP, NOMAP,
2641                         R, DDCMON_SYSCTL_TIMINGS, VALUE(1), 0 },
2642    { SENSORS_DDCMON_SERIAL, "Serial Number",
2643                         NOMAP, NOMAP,
2644                         R, DDCMON_SYSCTL_SERIAL, VALUE(1), 0 },
2645    { SENSORS_DDCMON_YEAR, "Manufacture Time",
2646                         NOMAP, NOMAP,
2647                         R, DDCMON_SYSCTL_TIME, VALUE(1), 0 },
2648    { SENSORS_DDCMON_WEEK, "week",
2649                         SENSORS_DDCMON_YEAR, NOMAP,
2650                         R, DDCMON_SYSCTL_TIME, VALUE(2), 0 },
2651    { SENSORS_DDCMON_EDID_VER, "EDID Version",
2652                         NOMAP, NOMAP,
2653                         R, DDCMON_SYSCTL_EDID, VALUE(1), 0 },
2654    { SENSORS_DDCMON_EDID_REV, "revision",
2655                         SENSORS_DDCMON_EDID_VER, NOMAP,
2656                         R, DDCMON_SYSCTL_EDID, VALUE(2), 0 },
2657    { SENSORS_DDCMON_GAMMA, "Gamma Factor",
2658                         NOMAP, NOMAP,
2659                         R, DDCMON_SYSCTL_GAMMA, VALUE(1), 2 },
2660    { SENSORS_DDCMON_DPMS, "DPMS Modes",
2661                         NOMAP, NOMAP,
2662                         R, DDCMON_SYSCTL_DPMS, VALUE(1), 0 },
2663    { SENSORS_DDCMON_TIMING1_HOR, "Standard Timing 1",
2664                         NOMAP, NOMAP,
2665                         R, DDCMON_SYSCTL_TIMING1, VALUE(1), 0 },
2666    { SENSORS_DDCMON_TIMING1_VER, "vertical",
2667                         SENSORS_DDCMON_TIMING1_HOR, NOMAP,
2668                         R, DDCMON_SYSCTL_TIMING1, VALUE(2), 0 },
2669    { SENSORS_DDCMON_TIMING1_REF, "refresh",
2670                         SENSORS_DDCMON_TIMING1_HOR, NOMAP,
2671                         R, DDCMON_SYSCTL_TIMING1, VALUE(3), 0 },
2672    { SENSORS_DDCMON_TIMING2_HOR, "Standard Timing 2",
2673                         NOMAP, NOMAP,
2674                         R, DDCMON_SYSCTL_TIMING2, VALUE(1), 0 },
2675    { SENSORS_DDCMON_TIMING2_VER, "vertical",
2676                         SENSORS_DDCMON_TIMING2_HOR, NOMAP,
2677                         R, DDCMON_SYSCTL_TIMING2, VALUE(2), 0 },
2678    { SENSORS_DDCMON_TIMING2_REF, "refresh",
2679                         SENSORS_DDCMON_TIMING2_HOR, NOMAP,
2680                         R, DDCMON_SYSCTL_TIMING2, VALUE(3), 0 },
2681    { SENSORS_DDCMON_TIMING3_HOR, "Standard Timing 3",
2682                         NOMAP, NOMAP,
2683                         R, DDCMON_SYSCTL_TIMING3, VALUE(1), 0 },
2684    { SENSORS_DDCMON_TIMING3_VER, "vertical",
2685                         SENSORS_DDCMON_TIMING3_HOR, NOMAP,
2686                         R, DDCMON_SYSCTL_TIMING3, VALUE(2), 0 },
2687    { SENSORS_DDCMON_TIMING3_REF, "refresh",
2688                         SENSORS_DDCMON_TIMING3_HOR, NOMAP,
2689                         R, DDCMON_SYSCTL_TIMING3, VALUE(3), 0 },
2690    { SENSORS_DDCMON_TIMING4_HOR, "Standard Timing 4",
2691                         NOMAP, NOMAP,
2692                         R, DDCMON_SYSCTL_TIMING4, VALUE(1), 0 },
2693    { SENSORS_DDCMON_TIMING4_VER, "vertical",
2694                         SENSORS_DDCMON_TIMING4_HOR, NOMAP,
2695                         R, DDCMON_SYSCTL_TIMING4, VALUE(2), 0 },
2696    { SENSORS_DDCMON_TIMING4_REF, "refresh",
2697                         SENSORS_DDCMON_TIMING4_HOR, NOMAP,
2698                         R, DDCMON_SYSCTL_TIMING4, VALUE(3), 0 },
2699    { SENSORS_DDCMON_TIMING5_HOR, "Standard Timing 5",
2700                         NOMAP, NOMAP,
2701                         R, DDCMON_SYSCTL_TIMING5, VALUE(1), 0 },
2702    { SENSORS_DDCMON_TIMING5_VER, "vertical",
2703                         SENSORS_DDCMON_TIMING5_HOR, NOMAP,
2704                         R, DDCMON_SYSCTL_TIMING5, VALUE(2), 0 },
2705    { SENSORS_DDCMON_TIMING5_REF, "refresh",
2706                         SENSORS_DDCMON_TIMING5_HOR, NOMAP,
2707                         R, DDCMON_SYSCTL_TIMING5, VALUE(3), 0 },
2708    { SENSORS_DDCMON_TIMING6_HOR, "Standard Timing 6",
2709                         NOMAP, NOMAP,
2710                         R, DDCMON_SYSCTL_TIMING6, VALUE(1), 0 },
2711    { SENSORS_DDCMON_TIMING6_VER, "vertical",
2712                         SENSORS_DDCMON_TIMING6_HOR, NOMAP,
2713                         R, DDCMON_SYSCTL_TIMING6, VALUE(2), 0 },
2714    { SENSORS_DDCMON_TIMING6_REF, "refresh",
2715                         SENSORS_DDCMON_TIMING6_HOR, NOMAP,
2716                         R, DDCMON_SYSCTL_TIMING6, VALUE(3), 0 },
2717    { SENSORS_DDCMON_TIMING7_HOR, "Standard Timing 7",
2718                         NOMAP, NOMAP,
2719                         R, DDCMON_SYSCTL_TIMING7, VALUE(1), 0 },
2720    { SENSORS_DDCMON_TIMING7_VER, "vertical",
2721                         SENSORS_DDCMON_TIMING7_HOR, NOMAP,
2722                         R, DDCMON_SYSCTL_TIMING7, VALUE(2), 0 },
2723    { SENSORS_DDCMON_TIMING7_REF, "refresh",
2724                         SENSORS_DDCMON_TIMING7_HOR, NOMAP,
2725                         R, DDCMON_SYSCTL_TIMING7, VALUE(3), 0 },
2726    { SENSORS_DDCMON_TIMING8_HOR, "Standard Timing 8",
2727                         NOMAP, NOMAP,
2728                         R, DDCMON_SYSCTL_TIMING8, VALUE(1), 0 },
2729    { SENSORS_DDCMON_TIMING8_VER, "vertical",
2730                         SENSORS_DDCMON_TIMING8_HOR, NOMAP,
2731                         R, DDCMON_SYSCTL_TIMING8, VALUE(2), 0 },
2732    { SENSORS_DDCMON_TIMING8_REF, "refresh",
2733                         SENSORS_DDCMON_TIMING8_HOR, NOMAP,
2734                         R, DDCMON_SYSCTL_TIMING8, VALUE(3), 0 },
2735    { SENSORS_DDCMON_MAXCLOCK, "Max Pixel Clock (MHz)",
2736                         NOMAP, NOMAP,
2737                         R, DDCMON_SYSCTL_MAXCLOCK, VALUE(1), 0 },
2738    { 0 }
2739  };
2740
2741static sensors_chip_feature eeprom_features[] =
2742  {
2743    { SENSORS_EEPROM_TYPE, "Memory type",
2744                         NOMAP, NOMAP,
2745                         R, EEPROM_SYSCTL1, VALUE(3), 0 },
2746/* cheat and use the row-address-bits label for the total size in sensors */
2747    { SENSORS_EEPROM_ROWADDR, "Memory size (MB)",
2748                         NOMAP, NOMAP,
2749                         R, EEPROM_SYSCTL1, VALUE(4), 0 },
2750    { SENSORS_EEPROM_COLADDR, "col",
2751                         NOMAP, NOMAP,
2752                         R, EEPROM_SYSCTL1, VALUE(5), 0 },
2753    { SENSORS_EEPROM_NUMROWS, "num rows",
2754                         NOMAP, NOMAP,
2755                         R, EEPROM_SYSCTL1, VALUE(6), 0 },
2756    { SENSORS_EEPROM_BANKS, "banks",
2757                         NOMAP, NOMAP,
2758                         R, EEPROM_SYSCTL2, VALUE(2), 0 },
2759/* for Sony Vaio's eeproms */
2760    { SENSORS_EEPROM_VAIO_NAME, "Machine name",
2761                         NOMAP, NOMAP,
2762                         R, EEPROM_SYSCTL9, VALUE(1), 0 },
2763    { SENSORS_EEPROM_VAIO_NAME+1, "name2",
2764                         NOMAP, NOMAP,
2765                         R, EEPROM_SYSCTL9, VALUE(2), 0 },
2766    { SENSORS_EEPROM_VAIO_NAME+2, "name3",
2767                         NOMAP, NOMAP,
2768                         R, EEPROM_SYSCTL9, VALUE(3), 0 },
2769    { SENSORS_EEPROM_VAIO_NAME+3, "name4",
2770                         NOMAP, NOMAP,
2771                         R, EEPROM_SYSCTL9, VALUE(4), 0 },
2772    { SENSORS_EEPROM_VAIO_NAME+4, "name5",
2773                         NOMAP, NOMAP,
2774                         R, EEPROM_SYSCTL9, VALUE(5), 0 },
2775    { SENSORS_EEPROM_VAIO_NAME+5, "name6",
2776                         NOMAP, NOMAP,
2777                         R, EEPROM_SYSCTL9, VALUE(6), 0 },
2778    { SENSORS_EEPROM_VAIO_NAME+6, "name7",
2779                         NOMAP, NOMAP,
2780                         R, EEPROM_SYSCTL9, VALUE(7), 0 },
2781    { SENSORS_EEPROM_VAIO_NAME+7, "name8",
2782                         NOMAP, NOMAP,
2783                         R, EEPROM_SYSCTL9, VALUE(8), 0 },
2784    { SENSORS_EEPROM_VAIO_NAME+8, "name9",
2785                         NOMAP, NOMAP,
2786                         R, EEPROM_SYSCTL9, VALUE(9), 0 },
2787    { SENSORS_EEPROM_VAIO_NAME+9, "name10",
2788                         NOMAP, NOMAP,
2789                         R, EEPROM_SYSCTL9, VALUE(10), 0 },
2790    { SENSORS_EEPROM_VAIO_NAME+10, "name11",
2791                         NOMAP, NOMAP,
2792                         R, EEPROM_SYSCTL9, VALUE(11), 0 },
2793    { SENSORS_EEPROM_VAIO_NAME+11, "name12",
2794                         NOMAP, NOMAP,
2795                         R, EEPROM_SYSCTL9, VALUE(12), 0 },
2796    { SENSORS_EEPROM_VAIO_NAME+12, "name13",
2797                         NOMAP, NOMAP,
2798                         R, EEPROM_SYSCTL9, VALUE(13), 0 },
2799    { SENSORS_EEPROM_VAIO_NAME+13, "name14",
2800                         NOMAP, NOMAP,
2801                         R, EEPROM_SYSCTL9, VALUE(14), 0 },
2802    { SENSORS_EEPROM_VAIO_NAME+14, "name15",
2803                         NOMAP, NOMAP,
2804                         R, EEPROM_SYSCTL9, VALUE(15), 0 },
2805    { SENSORS_EEPROM_VAIO_NAME+15, "name16",
2806                         NOMAP, NOMAP,
2807                         R, EEPROM_SYSCTL9, VALUE(16), 0 },
2808    { SENSORS_EEPROM_VAIO_NAME+16, "name17",
2809                         NOMAP, NOMAP,
2810                         R, EEPROM_SYSCTL10, VALUE(1), 0 },
2811    { SENSORS_EEPROM_VAIO_NAME+17, "name18",
2812                         NOMAP, NOMAP,
2813                         R, EEPROM_SYSCTL10, VALUE(2), 0 },
2814    { SENSORS_EEPROM_VAIO_NAME+18, "name19",
2815                         NOMAP, NOMAP,
2816                         R, EEPROM_SYSCTL10, VALUE(3), 0 },
2817    { SENSORS_EEPROM_VAIO_NAME+19, "name20",
2818                         NOMAP, NOMAP,
2819                         R, EEPROM_SYSCTL10, VALUE(4), 0 },
2820    { SENSORS_EEPROM_VAIO_NAME+20, "name21",
2821                         NOMAP, NOMAP,
2822                         R, EEPROM_SYSCTL10, VALUE(5), 0 },
2823    { SENSORS_EEPROM_VAIO_NAME+21, "name22",
2824                         NOMAP, NOMAP,
2825                         R, EEPROM_SYSCTL10, VALUE(6), 0 },
2826    { SENSORS_EEPROM_VAIO_NAME+22, "name23",
2827                         NOMAP, NOMAP,
2828                         R, EEPROM_SYSCTL10, VALUE(7), 0 },
2829    { SENSORS_EEPROM_VAIO_NAME+23, "name24",
2830                         NOMAP, NOMAP,
2831                         R, EEPROM_SYSCTL10, VALUE(8), 0 },
2832    { SENSORS_EEPROM_VAIO_NAME+24, "name25",
2833                         NOMAP, NOMAP,
2834                         R, EEPROM_SYSCTL10, VALUE(9), 0 },
2835    { SENSORS_EEPROM_VAIO_NAME+25, "name26",
2836                         NOMAP, NOMAP,
2837                         R, EEPROM_SYSCTL10, VALUE(10), 0 },
2838    { SENSORS_EEPROM_VAIO_NAME+26, "name27",
2839                         NOMAP, NOMAP,
2840                         R, EEPROM_SYSCTL10, VALUE(11), 0 },
2841    { SENSORS_EEPROM_VAIO_NAME+27, "name28",
2842                         NOMAP, NOMAP,
2843                         R, EEPROM_SYSCTL10, VALUE(12), 0 },
2844    { SENSORS_EEPROM_VAIO_NAME+28, "name29",
2845                         NOMAP, NOMAP,
2846                         R, EEPROM_SYSCTL10, VALUE(13), 0 },
2847    { SENSORS_EEPROM_VAIO_NAME+29, "name30",
2848                         NOMAP, NOMAP,
2849                         R, EEPROM_SYSCTL10, VALUE(14), 0 },
2850    { SENSORS_EEPROM_VAIO_NAME+30, "name31",
2851                         NOMAP, NOMAP,
2852                         R, EEPROM_SYSCTL10, VALUE(15), 0 },
2853    { SENSORS_EEPROM_VAIO_NAME+31, "name32",
2854                         NOMAP, NOMAP,
2855                         R, EEPROM_SYSCTL10, VALUE(16), 0 },
2856    { SENSORS_EEPROM_VAIO_SERIAL, "Serial number",
2857                         NOMAP, NOMAP,
2858                         R, EEPROM_SYSCTL13, VALUE(1), 0 },
2859    { SENSORS_EEPROM_VAIO_SERIAL+1, "serial2",
2860                         NOMAP, NOMAP,
2861                         R, EEPROM_SYSCTL13, VALUE(2), 0 },
2862    { SENSORS_EEPROM_VAIO_SERIAL+2, "serial3",
2863                         NOMAP, NOMAP,
2864                         R, EEPROM_SYSCTL13, VALUE(3), 0 },
2865    { SENSORS_EEPROM_VAIO_SERIAL+3, "serial4",
2866                         NOMAP, NOMAP,
2867                         R, EEPROM_SYSCTL13, VALUE(4), 0 },
2868    { SENSORS_EEPROM_VAIO_SERIAL+4, "serial5",
2869                         NOMAP, NOMAP,
2870                         R, EEPROM_SYSCTL13, VALUE(5), 0 },
2871    { SENSORS_EEPROM_VAIO_SERIAL+5, "serial6",
2872                         NOMAP, NOMAP,
2873                         R, EEPROM_SYSCTL13, VALUE(6), 0 },
2874    { SENSORS_EEPROM_VAIO_SERIAL+6, "serial7",
2875                         NOMAP, NOMAP,
2876                         R, EEPROM_SYSCTL13, VALUE(7), 0 },
2877    { SENSORS_EEPROM_VAIO_SERIAL+7, "serial8",
2878                         NOMAP, NOMAP,
2879                         R, EEPROM_SYSCTL13, VALUE(8), 0 },
2880    { SENSORS_EEPROM_VAIO_SERIAL+8, "serial9",
2881                         NOMAP, NOMAP,
2882                         R, EEPROM_SYSCTL13, VALUE(9), 0 },
2883    { SENSORS_EEPROM_VAIO_SERIAL+9, "serial10",
2884                         NOMAP, NOMAP,
2885                         R, EEPROM_SYSCTL13, VALUE(10), 0 },
2886    { SENSORS_EEPROM_VAIO_SERIAL+10, "serial11",
2887                         NOMAP, NOMAP,
2888                         R, EEPROM_SYSCTL13, VALUE(11), 0 },
2889    { SENSORS_EEPROM_VAIO_SERIAL+11, "serial12",
2890                         NOMAP, NOMAP,
2891                         R, EEPROM_SYSCTL13, VALUE(12), 0 },
2892    { SENSORS_EEPROM_VAIO_SERIAL+12, "serial13",
2893                         NOMAP, NOMAP,
2894                         R, EEPROM_SYSCTL13, VALUE(13), 0 },
2895    { SENSORS_EEPROM_VAIO_SERIAL+13, "serial14",
2896                         NOMAP, NOMAP,
2897                         R, EEPROM_SYSCTL13, VALUE(14), 0 },
2898    { SENSORS_EEPROM_VAIO_SERIAL+14, "serial15",
2899                         NOMAP, NOMAP,
2900                         R, EEPROM_SYSCTL13, VALUE(15), 0 },
2901    { SENSORS_EEPROM_VAIO_SERIAL+15, "serial16",
2902                         NOMAP, NOMAP,
2903                         R, EEPROM_SYSCTL13, VALUE(16), 0 },
2904    { SENSORS_EEPROM_VAIO_SERIAL+16, "serial17",
2905                         NOMAP, NOMAP,
2906                         R, EEPROM_SYSCTL14, VALUE(1), 0 },
2907    { SENSORS_EEPROM_VAIO_SERIAL+17, "serial18",
2908                         NOMAP, NOMAP,
2909                         R, EEPROM_SYSCTL14, VALUE(2), 0 },
2910    { SENSORS_EEPROM_VAIO_SERIAL+18, "serial19",
2911                         NOMAP, NOMAP,
2912                         R, EEPROM_SYSCTL14, VALUE(3), 0 },
2913    { SENSORS_EEPROM_VAIO_SERIAL+19, "serial20",
2914                         NOMAP, NOMAP,
2915                         R, EEPROM_SYSCTL14, VALUE(4), 0 },
2916    { SENSORS_EEPROM_VAIO_SERIAL+20, "serial21",
2917                         NOMAP, NOMAP,
2918                         R, EEPROM_SYSCTL14, VALUE(5), 0 },
2919    { SENSORS_EEPROM_VAIO_SERIAL+21, "serial22",
2920                         NOMAP, NOMAP,
2921                         R, EEPROM_SYSCTL14, VALUE(6), 0 },
2922    { SENSORS_EEPROM_VAIO_SERIAL+22, "serial23",
2923                         NOMAP, NOMAP,
2924                         R, EEPROM_SYSCTL14, VALUE(7), 0 },
2925    { SENSORS_EEPROM_VAIO_SERIAL+23, "serial24",
2926                         NOMAP, NOMAP,
2927                         R, EEPROM_SYSCTL14, VALUE(8), 0 },
2928    { SENSORS_EEPROM_VAIO_SERIAL+24, "serial25",
2929                         NOMAP, NOMAP,
2930                         R, EEPROM_SYSCTL14, VALUE(9), 0 },
2931    { SENSORS_EEPROM_VAIO_SERIAL+25, "serial26",
2932                         NOMAP, NOMAP,
2933                         R, EEPROM_SYSCTL14, VALUE(10), 0 },
2934    { SENSORS_EEPROM_VAIO_SERIAL+26, "serial27",
2935                         NOMAP, NOMAP,
2936                         R, EEPROM_SYSCTL14, VALUE(11), 0 },
2937    { SENSORS_EEPROM_VAIO_SERIAL+27, "serial28",
2938                         NOMAP, NOMAP,
2939                         R, EEPROM_SYSCTL14, VALUE(12), 0 },
2940    { SENSORS_EEPROM_VAIO_SERIAL+28, "serial29",
2941                         NOMAP, NOMAP,
2942                         R, EEPROM_SYSCTL14, VALUE(13), 0 },
2943    { SENSORS_EEPROM_VAIO_SERIAL+29, "serial30",
2944                         NOMAP, NOMAP,
2945                         R, EEPROM_SYSCTL14, VALUE(14), 0 },
2946    { SENSORS_EEPROM_VAIO_SERIAL+30, "serial31",
2947                         NOMAP, NOMAP,
2948                         R, EEPROM_SYSCTL14, VALUE(15), 0 },
2949    { SENSORS_EEPROM_VAIO_SERIAL+31, "serial32",
2950                         NOMAP, NOMAP,
2951                         R, EEPROM_SYSCTL14, VALUE(16), 0 },
2952/* for monitor's edid */
2953    { SENSORS_EEPROM_EDID_HEADER, "EDID header",
2954                         NOMAP, NOMAP,
2955                         R, EEPROM_SYSCTL1, VALUE(1), 0 },
2956/* for Shuttle EEPROMS */
2957    { SENSORS_EEPROM_SHUTTLE, "Ethernet Address",
2958                         NOMAP, NOMAP,
2959                         R, EEPROM_SYSCTL1, VALUE(1), 0 },
2960    { SENSORS_EEPROM_SHUTTLE, "shuttle2",
2961                         NOMAP, NOMAP,
2962                         R, EEPROM_SYSCTL1, VALUE(2), 0 },
2963    { SENSORS_EEPROM_SHUTTLE, "shuttle3",
2964                         NOMAP, NOMAP,
2965                         R, EEPROM_SYSCTL1, VALUE(3), 0 },
2966    { SENSORS_EEPROM_SHUTTLE, "shuttle4",
2967                         NOMAP, NOMAP,
2968                         R, EEPROM_SYSCTL1, VALUE(4), 0 },
2969    { SENSORS_EEPROM_SHUTTLE, "shuttle5",
2970                         NOMAP, NOMAP,
2971                         R, EEPROM_SYSCTL1, VALUE(5), 0 },
2972    { SENSORS_EEPROM_SHUTTLE, "shuttle6",
2973                         NOMAP, NOMAP,
2974                         R, EEPROM_SYSCTL1, VALUE(6), 0 },
2975    { 0 }
2976  };
2977
2978/* NOTE: Many shared values with adm1027_features !!! */
2979static sensors_chip_feature lm85_features[] =
2980  { 
2981    { SENSORS_LM85_IN0, "in0", NOMAP, NOMAP, 
2982                        R, LM85_SYSCTL_IN0, VALUE(3), 3 },
2983    { SENSORS_LM85_IN1, "in1", NOMAP, NOMAP,
2984                        R, LM85_SYSCTL_IN1, VALUE(3), 3 },
2985    { SENSORS_LM85_IN2, "in2", NOMAP, NOMAP,
2986                        R, LM85_SYSCTL_IN2, VALUE(3), 3 },
2987    { SENSORS_LM85_IN3, "in3", NOMAP, NOMAP,
2988                        R, LM85_SYSCTL_IN3, VALUE(3), 3 },
2989    { SENSORS_LM85_IN4, "in4", NOMAP, NOMAP,
2990                        R, LM85_SYSCTL_IN4, VALUE(3), 3 },
2991    { SENSORS_LM85_IN5, "in5", NOMAP, NOMAP,
2992                        R, EMC6D100_SYSCTL_IN5, VALUE(3), 3 },
2993    { SENSORS_LM85_IN6, "in6", NOMAP, NOMAP,
2994                        R, EMC6D100_SYSCTL_IN6, VALUE(3), 3 },
2995    { SENSORS_LM85_IN7, "in7", NOMAP, NOMAP,
2996                        R, EMC6D100_SYSCTL_IN7, VALUE(3), 3 },
2997    { SENSORS_LM85_IN0_MIN, "in0_min", SENSORS_LM85_IN0, SENSORS_LM85_IN0,
2998                            RW, LM85_SYSCTL_IN0, VALUE(1), 3 },
2999    { SENSORS_LM85_IN1_MIN, "in1_min", SENSORS_LM85_IN1, SENSORS_LM85_IN1,
3000                            RW, LM85_SYSCTL_IN1, VALUE(1), 3 },
3001    { SENSORS_LM85_IN2_MIN, "in2_min", SENSORS_LM85_IN2, SENSORS_LM85_IN2,
3002                            RW, LM85_SYSCTL_IN2, VALUE(1), 3 },
3003    { SENSORS_LM85_IN3_MIN, "in3_min", SENSORS_LM85_IN3, SENSORS_LM85_IN3,
3004                            RW, LM85_SYSCTL_IN3, VALUE(1), 3 },
3005    { SENSORS_LM85_IN4_MIN, "in4_min", SENSORS_LM85_IN4, SENSORS_LM85_IN4,
3006                            RW, LM85_SYSCTL_IN4, VALUE(1), 3 },
3007    { SENSORS_LM85_IN5_MIN, "in5_min", SENSORS_LM85_IN5, SENSORS_LM85_IN5,
3008                            RW, EMC6D100_SYSCTL_IN5, VALUE(1), 3 },
3009    { SENSORS_LM85_IN6_MIN, "in6_min", SENSORS_LM85_IN6, SENSORS_LM85_IN6,
3010                            RW, EMC6D100_SYSCTL_IN6, VALUE(1), 3 },
3011    { SENSORS_LM85_IN7_MIN, "in7_min", SENSORS_LM85_IN7, SENSORS_LM85_IN7,
3012                            RW, EMC6D100_SYSCTL_IN7, VALUE(1), 3 },
3013    { SENSORS_LM85_IN0_MAX, "in0_max", SENSORS_LM85_IN0, SENSORS_LM85_IN0,
3014                            RW, LM85_SYSCTL_IN0, VALUE(2), 3 },
3015    { SENSORS_LM85_IN1_MAX, "in1_max", SENSORS_LM85_IN1, SENSORS_LM85_IN1,
3016                            RW, LM85_SYSCTL_IN1, VALUE(2), 3 },
3017    { SENSORS_LM85_IN2_MAX, "in2_max", SENSORS_LM85_IN2, SENSORS_LM85_IN2,
3018                            RW, LM85_SYSCTL_IN2, VALUE(2), 3 },
3019    { SENSORS_LM85_IN3_MAX, "in3_max", SENSORS_LM85_IN3, SENSORS_LM85_IN3,
3020                            RW, LM85_SYSCTL_IN3, VALUE(2), 3 },
3021    { SENSORS_LM85_IN4_MAX, "in4_max", SENSORS_LM85_IN4, SENSORS_LM85_IN4,
3022                            RW, LM85_SYSCTL_IN4, VALUE(2), 3 },
3023    { SENSORS_LM85_IN5_MAX, "in5_max", SENSORS_LM85_IN5, SENSORS_LM85_IN5,
3024                            RW, EMC6D100_SYSCTL_IN5, VALUE(2), 3 },
3025    { SENSORS_LM85_IN6_MAX, "in6_max", SENSORS_LM85_IN6, SENSORS_LM85_IN6,
3026                            RW, EMC6D100_SYSCTL_IN6, VALUE(2), 3 },
3027    { SENSORS_LM85_IN7_MAX, "in7_max", SENSORS_LM85_IN7, SENSORS_LM85_IN7,
3028                            RW, EMC6D100_SYSCTL_IN7, VALUE(2), 3 },
3029    { SENSORS_LM85_FAN1, "fan1", NOMAP, NOMAP,
3030                         R, LM85_SYSCTL_FAN1, VALUE(2), 0 },
3031    { SENSORS_LM85_FAN2, "fan2", NOMAP, NOMAP,
3032                         R, LM85_SYSCTL_FAN2, VALUE(2), 0 },
3033    { SENSORS_LM85_FAN3, "fan3", NOMAP, NOMAP,
3034                         R, LM85_SYSCTL_FAN3, VALUE(2), 0 },
3035    { SENSORS_LM85_FAN4, "fan4", NOMAP, NOMAP,
3036                         R, LM85_SYSCTL_FAN4, VALUE(2), 0 },
3037    { SENSORS_LM85_FAN1_MIN, "fan1_min", SENSORS_LM85_FAN1, SENSORS_LM85_FAN1,
3038                             RW, LM85_SYSCTL_FAN1, VALUE(1), 0 },
3039    { SENSORS_LM85_FAN2_MIN, "fan2_min", SENSORS_LM85_FAN2, SENSORS_LM85_FAN2,
3040                             RW, LM85_SYSCTL_FAN2, VALUE(1), 0 },
3041    { SENSORS_LM85_FAN3_MIN, "fan3_min", SENSORS_LM85_FAN3, SENSORS_LM85_FAN3,
3042                             RW, LM85_SYSCTL_FAN3, VALUE(1), 0 },
3043    { SENSORS_LM85_FAN4_MIN, "fan4_min", SENSORS_LM85_FAN4, SENSORS_LM85_FAN4,
3044                             RW, LM85_SYSCTL_FAN4, VALUE(1), 0 },
3045    { SENSORS_LM85_TEMP1, "temp1", NOMAP, NOMAP,
3046                         R, LM85_SYSCTL_TEMP1, VALUE(3), 2 },
3047    { SENSORS_LM85_TEMP2, "temp2", NOMAP, NOMAP,
3048                         R, LM85_SYSCTL_TEMP2, VALUE(3), 2 },
3049    { SENSORS_LM85_TEMP3, "temp3", NOMAP, NOMAP,
3050                         R, LM85_SYSCTL_TEMP3, VALUE(3), 2 },
3051    { SENSORS_LM85_TEMP1_MIN, "temp1_min", SENSORS_LM85_TEMP1,
3052                              SENSORS_LM85_TEMP1, RW, 
3053                              LM85_SYSCTL_TEMP1, VALUE(1), 2 },
3054    { SENSORS_LM85_TEMP2_MIN, "temp2_min", SENSORS_LM85_TEMP2,
3055                              SENSORS_LM85_TEMP2, RW, 
3056                              LM85_SYSCTL_TEMP2, VALUE(1), 2 },
3057    { SENSORS_LM85_TEMP3_MIN, "temp3_min", SENSORS_LM85_TEMP3,
3058                              SENSORS_LM85_TEMP3, RW, 
3059                              LM85_SYSCTL_TEMP3, VALUE(1), 2 },
3060    { SENSORS_LM85_TEMP1_MAX, "temp1_max", SENSORS_LM85_TEMP1,
3061                              SENSORS_LM85_TEMP1, RW, 
3062                              LM85_SYSCTL_TEMP1, VALUE(2), 2 },
3063    { SENSORS_LM85_TEMP2_MAX, "temp2_max", SENSORS_LM85_TEMP2,
3064                              SENSORS_LM85_TEMP2, RW, 
3065                              LM85_SYSCTL_TEMP2, VALUE(2), 2 },
3066    { SENSORS_LM85_TEMP3_MAX, "temp3_max", SENSORS_LM85_TEMP3,
3067                              SENSORS_LM85_TEMP3, RW, 
3068                              LM85_SYSCTL_TEMP3, VALUE(2), 2 },
3069    { SENSORS_LM85_VID, "vid", NOMAP, NOMAP,
3070                         R, LM85_SYSCTL_VID, VALUE(1), 3 },
3071    { SENSORS_LM85_VRM, "vrm", NOMAP, NOMAP,
3072                         RW, LM85_SYSCTL_VRM, VALUE(1), 1 },
3073    { SENSORS_LM85_ALARMS, "alarms", NOMAP, NOMAP, 
3074                           R, LM85_SYSCTL_ALARMS, VALUE(1), 0 },
3075    { SENSORS_LM85_PWM1, "pwm1", NOMAP, NOMAP,
3076                         RW, LM85_SYSCTL_PWM1, VALUE(1), 0 },
3077    { SENSORS_LM85_PWM2, "pwm2", NOMAP, NOMAP,
3078                         RW, LM85_SYSCTL_PWM2, VALUE(1), 0 },
3079    { SENSORS_LM85_PWM3, "pwm3", NOMAP, NOMAP,
3080                         RW, LM85_SYSCTL_PWM3, VALUE(1), 0 },
3081    { SENSORS_LM85_PWM1_SPINUP, "pwm1_spinup", SENSORS_LM85_PWM1, 
3082                         NOMAP, RW, 
3083                         LM85_SYSCTL_PWM_CFG1, VALUE(1), 1 },
3084    { SENSORS_LM85_PWM2_SPINUP, "pwm2_spinup", SENSORS_LM85_PWM2, 
3085                         NOMAP, RW, 
3086                         LM85_SYSCTL_PWM_CFG2, VALUE(1), 1 },
3087    { SENSORS_LM85_PWM3_SPINUP, "pwm3_spinup", SENSORS_LM85_PWM3, 
3088                         NOMAP, RW, 
3089                         LM85_SYSCTL_PWM_CFG3, VALUE(1), 1 },
3090    { SENSORS_LM85_PWM1_MIN, "pwm1_min", SENSORS_LM85_PWM1, 
3091                         NOMAP, RW, 
3092                         LM85_SYSCTL_PWM_CFG1, VALUE(2), 1 },
3093    { SENSORS_LM85_PWM2_MIN, "pwm2_min", SENSORS_LM85_PWM2, 
3094                         NOMAP, RW, 
3095                         LM85_SYSCTL_PWM_CFG2, VALUE(2), 1 },
3096    { SENSORS_LM85_PWM3_MIN, "pwm3_min", SENSORS_LM85_PWM3, 
3097                         NOMAP, RW, 
3098                         LM85_SYSCTL_PWM_CFG3, VALUE(2), 1 },
3099    { SENSORS_LM85_PWM1_FREQ, "pwm1_freq", SENSORS_LM85_PWM1, 
3100                         NOMAP, RW, 
3101                         LM85_SYSCTL_PWM_CFG1, VALUE(3), 1 },
3102    { SENSORS_LM85_PWM2_FREQ, "pwm2_freq", SENSORS_LM85_PWM2, 
3103                         NOMAP, RW, 
3104                         LM85_SYSCTL_PWM_CFG2, VALUE(3), 1 },
3105    { SENSORS_LM85_PWM3_FREQ, "pwm3_freq", SENSORS_LM85_PWM3, 
3106                         NOMAP, RW, 
3107                         LM85_SYSCTL_PWM_CFG3, VALUE(3), 1 },
3108    { SENSORS_LM85_PWM1_MIN_CTL, "pwm1_min_ctl", SENSORS_LM85_PWM1, 
3109                         NOMAP, RW, 
3110                         LM85_SYSCTL_PWM_CFG1, VALUE(4), 1 },
3111    { SENSORS_LM85_PWM2_MIN_CTL, "pwm2_min_ctl", SENSORS_LM85_PWM2, 
3112                         NOMAP, RW, 
3113                         LM85_SYSCTL_PWM_CFG2, VALUE(4), 1 },
3114    { SENSORS_LM85_PWM3_MIN_CTL, "pwm3_min_ctl", SENSORS_LM85_PWM3, 
3115                         NOMAP, RW, 
3116                         LM85_SYSCTL_PWM_CFG3, VALUE(4), 1 },
3117    { SENSORS_LM85_PWM1_INVERT, "pwm1_invert", SENSORS_LM85_PWM1, 
3118                         NOMAP, RW, 
3119                         LM85_SYSCTL_PWM_CFG1, VALUE(5), 0 },
3120    { SENSORS_LM85_PWM2_INVERT, "pwm2_invert", SENSORS_LM85_PWM2, 
3121                         NOMAP, RW, 
3122                         LM85_SYSCTL_PWM_CFG2, VALUE(5), 0 },
3123    { SENSORS_LM85_PWM3_INVERT, "pwm3_invert", SENSORS_LM85_PWM3, 
3124                         NOMAP, RW, 
3125                         LM85_SYSCTL_PWM_CFG3, VALUE(5), 0 },
3126    { SENSORS_LM85_PWM1_ZONE, "pwm1_zone", SENSORS_LM85_PWM1, 
3127                         NOMAP, RW, 
3128                         LM85_SYSCTL_PWM_ZONE1, VALUE(1), 0 },
3129    { SENSORS_LM85_PWM2_ZONE, "pwm2_zone", SENSORS_LM85_PWM2, 
3130                         NOMAP, RW, 
3131                         LM85_SYSCTL_PWM_ZONE2, VALUE(1), 0 },
3132    { SENSORS_LM85_PWM3_ZONE, "pwm3_zone", SENSORS_LM85_PWM3, 
3133                         NOMAP, RW, 
3134                         LM85_SYSCTL_PWM_ZONE3, VALUE(1), 0 },
3135    { SENSORS_LM85_ZONE1_LIMIT, "zone1_limit", SENSORS_LM85_TEMP1, 
3136                         NOMAP, RW, 
3137                         LM85_SYSCTL_ZONE1, VALUE(1), 1 },
3138    { SENSORS_LM85_ZONE2_LIMIT, "zone2_limit", SENSORS_LM85_TEMP2, 
3139                         NOMAP, RW, 
3140                         LM85_SYSCTL_ZONE2, VALUE(1), 1 },
3141    { SENSORS_LM85_ZONE3_LIMIT, "zone3_limit", SENSORS_LM85_TEMP3, 
3142                         NOMAP, RW, 
3143                         LM85_SYSCTL_ZONE3, VALUE(1), 1 },
3144    { SENSORS_LM85_ZONE1_HYST, "zone1_hyst", SENSORS_LM85_TEMP1, 
3145                         NOMAP, RW, 
3146                         LM85_SYSCTL_ZONE1, VALUE(2), 1 },
3147    { SENSORS_LM85_ZONE2_HYST, "zone2_hyst", SENSORS_LM85_TEMP2, 
3148                         NOMAP, RW, 
3149                         LM85_SYSCTL_ZONE2, VALUE(2), 1 },
3150    { SENSORS_LM85_ZONE3_HYST, "zone3_hyst", SENSORS_LM85_TEMP3, 
3151                         NOMAP, RW, 
3152                         LM85_SYSCTL_ZONE3, VALUE(2), 1 },
3153    { SENSORS_LM85_ZONE1_RANGE, "zone1_range", SENSORS_LM85_TEMP1, 
3154                         NOMAP, RW, 
3155                         LM85_SYSCTL_ZONE1, VALUE(3), 1 },
3156    { SENSORS_LM85_ZONE2_RANGE, "zone2_range", SENSORS_LM85_TEMP2, 
3157                         NOMAP, RW, 
3158                         LM85_SYSCTL_ZONE2, VALUE(3), 1 },
3159    { SENSORS_LM85_ZONE3_RANGE, "zone3_range", SENSORS_LM85_TEMP3, 
3160                         NOMAP, RW, 
3161                         LM85_SYSCTL_ZONE3, VALUE(3), 1 },
3162    { SENSORS_LM85_ZONE1_CRITICAL, "zone1_critical", SENSORS_LM85_TEMP1, 
3163                         NOMAP, RW, 
3164                         LM85_SYSCTL_ZONE1, VALUE(4), 1 },
3165    { SENSORS_LM85_ZONE2_CRITICAL, "zone2_critical", SENSORS_LM85_TEMP2, 
3166                         NOMAP, RW, 
3167                         LM85_SYSCTL_ZONE2, VALUE(4), 1 },
3168    { SENSORS_LM85_ZONE3_CRITICAL, "zone3_critical", SENSORS_LM85_TEMP3, 
3169                         NOMAP, RW, 
3170                         LM85_SYSCTL_ZONE3, VALUE(4), 1 },
3171
3172    { SENSORS_LM85_PWM1_SPINUP_CTL, "pwm1_spinup_ctl", SENSORS_LM85_PWM1, 
3173                         NOMAP, RW, 
3174                         LM85_SYSCTL_SPINUP_CTL, VALUE(1), 0 },
3175    { SENSORS_LM85_PWM2_SPINUP_CTL, "pwm2_spinup_ctl", SENSORS_LM85_PWM2, 
3176                         NOMAP, RW, 
3177                         LM85_SYSCTL_SPINUP_CTL, VALUE(2), 0 },
3178    { SENSORS_LM85_PWM3_SPINUP_CTL, "pwm3_spinup_ctl", SENSORS_LM85_PWM3, 
3179                         NOMAP, RW, 
3180                         LM85_SYSCTL_SPINUP_CTL, VALUE(3), 0 },
3181    { SENSORS_LM85_FAN1_TACH_MODE, "fan1_tach_mode", SENSORS_LM85_FAN1, 
3182                         NOMAP, RW, 
3183                         LM85_SYSCTL_TACH_MODE, VALUE(1), 0 },
3184    { SENSORS_LM85_FAN2_TACH_MODE, "fan2_tach_mode", SENSORS_LM85_FAN2, 
3185                         NOMAP, RW, 
3186                         LM85_SYSCTL_TACH_MODE, VALUE(2), 0 },
3187    { SENSORS_LM85_FAN3_TACH_MODE, "fan3_tach_mode", SENSORS_LM85_FAN3, 
3188                         NOMAP, RW, 
3189                         LM85_SYSCTL_TACH_MODE, VALUE(3), 0 },
3190    { SENSORS_LM85_ZONE1_SMOOTH, "zone1_smooth", SENSORS_LM85_TEMP1, 
3191                         NOMAP, RW, 
3192                         LM85_SYSCTL_SMOOTH1, VALUE(1), 1 },
3193    { SENSORS_LM85_ZONE2_SMOOTH, "zone2_smooth", SENSORS_LM85_TEMP2, 
3194                         NOMAP, RW, 
3195                         LM85_SYSCTL_SMOOTH2, VALUE(1), 1 },
3196    { SENSORS_LM85_ZONE3_SMOOTH, "zone3_smooth", SENSORS_LM85_TEMP3, 
3197                         NOMAP, RW, 
3198                         LM85_SYSCTL_SMOOTH3, VALUE(1), 1 },
3199    { 0 }
3200  };
3201
3202/* NOTE: Many shared values with lm85_features !!! */
3203static sensors_chip_feature adm1027_features[] =
3204  { 
3205    { SENSORS_LM85_IN0, "in0", NOMAP, NOMAP, 
3206                        R, LM85_SYSCTL_IN0, VALUE(3), 3 },
3207    { SENSORS_LM85_IN1, "in1", NOMAP, NOMAP,
3208                        R, LM85_SYSCTL_IN1, VALUE(3), 3 },
3209    { SENSORS_LM85_IN2, "in2", NOMAP, NOMAP,
3210                        R, LM85_SYSCTL_IN2, VALUE(3), 3 },
3211    { SENSORS_LM85_IN3, "in3", NOMAP, NOMAP,
3212                        R, LM85_SYSCTL_IN3, VALUE(3), 3 },
3213    { SENSORS_LM85_IN4, "in4", NOMAP, NOMAP,
3214                        R, LM85_SYSCTL_IN4, VALUE(3), 3 },
3215    { SENSORS_LM85_IN0_MIN, "in0_min", SENSORS_LM85_IN0, SENSORS_LM85_IN0,
3216                            RW, LM85_SYSCTL_IN0, VALUE(1), 3 },
3217    { SENSORS_LM85_IN1_MIN, "in1_min", SENSORS_LM85_IN1, SENSORS_LM85_IN1,
3218                            RW, LM85_SYSCTL_IN1, VALUE(1), 3 },
3219    { SENSORS_LM85_IN2_MIN, "in2_min", SENSORS_LM85_IN2, SENSORS_LM85_IN2,
3220                            RW, LM85_SYSCTL_IN2, VALUE(1), 3 },
3221    { SENSORS_LM85_IN3_MIN, "in3_min", SENSORS_LM85_IN3, SENSORS_LM85_IN3,
3222                            RW, LM85_SYSCTL_IN3, VALUE(1), 3 },
3223    { SENSORS_LM85_IN4_MIN, "in4_min", SENSORS_LM85_IN4, SENSORS_LM85_IN4,
3224                            RW, LM85_SYSCTL_IN4, VALUE(1), 3 },
3225    { SENSORS_LM85_IN0_MAX, "in0_max", SENSORS_LM85_IN0, SENSORS_LM85_IN0,
3226                            RW, LM85_SYSCTL_IN0, VALUE(2), 3 },
3227    { SENSORS_LM85_IN1_MAX, "in1_max", SENSORS_LM85_IN1, SENSORS_LM85_IN1,
3228                            RW, LM85_SYSCTL_IN1, VALUE(2), 3 },
3229    { SENSORS_LM85_IN2_MAX, "in2_max", SENSORS_LM85_IN2, SENSORS_LM85_IN2,
3230                            RW, LM85_SYSCTL_IN2, VALUE(2), 3 },
3231    { SENSORS_LM85_IN3_MAX, "in3_max", SENSORS_LM85_IN3, SENSORS_LM85_IN3,
3232                            RW, LM85_SYSCTL_IN3, VALUE(2), 3 },
3233    { SENSORS_LM85_IN4_MAX, "in4_max", SENSORS_LM85_IN4, SENSORS_LM85_IN4,
3234                            RW, LM85_SYSCTL_IN4, VALUE(2), 3 },
3235    { SENSORS_LM85_FAN1, "fan1", NOMAP, NOMAP,
3236                         R, LM85_SYSCTL_FAN1, VALUE(2), 0 },
3237    { SENSORS_LM85_FAN2, "fan2", NOMAP, NOMAP,
3238                         R, LM85_SYSCTL_FAN2, VALUE(2), 0 },
3239    { SENSORS_LM85_FAN3, "fan3", NOMAP, NOMAP,
3240                         R, LM85_SYSCTL_FAN3, VALUE(2), 0 },
3241    { SENSORS_LM85_FAN4, "fan4", NOMAP, NOMAP,
3242                         R, LM85_SYSCTL_FAN4, VALUE(2), 0 },
3243    { SENSORS_LM85_FAN1_MIN, "fan1_min", SENSORS_LM85_FAN1, SENSORS_LM85_FAN1,
3244                             RW, LM85_SYSCTL_FAN1, VALUE(1), 0 },
3245    { SENSORS_LM85_FAN2_MIN, "fan2_min", SENSORS_LM85_FAN2, SENSORS_LM85_FAN2,
3246                             RW, LM85_SYSCTL_FAN2, VALUE(1), 0 },
3247    { SENSORS_LM85_FAN3_MIN, "fan3_min", SENSORS_LM85_FAN3, SENSORS_LM85_FAN3,
3248                             RW, LM85_SYSCTL_FAN3, VALUE(1), 0 },
3249    { SENSORS_LM85_FAN4_MIN, "fan4_min", SENSORS_LM85_FAN4, SENSORS_LM85_FAN4,
3250                             RW, LM85_SYSCTL_FAN4, VALUE(1), 0 },
3251    { SENSORS_LM85_TEMP1, "temp1", NOMAP, NOMAP,
3252                         R, LM85_SYSCTL_TEMP1, VALUE(3), 2 },
3253    { SENSORS_LM85_TEMP2, "temp2", NOMAP, NOMAP,
3254                         R, LM85_SYSCTL_TEMP2, VALUE(3), 2 },
3255    { SENSORS_LM85_TEMP3, "temp3", NOMAP, NOMAP,
3256                         R, LM85_SYSCTL_TEMP3, VALUE(3), 2 },
3257    { SENSORS_LM85_TEMP1_MIN, "temp1_min", SENSORS_LM85_TEMP1,
3258                              SENSORS_LM85_TEMP1, RW, 
3259                              LM85_SYSCTL_TEMP1, VALUE(1), 2 },
3260    { SENSORS_LM85_TEMP2_MIN, "temp2_min", SENSORS_LM85_TEMP2,
3261                              SENSORS_LM85_TEMP2, RW, 
3262                              LM85_SYSCTL_TEMP2, VALUE(1), 2 },
3263    { SENSORS_LM85_TEMP3_MIN, "temp3_min", SENSORS_LM85_TEMP3,
3264                              SENSORS_LM85_TEMP3, RW, 
3265                              LM85_SYSCTL_TEMP3, VALUE(1), 2 },
3266    { SENSORS_LM85_TEMP1_MAX, "temp1_max", SENSORS_LM85_TEMP1,
3267                              SENSORS_LM85_TEMP1, RW, 
3268                              LM85_SYSCTL_TEMP1, VALUE(2), 2 },
3269    { SENSORS_LM85_TEMP2_MAX, "temp2_max", SENSORS_LM85_TEMP2,
3270                              SENSORS_LM85_TEMP2, RW, 
3271                              LM85_SYSCTL_TEMP2, VALUE(2), 2 },
3272    { SENSORS_LM85_TEMP3_MAX, "temp3_max", SENSORS_LM85_TEMP3,
3273                              SENSORS_LM85_TEMP3, RW, 
3274                              LM85_SYSCTL_TEMP3, VALUE(2), 2 },
3275    { SENSORS_LM85_VID, "vid", NOMAP, NOMAP,
3276                         R, LM85_SYSCTL_VID, VALUE(1), 3 },
3277    { SENSORS_LM85_VRM, "vrm", NOMAP, NOMAP,
3278                         RW, LM85_SYSCTL_VRM, VALUE(1), 1 },
3279    { SENSORS_LM85_ALARMS, "alarms", NOMAP, NOMAP, 
3280                           R, LM85_SYSCTL_ALARMS, VALUE(1), 0 },
3281    { SENSORS_LM85_PWM1, "pwm1", NOMAP, NOMAP,
3282                         RW, LM85_SYSCTL_PWM1, VALUE(1), 0 },
3283    { SENSORS_LM85_PWM2, "pwm2", NOMAP, NOMAP,
3284                         RW, LM85_SYSCTL_PWM2, VALUE(1), 0 },
3285    { SENSORS_LM85_PWM3, "pwm3", NOMAP, NOMAP,
3286                         RW, LM85_SYSCTL_PWM3, VALUE(1), 0 },
3287    { SENSORS_LM85_PWM1_SPINUP, "pwm1_spinup", SENSORS_LM85_PWM1, 
3288                         NOMAP, RW, 
3289                         LM85_SYSCTL_PWM_CFG1, VALUE(1), 1 },
3290    { SENSORS_LM85_PWM2_SPINUP, "pwm2_spinup", SENSORS_LM85_PWM2, 
3291                         NOMAP, RW, 
3292                         LM85_SYSCTL_PWM_CFG2, VALUE(1), 1 },
3293    { SENSORS_LM85_PWM3_SPINUP, "pwm3_spinup", SENSORS_LM85_PWM3, 
3294                         NOMAP, RW, 
3295                         LM85_SYSCTL_PWM_CFG3, VALUE(1), 1 },
3296    { SENSORS_LM85_PWM1_MIN, "pwm1_min", SENSORS_LM85_PWM1, 
3297                         NOMAP, RW, 
3298                         LM85_SYSCTL_PWM_CFG1, VALUE(2), 1 },
3299    { SENSORS_LM85_PWM2_MIN, "pwm2_min", SENSORS_LM85_PWM2, 
3300                         NOMAP, RW, 
3301                         LM85_SYSCTL_PWM_CFG2, VALUE(2), 1 },
3302    { SENSORS_LM85_PWM3_MIN, "pwm3_min", SENSORS_LM85_PWM3, 
3303                         NOMAP, RW, 
3304                         LM85_SYSCTL_PWM_CFG3, VALUE(2), 1 },
3305    { SENSORS_LM85_PWM1_FREQ, "pwm1_freq", SENSORS_LM85_PWM1, 
3306                         NOMAP, RW, 
3307                         LM85_SYSCTL_PWM_CFG1, VALUE(3), 1 },
3308    { SENSORS_LM85_PWM2_FREQ, "pwm2_freq", SENSORS_LM85_PWM2, 
3309                         NOMAP, RW, 
3310                         LM85_SYSCTL_PWM_CFG2, VALUE(3), 1 },
3311    { SENSORS_LM85_PWM3_FREQ, "pwm3_freq", SENSORS_LM85_PWM3, 
3312                         NOMAP, RW, 
3313                         LM85_SYSCTL_PWM_CFG3, VALUE(3), 1 },
3314    { SENSORS_LM85_PWM1_MIN_CTL, "pwm1_min_ctl", SENSORS_LM85_PWM1, 
3315                         NOMAP, RW, 
3316                         LM85_SYSCTL_PWM_CFG1, VALUE(4), 1 },
3317    { SENSORS_LM85_PWM2_MIN_CTL, "pwm2_min_ctl", SENSORS_LM85_PWM2, 
3318                         NOMAP, RW, 
3319                         LM85_SYSCTL_PWM_CFG2, VALUE(4), 1 },
3320    { SENSORS_LM85_PWM3_MIN_CTL, "pwm3_min_ctl", SENSORS_LM85_PWM3, 
3321                         NOMAP, RW, 
3322                         LM85_SYSCTL_PWM_CFG3, VALUE(4), 1 },
3323    { SENSORS_LM85_PWM1_INVERT, "pwm1_invert", SENSORS_LM85_PWM1, 
3324                         NOMAP, RW, 
3325                         LM85_SYSCTL_PWM_CFG1, VALUE(5), 0 },
3326    { SENSORS_LM85_PWM2_INVERT, "pwm2_invert", SENSORS_LM85_PWM2, 
3327                         NOMAP, RW, 
3328                         LM85_SYSCTL_PWM_CFG2, VALUE(5), 0 },
3329    { SENSORS_LM85_PWM3_INVERT, "pwm3_invert", SENSORS_LM85_PWM3, 
3330                         NOMAP, RW, 
3331                         LM85_SYSCTL_PWM_CFG3, VALUE(5), 0 },
3332    { SENSORS_LM85_PWM1_ZONE, "pwm1_zone", SENSORS_LM85_PWM1, 
3333                         NOMAP, RW, 
3334                         LM85_SYSCTL_PWM_ZONE1, VALUE(1), 0 },
3335    { SENSORS_LM85_PWM2_ZONE, "pwm2_zone", SENSORS_LM85_PWM2, 
3336                         NOMAP, RW, 
3337                         LM85_SYSCTL_PWM_ZONE2, VALUE(1), 0 },
3338    { SENSORS_LM85_PWM3_ZONE, "pwm3_zone", SENSORS_LM85_PWM3, 
3339                         NOMAP, RW, 
3340                         LM85_SYSCTL_PWM_ZONE3, VALUE(1), 0 },
3341    { SENSORS_LM85_ZONE1_LIMIT, "zone1_limit", SENSORS_LM85_TEMP1, 
3342                         NOMAP, RW, 
3343                         LM85_SYSCTL_ZONE1, VALUE(1), 1 },
3344    { SENSORS_LM85_ZONE2_LIMIT, "zone2_limit", SENSORS_LM85_TEMP2, 
3345                         NOMAP, RW, 
3346                         LM85_SYSCTL_ZONE2, VALUE(1), 1 },
3347    { SENSORS_LM85_ZONE3_LIMIT, "zone3_limit", SENSORS_LM85_TEMP3, 
3348                         NOMAP, RW, 
3349                         LM85_SYSCTL_ZONE3, VALUE(1), 1 },
3350    { SENSORS_LM85_ZONE1_HYST, "zone1_hyst", SENSORS_LM85_TEMP1, 
3351                         NOMAP, RW, 
3352                         LM85_SYSCTL_ZONE1, VALUE(2), 1 },
3353    { SENSORS_LM85_ZONE2_HYST, "zone2_hyst", SENSORS_LM85_TEMP2, 
3354                         NOMAP, RW, 
3355                         LM85_SYSCTL_ZONE2, VALUE(2), 1 },
3356    { SENSORS_LM85_ZONE3_HYST, "zone3_hyst", SENSORS_LM85_TEMP3, 
3357                         NOMAP, RW, 
3358                         LM85_SYSCTL_ZONE3, VALUE(2), 1 },
3359    { SENSORS_LM85_ZONE1_RANGE, "zone1_range", SENSORS_LM85_TEMP1, 
3360                         NOMAP, RW, 
3361                         LM85_SYSCTL_ZONE1, VALUE(3), 1 },
3362    { SENSORS_LM85_ZONE2_RANGE, "zone2_range", SENSORS_LM85_TEMP2, 
3363                         NOMAP, RW, 
3364                         LM85_SYSCTL_ZONE2, VALUE(3), 1 },
3365    { SENSORS_LM85_ZONE3_RANGE, "zone3_range", SENSORS_LM85_TEMP3, 
3366                         NOMAP, RW, 
3367                         LM85_SYSCTL_ZONE3, VALUE(3), 1 },
3368    { SENSORS_LM85_ZONE1_CRITICAL, "zone1_critical", SENSORS_LM85_TEMP1, 
3369                         NOMAP, RW, 
3370                         LM85_SYSCTL_ZONE1, VALUE(4), 1 },
3371    { SENSORS_LM85_ZONE2_CRITICAL, "zone2_critical", SENSORS_LM85_TEMP2, 
3372                         NOMAP, RW, 
3373                         LM85_SYSCTL_ZONE2, VALUE(4), 1 },
3374    { SENSORS_LM85_ZONE3_CRITICAL, "zone3_critical", SENSORS_LM85_TEMP3, 
3375                         NOMAP, RW, 
3376                         LM85_SYSCTL_ZONE3, VALUE(4), 1 },
3377
3378    { SENSORS_ADM1027_FAN1_TACH_MODE, "fan1_tach_mode", SENSORS_LM85_FAN1, 
3379                         NOMAP, RW, 
3380                         ADM1027_SYSCTL_TACH_MODE, VALUE(1), 0 },
3381    { SENSORS_ADM1027_FAN2_TACH_MODE, "fan2_tach_mode", SENSORS_LM85_FAN2, 
3382                         NOMAP, RW, 
3383                         ADM1027_SYSCTL_TACH_MODE, VALUE(2), 0 },
3384    { SENSORS_ADM1027_FAN3_TACH_MODE, "fan3_tach_mode", SENSORS_LM85_FAN3, 
3385                         NOMAP, RW, 
3386                         ADM1027_SYSCTL_TACH_MODE, VALUE(3), 0 },
3387    { SENSORS_ADM1027_FAN4_TACH_MODE, "fan4_tach_mode", SENSORS_LM85_FAN4, 
3388                         NOMAP, RW, 
3389                         ADM1027_SYSCTL_TACH_MODE, VALUE(4), 0 },
3390    { SENSORS_ADM1027_PWM1_SMOOTH, "pwm1_smooth", SENSORS_LM85_PWM1, 
3391                         NOMAP, RW, 
3392                         LM85_SYSCTL_SMOOTH1, VALUE(1), 1 },
3393    { SENSORS_ADM1027_PWM2_SMOOTH, "pwm2_smooth", SENSORS_LM85_PWM2, 
3394                         NOMAP, RW, 
3395                         LM85_SYSCTL_SMOOTH2, VALUE(1), 1 },
3396    { SENSORS_ADM1027_PWM3_SMOOTH, "pwm3_smooth", SENSORS_LM85_PWM3, 
3397                         NOMAP, RW, 
3398                         LM85_SYSCTL_SMOOTH3, VALUE(1), 1 },
3399    { SENSORS_ADM1027_TEMP1_OFFSET, "temp1_offset", SENSORS_LM85_TEMP1,
3400                         SENSORS_LM85_TEMP1, RW, 
3401                         ADM1027_SYSCTL_TEMP_OFFSET1, VALUE(1), 2 },
3402    { SENSORS_ADM1027_TEMP2_OFFSET, "temp2_offset", SENSORS_LM85_TEMP2,
3403                         SENSORS_LM85_TEMP2, RW, 
3404                         ADM1027_SYSCTL_TEMP_OFFSET2, VALUE(1), 2 },
3405    { SENSORS_ADM1027_TEMP3_OFFSET, "temp3_offset", SENSORS_LM85_TEMP3,
3406                         SENSORS_LM85_TEMP3, RW, 
3407                         ADM1027_SYSCTL_TEMP_OFFSET3, VALUE(1), 2 },
3408    { SENSORS_ADM1027_FAN1_PPR, "fan1_ppr", SENSORS_LM85_FAN1, 
3409                         NOMAP, RW, 
3410                         ADM1027_SYSCTL_FAN_PPR, VALUE(1), 0 },
3411    { SENSORS_ADM1027_FAN2_PPR, "fan2_ppr", SENSORS_LM85_FAN2, 
3412                         NOMAP, RW, 
3413                         ADM1027_SYSCTL_FAN_PPR, VALUE(2), 0 },
3414    { SENSORS_ADM1027_FAN3_PPR, "fan3_ppr", SENSORS_LM85_FAN3, 
3415                         NOMAP, RW, 
3416                         ADM1027_SYSCTL_FAN_PPR, VALUE(3), 0 },
3417    { SENSORS_ADM1027_FAN4_PPR, "fan4_ppr", SENSORS_LM85_FAN4, 
3418                         NOMAP, RW, 
3419                         ADM1027_SYSCTL_FAN_PPR, VALUE(4), 0 },
3420    { SENSORS_ADM1027_ALARM_MASK, "alarm_mask", NOMAP, 
3421                         NOMAP, RW, 
3422                         ADM1027_SYSCTL_ALARM_MASK, VALUE(1), 0 },
3423    { 0 }
3424  };
3425
3426static sensors_chip_feature lm87_features[] =
3427  { 
3428    { SENSORS_LM87_IN0, "2.5V", NOMAP, NOMAP,
3429                        R, LM87_SYSCTL_IN0, VALUE(3), 2 },
3430    { SENSORS_LM87_IN1, "Vccp1", NOMAP, NOMAP,
3431                        R, LM87_SYSCTL_IN1, VALUE(3), 2 },
3432    { SENSORS_LM87_IN2, "3.3V", NOMAP, NOMAP,
3433                        R, LM87_SYSCTL_IN2, VALUE(3), 2 },
3434    { SENSORS_LM87_IN3, "5V", NOMAP, NOMAP,
3435                        R, LM87_SYSCTL_IN3, VALUE(3), 2 },
3436    { SENSORS_LM87_IN4, "12V", NOMAP, NOMAP,
3437                        R, LM87_SYSCTL_IN4, VALUE(3), 2 },
3438    { SENSORS_LM87_IN5, "Vccp2", NOMAP, NOMAP,
3439                        R, LM87_SYSCTL_IN5, VALUE(3), 2 },
3440    { SENSORS_LM87_AIN1, "AIN1", NOMAP, NOMAP,
3441                        R, LM87_SYSCTL_AIN1, VALUE(3), 0 },
3442    { SENSORS_LM87_AIN2, "AIN2", NOMAP, NOMAP,
3443                        R, LM87_SYSCTL_AIN2, VALUE(3), 0 },
3444    { SENSORS_LM87_IN0_MIN, "AmbTemp_min", SENSORS_LM87_IN0, 
3445                        SENSORS_LM87_IN0, RW, 
3446                        LM87_SYSCTL_IN0, VALUE(1), 2 },
3447    { SENSORS_LM87_IN1_MIN, "Vccp1_min", SENSORS_LM87_IN1, 
3448                        SENSORS_LM87_IN1, RW, 
3449                        LM87_SYSCTL_IN1, VALUE(1), 2 },
3450    { SENSORS_LM87_IN2_MIN, "3.3V_min", SENSORS_LM87_IN2, 
3451                        SENSORS_LM87_IN2, RW, 
3452                        LM87_SYSCTL_IN2, VALUE(1), 2 },
3453    { SENSORS_LM87_IN3_MIN, "5V_min", SENSORS_LM87_IN3, 
3454                        SENSORS_LM87_IN3, RW, 
3455                        LM87_SYSCTL_IN3, VALUE(1), 2 },
3456    { SENSORS_LM87_IN4_MIN, "12V_min", SENSORS_LM87_IN4, 
3457                        SENSORS_LM87_IN4, RW, 
3458                        LM87_SYSCTL_IN4, VALUE(1), 2 },
3459    { SENSORS_LM87_IN5_MIN, "Vccp2_min", SENSORS_LM87_IN5, 
3460                        SENSORS_LM87_IN5, RW, 
3461                        LM87_SYSCTL_IN5, VALUE(1), 2 },
3462    { SENSORS_LM87_AIN1_MIN, "AIN1_min", SENSORS_LM87_AIN1, 
3463                        SENSORS_LM87_AIN1, RW, 
3464                        LM87_SYSCTL_AIN1, VALUE(1), 0 },
3465    { SENSORS_LM87_AIN2_MIN, "AIN2_min", SENSORS_LM87_AIN2, 
3466                        SENSORS_LM87_AIN2, RW, 
3467                        LM87_SYSCTL_AIN2, VALUE(1), 0 },
3468    { SENSORS_LM87_IN0_MAX, "AmbTemp_max", SENSORS_LM87_IN0, 
3469                        SENSORS_LM87_IN0, RW,
3470                        LM87_SYSCTL_IN0, VALUE(2), 2 },
3471    { SENSORS_LM87_IN1_MAX, "Vccp1_max", SENSORS_LM87_IN1, 
3472                        SENSORS_LM87_IN1, RW, 
3473                        LM87_SYSCTL_IN1, VALUE(2), 2 },
3474    { SENSORS_LM87_IN2_MAX, "3.3V_max", SENSORS_LM87_IN2, 
3475                        SENSORS_LM87_IN2, RW, 
3476                        LM87_SYSCTL_IN2, VALUE(2), 2 },
3477    { SENSORS_LM87_IN3_MAX, "5V_max", SENSORS_LM87_IN3, 
3478                        SENSORS_LM87_IN3, RW, 
3479                        LM87_SYSCTL_IN3, VALUE(2), 2 },
3480    { SENSORS_LM87_IN4_MAX, "12V_max", SENSORS_LM87_IN4, 
3481                        SENSORS_LM87_IN4, RW,
3482                        LM87_SYSCTL_IN4, VALUE(2), 2 },
3483    { SENSORS_LM87_IN5_MAX, "Vccp2_max", SENSORS_LM87_IN5, 
3484                        SENSORS_LM87_IN5, RW, 
3485                        LM87_SYSCTL_IN5, VALUE(2), 2 },
3486    { SENSORS_LM87_AIN1_MAX, "AIN1_max", SENSORS_LM87_AIN1, 
3487                        SENSORS_LM87_AIN1, RW, 
3488                        LM87_SYSCTL_AIN1, VALUE(2), 0 },
3489    { SENSORS_LM87_AIN2_MAX, "AIN2_max", SENSORS_LM87_AIN2, 
3490                        SENSORS_LM87_AIN2, RW, 
3491                        LM87_SYSCTL_AIN2, VALUE(2), 0 },
3492    { SENSORS_LM87_FAN1, "fan1", NOMAP, NOMAP,
3493                        R, LM87_SYSCTL_FAN1, VALUE(2), 0 },
3494    { SENSORS_LM87_FAN2, "fan2", NOMAP, NOMAP,
3495                        R, LM87_SYSCTL_FAN2, VALUE(2), 0 },
3496    { SENSORS_LM87_FAN1_MIN, "fan1_min", SENSORS_LM87_FAN1,
3497                        SENSORS_LM87_FAN1, RW, 
3498                        LM87_SYSCTL_FAN1, VALUE(1), 0 },
3499    { SENSORS_LM87_FAN2_MIN, "fan2_min", SENSORS_LM87_FAN2, 
3500                        SENSORS_LM87_FAN2, RW, 
3501                        LM87_SYSCTL_FAN2, VALUE(1), 0 },
3502    { SENSORS_LM87_TEMP3, "CPU2_Temp", NOMAP, NOMAP,
3503                         R, LM87_SYSCTL_TEMP3, VALUE(3), 1 },
3504    { SENSORS_LM87_TEMP2, "CPU_Temp", NOMAP, NOMAP, 
3505                        R, LM87_SYSCTL_TEMP2, VALUE(3), 1 },
3506    { SENSORS_LM87_TEMP1, "temp1", NOMAP, NOMAP,
3507                         R, LM87_SYSCTL_TEMP1, VALUE(3), 1 },
3508    { SENSORS_LM87_TEMP1_HYST, "temp1_min", SENSORS_LM87_TEMP1,
3509                         SENSORS_LM87_TEMP1, RW, 
3510                         LM87_SYSCTL_TEMP1, VALUE(2), 1 },
3511    { SENSORS_LM87_TEMP1_OVER, "temp1_max", SENSORS_LM87_TEMP1,
3512                         SENSORS_LM87_TEMP1, RW, 
3513                         LM87_SYSCTL_TEMP1, VALUE(1), 1 },
3514    { SENSORS_LM87_TEMP2_HYST, "temp2_min", SENSORS_LM87_TEMP2,
3515                         SENSORS_LM87_TEMP2, RW, 
3516                         LM87_SYSCTL_TEMP2, VALUE(2), 1 },
3517    { SENSORS_LM87_TEMP2_OVER, "temp2_max", SENSORS_LM87_TEMP2,
3518                         SENSORS_LM87_TEMP2, RW, 
3519                         LM87_SYSCTL_TEMP2, VALUE(1), 1 },
3520    { SENSORS_LM87_TEMP3_HYST, "temp3_min", SENSORS_LM87_TEMP3,
3521                         SENSORS_LM87_TEMP3, RW, 
3522                         LM87_SYSCTL_TEMP3, VALUE(2), 1 },
3523    { SENSORS_LM87_TEMP3_OVER, "temp3_max", SENSORS_LM87_TEMP3,
3524                         SENSORS_LM87_TEMP3, RW, 
3525                         LM87_SYSCTL_TEMP3, VALUE(1), 1 },
3526    { SENSORS_LM87_VID, "vid", NOMAP, NOMAP,
3527                         R, LM87_SYSCTL_VID, VALUE(1), 3 },
3528    { SENSORS_LM87_VRM, "vrm", NOMAP, NOMAP,
3529                         RW, LM87_SYSCTL_VRM, VALUE(1), 1 },
3530/* Ho hum, this will be wrong if fan1 is disabled, but fan2 isn't.. fix?? */
3531    { SENSORS_LM87_FAN1_DIV, "fan1_div", SENSORS_LM87_FAN1, 
3532                         NOMAP, RW, 
3533                         LM87_SYSCTL_FAN_DIV, VALUE(1), 0 },
3534    { SENSORS_LM87_FAN2_DIV, "fan2_div", SENSORS_LM87_FAN2, 
3535                         NOMAP, RW, 
3536                         LM87_SYSCTL_FAN_DIV, VALUE(2), 0 },
3537    { SENSORS_LM87_ALARMS, "alarms", NOMAP, NOMAP, 
3538                         R, LM87_SYSCTL_ALARMS, VALUE(1), 0 },
3539    { SENSORS_LM87_ANALOG_OUT, "analog_out", NOMAP,
3540                         NOMAP, RW,
3541                         LM87_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
3542    { 0 }
3543  };
3544
3545static sensors_chip_feature mtp008_features[] =
3546  { 
3547    { SENSORS_MTP008_IN0, "in0", NOMAP, NOMAP,
3548                        R, MTP008_SYSCTL_IN0, VALUE(3), 2 },
3549    { SENSORS_MTP008_IN1, "in1", NOMAP, NOMAP,
3550                        R, MTP008_SYSCTL_IN1, VALUE(3), 2 },
3551    { SENSORS_MTP008_IN2, "in2", NOMAP, NOMAP,
3552                        R, MTP008_SYSCTL_IN2, VALUE(3), 2 },
3553    { SENSORS_MTP008_IN3, "in3", NOMAP, NOMAP,
3554                        R, MTP008_SYSCTL_IN3, VALUE(3), 2 },
3555    { SENSORS_MTP008_IN4, "in4", NOMAP, NOMAP,
3556                        R, MTP008_SYSCTL_IN4, VALUE(3), 2 },
3557    { SENSORS_MTP008_IN5, "in5", NOMAP, NOMAP,
3558                        R, MTP008_SYSCTL_IN5, VALUE(3), 2 },
3559    { SENSORS_MTP008_IN6, "in6", NOMAP, NOMAP,
3560                        R, MTP008_SYSCTL_IN6, VALUE(3), 2 },
3561    { SENSORS_MTP008_IN0_MIN, "in0_min", SENSORS_MTP008_IN0, 
3562                        SENSORS_MTP008_IN0, RW, 
3563                        MTP008_SYSCTL_IN0, VALUE(1), 2 },
3564    { SENSORS_MTP008_IN1_MIN, "in1_min", SENSORS_MTP008_IN1, 
3565                        SENSORS_MTP008_IN1, RW, 
3566                        MTP008_SYSCTL_IN1, VALUE(1), 2 },
3567    { SENSORS_MTP008_IN2_MIN, "in2_min", SENSORS_MTP008_IN2, 
3568                        SENSORS_MTP008_IN2, RW, 
3569                        MTP008_SYSCTL_IN2, VALUE(1), 2 },
3570    { SENSORS_MTP008_IN3_MIN, "in3_min", SENSORS_MTP008_IN3, 
3571                        SENSORS_MTP008_IN3, RW, 
3572                        MTP008_SYSCTL_IN3, VALUE(1), 2 },
3573    { SENSORS_MTP008_IN4_MIN, "in4_min", SENSORS_MTP008_IN4, 
3574                        SENSORS_MTP008_IN4, RW, 
3575                        MTP008_SYSCTL_IN4, VALUE(1), 2 },
3576    { SENSORS_MTP008_IN5_MIN, "in5_min", SENSORS_MTP008_IN5, 
3577                        SENSORS_MTP008_IN5, RW, 
3578                        MTP008_SYSCTL_IN5, VALUE(1), 2 },
3579    { SENSORS_MTP008_IN6_MIN, "in6_min", SENSORS_MTP008_IN6, 
3580                        SENSORS_MTP008_IN6, RW, 
3581                        MTP008_SYSCTL_IN6, VALUE(1), 2 },
3582    { SENSORS_MTP008_IN0_MAX, "in0_max", SENSORS_MTP008_IN0, 
3583                        SENSORS_MTP008_IN0, RW,
3584                        MTP008_SYSCTL_IN0, VALUE(2), 2 },
3585    { SENSORS_MTP008_IN1_MAX, "in1_max", SENSORS_MTP008_IN1, 
3586                        SENSORS_MTP008_IN1, RW, 
3587                        MTP008_SYSCTL_IN1, VALUE(2), 2 },
3588    { SENSORS_MTP008_IN2_MAX, "in2_max", SENSORS_MTP008_IN2, 
3589                        SENSORS_MTP008_IN2, RW, 
3590                        MTP008_SYSCTL_IN2, VALUE(2), 2 },
3591    { SENSORS_MTP008_IN3_MAX, "in3_max", SENSORS_MTP008_IN3, 
3592                        SENSORS_MTP008_IN3, RW, 
3593                        MTP008_SYSCTL_IN3, VALUE(2), 2 },
3594    { SENSORS_MTP008_IN4_MAX, "in4_max", SENSORS_MTP008_IN4, 
3595                        SENSORS_MTP008_IN4, RW,
3596                        MTP008_SYSCTL_IN4, VALUE(2), 2 },
3597    { SENSORS_MTP008_IN5_MAX, "in5_max", SENSORS_MTP008_IN5, 
3598                        SENSORS_MTP008_IN5, RW, 
3599                        MTP008_SYSCTL_IN5, VALUE(2), 2 },
3600    { SENSORS_MTP008_IN6_MAX, "in6_max", SENSORS_MTP008_IN6, 
3601                        SENSORS_MTP008_IN6, RW, 
3602                        MTP008_SYSCTL_IN6, VALUE(2), 2 },
3603    { SENSORS_MTP008_FAN1, "fan1", NOMAP, NOMAP,
3604                        R, MTP008_SYSCTL_FAN1, VALUE(2), 0 },
3605    { SENSORS_MTP008_FAN2, "fan2", NOMAP, NOMAP,
3606                        R, MTP008_SYSCTL_FAN2, VALUE(2), 0 },
3607    { SENSORS_MTP008_FAN3, "fan3", NOMAP, NOMAP,
3608                        R, MTP008_SYSCTL_FAN3, VALUE(2), 0 },
3609    { SENSORS_MTP008_FAN1_MIN, "fan1_min", SENSORS_MTP008_FAN1,
3610                        SENSORS_MTP008_FAN1, RW, 
3611                        MTP008_SYSCTL_FAN1, VALUE(1), 0 },
3612    { SENSORS_MTP008_FAN2_MIN, "fan2_min", SENSORS_MTP008_FAN2, 
3613                        SENSORS_MTP008_FAN2, RW, 
3614                        MTP008_SYSCTL_FAN2, VALUE(1), 0 },
3615    { SENSORS_MTP008_FAN3_MIN, "fan3_min", SENSORS_MTP008_FAN3, 
3616                        SENSORS_MTP008_FAN3, RW, 
3617                        MTP008_SYSCTL_FAN3, VALUE(1), 0 },
3618    { SENSORS_MTP008_TEMP1, "temp1", NOMAP, NOMAP,
3619                        R, MTP008_SYSCTL_TEMP1, VALUE(3), 1 },
3620    { SENSORS_MTP008_TEMP2, "temp2", NOMAP, NOMAP, 
3621                        R, MTP008_SYSCTL_TEMP2, VALUE(3), 1 },
3622    { SENSORS_MTP008_TEMP3, "temp3", NOMAP, NOMAP,
3623                        R, MTP008_SYSCTL_TEMP3, VALUE(3), 1 },
3624    { SENSORS_MTP008_TEMP1_OVER, "temp1_over", SENSORS_MTP008_TEMP1,
3625                        SENSORS_MTP008_TEMP1, RW,
3626                        MTP008_SYSCTL_TEMP1, VALUE(1), 1 },
3627    { SENSORS_MTP008_TEMP2_OVER, "temp2_over", SENSORS_MTP008_TEMP2,
3628                        SENSORS_MTP008_TEMP2, RW,
3629                        MTP008_SYSCTL_TEMP2, VALUE(1), 1 },
3630    { SENSORS_MTP008_TEMP3_OVER, "temp3_over", SENSORS_MTP008_TEMP3,
3631                        SENSORS_MTP008_TEMP3, RW,
3632                        MTP008_SYSCTL_TEMP3, VALUE(1), 1 },
3633    { SENSORS_MTP008_TEMP1_HYST, "temp1_hyst", SENSORS_MTP008_TEMP1,
3634                        SENSORS_MTP008_TEMP1, RW,
3635                        MTP008_SYSCTL_TEMP1, VALUE(2), 1 },
3636    { SENSORS_MTP008_TEMP2_HYST, "temp2_hyst", SENSORS_MTP008_TEMP2,
3637                        SENSORS_MTP008_TEMP2, RW,
3638                        MTP008_SYSCTL_TEMP2, VALUE(2), 1 },
3639    { SENSORS_MTP008_TEMP3_HYST, "temp3_hyst", SENSORS_MTP008_TEMP3,
3640                        SENSORS_MTP008_TEMP3, RW,
3641                        MTP008_SYSCTL_TEMP3, VALUE(2), 1 },
3642    { SENSORS_MTP008_VID, "vid", NOMAP, NOMAP,
3643                         R, MTP008_SYSCTL_VID, VALUE(1), 2 },
3644    { SENSORS_MTP008_FAN1_DIV, "fan1_div", NOMAP, 
3645                         NOMAP, RW, 
3646                         MTP008_SYSCTL_FAN_DIV, VALUE(1), 0 },
3647    { SENSORS_MTP008_FAN2_DIV, "fan2_div", NOMAP, 
3648                         NOMAP, RW, 
3649                         MTP008_SYSCTL_FAN_DIV, VALUE(2), 0 },
3650    { SENSORS_MTP008_FAN3_DIV, "fan3_div", NOMAP, 
3651                         NOMAP, RW, 
3652                         MTP008_SYSCTL_FAN_DIV, VALUE(3), 0 },
3653    { SENSORS_MTP008_ALARMS, "alarms", NOMAP, NOMAP, 
3654                         R, MTP008_SYSCTL_ALARMS, VALUE(1), 0 },
3655    { SENSORS_MTP008_BEEP, "beeps", NOMAP, NOMAP, 
3656                         R, MTP008_SYSCTL_BEEP, VALUE(1), 0 },
3657    { 0 }
3658  };
3659
3660static sensors_chip_feature ds1621_features[] =
3661  {
3662    { SENSORS_DS1621_TEMP, "temp", NOMAP, NOMAP,
3663                         R, DS1621_SYSCTL_TEMP, VALUE(3), 1 },
3664    { SENSORS_DS1621_TEMP_HYST, "temp_hyst", SENSORS_DS1621_TEMP,
3665                              SENSORS_DS1621_TEMP, RW, 
3666                              DS1621_SYSCTL_TEMP, VALUE(2), 1, "temp1_min", 3 },
3667    { SENSORS_DS1621_TEMP_OVER, "temp_over", SENSORS_DS1621_TEMP,
3668                              SENSORS_DS1621_TEMP, RW, 
3669                              DS1621_SYSCTL_TEMP, VALUE(1), 1 },
3670    { SENSORS_DS1621_ALARMS, "alarms", NOMAP, NOMAP,
3671                           R, DS1621_SYSCTL_ALARMS, VALUE(1), 0 },
3672    { 0 }
3673  };
3674
3675static sensors_chip_feature it87_features[] =
3676  {
3677    { SENSORS_IT87_IN0, "in0", NOMAP, NOMAP,
3678                        R, IT87_SYSCTL_IN0, VALUE(3), 2 },
3679    { SENSORS_IT87_IN1, "in1", NOMAP, NOMAP,
3680                        R, IT87_SYSCTL_IN1, VALUE(3), 2 },
3681    { SENSORS_IT87_IN2, "in2", NOMAP, NOMAP,
3682                        R, IT87_SYSCTL_IN2, VALUE(3), 2 },
3683    { SENSORS_IT87_IN3, "in3", NOMAP, NOMAP,
3684                        R, IT87_SYSCTL_IN3, VALUE(3), 2 },
3685    { SENSORS_IT87_IN4, "in4", NOMAP, NOMAP,
3686                        R, IT87_SYSCTL_IN4, VALUE(3), 2 },
3687    { SENSORS_IT87_IN5, "in5", NOMAP, NOMAP,
3688                        R, IT87_SYSCTL_IN5, VALUE(3), 2 },
3689    { SENSORS_IT87_IN6, "in6", NOMAP, NOMAP,
3690                        R, IT87_SYSCTL_IN6, VALUE(3), 2 },
3691    { SENSORS_IT87_IN7, "in7", NOMAP, NOMAP,
3692                        R, IT87_SYSCTL_IN7, VALUE(3), 2 },
3693    { SENSORS_IT87_IN8, "in8", NOMAP, NOMAP,
3694                        R, IT87_SYSCTL_IN8, VALUE(3), 2 },
3695    { SENSORS_IT87_IN0_MIN, "in0_min", SENSORS_IT87_IN0, SENSORS_IT87_IN0,
3696                            RW, IT87_SYSCTL_IN0, VALUE(1), 2 },
3697    { SENSORS_IT87_IN1_MIN, "in1_min", SENSORS_IT87_IN1, SENSORS_IT87_IN1,
3698                            RW, IT87_SYSCTL_IN1, VALUE(1), 2 },
3699    { SENSORS_IT87_IN2_MIN, "in2_min", SENSORS_IT87_IN2, SENSORS_IT87_IN2,
3700                            RW, IT87_SYSCTL_IN2, VALUE(1), 2 },
3701    { SENSORS_IT87_IN3_MIN, "in3_min", SENSORS_IT87_IN3, SENSORS_IT87_IN3,
3702                            RW, IT87_SYSCTL_IN3, VALUE(1), 2 },
3703    { SENSORS_IT87_IN4_MIN, "in4_min", SENSORS_IT87_IN4, SENSORS_IT87_IN4,
3704                            RW, IT87_SYSCTL_IN4, VALUE(1), 2 },
3705    { SENSORS_IT87_IN5_MIN, "in5_min", SENSORS_IT87_IN5, SENSORS_IT87_IN5,
3706                            RW, IT87_SYSCTL_IN5, VALUE(1), 2 },
3707    { SENSORS_IT87_IN6_MIN, "in6_min", SENSORS_IT87_IN6, SENSORS_IT87_IN6,
3708                            RW, IT87_SYSCTL_IN6, VALUE(1), 2 },
3709    { SENSORS_IT87_IN7_MIN, "in7_min", SENSORS_IT87_IN7, SENSORS_IT87_IN7,
3710                            RW, IT87_SYSCTL_IN7, VALUE(1), 2 },
3711    { SENSORS_IT87_IN0_MAX, "in0_max", SENSORS_IT87_IN0, SENSORS_IT87_IN0,
3712                            RW, IT87_SYSCTL_IN0, VALUE(2), 2 },
3713    { SENSORS_IT87_IN1_MAX, "in1_max", SENSORS_IT87_IN1, SENSORS_IT87_IN1,
3714                            RW, IT87_SYSCTL_IN1, VALUE(2), 2 },
3715    { SENSORS_IT87_IN2_MAX, "in2_max", SENSORS_IT87_IN2, SENSORS_IT87_IN2,
3716                            RW, IT87_SYSCTL_IN2, VALUE(2), 2 },
3717    { SENSORS_IT87_IN3_MAX, "in3_max", SENSORS_IT87_IN3, SENSORS_IT87_IN3,
3718                            RW, IT87_SYSCTL_IN3, VALUE(2), 2 },
3719    { SENSORS_IT87_IN4_MAX, "in4_max", SENSORS_IT87_IN4, SENSORS_IT87_IN4,
3720                            RW, IT87_SYSCTL_IN4, VALUE(2), 2 },
3721    { SENSORS_IT87_IN5_MAX, "in5_max", SENSORS_IT87_IN5, SENSORS_IT87_IN5,
3722                            RW, IT87_SYSCTL_IN5, VALUE(2), 2 },
3723    { SENSORS_IT87_IN6_MAX, "in6_max", SENSORS_IT87_IN6, SENSORS_IT87_IN6,
3724                            RW, IT87_SYSCTL_IN6, VALUE(2), 2 },
3725    { SENSORS_IT87_IN7_MAX, "in7_max", SENSORS_IT87_IN7, SENSORS_IT87_IN7,
3726                            RW, IT87_SYSCTL_IN7, VALUE(2), 2 },
3727    { SENSORS_IT87_FAN1, "fan1", NOMAP, NOMAP,
3728                         R, IT87_SYSCTL_FAN1, VALUE(2), 0 },
3729    { SENSORS_IT87_FAN2, "fan2", NOMAP, NOMAP,
3730                         R, IT87_SYSCTL_FAN2, VALUE(2), 0 },
3731    { SENSORS_IT87_FAN3, "fan3", NOMAP, NOMAP,
3732                         R, IT87_SYSCTL_FAN3, VALUE(2), 0 },
3733    { SENSORS_IT87_FAN1_MIN, "fan1_min", SENSORS_IT87_FAN1, SENSORS_IT87_FAN1,
3734                             RW, IT87_SYSCTL_FAN1, VALUE(1), 0 },
3735    { SENSORS_IT87_FAN2_MIN, "fan2_min", SENSORS_IT87_FAN2, SENSORS_IT87_FAN2,
3736                             RW, IT87_SYSCTL_FAN2, VALUE(1), 0 },
3737    { SENSORS_IT87_FAN3_MIN, "fan3_min", SENSORS_IT87_FAN3, SENSORS_IT87_FAN3,
3738                             RW, IT87_SYSCTL_FAN3, VALUE(1), 0 },
3739    { SENSORS_IT87_TEMP1, "temp1", NOMAP, NOMAP,
3740                         R, IT87_SYSCTL_TEMP1, VALUE(3), 1 },
3741    { SENSORS_IT87_TEMP2, "temp2", NOMAP, NOMAP,
3742                         R, IT87_SYSCTL_TEMP2, VALUE(3), 1 },
3743    { SENSORS_IT87_TEMP3, "temp3", NOMAP, NOMAP,
3744                         R, IT87_SYSCTL_TEMP3, VALUE(3), 1 },
3745    { SENSORS_IT87_TEMP1_LOW, "temp1_low", SENSORS_IT87_TEMP1,
3746                              SENSORS_IT87_TEMP1, RW,
3747                              IT87_SYSCTL_TEMP1, VALUE(2), 1 },
3748    { SENSORS_IT87_TEMP2_LOW, "temp2_low", SENSORS_IT87_TEMP2,
3749                              SENSORS_IT87_TEMP2, RW,
3750                              IT87_SYSCTL_TEMP2, VALUE(2), 1 },
3751    { SENSORS_IT87_TEMP3_LOW, "temp3_low", SENSORS_IT87_TEMP3,
3752                              SENSORS_IT87_TEMP3, RW,
3753                              IT87_SYSCTL_TEMP3, VALUE(2), 1 },
3754    { SENSORS_IT87_TEMP1_HIGH, "temp1_over", SENSORS_IT87_TEMP1,
3755                              SENSORS_IT87_TEMP1, RW,
3756                              IT87_SYSCTL_TEMP1, VALUE(1), 1 },
3757    { SENSORS_IT87_TEMP2_HIGH, "temp2_over", SENSORS_IT87_TEMP2,
3758                              SENSORS_IT87_TEMP2, RW,
3759                              IT87_SYSCTL_TEMP2, VALUE(1), 1 },
3760    { SENSORS_IT87_TEMP3_HIGH, "temp3_over", SENSORS_IT87_TEMP3,
3761                              SENSORS_IT87_TEMP3, RW,
3762                              IT87_SYSCTL_TEMP3, VALUE(1), 1 },
3763    { SENSORS_IT87_VID, "vid", NOMAP, NOMAP,
3764                        R, IT87_SYSCTL_VID, VALUE(1), 2 },
3765    { SENSORS_IT87_FAN1_DIV, "fan1_div", SENSORS_IT87_FAN1, NOMAP,
3766                             RW, IT87_SYSCTL_FAN_DIV, VALUE(1),
3767                             0 },
3768    { SENSORS_IT87_FAN2_DIV, "fan2_div", SENSORS_IT87_FAN2, NOMAP,
3769                             RW, IT87_SYSCTL_FAN_DIV, VALUE(2),
3770                             0 },
3771    { SENSORS_IT87_FAN3_DIV, "fan3_div", SENSORS_IT87_FAN3, NOMAP,
3772                              RW, IT87_SYSCTL_FAN_DIV, VALUE(3),
3773                              0 },
3774    { SENSORS_IT87_ALARMS, "alarms", NOMAP, NOMAP,
3775                           R, IT87_SYSCTL_ALARMS, VALUE(1) },
3776    { SENSORS_IT87_SENS1, "sensor1", NOMAP, NOMAP,
3777                         RW, IT87_SYSCTL_SENS1, VALUE(1), 0 },
3778    { SENSORS_IT87_SENS2, "sensor2", NOMAP, NOMAP,
3779                         RW, IT87_SYSCTL_SENS2, VALUE(1), 0 },
3780    { SENSORS_IT87_SENS3, "sensor3", NOMAP, NOMAP,
3781                         RW, IT87_SYSCTL_SENS3, VALUE(1), 0 },
3782    { 0 }
3783  };
3784
3785static sensors_chip_feature fscpos_features[] =
3786  {
3787    { SENSORS_FSCPOS_REV, "rev", NOMAP, NOMAP,
3788                        R, FSCPOS_SYSCTL_REV, VALUE(1), 0 },
3789    { SENSORS_FSCPOS_EVENT, "event", NOMAP, NOMAP,
3790                        R, FSCPOS_SYSCTL_EVENT, VALUE(1), 0 },
3791    { SENSORS_FSCPOS_CONTROL, "control", NOMAP, NOMAP,
3792                        RW, FSCPOS_SYSCTL_CONTROL, VALUE(1), 0 },
3793    { SENSORS_FSCPOS_VOLTAGE1, "volt12", NOMAP, NOMAP,
3794                        R, FSCPOS_SYSCTL_VOLT0, VALUE(1), 2 },
3795    { SENSORS_FSCPOS_VOLTAGE2, "volt5", NOMAP, NOMAP,
3796                        R, FSCPOS_SYSCTL_VOLT1, VALUE(1), 2 },
3797    { SENSORS_FSCPOS_VOLTAGE3, "voltbatt", NOMAP,
3798                        NOMAP, R, 
3799                        FSCPOS_SYSCTL_VOLT2, VALUE(1), 2 },
3800    { SENSORS_FSCPOS_TEMP1, "temp1", NOMAP, NOMAP,
3801                        R, FSCPOS_SYSCTL_TEMP0, VALUE(2), 0 },
3802    { SENSORS_FSCPOS_TEMP2, "temp2", NOMAP, NOMAP,
3803                        R, FSCPOS_SYSCTL_TEMP1, VALUE(2), 0 },
3804    { SENSORS_FSCPOS_TEMP3, "temp3", NOMAP, NOMAP,
3805                        R, FSCPOS_SYSCTL_TEMP2, VALUE(2), 0 },
3806    { SENSORS_FSCPOS_TEMP1_STATE, "temp1_state", SENSORS_FSCPOS_TEMP1,
3807                        SENSORS_FSCPOS_TEMP1, RW, 
3808                        FSCPOS_SYSCTL_TEMP0, VALUE(1), 0 },
3809    { SENSORS_FSCPOS_TEMP2_STATE, "temp2_state", SENSORS_FSCPOS_TEMP2, 
3810                        SENSORS_FSCPOS_TEMP2, RW, 
3811                        FSCPOS_SYSCTL_TEMP1, VALUE(1), 0 },
3812    { SENSORS_FSCPOS_TEMP3_STATE, "temp3_state", SENSORS_FSCPOS_TEMP3, 
3813                        SENSORS_FSCPOS_TEMP3, RW, 
3814                        FSCPOS_SYSCTL_TEMP2, VALUE(1), 0 },
3815    { SENSORS_FSCPOS_FAN1, "fan1", NOMAP, NOMAP,
3816                        R, FSCPOS_SYSCTL_FAN0, VALUE(4), 0 },
3817    { SENSORS_FSCPOS_FAN2, "fan2", NOMAP, NOMAP,
3818                        R, FSCPOS_SYSCTL_FAN1, VALUE(4), 0 },
3819    { SENSORS_FSCPOS_FAN3, "fan3", NOMAP, NOMAP,
3820                        R, FSCPOS_SYSCTL_FAN2, VALUE(4), 0 },
3821    { SENSORS_FSCPOS_FAN1_MIN, "fan1_min", SENSORS_FSCPOS_FAN1, 
3822                        SENSORS_FSCPOS_FAN1, RW, 
3823                        FSCPOS_SYSCTL_FAN0, VALUE(2), 0 },
3824    { SENSORS_FSCPOS_FAN2_MIN, "fan2_min", SENSORS_FSCPOS_FAN2, 
3825                        SENSORS_FSCPOS_FAN2, RW, 
3826                        FSCPOS_SYSCTL_FAN1, VALUE(2), 0 },
3827    { SENSORS_FSCPOS_FAN1_STATE, "fan1_state", SENSORS_FSCPOS_FAN1, 
3828                        SENSORS_FSCPOS_FAN1, RW, 
3829                        FSCPOS_SYSCTL_FAN0, VALUE(1), 0 },
3830    { SENSORS_FSCPOS_FAN2_STATE, "fan2_state", SENSORS_FSCPOS_FAN2, 
3831                        SENSORS_FSCPOS_FAN2, RW, 
3832                        FSCPOS_SYSCTL_FAN1, VALUE(1), 0 },
3833    { SENSORS_FSCPOS_FAN3_STATE, "fan3_state", SENSORS_FSCPOS_FAN3, 
3834                        SENSORS_FSCPOS_FAN3, RW, 
3835                        FSCPOS_SYSCTL_FAN2, VALUE(1), 0 },
3836    { SENSORS_FSCPOS_FAN1_RIPPLE, "fan1_ripple", SENSORS_FSCPOS_FAN1, 
3837                        SENSORS_FSCPOS_FAN1, RW, 
3838                        FSCPOS_SYSCTL_FAN0, VALUE(3), 0 },
3839    { SENSORS_FSCPOS_FAN2_RIPPLE, "fan2_ripple", SENSORS_FSCPOS_FAN2, 
3840                        SENSORS_FSCPOS_FAN2, RW, 
3841                        FSCPOS_SYSCTL_FAN1, VALUE(3), 0 },
3842    { SENSORS_FSCPOS_FAN3_RIPPLE, "fan3_ripple", SENSORS_FSCPOS_FAN3, 
3843                        SENSORS_FSCPOS_FAN3, RW, 
3844                        FSCPOS_SYSCTL_FAN2, VALUE(3), 0 },
3845    { SENSORS_FSCPOS_WDOG_PRESET, "wdog_preset", NOMAP, 
3846                        NOMAP, RW, 
3847                        FSCPOS_SYSCTL_WDOG, VALUE(1), 0 },
3848    { SENSORS_FSCPOS_WDOG_STATE, "wdog_state", SENSORS_FSCPOS_WDOG_PRESET, 
3849                        SENSORS_FSCPOS_WDOG_PRESET, RW, 
3850                        FSCPOS_SYSCTL_WDOG, VALUE(2), 0 },
3851    { SENSORS_FSCPOS_WDOG_CONTROL, "wdog_control", SENSORS_FSCPOS_WDOG_PRESET, 
3852                        SENSORS_FSCPOS_WDOG_PRESET, RW, 
3853                        FSCPOS_SYSCTL_WDOG, VALUE(3), 0 },
3854    { 0 }
3855  };
3856
3857static sensors_chip_feature fscscy_features[] =
3858  {
3859    { SENSORS_FSCSCY_REV, "rev", NOMAP, NOMAP,
3860                        R, FSCSCY_SYSCTL_REV, VALUE(1), 0 },
3861    { SENSORS_FSCSCY_EVENT, "event", NOMAP, NOMAP,
3862                        R, FSCSCY_SYSCTL_EVENT, VALUE(1), 0 },
3863    { SENSORS_FSCSCY_CONTROL, "control", NOMAP, NOMAP,
3864                        RW, FSCSCY_SYSCTL_CONTROL, VALUE(1), 0 },
3865    { SENSORS_FSCSCY_VOLTAGE1, "volt12", NOMAP, NOMAP,
3866                        R, FSCSCY_SYSCTL_VOLT0, VALUE(1), 2 },
3867    { SENSORS_FSCSCY_VOLTAGE2, "volt5", NOMAP, NOMAP,
3868                        R, FSCSCY_SYSCTL_VOLT1, VALUE(1), 2 },
3869    { SENSORS_FSCSCY_VOLTAGE3, "voltbatt", NOMAP,
3870                        NOMAP, R, 
3871                        FSCSCY_SYSCTL_VOLT2, VALUE(1), 2 },
3872    { SENSORS_FSCSCY_TEMP1, "temp1", NOMAP, NOMAP,
3873                        R, FSCSCY_SYSCTL_TEMP0, VALUE(2), 0 },
3874    { SENSORS_FSCSCY_TEMP2, "temp2", NOMAP, NOMAP,
3875                        R, FSCSCY_SYSCTL_TEMP1, VALUE(2), 0 },
3876    { SENSORS_FSCSCY_TEMP3, "temp3", NOMAP, NOMAP,
3877                        R, FSCSCY_SYSCTL_TEMP2, VALUE(2), 0 },
3878    { SENSORS_FSCSCY_TEMP4, "temp4", NOMAP, NOMAP,
3879                        R, FSCSCY_SYSCTL_TEMP3, VALUE(2), 0 },
3880    { SENSORS_FSCSCY_TEMP1_STATE, "temp1_state", SENSORS_FSCSCY_TEMP1,
3881                        SENSORS_FSCSCY_TEMP1, RW, 
3882                        FSCSCY_SYSCTL_TEMP0, VALUE(1), 0 },
3883    { SENSORS_FSCSCY_TEMP2_STATE, "temp2_state", SENSORS_FSCSCY_TEMP2, 
3884                        SENSORS_FSCSCY_TEMP2, RW, 
3885                        FSCSCY_SYSCTL_TEMP1, VALUE(1), 0 },
3886    { SENSORS_FSCSCY_TEMP3_STATE, "temp3_state", SENSORS_FSCSCY_TEMP3, 
3887                        SENSORS_FSCSCY_TEMP3, RW, 
3888                        FSCSCY_SYSCTL_TEMP2, VALUE(1), 0 },
3889    { SENSORS_FSCSCY_TEMP4_STATE, "temp4_state", SENSORS_FSCSCY_TEMP4, 
3890                        SENSORS_FSCSCY_TEMP4, RW, 
3891                        FSCSCY_SYSCTL_TEMP3, VALUE(1), 0 },
3892    { SENSORS_FSCSCY_TEMP1_LIM, "temp1_lim", SENSORS_FSCSCY_TEMP1,
3893                        SENSORS_FSCSCY_TEMP1, R, 
3894                        FSCSCY_SYSCTL_TEMP0, VALUE(3), 0 },
3895    { SENSORS_FSCSCY_TEMP2_LIM, "temp2_lim", SENSORS_FSCSCY_TEMP2,
3896                        SENSORS_FSCSCY_TEMP2, R, 
3897                        FSCSCY_SYSCTL_TEMP1, VALUE(3), 0 },
3898    { SENSORS_FSCSCY_TEMP3_LIM, "temp3_lim", SENSORS_FSCSCY_TEMP3,
3899                        SENSORS_FSCSCY_TEMP3, R, 
3900                        FSCSCY_SYSCTL_TEMP2, VALUE(3), 0 },
3901    { SENSORS_FSCSCY_TEMP4_LIM, "temp4_lim", SENSORS_FSCSCY_TEMP4,
3902                        SENSORS_FSCSCY_TEMP4, R, 
3903                        FSCSCY_SYSCTL_TEMP3, VALUE(3), 0 },
3904    { SENSORS_FSCSCY_TEMP1_MIN, "temp1_min", SENSORS_FSCSCY_TEMP1,
3905                        SENSORS_FSCSCY_TEMP1, R, 
3906                        FSCSCY_SYSCTL_TEMP0, VALUE(4), 0 },
3907    { SENSORS_FSCSCY_TEMP2_MIN, "temp2_min", SENSORS_FSCSCY_TEMP2,
3908                        SENSORS_FSCSCY_TEMP2, R, 
3909                        FSCSCY_SYSCTL_TEMP1, VALUE(4), 0 },
3910    { SENSORS_FSCSCY_TEMP3_MIN, "temp3_min", SENSORS_FSCSCY_TEMP3,
3911                        SENSORS_FSCSCY_TEMP3, R, 
3912                        FSCSCY_SYSCTL_TEMP2, VALUE(4), 0 },
3913    { SENSORS_FSCSCY_TEMP4_MIN, "temp4_min", SENSORS_FSCSCY_TEMP4,
3914                        SENSORS_FSCSCY_TEMP4, R, 
3915                        FSCSCY_SYSCTL_TEMP3, VALUE(4), 0 },
3916    { SENSORS_FSCSCY_TEMP1_MAX, "temp1_max", SENSORS_FSCSCY_TEMP1,
3917                        SENSORS_FSCSCY_TEMP1, R, 
3918                        FSCSCY_SYSCTL_TEMP0, VALUE(5), 0 },
3919    { SENSORS_FSCSCY_TEMP2_MAX, "temp2_max", SENSORS_FSCSCY_TEMP2,
3920                        SENSORS_FSCSCY_TEMP2, R, 
3921                        FSCSCY_SYSCTL_TEMP1, VALUE(5), 0 },
3922    { SENSORS_FSCSCY_TEMP3_MAX, "temp3_max", SENSORS_FSCSCY_TEMP3,
3923                        SENSORS_FSCSCY_TEMP3, R, 
3924                        FSCSCY_SYSCTL_TEMP2, VALUE(5), 0 },
3925    { SENSORS_FSCSCY_TEMP4_MAX, "temp4_max", SENSORS_FSCSCY_TEMP4,
3926                        SENSORS_FSCSCY_TEMP4, R, 
3927                        FSCSCY_SYSCTL_TEMP3, VALUE(5), 0 },
3928    { SENSORS_FSCSCY_FAN1, "fan1", NOMAP, NOMAP,
3929                        R, FSCSCY_SYSCTL_FAN0, VALUE(4), 0 },
3930    { SENSORS_FSCSCY_FAN2, "fan2", NOMAP, NOMAP,
3931                        R, FSCSCY_SYSCTL_FAN1, VALUE(4), 0 },
3932    { SENSORS_FSCSCY_FAN3, "fan3", NOMAP, NOMAP,
3933                        R, FSCSCY_SYSCTL_FAN2, VALUE(4), 0 },
3934    { SENSORS_FSCSCY_FAN4, "fan4", NOMAP, NOMAP,
3935                        R, FSCSCY_SYSCTL_FAN3, VALUE(4), 0 },
3936    { SENSORS_FSCSCY_FAN5, "fan5", NOMAP, NOMAP,
3937                        R, FSCSCY_SYSCTL_FAN4, VALUE(4), 0 },
3938    { SENSORS_FSCSCY_FAN6, "fan6", NOMAP, NOMAP,
3939                        R, FSCSCY_SYSCTL_FAN5, VALUE(4), 0 },
3940    { SENSORS_FSCSCY_FAN1_MIN, "fan1_min", SENSORS_FSCSCY_FAN1, 
3941                        SENSORS_FSCSCY_FAN1, RW, 
3942                        FSCSCY_SYSCTL_FAN0, VALUE(2), 0 },
3943    { SENSORS_FSCSCY_FAN2_MIN, "fan2_min", SENSORS_FSCSCY_FAN2, 
3944                        SENSORS_FSCSCY_FAN2, RW, 
3945                        FSCSCY_SYSCTL_FAN1, VALUE(2), 0 },
3946    { SENSORS_FSCSCY_FAN3_MIN, "fan3_min", SENSORS_FSCSCY_FAN3, 
3947                        SENSORS_FSCSCY_FAN3, RW, 
3948                        FSCSCY_SYSCTL_FAN2, VALUE(2), 0 },
3949    { SENSORS_FSCSCY_FAN4_MIN, "fan4_min", SENSORS_FSCSCY_FAN4, 
3950                        SENSORS_FSCSCY_FAN4, RW, 
3951                        FSCSCY_SYSCTL_FAN3, VALUE(2), 0 },
3952    { SENSORS_FSCSCY_FAN5_MIN, "fan5_min", SENSORS_FSCSCY_FAN5, 
3953                        SENSORS_FSCSCY_FAN5, RW, 
3954                        FSCSCY_SYSCTL_FAN4, VALUE(2), 0 },
3955    { SENSORS_FSCSCY_FAN6_MIN, "fan6_min", SENSORS_FSCSCY_FAN6, 
3956                        SENSORS_FSCSCY_FAN6, RW, 
3957                        FSCSCY_SYSCTL_FAN5, VALUE(2), 0 },
3958    { SENSORS_FSCSCY_FAN1_STATE, "fan1_state", SENSORS_FSCSCY_FAN1, 
3959                        SENSORS_FSCSCY_FAN1, RW, 
3960                        FSCSCY_SYSCTL_FAN0, VALUE(1), 0 },
3961    { SENSORS_FSCSCY_FAN2_STATE, "fan2_state", SENSORS_FSCSCY_FAN2, 
3962                        SENSORS_FSCSCY_FAN2, RW, 
3963                        FSCSCY_SYSCTL_FAN1, VALUE(1), 0 },
3964    { SENSORS_FSCSCY_FAN3_STATE, "fan3_state", SENSORS_FSCSCY_FAN3, 
3965                        SENSORS_FSCSCY_FAN3, RW, 
3966                        FSCSCY_SYSCTL_FAN2, VALUE(1), 0 },
3967    { SENSORS_FSCSCY_FAN4_STATE, "fan4_state", SENSORS_FSCSCY_FAN4, 
3968                        SENSORS_FSCSCY_FAN4, RW, 
3969                        FSCSCY_SYSCTL_FAN3, VALUE(1), 0 },
3970    { SENSORS_FSCSCY_FAN5_STATE, "fan5_state", SENSORS_FSCSCY_FAN5, 
3971                        SENSORS_FSCSCY_FAN5, RW, 
3972                        FSCSCY_SYSCTL_FAN4, VALUE(1), 0 },
3973    { SENSORS_FSCSCY_FAN6_STATE, "fan6_state", SENSORS_FSCSCY_FAN6, 
3974                        SENSORS_FSCSCY_FAN6, RW, 
3975                        FSCSCY_SYSCTL_FAN5, VALUE(1), 0 },
3976    { SENSORS_FSCSCY_FAN1_RIPPLE, "fan1_ripple", SENSORS_FSCSCY_FAN1, 
3977                        SENSORS_FSCSCY_FAN1, RW, 
3978                        FSCSCY_SYSCTL_FAN0, VALUE(3), 0 },
3979    { SENSORS_FSCSCY_FAN2_RIPPLE, "fan2_ripple", SENSORS_FSCSCY_FAN2, 
3980                        SENSORS_FSCSCY_FAN2, RW, 
3981                        FSCSCY_SYSCTL_FAN1, VALUE(3), 0 },
3982    { SENSORS_FSCSCY_FAN3_RIPPLE, "fan3_ripple", SENSORS_FSCSCY_FAN3, 
3983                        SENSORS_FSCSCY_FAN3, RW, 
3984                        FSCSCY_SYSCTL_FAN2, VALUE(3), 0 },
3985    { SENSORS_FSCSCY_FAN4_RIPPLE, "fan4_ripple", SENSORS_FSCSCY_FAN4, 
3986                        SENSORS_FSCSCY_FAN4, RW, 
3987                        FSCSCY_SYSCTL_FAN3, VALUE(3), 0 },
3988    { SENSORS_FSCSCY_FAN5_RIPPLE, "fan5_ripple", SENSORS_FSCSCY_FAN5, 
3989                        SENSORS_FSCSCY_FAN5, RW, 
3990                        FSCSCY_SYSCTL_FAN4, VALUE(3), 0 },
3991    { SENSORS_FSCSCY_FAN6_RIPPLE, "fan6_ripple", SENSORS_FSCSCY_FAN6, 
3992                        SENSORS_FSCSCY_FAN6, RW, 
3993                        FSCSCY_SYSCTL_FAN5, VALUE(3), 0 },
3994    { SENSORS_FSCSCY_WDOG_PRESET, "wdog_preset", NOMAP, 
3995                        NOMAP, RW, 
3996                        FSCSCY_SYSCTL_WDOG, VALUE(1), 0 },
3997    { SENSORS_FSCSCY_WDOG_STATE, "wdog_state", SENSORS_FSCSCY_WDOG_PRESET, 
3998                        SENSORS_FSCSCY_WDOG_PRESET, RW, 
3999                        FSCSCY_SYSCTL_WDOG, VALUE(2), 0 },
4000    { SENSORS_FSCSCY_WDOG_CONTROL, "wdog_control", SENSORS_FSCSCY_WDOG_PRESET, 
4001                        SENSORS_FSCSCY_WDOG_PRESET, RW, 
4002                        FSCSCY_SYSCTL_WDOG, VALUE(3), 0 },
4003    { 0 }
4004  };
4005
4006  static sensors_chip_feature fscher_features[] =
4007  {
4008    { SENSORS_FSCHER_REV, "rev", NOMAP, NOMAP,
4009                        R, FSCHER_SYSCTL_REV, VALUE(1), 0 },
4010    { SENSORS_FSCHER_EVENT, "alarms", NOMAP, NOMAP,
4011                        R, FSCHER_SYSCTL_EVENT, VALUE(1), 0 },
4012    { SENSORS_FSCHER_CONTROL, "control", NOMAP, NOMAP,
4013                        RW, FSCHER_SYSCTL_CONTROL, VALUE(1), 0 },
4014    { SENSORS_FSCHER_VOLTAGE1, "in0", NOMAP, NOMAP,
4015                        R, FSCHER_SYSCTL_VOLT0, VALUE(1), 2 },
4016    { SENSORS_FSCHER_VOLTAGE2, "in1", NOMAP, NOMAP,
4017                        R, FSCHER_SYSCTL_VOLT1, VALUE(1), 2 },
4018    { SENSORS_FSCHER_VOLTAGE3, "in2", NOMAP,
4019                        NOMAP, R, 
4020                        FSCHER_SYSCTL_VOLT2, VALUE(1), 2 },
4021    { SENSORS_FSCHER_TEMP1, "temp1", NOMAP, NOMAP,
4022                        R, FSCHER_SYSCTL_TEMP0, VALUE(2), 0 },
4023    { SENSORS_FSCHER_TEMP2, "temp2", NOMAP, NOMAP,
4024                        R, FSCHER_SYSCTL_TEMP1, VALUE(2), 0 },
4025    { SENSORS_FSCHER_TEMP3, "temp3", NOMAP, NOMAP,
4026                        R, FSCHER_SYSCTL_TEMP2, VALUE(2), 0 },
4027    { SENSORS_FSCHER_TEMP1_STATE, "temp1_state", SENSORS_FSCHER_TEMP1,
4028                        SENSORS_FSCHER_TEMP1, RW, 
4029                        FSCHER_SYSCTL_TEMP0, VALUE(1), 0 },
4030    { SENSORS_FSCHER_TEMP2_STATE, "temp2_state", SENSORS_FSCHER_TEMP2, 
4031                        SENSORS_FSCHER_TEMP2, RW, 
4032                        FSCHER_SYSCTL_TEMP1, VALUE(1), 0 },
4033    { SENSORS_FSCHER_TEMP3_STATE, "temp3_state", SENSORS_FSCHER_TEMP3, 
4034                        SENSORS_FSCHER_TEMP3, RW, 
4035                        FSCHER_SYSCTL_TEMP2, VALUE(1), 0 },
4036    { SENSORS_FSCHER_FAN1, "fan1", NOMAP, NOMAP,
4037                        R, FSCHER_SYSCTL_FAN0, VALUE(3), 0 },
4038    { SENSORS_FSCHER_FAN2, "fan2", NOMAP, NOMAP,
4039                        R, FSCHER_SYSCTL_FAN1, VALUE(3), 0 },
4040    { SENSORS_FSCHER_FAN3, "fan3", NOMAP, NOMAP,
4041                        R, FSCHER_SYSCTL_FAN2, VALUE(3), 0 },
4042    { SENSORS_FSCHER_PWM1, "pwm1", SENSORS_FSCHER_FAN1, 
4043                        NOMAP, RW, 
4044                        FSCHER_SYSCTL_PWM0, VALUE(1), 0 },
4045    { SENSORS_FSCHER_PWM2, "pwm2", SENSORS_FSCHER_FAN2, 
4046                        NOMAP, RW, 
4047                        FSCHER_SYSCTL_PWM1, VALUE(1), 0 },
4048    { SENSORS_FSCHER_PWM3, "pwm3", SENSORS_FSCHER_FAN3, 
4049                        NOMAP, RW, 
4050                        FSCHER_SYSCTL_PWM2, VALUE(1), 0 },
4051    { SENSORS_FSCHER_FAN1_STATE, "fan1_state", SENSORS_FSCHER_FAN1, 
4052                        SENSORS_FSCHER_FAN1, RW, 
4053                        FSCHER_SYSCTL_FAN0, VALUE(1), 0 },
4054    { SENSORS_FSCHER_FAN2_STATE, "fan2_state", SENSORS_FSCHER_FAN2, 
4055                        SENSORS_FSCHER_FAN2, RW, 
4056                        FSCHER_SYSCTL_FAN1, VALUE(1), 0 },
4057    { SENSORS_FSCHER_FAN3_STATE, "fan3_state", SENSORS_FSCHER_FAN3, 
4058                        SENSORS_FSCHER_FAN3, RW, 
4059                        FSCHER_SYSCTL_FAN2, VALUE(1), 0 },
4060    { SENSORS_FSCHER_FAN1_RIPPLE, "fan1_ripple", SENSORS_FSCHER_FAN1, 
4061                        SENSORS_FSCHER_FAN1, RW, 
4062                        FSCHER_SYSCTL_FAN0, VALUE(2), 0 },
4063    { SENSORS_FSCHER_FAN2_RIPPLE, "fan2_ripple", SENSORS_FSCHER_FAN2, 
4064                        SENSORS_FSCHER_FAN2, RW, 
4065                        FSCHER_SYSCTL_FAN1, VALUE(2), 0 },
4066    { SENSORS_FSCHER_FAN3_RIPPLE, "fan3_ripple", SENSORS_FSCHER_FAN3, 
4067                        SENSORS_FSCHER_FAN3, RW, 
4068                        FSCHER_SYSCTL_FAN2, VALUE(2), 0 },
4069    { SENSORS_FSCHER_WDOG_PRESET, "wdog_preset", NOMAP, 
4070                        NOMAP, RW, 
4071                        FSCHER_SYSCTL_WDOG, VALUE(1), 0 },
4072    { SENSORS_FSCHER_WDOG_STATE, "wdog_state", SENSORS_FSCHER_WDOG_PRESET, 
4073                        SENSORS_FSCHER_WDOG_PRESET, RW, 
4074                        FSCHER_SYSCTL_WDOG, VALUE(2), 0 },
4075    { SENSORS_FSCHER_WDOG_CONTROL, "wdog_control", SENSORS_FSCHER_WDOG_PRESET, 
4076                        SENSORS_FSCHER_WDOG_PRESET, RW, 
4077                        FSCHER_SYSCTL_WDOG, VALUE(3), 0 },
4078    { 0 }
4079  };
4080
4081  static sensors_chip_feature pcf8591_features[] =
4082  {
4083    { SENSORS_PCF8591_AIN_CONF, "ain_conf", NOMAP, NOMAP,
4084                              RW, PCF8591_SYSCTL_AIN_CONF, VALUE(1), 0 },
4085    { SENSORS_PCF8591_CH0, "ch0", NOMAP, NOMAP,
4086                         R, PCF8591_SYSCTL_CH0, VALUE(1), 0 },
4087    { SENSORS_PCF8591_CH1, "ch1", NOMAP, NOMAP,
4088                         R, PCF8591_SYSCTL_CH1, VALUE(1), 0 },
4089    { SENSORS_PCF8591_CH2, "ch2", NOMAP, NOMAP,
4090                         R, PCF8591_SYSCTL_CH2, VALUE(1), 0 },
4091    { SENSORS_PCF8591_CH3, "ch3", NOMAP, NOMAP,
4092                         R, PCF8591_SYSCTL_CH3, VALUE(1), 0 },
4093    { SENSORS_PCF8591_AOUT_ENABLE, "aout_enable", NOMAP, NOMAP,
4094                                 RW, PCF8591_SYSCTL_AOUT_ENABLE, VALUE(1), 0 },
4095    { SENSORS_PCF8591_AOUT, "aout", NOMAP, NOMAP,
4096                          RW, PCF8591_SYSCTL_AOUT, VALUE(1), 0 },
4097    { 0 }
4098  };
4099
4100
4101static sensors_chip_feature vt1211_features[] =
4102  { 
4103    { SENSORS_VT1211_IN0, "in0", NOMAP, NOMAP, 
4104                        R, VT1211_SYSCTL_IN0, VALUE(3), 2 },
4105    { SENSORS_VT1211_IN1, "in1", NOMAP, NOMAP,
4106                        R, VT1211_SYSCTL_IN1, VALUE(3), 2 },
4107    { SENSORS_VT1211_IN2, "in2", NOMAP, NOMAP,
4108                        R, VT1211_SYSCTL_IN2, VALUE(3), 2 },
4109    { SENSORS_VT1211_IN3, "in3", NOMAP, NOMAP,
4110                        R, VT1211_SYSCTL_IN3, VALUE(3), 2 },
4111    { SENSORS_VT1211_IN4, "in4", NOMAP, NOMAP,
4112                        R, VT1211_SYSCTL_IN4, VALUE(3), 2 },
4113    { SENSORS_VT1211_IN5, "in5", NOMAP, NOMAP,
4114                        R, VT1211_SYSCTL_IN5, VALUE(3), 2 },
4115    { SENSORS_VT1211_IN0_MIN, "in0_min", SENSORS_VT1211_IN0,
4116                            SENSORS_VT1211_IN0,
4117                            RW, VT1211_SYSCTL_IN0, VALUE(1), 2 },
4118    { SENSORS_VT1211_IN1_MIN, "in1_min", SENSORS_VT1211_IN1,
4119                            SENSORS_VT1211_IN1,
4120                            RW, VT1211_SYSCTL_IN1, VALUE(1), 2 },
4121    { SENSORS_VT1211_IN2_MIN, "in2_min", SENSORS_VT1211_IN2,
4122                            SENSORS_VT1211_IN2,
4123                            RW, VT1211_SYSCTL_IN2, VALUE(1), 2 },
4124    { SENSORS_VT1211_IN3_MIN, "in3_min", SENSORS_VT1211_IN3,
4125                            SENSORS_VT1211_IN3,
4126                            RW, VT1211_SYSCTL_IN3, VALUE(1), 2 },
4127    { SENSORS_VT1211_IN4_MIN, "in4_min", SENSORS_VT1211_IN4,
4128                            SENSORS_VT1211_IN4,
4129                            RW, VT1211_SYSCTL_IN4, VALUE(1), 2 },
4130    { SENSORS_VT1211_IN5_MIN, "in5_min", SENSORS_VT1211_IN5,
4131                            SENSORS_VT1211_IN5,
4132                            RW, VT1211_SYSCTL_IN5, VALUE(1), 2 },
4133    { SENSORS_VT1211_IN0_MAX, "in0_max", SENSORS_VT1211_IN0,
4134                            SENSORS_VT1211_IN0,
4135                            RW, VT1211_SYSCTL_IN0, VALUE(2), 2 },
4136    { SENSORS_VT1211_IN1_MAX, "in1_max", SENSORS_VT1211_IN1,
4137                            SENSORS_VT1211_IN1,
4138                            RW, VT1211_SYSCTL_IN1, VALUE(2), 2 },
4139    { SENSORS_VT1211_IN2_MAX, "in2_max", SENSORS_VT1211_IN2,
4140                            SENSORS_VT1211_IN2,
4141                            RW, VT1211_SYSCTL_IN2, VALUE(2), 2 },
4142    { SENSORS_VT1211_IN3_MAX, "in3_max", SENSORS_VT1211_IN3,
4143                            SENSORS_VT1211_IN3,
4144                            RW, VT1211_SYSCTL_IN3, VALUE(2), 2 },
4145    { SENSORS_VT1211_IN4_MAX, "in4_max", SENSORS_VT1211_IN4,
4146                            SENSORS_VT1211_IN4,
4147                            RW, VT1211_SYSCTL_IN4, VALUE(2), 2 },
4148    { SENSORS_VT1211_IN5_MAX, "in5_max", SENSORS_VT1211_IN5,
4149                            SENSORS_VT1211_IN5,
4150                            RW, VT1211_SYSCTL_IN5, VALUE(2), 2 },
4151    { SENSORS_VT1211_FAN1, "fan1", NOMAP, NOMAP,
4152                         R, VT1211_SYSCTL_FAN1, VALUE(2), 0 },
4153    { SENSORS_VT1211_FAN2, "fan2", NOMAP, NOMAP,
4154                         R, VT1211_SYSCTL_FAN2, VALUE(2), 0 },
4155    { SENSORS_VT1211_FAN1_MIN, "fan1_min", SENSORS_VT1211_FAN1,
4156                             SENSORS_VT1211_FAN1,
4157                             RW, VT1211_SYSCTL_FAN1, VALUE(1), 0 },
4158    { SENSORS_VT1211_FAN2_MIN, "fan2_min", SENSORS_VT1211_FAN2,
4159                             SENSORS_VT1211_FAN2,
4160                             RW, VT1211_SYSCTL_FAN2, VALUE(1), 0 },
4161    /* no temp1 */
4162    { SENSORS_VT1211_TEMP2, "temp2", NOMAP, NOMAP,
4163                         R, VT1211_SYSCTL_TEMP2, VALUE(3), 1 },
4164    { SENSORS_VT1211_TEMP2_HYST, "temp2_hyst", SENSORS_VT1211_TEMP2,
4165                              SENSORS_VT1211_TEMP2, RW, 
4166                              VT1211_SYSCTL_TEMP2, VALUE(2), 1 },
4167    { SENSORS_VT1211_TEMP2_OVER, "temp2_over", SENSORS_VT1211_TEMP2,
4168                              SENSORS_VT1211_TEMP2, RW, 
4169                              VT1211_SYSCTL_TEMP2, VALUE(1), 1 },
4170    { SENSORS_VT1211_TEMP3, "temp3", NOMAP, NOMAP,
4171                         R, VT1211_SYSCTL_TEMP3, VALUE(3), 1 },
4172    { SENSORS_VT1211_TEMP3_HYST, "temp3_hyst", SENSORS_VT1211_TEMP3,
4173                              SENSORS_VT1211_TEMP3, RW, 
4174                              VT1211_SYSCTL_TEMP3, VALUE(2), 1 },
4175    { SENSORS_VT1211_TEMP3_OVER, "temp3_over", SENSORS_VT1211_TEMP3,
4176                              SENSORS_VT1211_TEMP3, RW, 
4177                              VT1211_SYSCTL_TEMP3, VALUE(1), 1 },
4178    { SENSORS_VT1211_TEMP4, "temp4", NOMAP, NOMAP,
4179                         R, VT1211_SYSCTL_TEMP4, VALUE(3), 1 },
4180    { SENSORS_VT1211_TEMP4_HYST, "temp4_hyst", SENSORS_VT1211_TEMP4,
4181                              SENSORS_VT1211_TEMP4, RW, 
4182                              VT1211_SYSCTL_TEMP4, VALUE(2), 1 },
4183    { SENSORS_VT1211_TEMP4_OVER, "temp4_over", SENSORS_VT1211_TEMP4,
4184                              SENSORS_VT1211_TEMP4, RW, 
4185                              VT1211_SYSCTL_TEMP4, VALUE(1), 1 },
4186    { SENSORS_VT1211_TEMP5, "temp5", NOMAP, NOMAP,
4187                         R, VT1211_SYSCTL_TEMP5, VALUE(3), 1 },
4188    { SENSORS_VT1211_TEMP5_HYST, "temp5_hyst", SENSORS_VT1211_TEMP5,
4189                              SENSORS_VT1211_TEMP5, RW, 
4190                              VT1211_SYSCTL_TEMP5, VALUE(2), 1 },
4191    { SENSORS_VT1211_TEMP5_OVER, "temp5_over", SENSORS_VT1211_TEMP5,
4192                              SENSORS_VT1211_TEMP5, RW, 
4193                              VT1211_SYSCTL_TEMP5, VALUE(1), 1 },
4194    { SENSORS_VT1211_TEMP6, "temp6", NOMAP, NOMAP,
4195                         R, VT1211_SYSCTL_TEMP6, VALUE(3), 1 },
4196    { SENSORS_VT1211_TEMP6_HYST, "temp6_hyst", SENSORS_VT1211_TEMP6,
4197                              SENSORS_VT1211_TEMP6, RW, 
4198                              VT1211_SYSCTL_TEMP6, VALUE(2), 1 },
4199    { SENSORS_VT1211_TEMP6_OVER, "temp6_over", SENSORS_VT1211_TEMP6,
4200                              SENSORS_VT1211_TEMP6, RW, 
4201                              VT1211_SYSCTL_TEMP6, VALUE(1), 1 },
4202    { SENSORS_VT1211_TEMP7, "temp7", NOMAP, NOMAP,
4203                         R, VT1211_SYSCTL_TEMP7, VALUE(3), 1 },
4204    { SENSORS_VT1211_TEMP7_HYST, "temp7_hyst", SENSORS_VT1211_TEMP7,
4205                              SENSORS_VT1211_TEMP7, RW, 
4206                              VT1211_SYSCTL_TEMP7, VALUE(2), 1 },
4207    { SENSORS_VT1211_TEMP7_OVER, "temp7_over", SENSORS_VT1211_TEMP7,
4208                              SENSORS_VT1211_TEMP7, RW, 
4209                              VT1211_SYSCTL_TEMP7, VALUE(1), 1 },
4210    { SENSORS_VT1211_FAN1_DIV, "fan1_div", SENSORS_VT1211_FAN1,
4211                             NOMAP,
4212                             RW, VT1211_SYSCTL_FAN_DIV, VALUE(1), 
4213                             0 },
4214    { SENSORS_VT1211_FAN2_DIV, "fan2_div", SENSORS_VT1211_FAN2,
4215                             NOMAP,
4216                             RW, VT1211_SYSCTL_FAN_DIV, VALUE(2), 
4217                             0 },
4218    { SENSORS_VT1211_ALARMS, "alarms", NOMAP, NOMAP, 
4219                           R, VT1211_SYSCTL_ALARMS, VALUE(1), 0 },
4220    { SENSORS_VT1211_VID, "vid", NOMAP, NOMAP, 
4221                           R, VT1211_SYSCTL_VID, VALUE(1), 3 },
4222    { SENSORS_VT1211_VRM, "vrm", NOMAP, NOMAP, 
4223                           RW, VT1211_SYSCTL_VRM, VALUE(1), 1 },
4224    { SENSORS_VT1211_UCH, "config", NOMAP, NOMAP, 
4225                           RW, VT1211_SYSCTL_UCH, VALUE(1), 0 },
4226    { 0 }
4227  };
4228
4229static sensors_chip_feature smsc47m1_features[] =
4230  { 
4231    { SENSORS_SMSC47M1_FAN1, "fan1", NOMAP, NOMAP,
4232                         R, SMSC47M1_SYSCTL_FAN1, VALUE(2), 0 },
4233    { SENSORS_SMSC47M1_FAN2, "fan2", NOMAP, NOMAP,
4234                         R, SMSC47M1_SYSCTL_FAN2, VALUE(2), 0 },
4235    { SENSORS_SMSC47M1_FAN1_MIN, "fan1_min", SENSORS_SMSC47M1_FAN1,
4236                             SENSORS_SMSC47M1_FAN1,
4237                             RW, SMSC47M1_SYSCTL_FAN1, VALUE(1), 0 },
4238    { SENSORS_SMSC47M1_FAN2_MIN, "fan2_min", SENSORS_SMSC47M1_FAN2,
4239                             SENSORS_SMSC47M1_FAN2,
4240                             RW, SMSC47M1_SYSCTL_FAN2, VALUE(1), 0 },
4241    { SENSORS_SMSC47M1_FAN1_DIV, "fan1_div", SENSORS_SMSC47M1_FAN1,
4242                             NOMAP,
4243                             RW, SMSC47M1_SYSCTL_FAN_DIV, VALUE(1), 
4244                             0 },
4245    { SENSORS_SMSC47M1_FAN2_DIV, "fan2_div", SENSORS_SMSC47M1_FAN2,
4246                             NOMAP,
4247                             RW, SMSC47M1_SYSCTL_FAN_DIV, VALUE(2), 
4248                             0 },
4249    { SENSORS_SMSC47M1_ALARMS, "alarms", NOMAP, NOMAP, 
4250                           R, SMSC47M1_SYSCTL_ALARMS, VALUE(1), 0 },
4251    { 0 }
4252  };
4253
4254static sensors_chip_feature lm92_features[] =
4255  {
4256    { SENSORS_LM92_TEMP, "temp", NOMAP, NOMAP,
4257                       R, LM92_SYSCTL_TEMP, VALUE(1), 4 },
4258    { SENSORS_LM92_TEMP_HIGH, "temp_high", SENSORS_LM92_TEMP, SENSORS_LM92_TEMP,
4259                       RW, LM92_SYSCTL_TEMP, VALUE(2), 4 },
4260    { SENSORS_LM92_TEMP_LOW, "temp_low", SENSORS_LM92_TEMP, SENSORS_LM92_TEMP,
4261                       RW, LM92_SYSCTL_TEMP, VALUE(3), 4 },
4262    { SENSORS_LM92_TEMP_CRIT, "temp_crit", SENSORS_LM92_TEMP, SENSORS_LM92_TEMP,
4263                       RW, LM92_SYSCTL_TEMP, VALUE(4), 4 },
4264    { SENSORS_LM92_TEMP_HYST, "temp_hyst", SENSORS_LM92_TEMP, SENSORS_LM92_TEMP,
4265                       RW, LM92_SYSCTL_TEMP, VALUE(5), 4 },
4266    { SENSORS_LM92_ALARMS, "alarms", NOMAP, NOMAP,
4267                       R, LM92_SYSCTL_ALARMS, VALUE(1), 0 },
4268    { 0 }
4269  };
4270
4271static sensors_chip_feature vt8231_features[] =
4272  { 
4273    { SENSORS_VT8231_IN0, "in0", NOMAP, NOMAP, 
4274                        R, VT8231_SYSCTL_IN0, VALUE(3), 2 },
4275    { SENSORS_VT8231_IN1, "in1", NOMAP, NOMAP,
4276                        R, VT8231_SYSCTL_IN1, VALUE(3), 2 },
4277    { SENSORS_VT8231_IN2, "in2", NOMAP, NOMAP,
4278                        R, VT8231_SYSCTL_IN2, VALUE(3), 2 },
4279    { SENSORS_VT8231_IN3, "in3", NOMAP, NOMAP,
4280                        R, VT8231_SYSCTL_IN3, VALUE(3), 2 },
4281    { SENSORS_VT8231_IN4, "in4", NOMAP, NOMAP,
4282                        R, VT8231_SYSCTL_IN4, VALUE(3), 2 },
4283    { SENSORS_VT8231_IN5, "in5", NOMAP, NOMAP,
4284                        R, VT8231_SYSCTL_IN5, VALUE(3), 2 },
4285    { SENSORS_VT8231_IN0_MIN, "in0_min", SENSORS_VT8231_IN0,
4286                            SENSORS_VT8231_IN0,
4287                            RW, VT8231_SYSCTL_IN0, VALUE(1), 2 },
4288    { SENSORS_VT8231_IN1_MIN, "in1_min", SENSORS_VT8231_IN1,
4289                            SENSORS_VT8231_IN1,
4290                            RW, VT8231_SYSCTL_IN1, VALUE(1), 2 },
4291    { SENSORS_VT8231_IN2_MIN, "in2_min", SENSORS_VT8231_IN2,
4292                            SENSORS_VT8231_IN2,
4293                            RW, VT8231_SYSCTL_IN2, VALUE(1), 2 },
4294    { SENSORS_VT8231_IN3_MIN, "in3_min", SENSORS_VT8231_IN3,
4295                            SENSORS_VT8231_IN3,
4296                            RW, VT8231_SYSCTL_IN3, VALUE(1), 2 },
4297    { SENSORS_VT8231_IN4_MIN, "in4_min", SENSORS_VT8231_IN4,
4298                            SENSORS_VT8231_IN4,
4299                            RW, VT8231_SYSCTL_IN4, VALUE(1), 2 },
4300    { SENSORS_VT8231_IN5_MIN, "in5_min", SENSORS_VT8231_IN5,
4301                            SENSORS_VT8231_IN5,
4302                            RW, VT8231_SYSCTL_IN5, VALUE(1), 2 },
4303    { SENSORS_VT8231_IN0_MAX, "in0_max", SENSORS_VT8231_IN0,
4304                            SENSORS_VT8231_IN0,
4305                            RW, VT8231_SYSCTL_IN0, VALUE(2), 2 },
4306    { SENSORS_VT8231_IN1_MAX, "in1_max", SENSORS_VT8231_IN1,
4307                            SENSORS_VT8231_IN1,
4308                            RW, VT8231_SYSCTL_IN1, VALUE(2), 2 },
4309    { SENSORS_VT8231_IN2_MAX, "in2_max", SENSORS_VT8231_IN2,
4310                            SENSORS_VT8231_IN2,
4311                            RW, VT8231_SYSCTL_IN2, VALUE(2), 2 },
4312    { SENSORS_VT8231_IN3_MAX, "in3_max", SENSORS_VT8231_IN3,
4313                            SENSORS_VT8231_IN3,
4314                            RW, VT8231_SYSCTL_IN3, VALUE(2), 2 },
4315    { SENSORS_VT8231_IN4_MAX, "in4_max", SENSORS_VT8231_IN4,
4316                            SENSORS_VT8231_IN4,
4317                            RW, VT8231_SYSCTL_IN4, VALUE(2), 2 },
4318    { SENSORS_VT8231_IN5_MAX, "in5_max", SENSORS_VT8231_IN5,
4319                            SENSORS_VT8231_IN5,
4320                            RW, VT8231_SYSCTL_IN5, VALUE(2), 2 },
4321    { SENSORS_VT8231_FAN1, "fan1", NOMAP, NOMAP,
4322                         R, VT8231_SYSCTL_FAN1, VALUE(2), 0 },
4323    { SENSORS_VT8231_FAN2, "fan2", NOMAP, NOMAP,
4324                         R, VT8231_SYSCTL_FAN2, VALUE(2), 0 },
4325    { SENSORS_VT8231_FAN1_MIN, "fan1_min", SENSORS_VT8231_FAN1,
4326                             SENSORS_VT8231_FAN1,
4327                             RW, VT8231_SYSCTL_FAN1, VALUE(1), 0 },
4328    { SENSORS_VT8231_FAN2_MIN, "fan2_min", SENSORS_VT8231_FAN2,
4329                             SENSORS_VT8231_FAN2,
4330                             RW, VT8231_SYSCTL_FAN2, VALUE(1), 0 },
4331    /* no temp1 */
4332    { SENSORS_VT8231_TEMP2, "temp2", NOMAP, NOMAP,
4333                         R, VT8231_SYSCTL_TEMP2, VALUE(3), 1 },
4334    { SENSORS_VT8231_TEMP2_HYST, "temp2_hyst", SENSORS_VT8231_TEMP2,
4335                              SENSORS_VT8231_TEMP2, RW, 
4336                              VT8231_SYSCTL_TEMP2, VALUE(2), 1 },
4337    { SENSORS_VT8231_TEMP2_OVER, "temp2_over", SENSORS_VT8231_TEMP2,
4338                              SENSORS_VT8231_TEMP2, RW, 
4339                              VT8231_SYSCTL_TEMP2, VALUE(1), 1 },
4340    { SENSORS_VT8231_TEMP3, "temp3", NOMAP, NOMAP,
4341                         R, VT8231_SYSCTL_TEMP3, VALUE(3), 1 },
4342    { SENSORS_VT8231_TEMP3_HYST, "temp3_hyst", SENSORS_VT8231_TEMP3,
4343                              SENSORS_VT8231_TEMP3, RW, 
4344                              VT8231_SYSCTL_TEMP3, VALUE(2), 1 },
4345    { SENSORS_VT8231_TEMP3_OVER, "temp3_over", SENSORS_VT8231_TEMP3,
4346                              SENSORS_VT8231_TEMP3, RW, 
4347                              VT8231_SYSCTL_TEMP3, VALUE(1), 1 },
4348    { SENSORS_VT8231_TEMP4, "temp4", NOMAP, NOMAP,
4349                         R, VT8231_SYSCTL_TEMP4, VALUE(3), 1 },
4350    { SENSORS_VT8231_TEMP4_HYST, "temp4_hyst", SENSORS_VT8231_TEMP4,
4351                              SENSORS_VT8231_TEMP4, RW, 
4352                              VT8231_SYSCTL_TEMP4, VALUE(2), 1 },
4353    { SENSORS_VT8231_TEMP4_OVER, "temp4_over", SENSORS_VT8231_TEMP4,
4354                              SENSORS_VT8231_TEMP4, RW, 
4355                              VT8231_SYSCTL_TEMP4, VALUE(1), 1 },
4356    { SENSORS_VT8231_TEMP5, "temp5", NOMAP, NOMAP,
4357                         R, VT8231_SYSCTL_TEMP5, VALUE(3), 1 },
4358    { SENSORS_VT8231_TEMP5_HYST, "temp5_hyst", SENSORS_VT8231_TEMP5,
4359                              SENSORS_VT8231_TEMP5, RW, 
4360                              VT8231_SYSCTL_TEMP5, VALUE(2), 1 },
4361    { SENSORS_VT8231_TEMP5_OVER, "temp5_over", SENSORS_VT8231_TEMP5,
4362                              SENSORS_VT8231_TEMP5, RW, 
4363                              VT8231_SYSCTL_TEMP5, VALUE(1), 1 },
4364    { SENSORS_VT8231_TEMP6, "temp6", NOMAP, NOMAP,
4365                         R, VT8231_SYSCTL_TEMP6, VALUE(3), 1 },
4366    { SENSORS_VT8231_TEMP6_HYST, "temp6_hyst", SENSORS_VT8231_TEMP6,
4367                              SENSORS_VT8231_TEMP6, RW, 
4368                              VT8231_SYSCTL_TEMP6, VALUE(2), 1 },
4369    { SENSORS_VT8231_TEMP6_OVER, "temp6_over", SENSORS_VT8231_TEMP6,
4370                              SENSORS_VT8231_TEMP6, RW, 
4371                              VT8231_SYSCTL_TEMP6, VALUE(1), 1 },
4372    { SENSORS_VT8231_TEMP7, "temp7", NOMAP, NOMAP,
4373                         R, VT8231_SYSCTL_TEMP7, VALUE(3), 1 },
4374    { SENSORS_VT8231_TEMP7_HYST, "temp7_hyst", SENSORS_VT8231_TEMP7,
4375                              SENSORS_VT8231_TEMP7, RW, 
4376                              VT8231_SYSCTL_TEMP7, VALUE(2), 1 },
4377    { SENSORS_VT8231_TEMP7_OVER, "temp7_over", SENSORS_VT8231_TEMP7,
4378                              SENSORS_VT8231_TEMP7, RW, 
4379                              VT8231_SYSCTL_TEMP7, VALUE(1), 1 },
4380    { SENSORS_VT8231_FAN1_DIV, "fan1_div", SENSORS_VT8231_FAN1,
4381                             NOMAP,
4382                             RW, VT8231_SYSCTL_FAN_DIV, VALUE(1), 
4383                             0 },
4384    { SENSORS_VT8231_FAN2_DIV, "fan2_div", SENSORS_VT8231_FAN2,
4385                             NOMAP,
4386                             RW, VT8231_SYSCTL_FAN_DIV, VALUE(2), 
4387                             0 },
4388    { SENSORS_VT8231_ALARMS, "alarms", NOMAP, NOMAP, 
4389                           R, VT8231_SYSCTL_ALARMS, VALUE(1), 0 },
4390    { SENSORS_VT8231_VID, "vid", NOMAP, NOMAP,