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

Revision 1228, 155.1 KB (checked in by knobi, 13 years ago)

(MKN) Add stuff for FSCSCY min/max temperature statistics.

  • 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
41static sensors_chip_feature lm78_features[] =
42  { 
43    { SENSORS_LM78_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
44                        SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
45    { SENSORS_LM78_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
46                        SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
47    { SENSORS_LM78_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
48                        SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
49    { SENSORS_LM78_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
50                        SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
51    { SENSORS_LM78_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
52                        SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
53    { SENSORS_LM78_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
54                        SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
55    { SENSORS_LM78_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
56                        SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
57    { SENSORS_LM78_IN0_MIN, "in0_min", SENSORS_LM78_IN0, SENSORS_LM78_IN0,
58                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
59    { SENSORS_LM78_IN1_MIN, "in1_min", SENSORS_LM78_IN1, SENSORS_LM78_IN1,
60                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
61    { SENSORS_LM78_IN2_MIN, "in2_min", SENSORS_LM78_IN2, SENSORS_LM78_IN2,
62                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
63    { SENSORS_LM78_IN3_MIN, "in3_min", SENSORS_LM78_IN3, SENSORS_LM78_IN3,
64                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
65    { SENSORS_LM78_IN4_MIN, "in4_min", SENSORS_LM78_IN4, SENSORS_LM78_IN4,
66                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
67    { SENSORS_LM78_IN5_MIN, "in5_min", SENSORS_LM78_IN5, SENSORS_LM78_IN5,
68                            SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
69    { SENSORS_LM78_IN6_MIN, "in6_min", SENSORS_LM78_IN6, SENSORS_LM78_IN6,
70                            SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
71    { SENSORS_LM78_IN0_MAX, "in0_max", SENSORS_LM78_IN0, SENSORS_LM78_IN0,
72                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
73    { SENSORS_LM78_IN1_MAX, "in1_max", SENSORS_LM78_IN1, SENSORS_LM78_IN1,
74                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
75    { SENSORS_LM78_IN2_MAX, "in2_max", SENSORS_LM78_IN2, SENSORS_LM78_IN2,
76                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
77    { SENSORS_LM78_IN3_MAX, "in3_max", SENSORS_LM78_IN3, SENSORS_LM78_IN3,
78                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
79    { SENSORS_LM78_IN4_MAX, "in4_max", SENSORS_LM78_IN4, SENSORS_LM78_IN4,
80                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
81    { SENSORS_LM78_IN5_MAX, "in5_max", SENSORS_LM78_IN5, SENSORS_LM78_IN5,
82                            SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
83    { SENSORS_LM78_IN6_MAX, "in6_max", SENSORS_LM78_IN6, SENSORS_LM78_IN6,
84                            SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
85    { SENSORS_LM78_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
86                         SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
87    { SENSORS_LM78_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
88                         SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
89    { SENSORS_LM78_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
90                         SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
91    { SENSORS_LM78_FAN1_MIN, "fan1_min", SENSORS_LM78_FAN1, SENSORS_LM78_FAN1,
92                             SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
93    { SENSORS_LM78_FAN2_MIN, "fan2_min", SENSORS_LM78_FAN2, SENSORS_LM78_FAN2,
94                             SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
95    { SENSORS_LM78_FAN3_MIN, "fan3_min", SENSORS_LM78_FAN3, SENSORS_LM78_FAN3,
96                             SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
97    { SENSORS_LM78_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
98                         SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
99    { SENSORS_LM78_TEMP_HYST, "temp_hyst", SENSORS_LM78_TEMP,
100                              SENSORS_LM78_TEMP, SENSORS_MODE_RW, 
101                              LM78_SYSCTL_TEMP, VALUE(2), 1 },
102    { SENSORS_LM78_TEMP_OVER, "temp_over", SENSORS_LM78_TEMP,
103                              SENSORS_LM78_TEMP, SENSORS_MODE_RW, 
104                              LM78_SYSCTL_TEMP, VALUE(1), 1 },
105    { SENSORS_LM78_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
106                        SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 },
107    { SENSORS_LM78_FAN1_DIV, "fan1_div", SENSORS_LM78_FAN1, SENSORS_NO_MAPPING,
108                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 
109                             0 },
110    { SENSORS_LM78_FAN2_DIV, "fan2_div", SENSORS_LM78_FAN2, SENSORS_NO_MAPPING,
111                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 
112                             0 },
113    { SENSORS_LM78_FAN3_DIV, "fan3_div", SENSORS_LM78_FAN3, SENSORS_NO_MAPPING,
114                              SENSORS_MODE_R, LM78_SYSCTL_FAN_DIV, VALUE(3), 
115                              0 },
116    { SENSORS_LM78_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
117                           SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
118    { 0 }
119  };
120
121static sensors_chip_feature lm78j_features[] =
122  { 
123    { SENSORS_LM78J_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
124                         SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
125    { SENSORS_LM78J_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
126                         SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
127    { SENSORS_LM78J_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
128                         SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
129    { SENSORS_LM78J_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
130                         SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
131    { SENSORS_LM78J_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
132                         SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
133    { SENSORS_LM78J_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
134                         SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
135    { SENSORS_LM78J_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
136                         SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
137    { SENSORS_LM78J_IN0_MIN, "in0_min", SENSORS_LM78J_IN0, SENSORS_LM78J_IN0,
138                             SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
139    { SENSORS_LM78J_IN1_MIN, "in1_min", SENSORS_LM78J_IN1, SENSORS_LM78J_IN1,
140                             SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
141    { SENSORS_LM78J_IN2_MIN, "in2_min", SENSORS_LM78J_IN2, SENSORS_LM78J_IN2,
142                             SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
143    { SENSORS_LM78J_IN3_MIN, "in3_min", SENSORS_LM78J_IN3, SENSORS_LM78J_IN3,
144                             SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
145    { SENSORS_LM78J_IN4_MIN, "in4_min", SENSORS_LM78J_IN4, SENSORS_LM78J_IN4,
146                             SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
147    { SENSORS_LM78J_IN5_MIN, "in5_min", SENSORS_LM78J_IN5, SENSORS_LM78J_IN5,
148                             SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
149    { SENSORS_LM78J_IN6_MIN, "in6_min", SENSORS_LM78J_IN6, SENSORS_LM78J_IN6,
150                             SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
151    { SENSORS_LM78J_IN0_MAX, "in0_max", SENSORS_LM78J_IN0, SENSORS_LM78J_IN0,
152                             SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
153    { SENSORS_LM78J_IN1_MAX, "in1_max", SENSORS_LM78J_IN1, SENSORS_LM78J_IN1,
154                             SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
155    { SENSORS_LM78J_IN2_MAX, "in2_max", SENSORS_LM78J_IN2, SENSORS_LM78J_IN2,
156                             SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
157    { SENSORS_LM78J_IN3_MAX, "in3_max", SENSORS_LM78J_IN3, SENSORS_LM78J_IN3,
158                             SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
159    { SENSORS_LM78J_IN4_MAX, "in4_max", SENSORS_LM78J_IN4, SENSORS_LM78J_IN4,
160                             SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
161    { SENSORS_LM78J_IN5_MAX, "in5_max", SENSORS_LM78J_IN5, SENSORS_LM78J_IN5,
162                             SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
163    { SENSORS_LM78J_IN6_MAX, "in6_max", SENSORS_LM78J_IN6, SENSORS_LM78J_IN6,
164                             SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
165    { SENSORS_LM78J_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
166                          SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
167    { SENSORS_LM78J_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
168                          SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
169    { SENSORS_LM78J_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
170                          SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
171    { SENSORS_LM78J_FAN1_MIN, "fan1_min", SENSORS_LM78J_FAN1,
172                              SENSORS_LM78J_FAN1, SENSORS_MODE_RW, 
173                              LM78_SYSCTL_FAN1, VALUE(1), 0 },
174    { SENSORS_LM78J_FAN2_MIN, "fan2_min", SENSORS_LM78J_FAN2,
175                              SENSORS_LM78J_FAN2, SENSORS_MODE_RW, 
176                              LM78_SYSCTL_FAN2, VALUE(1), 0 },
177    { SENSORS_LM78J_FAN3_MIN, "fan3_min", SENSORS_LM78J_FAN3,
178                              SENSORS_LM78J_FAN3, SENSORS_MODE_RW, 
179                              LM78_SYSCTL_FAN3, VALUE(1), 0 },
180    { SENSORS_LM78J_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
181                          SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
182    { SENSORS_LM78J_TEMP_HYST, "temp_hyst", SENSORS_LM78J_TEMP,
183                               SENSORS_LM78J_TEMP, SENSORS_MODE_RW, 
184                               LM78_SYSCTL_TEMP, VALUE(2), 1 },
185    { SENSORS_LM78J_TEMP_OVER, "temp_over", SENSORS_LM78J_TEMP,
186                               SENSORS_LM78J_TEMP, SENSORS_MODE_RW, 
187                               LM78_SYSCTL_TEMP, VALUE(1), 1 },
188    { SENSORS_LM78J_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
189                         SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 },
190    { SENSORS_LM78J_FAN1_DIV, "fan1_div", SENSORS_LM78J_FAN1,
191                              SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
192                              LM78_SYSCTL_FAN_DIV, VALUE(1), 0 },
193    { SENSORS_LM78J_FAN2_DIV, "fan2_div", SENSORS_LM78J_FAN2,
194                              SENSORS_NO_MAPPING, SENSORS_MODE_RW,
195                              LM78_SYSCTL_FAN_DIV, VALUE(2), 0 },
196    { SENSORS_LM78J_FAN3_DIV, "fan3_div", SENSORS_LM78J_FAN3,
197                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
198                              LM78_SYSCTL_FAN_DIV, VALUE(3), 0 },
199    { SENSORS_LM78J_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
200                            SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
201    { 0 }
202  };
203
204static sensors_chip_feature lm79_features[] =
205  { 
206    { SENSORS_LM79_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
207                        SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
208    { SENSORS_LM79_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
209                        SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
210    { SENSORS_LM79_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
211                        SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
212    { SENSORS_LM79_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
213                        SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
214    { SENSORS_LM79_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
215                        SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
216    { SENSORS_LM79_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
217                        SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
218    { SENSORS_LM79_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
219                        SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
220    { SENSORS_LM79_IN0_MIN, "in0_min", SENSORS_LM79_IN0, SENSORS_LM79_IN0,
221                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
222    { SENSORS_LM79_IN1_MIN, "in1_min", SENSORS_LM79_IN1, SENSORS_LM79_IN1,
223                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
224    { SENSORS_LM79_IN2_MIN, "in2_min", SENSORS_LM79_IN2, SENSORS_LM79_IN2,
225                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
226    { SENSORS_LM79_IN3_MIN, "in3_min", SENSORS_LM79_IN3, SENSORS_LM79_IN3,
227                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
228    { SENSORS_LM79_IN4_MIN, "in4_min", SENSORS_LM79_IN4, SENSORS_LM79_IN4,
229                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
230    { SENSORS_LM79_IN5_MIN, "in5_min", SENSORS_LM79_IN5, SENSORS_LM79_IN5,
231                            SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
232    { SENSORS_LM79_IN6_MIN, "in6_min", SENSORS_LM79_IN6, SENSORS_LM79_IN6,
233                            SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
234    { SENSORS_LM79_IN0_MAX, "in0_max", SENSORS_LM79_IN0, SENSORS_LM79_IN0,
235                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
236    { SENSORS_LM79_IN1_MAX, "in1_max", SENSORS_LM79_IN1, SENSORS_LM79_IN1,
237                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
238    { SENSORS_LM79_IN2_MAX, "in2_max", SENSORS_LM79_IN2, SENSORS_LM79_IN2,
239                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
240    { SENSORS_LM79_IN3_MAX, "in3_max", SENSORS_LM79_IN3, SENSORS_LM79_IN3,
241                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
242    { SENSORS_LM79_IN4_MAX, "in4_max", SENSORS_LM79_IN4, SENSORS_LM79_IN4,
243                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
244    { SENSORS_LM79_IN5_MAX, "in5_max", SENSORS_LM79_IN5, SENSORS_LM79_IN5,
245                            SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
246    { SENSORS_LM79_IN6_MAX, "in6_max", SENSORS_LM79_IN6, SENSORS_LM79_IN6,
247                            SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
248    { SENSORS_LM79_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
249                         SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
250    { SENSORS_LM79_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
251                         SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
252    { SENSORS_LM79_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
253                         SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
254    { SENSORS_LM79_FAN1_MIN, "fan1_min", SENSORS_LM79_FAN1, SENSORS_LM79_FAN1,
255                             SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
256    { SENSORS_LM79_FAN2_MIN, "fan2_min", SENSORS_LM79_FAN2, SENSORS_LM79_FAN2,
257                             SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
258    { SENSORS_LM79_FAN3_MIN, "fan3_min", SENSORS_LM79_FAN3, SENSORS_LM79_FAN3,
259                             SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
260    { SENSORS_LM79_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
261                         SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
262    { SENSORS_LM79_TEMP_HYST, "temp_hyst", SENSORS_LM79_TEMP,
263                              SENSORS_LM79_TEMP, SENSORS_MODE_RW, 
264                              LM78_SYSCTL_TEMP, VALUE(2), 1 },
265    { SENSORS_LM79_TEMP_OVER, "temp_over", SENSORS_LM79_TEMP,
266                              SENSORS_LM79_TEMP, SENSORS_MODE_RW, 
267                              LM78_SYSCTL_TEMP, VALUE(1), 1 },
268    { SENSORS_LM79_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
269                        SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 },
270    { SENSORS_LM79_FAN1_DIV, "fan1_div", SENSORS_LM79_FAN1, SENSORS_NO_MAPPING,
271                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 
272                             0 },
273    { SENSORS_LM79_FAN2_DIV, "fan2_div", SENSORS_LM79_FAN2, SENSORS_NO_MAPPING,
274                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 
275                             0 },
276    { SENSORS_LM79_FAN3_DIV, "fan3_div", SENSORS_LM79_FAN3, SENSORS_NO_MAPPING,
277                              SENSORS_MODE_R, LM78_SYSCTL_FAN_DIV, VALUE(3), 
278                              0 },
279    { SENSORS_LM79_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
280                           SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
281    { 0 }
282  };
283
284
285static sensors_chip_feature lm75_features[] =
286  {
287    { SENSORS_LM75_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
288                         SENSORS_MODE_R, LM75_SYSCTL_TEMP, VALUE(3), 1 },
289    { SENSORS_LM75_TEMP_HYST, "temp_hyst", SENSORS_LM75_TEMP,
290                              SENSORS_LM75_TEMP, SENSORS_MODE_RW, 
291                              LM75_SYSCTL_TEMP, VALUE(2), 1 },
292    { SENSORS_LM75_TEMP_OVER, "temp_over", SENSORS_LM75_TEMP,
293                              SENSORS_LM75_TEMP, SENSORS_MODE_RW, 
294                              LM75_SYSCTL_TEMP, VALUE(1), 1 },
295    { 0 }
296  };
297
298static sensors_chip_feature adm1021_features[] =
299  {
300    { SENSORS_ADM1021_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
301                              SENSORS_MODE_R, ADM1021_SYSCTL_TEMP, VALUE(3), 
302                              0 },
303    { SENSORS_ADM1021_TEMP_HYST, "temp_low", SENSORS_ADM1021_TEMP,
304                              SENSORS_ADM1021_TEMP, SENSORS_MODE_RW, 
305                              ADM1021_SYSCTL_TEMP, VALUE(2), 0 },
306    { SENSORS_ADM1021_TEMP_OVER, "temp_over", SENSORS_ADM1021_TEMP,
307                              SENSORS_ADM1021_TEMP, SENSORS_MODE_RW,
308                              ADM1021_SYSCTL_TEMP, VALUE(1), 0 },
309    { SENSORS_ADM1021_REMOTE_TEMP, "remote_temp", SENSORS_NO_MAPPING, 
310                              SENSORS_NO_MAPPING, SENSORS_MODE_R, 
311                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
312    { SENSORS_ADM1021_REMOTE_TEMP_HYST, "remote_temp_low", 
313                              SENSORS_ADM1021_REMOTE_TEMP,
314                              SENSORS_ADM1021_REMOTE_TEMP, SENSORS_MODE_RW, 
315                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
316    { SENSORS_ADM1021_REMOTE_TEMP_OVER, "remote_temp_over", 
317                              SENSORS_ADM1021_REMOTE_TEMP,
318                              SENSORS_ADM1021_REMOTE_TEMP, SENSORS_MODE_RW,
319                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
320    { SENSORS_ADM1021_ALARMS, "alarms", SENSORS_NO_MAPPING,
321                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
322                              ADM1021_SYSCTL_ALARMS, VALUE(1), 0 },
323    { SENSORS_ADM1021_DIE_CODE, "die_code", SENSORS_NO_MAPPING,
324                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
325                              ADM1021_SYSCTL_DIE_CODE, VALUE(1), 0 },
326    { 0 }
327  };
328
329static sensors_chip_feature max1617_features[] =
330  {
331    { SENSORS_MAX1617_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
332                              SENSORS_MODE_R, ADM1021_SYSCTL_TEMP, VALUE(3), 
333                              0 },
334    { SENSORS_MAX1617_TEMP_HYST, "temp_low", SENSORS_MAX1617_TEMP,
335                              SENSORS_MAX1617_TEMP, SENSORS_MODE_RW, 
336                              ADM1021_SYSCTL_TEMP, VALUE(2), 0 },
337    { SENSORS_MAX1617_TEMP_OVER, "temp_over", SENSORS_MAX1617_TEMP,
338                              SENSORS_MAX1617_TEMP, SENSORS_MODE_RW,
339                              ADM1021_SYSCTL_TEMP, VALUE(1), 0 },
340    { SENSORS_MAX1617_REMOTE_TEMP, "remote_temp", SENSORS_NO_MAPPING, 
341                              SENSORS_NO_MAPPING, SENSORS_MODE_R, 
342                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
343    { SENSORS_MAX1617_REMOTE_TEMP_HYST, "remote_temp_low", 
344                              SENSORS_MAX1617_REMOTE_TEMP,
345                              SENSORS_MAX1617_REMOTE_TEMP, SENSORS_MODE_RW, 
346                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
347    { SENSORS_MAX1617_REMOTE_TEMP_OVER, "remote_temp_over", 
348                              SENSORS_MAX1617_REMOTE_TEMP,
349                              SENSORS_MAX1617_REMOTE_TEMP, SENSORS_MODE_RW,
350                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
351    { SENSORS_MAX1617_ALARMS, "alarms", SENSORS_NO_MAPPING,
352                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
353                              ADM1021_SYSCTL_ALARMS, VALUE(1), 0 },
354    { 0 }
355  };
356
357static sensors_chip_feature max1617a_features[] =
358  {
359    { SENSORS_MAX1617A_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
360                              SENSORS_MODE_R, ADM1021_SYSCTL_TEMP, VALUE(3), 
361                              0 },
362    { SENSORS_MAX1617A_TEMP_HYST, "temp_low", SENSORS_MAX1617A_TEMP,
363                              SENSORS_MAX1617A_TEMP, SENSORS_MODE_RW, 
364                              ADM1021_SYSCTL_TEMP, VALUE(2), 0 },
365    { SENSORS_MAX1617A_TEMP_OVER, "temp_over", SENSORS_MAX1617A_TEMP,
366                              SENSORS_MAX1617A_TEMP, SENSORS_MODE_RW,
367                              ADM1021_SYSCTL_TEMP, VALUE(1), 0 },
368    { SENSORS_MAX1617A_REMOTE_TEMP, "remote_temp", SENSORS_NO_MAPPING, 
369                              SENSORS_NO_MAPPING, SENSORS_MODE_R, 
370                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
371    { SENSORS_MAX1617A_REMOTE_TEMP_HYST, "remote_temp_low", 
372                              SENSORS_MAX1617A_REMOTE_TEMP,
373                              SENSORS_MAX1617A_REMOTE_TEMP, SENSORS_MODE_RW, 
374                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
375    { SENSORS_MAX1617A_REMOTE_TEMP_OVER, "remote_temp_over", 
376                              SENSORS_MAX1617A_REMOTE_TEMP,
377                              SENSORS_MAX1617A_REMOTE_TEMP, SENSORS_MODE_RW,
378                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
379    { SENSORS_MAX1617A_ALARMS, "alarms", SENSORS_NO_MAPPING,
380                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
381                              ADM1021_SYSCTL_ALARMS, VALUE(1), 0 },
382    { 0 }
383  };
384
385static sensors_chip_feature gl518_features[] =
386  {
387    { SENSORS_GL518_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
388                            SENSORS_MODE_R, GL518_SYSCTL_VDD, VALUE(3), 2 },
389    { SENSORS_GL518_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
390                             SENSORS_MODE_R, GL518_SYSCTL_VIN1, VALUE(3), 
391                             2 },
392    { SENSORS_GL518_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
393                             SENSORS_MODE_R, GL518_SYSCTL_VIN2, VALUE(3), 
394                             2 },
395    { SENSORS_GL518_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
396                             SENSORS_MODE_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
397    { SENSORS_GL518_VDD_MIN, "vdd_min", SENSORS_GL518_VDD,
398                                SENSORS_GL518_VDD, SENSORS_MODE_RW,
399                                GL518_SYSCTL_VDD, VALUE(1), 2 },
400    { SENSORS_GL518_VIN1_MIN, "vin1_min", SENSORS_GL518_VIN1, 
401                                 SENSORS_GL518_VIN1, SENSORS_MODE_RW,
402                                 GL518_SYSCTL_VIN1, VALUE(1), 2 },
403    { SENSORS_GL518_VIN2_MIN, "vin2_min", SENSORS_GL518_VIN2, 
404                                 SENSORS_GL518_VIN2, SENSORS_MODE_RW,
405                                 GL518_SYSCTL_VIN2, VALUE(1), 2 },
406    { SENSORS_GL518_VIN3_MIN, "vin3_min", SENSORS_GL518_VIN3, 
407                                 SENSORS_GL518_VIN3, SENSORS_MODE_RW,
408                                 GL518_SYSCTL_VIN3, VALUE(1), 2 },
409    { SENSORS_GL518_VDD_MAX, "vdd_max", SENSORS_GL518_VDD,
410                                SENSORS_GL518_VDD, SENSORS_MODE_RW,
411                                GL518_SYSCTL_VDD, VALUE(2), 2 },
412    { SENSORS_GL518_VIN1_MAX, "vin1_max", SENSORS_GL518_VIN1, 
413                                 SENSORS_GL518_VIN1, SENSORS_MODE_RW,
414                                 GL518_SYSCTL_VIN1, VALUE(2), 2 },
415    { SENSORS_GL518_VIN2_MAX, "vin2_max", SENSORS_GL518_VIN2, 
416                                 SENSORS_GL518_VIN2, SENSORS_MODE_RW,
417                                 GL518_SYSCTL_VIN2, VALUE(2), 2 },
418    { SENSORS_GL518_VIN3_MAX, "vin3_max", SENSORS_GL518_VIN3, 
419                                 SENSORS_GL518_VIN3, SENSORS_MODE_RW,
420                                 GL518_SYSCTL_VIN3, VALUE(2), 2 },
421    { SENSORS_GL518_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
422                             SENSORS_MODE_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
423    { SENSORS_GL518_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
424                             SENSORS_MODE_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
425    { SENSORS_GL518_FAN1_MIN, "fan1_min", SENSORS_GL518_FAN1, 
426                                 SENSORS_GL518_FAN1, SENSORS_MODE_RW,
427                                 GL518_SYSCTL_FAN1, VALUE(1), 0 },
428    { SENSORS_GL518_FAN2_MIN, "fan2_min", SENSORS_GL518_FAN2, 
429                                 SENSORS_GL518_FAN2, SENSORS_MODE_RW,
430                                 GL518_SYSCTL_FAN2, VALUE(1), 0 },
431    { SENSORS_GL518_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
432                             SENSORS_MODE_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
433    { SENSORS_GL518_TEMP_HYST, "temp_hyst", SENSORS_GL518_TEMP, 
434                                  SENSORS_GL518_TEMP, SENSORS_MODE_RW,
435                                  GL518_SYSCTL_TEMP, VALUE(2), 1 },
436    { SENSORS_GL518_TEMP_OVER, "temp_over", SENSORS_GL518_TEMP, 
437                                  SENSORS_GL518_TEMP, SENSORS_MODE_RW,
438                                  GL518_SYSCTL_TEMP, VALUE(1), 1 },
439    { SENSORS_GL518_FAN1_DIV, "fan1_div", SENSORS_GL518_FAN1, 
440                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
441                                 GL518_SYSCTL_FAN_DIV, VALUE(1), 0 },
442    { SENSORS_GL518_FAN2_DIV, "fan2_div", SENSORS_GL518_FAN2, 
443                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
444                                 GL518_SYSCTL_FAN_DIV, VALUE(2), 0 },
445    { SENSORS_GL518_ALARMS, "alarms", SENSORS_NO_MAPPING,
446                               SENSORS_NO_MAPPING, SENSORS_MODE_R,
447                               GL518_SYSCTL_ALARMS, VALUE(1), 0 },
448    { SENSORS_GL518_BEEP_ENABLE, "beep_enable", SENSORS_GL518_ALARMS,
449                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
450                               GL518_SYSCTL_BEEP, VALUE(1), 0 },
451    { SENSORS_GL518_BEEPS, "beeps", SENSORS_GL518_ALARMS,
452                               SENSORS_GL518_ALARMS, SENSORS_MODE_RW,
453                               GL518_SYSCTL_BEEP, VALUE(2), 0 },
454    { SENSORS_GL518_FAN1OFF, "fan1_off", SENSORS_GL518_FAN1,
455                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
456                               GL518_SYSCTL_FAN1OFF, VALUE(1), 0 },
457    { SENSORS_GL518_FAN1PIN, "fan1_off_pin", SENSORS_GL518_FAN1OFF,
458                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
459                               GL518_SYSCTL_FAN1OFF, VALUE(2), 0 },
460    { SENSORS_GL518_ITERATE, "iterate", SENSORS_NO_MAPPING,
461                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
462                               GL518_SYSCTL_ITERATE, VALUE(1), 0 },
463    { 0 }
464  };
465
466static sensors_chip_feature gl520_features[] =
467  {
468    { SENSORS_GL520_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
469                            SENSORS_MODE_R, GL520_SYSCTL_VDD, VALUE(3), 2 },
470    { SENSORS_GL520_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
471                             SENSORS_MODE_R, GL520_SYSCTL_VIN1, VALUE(3), 
472                             2 },
473    { SENSORS_GL520_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
474                             SENSORS_MODE_R, GL520_SYSCTL_VIN2, VALUE(3), 
475                             2 },
476    { SENSORS_GL520_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
477                             SENSORS_MODE_R, GL520_SYSCTL_VIN3, VALUE(3), 2 },
478    { SENSORS_GL520_VIN4, "vin4", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
479                             SENSORS_MODE_R, GL520_SYSCTL_VIN4, VALUE(3), 2 },
480    { SENSORS_GL520_VDD_MIN, "vdd_min", SENSORS_GL520_VDD,
481                                SENSORS_GL520_VDD, SENSORS_MODE_RW,
482                                GL520_SYSCTL_VDD, VALUE(1), 2 },
483    { SENSORS_GL520_VIN1_MIN, "vin1_min", SENSORS_GL520_VIN1, 
484                                 SENSORS_GL520_VIN1, SENSORS_MODE_RW,
485                                 GL520_SYSCTL_VIN1, VALUE(1), 2 },
486    { SENSORS_GL520_VIN2_MIN, "vin2_min", SENSORS_GL520_VIN2, 
487                                 SENSORS_GL520_VIN2, SENSORS_MODE_RW,
488                                 GL520_SYSCTL_VIN2, VALUE(1), 2 },
489    { SENSORS_GL520_VIN3_MIN, "vin3_min", SENSORS_GL520_VIN3, 
490                                 SENSORS_GL520_VIN3, SENSORS_MODE_RW,
491                                 GL520_SYSCTL_VIN3, VALUE(1), 2 },
492    { SENSORS_GL520_VIN4_MIN, "vin4_min", SENSORS_GL520_VIN4, 
493                                 SENSORS_GL520_VIN4, SENSORS_MODE_RW,
494                                 GL520_SYSCTL_VIN4, VALUE(1), 2 },
495    { SENSORS_GL520_VDD_MAX, "vdd_max", SENSORS_GL520_VDD,
496                                SENSORS_GL520_VDD, SENSORS_MODE_RW,
497                                GL520_SYSCTL_VDD, VALUE(2), 2 },
498    { SENSORS_GL520_VIN1_MAX, "vin1_max", SENSORS_GL520_VIN1, 
499                                 SENSORS_GL520_VIN1, SENSORS_MODE_RW,
500                                 GL520_SYSCTL_VIN1, VALUE(2), 2 },
501    { SENSORS_GL520_VIN2_MAX, "vin2_max", SENSORS_GL520_VIN2, 
502                                 SENSORS_GL520_VIN2, SENSORS_MODE_RW,
503                                 GL520_SYSCTL_VIN2, VALUE(2), 2 },
504    { SENSORS_GL520_VIN3_MAX, "vin3_max", SENSORS_GL520_VIN3, 
505                                 SENSORS_GL520_VIN3, SENSORS_MODE_RW,
506                                 GL520_SYSCTL_VIN3, VALUE(2), 2 },
507    { SENSORS_GL520_VIN4_MAX, "vin4_max", SENSORS_GL520_VIN4, 
508                                 SENSORS_GL520_VIN4, SENSORS_MODE_RW,
509                                 GL520_SYSCTL_VIN4, VALUE(2), 2 },
510    { SENSORS_GL520_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
511                             SENSORS_MODE_R, GL520_SYSCTL_FAN1, VALUE(2), 0 },
512    { SENSORS_GL520_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
513                             SENSORS_MODE_R, GL520_SYSCTL_FAN2, VALUE(2), 0 },
514    { SENSORS_GL520_FAN1_MIN, "fan1_min", SENSORS_GL520_FAN1, 
515                                 SENSORS_GL520_FAN1, SENSORS_MODE_RW,
516                                 GL520_SYSCTL_FAN1, VALUE(1), 0 },
517    { SENSORS_GL520_FAN2_MIN, "fan2_min", SENSORS_GL520_FAN2, 
518                                 SENSORS_GL520_FAN2, SENSORS_MODE_RW,
519                                 GL520_SYSCTL_FAN2, VALUE(1), 0 },
520    { SENSORS_GL520_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
521                             SENSORS_MODE_R, GL520_SYSCTL_TEMP1, VALUE(3), 1 },
522    { SENSORS_GL520_TEMP1_HYST, "temp1_hyst", SENSORS_GL520_TEMP1, 
523                                  SENSORS_GL520_TEMP1, SENSORS_MODE_RW,
524                                  GL520_SYSCTL_TEMP1, VALUE(2), 1 },
525    { SENSORS_GL520_TEMP1_OVER, "temp1_over", SENSORS_GL520_TEMP1, 
526                                  SENSORS_GL520_TEMP1, SENSORS_MODE_RW,
527                                  GL520_SYSCTL_TEMP1, VALUE(1), 1 },
528    { SENSORS_GL520_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
529                             SENSORS_MODE_R, GL520_SYSCTL_TEMP2, VALUE(3), 1 },
530    { SENSORS_GL520_TEMP2_HYST, "temp2_hyst", SENSORS_GL520_TEMP2, 
531                                  SENSORS_GL520_TEMP2, SENSORS_MODE_RW,
532                                  GL520_SYSCTL_TEMP2, VALUE(2), 1 },
533    { SENSORS_GL520_TEMP2_OVER, "temp2_over", SENSORS_GL520_TEMP2, 
534                                  SENSORS_GL520_TEMP2, SENSORS_MODE_RW,
535                                  GL520_SYSCTL_TEMP2, VALUE(1), 1 },
536    { SENSORS_GL520_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
537                              SENSORS_MODE_R, GL520_SYSCTL_VID, VALUE(1), 2 },
538    { SENSORS_GL520_FAN1_DIV, "fan1_div", SENSORS_GL520_FAN1, 
539                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
540                                 GL520_SYSCTL_FAN_DIV, VALUE(1), 0 },
541    { SENSORS_GL520_FAN2_DIV, "fan2_div", SENSORS_GL520_FAN2, 
542                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
543                                 GL520_SYSCTL_FAN_DIV, VALUE(2), 0 },
544    { SENSORS_GL520_ALARMS, "alarms", SENSORS_NO_MAPPING,
545                               SENSORS_NO_MAPPING, SENSORS_MODE_R,
546                               GL520_SYSCTL_ALARMS, VALUE(1), 0 },
547    { SENSORS_GL520_BEEP_ENABLE, "beep_enable", SENSORS_GL520_ALARMS,
548                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
549                               GL520_SYSCTL_BEEP, VALUE(1), 0 },
550    { SENSORS_GL520_BEEPS, "beeps", SENSORS_GL520_ALARMS,
551                               SENSORS_GL520_ALARMS, SENSORS_MODE_RW,
552                               GL520_SYSCTL_BEEP, VALUE(2), 0 },
553    { SENSORS_GL520_FAN1OFF, "fan1_off", SENSORS_GL520_FAN1,
554                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
555                               GL520_SYSCTL_FAN1OFF, VALUE(1), 0 },
556    { SENSORS_GL520_TWOTEMPS, "two_temps", SENSORS_NO_MAPPING,
557                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
558                               GL520_SYSCTL_CONFIG, VALUE(1), 0 },
559    { 0 }
560  };
561
562static sensors_chip_feature lm80_features[] =
563  { 
564    { SENSORS_LM80_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
565                        SENSORS_MODE_R, LM80_SYSCTL_IN0, VALUE(3), 2 },
566    { SENSORS_LM80_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
567                        SENSORS_MODE_R, LM80_SYSCTL_IN1, VALUE(3), 2 },
568    { SENSORS_LM80_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
569                        SENSORS_MODE_R, LM80_SYSCTL_IN2, VALUE(3), 2 },
570    { SENSORS_LM80_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
571                        SENSORS_MODE_R, LM80_SYSCTL_IN3, VALUE(3), 2 },
572    { SENSORS_LM80_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
573                        SENSORS_MODE_R, LM80_SYSCTL_IN4, VALUE(3), 2 },
574    { SENSORS_LM80_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
575                        SENSORS_MODE_R, LM80_SYSCTL_IN5, VALUE(3), 2 },
576    { SENSORS_LM80_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
577                        SENSORS_MODE_R, LM80_SYSCTL_IN6, VALUE(3), 2 },
578    { SENSORS_LM80_IN0_MIN, "in0_min", SENSORS_LM80_IN0, SENSORS_LM80_IN0,
579                            SENSORS_MODE_RW, LM80_SYSCTL_IN0, VALUE(1), 2 },
580    { SENSORS_LM80_IN1_MIN, "in1_min", SENSORS_LM80_IN1, SENSORS_LM80_IN1,
581                            SENSORS_MODE_RW, LM80_SYSCTL_IN1, VALUE(1), 2 },
582    { SENSORS_LM80_IN2_MIN, "in2_min", SENSORS_LM80_IN2, SENSORS_LM80_IN2,
583                            SENSORS_MODE_RW, LM80_SYSCTL_IN2, VALUE(1), 2 },
584    { SENSORS_LM80_IN3_MIN, "in3_min", SENSORS_LM80_IN3, SENSORS_LM80_IN3,
585                            SENSORS_MODE_RW, LM80_SYSCTL_IN3, VALUE(1), 2 },
586    { SENSORS_LM80_IN4_MIN, "in4_min", SENSORS_LM80_IN4, SENSORS_LM80_IN4,
587                            SENSORS_MODE_RW, LM80_SYSCTL_IN4, VALUE(1), 2 },
588    { SENSORS_LM80_IN5_MIN, "in5_min", SENSORS_LM80_IN5, SENSORS_LM80_IN5,
589                            SENSORS_MODE_RW, LM80_SYSCTL_IN5, VALUE(1), 2 },
590    { SENSORS_LM80_IN6_MIN, "in6_min", SENSORS_LM80_IN6, SENSORS_LM80_IN6,
591                            SENSORS_MODE_RW, LM80_SYSCTL_IN6, VALUE(1), 2 },
592    { SENSORS_LM80_IN0_MAX, "in0_max", SENSORS_LM80_IN0, SENSORS_LM80_IN0,
593                            SENSORS_MODE_RW, LM80_SYSCTL_IN0, VALUE(2), 2 },
594    { SENSORS_LM80_IN1_MAX, "in1_max", SENSORS_LM80_IN1, SENSORS_LM80_IN1,
595                            SENSORS_MODE_RW, LM80_SYSCTL_IN1, VALUE(2), 2 },
596    { SENSORS_LM80_IN2_MAX, "in2_max", SENSORS_LM80_IN2, SENSORS_LM80_IN2,
597                            SENSORS_MODE_RW, LM80_SYSCTL_IN2, VALUE(2), 2 },
598    { SENSORS_LM80_IN3_MAX, "in3_max", SENSORS_LM80_IN3, SENSORS_LM80_IN3,
599                            SENSORS_MODE_RW, LM80_SYSCTL_IN3, VALUE(2), 2 },
600    { SENSORS_LM80_IN4_MAX, "in4_max", SENSORS_LM80_IN4, SENSORS_LM80_IN4,
601                            SENSORS_MODE_RW, LM80_SYSCTL_IN4, VALUE(2), 2 },
602    { SENSORS_LM80_IN5_MAX, "in5_max", SENSORS_LM80_IN5, SENSORS_LM80_IN5,
603                            SENSORS_MODE_RW, LM80_SYSCTL_IN5, VALUE(2), 2 },
604    { SENSORS_LM80_IN6_MAX, "in6_max", SENSORS_LM80_IN6, SENSORS_LM80_IN6,
605                            SENSORS_MODE_RW, LM80_SYSCTL_IN6, VALUE(2), 2 },
606    { SENSORS_LM80_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
607                         SENSORS_MODE_R, LM80_SYSCTL_FAN1, VALUE(2), 0 },
608    { SENSORS_LM80_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
609                         SENSORS_MODE_R, LM80_SYSCTL_FAN2, VALUE(2), 0 },
610    { SENSORS_LM80_FAN1_MIN, "fan1_min", SENSORS_LM80_FAN1, SENSORS_NO_MAPPING,
611                             SENSORS_MODE_RW, LM80_SYSCTL_FAN1, VALUE(1), 0 },
612    { SENSORS_LM80_FAN2_MIN, "fan2_min", SENSORS_LM80_FAN2, SENSORS_NO_MAPPING,
613                             SENSORS_MODE_RW, LM80_SYSCTL_FAN2, VALUE(1), 0 },
614    { SENSORS_LM80_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
615                         SENSORS_MODE_R, LM80_SYSCTL_TEMP, VALUE(5), 2 },
616    { SENSORS_LM80_TEMP_HOT_HYST, "temp_hot_hyst", SENSORS_LM80_TEMP,
617                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
618                              LM80_SYSCTL_TEMP, VALUE(2), 2 },
619    { SENSORS_LM80_TEMP_HOT_MAX, "temp_hot_max", SENSORS_LM80_TEMP,
620                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
621                              LM80_SYSCTL_TEMP, VALUE(1), 2 },
622    { SENSORS_LM80_TEMP_OS_HYST, "temp_os_hyst", SENSORS_LM80_TEMP,
623                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
624                              LM80_SYSCTL_TEMP, VALUE(4), 2 },
625    { SENSORS_LM80_TEMP_OS_MAX, "temp_os_max", SENSORS_LM80_TEMP,
626                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
627                              LM80_SYSCTL_TEMP, VALUE(3), 2 },
628    { SENSORS_LM80_FAN1_DIV, "fan1_div", SENSORS_LM80_FAN1, SENSORS_NO_MAPPING,
629                             SENSORS_MODE_RW, LM80_SYSCTL_FAN_DIV, VALUE(1), 
630                             0 },
631    { SENSORS_LM80_FAN2_DIV, "fan2_div", SENSORS_LM80_FAN2, SENSORS_NO_MAPPING,
632                             SENSORS_MODE_RW, LM80_SYSCTL_FAN_DIV, VALUE(2), 
633                             0 },
634    { SENSORS_LM80_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
635                           SENSORS_MODE_R, LM80_SYSCTL_ALARMS, VALUE(1), 0 },
636    { 0 }
637  };
638
639
640static sensors_chip_feature w83781d_features[] =
641  { 
642    { SENSORS_W83781D_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
643                        SENSORS_MODE_R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
644    { SENSORS_W83781D_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
645                        SENSORS_MODE_R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
646    { SENSORS_W83781D_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
647                        SENSORS_MODE_R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
648    { SENSORS_W83781D_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
649                        SENSORS_MODE_R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
650    { SENSORS_W83781D_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
651                        SENSORS_MODE_R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
652    { SENSORS_W83781D_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
653                        SENSORS_MODE_R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
654    { SENSORS_W83781D_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
655                        SENSORS_MODE_R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
656    { SENSORS_W83781D_IN0_MIN, "in0_min", SENSORS_W83781D_IN0, 
657                        SENSORS_W83781D_IN0, SENSORS_MODE_RW, 
658                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
659    { SENSORS_W83781D_IN1_MIN, "in1_min", SENSORS_W83781D_IN1, 
660                        SENSORS_W83781D_IN1, SENSORS_MODE_RW, 
661                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
662    { SENSORS_W83781D_IN2_MIN, "in2_min", SENSORS_W83781D_IN2, 
663                        SENSORS_W83781D_IN2, SENSORS_MODE_RW, 
664                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
665    { SENSORS_W83781D_IN3_MIN, "in3_min", SENSORS_W83781D_IN3, 
666                        SENSORS_W83781D_IN3, SENSORS_MODE_RW, 
667                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
668    { SENSORS_W83781D_IN4_MIN, "in4_min", SENSORS_W83781D_IN4, 
669                        SENSORS_W83781D_IN4, SENSORS_MODE_RW, 
670                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
671    { SENSORS_W83781D_IN5_MIN, "in5_min", SENSORS_W83781D_IN5, 
672                        SENSORS_W83781D_IN5, SENSORS_MODE_RW, 
673                        W83781D_SYSCTL_IN5, VALUE(1), 2 },
674    { SENSORS_W83781D_IN6_MIN, "in6_min", SENSORS_W83781D_IN6, 
675                        SENSORS_W83781D_IN6, SENSORS_MODE_RW, 
676                        W83781D_SYSCTL_IN6, VALUE(1), 2 },
677    { SENSORS_W83781D_IN0_MAX, "in0_max", SENSORS_W83781D_IN0, 
678                        SENSORS_W83781D_IN0, SENSORS_MODE_RW,
679                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
680    { SENSORS_W83781D_IN1_MAX, "in1_max", SENSORS_W83781D_IN1, 
681                        SENSORS_W83781D_IN1, SENSORS_MODE_RW, 
682                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
683    { SENSORS_W83781D_IN2_MAX, "in2_max", SENSORS_W83781D_IN2, 
684                        SENSORS_W83781D_IN2, SENSORS_MODE_RW, 
685                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
686    { SENSORS_W83781D_IN3_MAX, "in3_max", SENSORS_W83781D_IN3, 
687                        SENSORS_W83781D_IN3, SENSORS_MODE_RW, 
688                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
689    { SENSORS_W83781D_IN4_MAX, "in4_max", SENSORS_W83781D_IN4, 
690                        SENSORS_W83781D_IN4, SENSORS_MODE_RW,
691                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
692    { SENSORS_W83781D_IN5_MAX, "in5_max", SENSORS_W83781D_IN5, 
693                        SENSORS_W83781D_IN5, SENSORS_MODE_RW, 
694                        W83781D_SYSCTL_IN5, VALUE(2), 2 },
695    { SENSORS_W83781D_IN6_MAX, "in6_max", SENSORS_W83781D_IN6, 
696                        SENSORS_W83781D_IN6, SENSORS_MODE_RW, 
697                        W83781D_SYSCTL_IN6, VALUE(2), 2 },
698    { SENSORS_W83781D_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
699                        SENSORS_MODE_R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
700    { SENSORS_W83781D_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
701                        SENSORS_MODE_R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
702    { SENSORS_W83781D_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
703                        SENSORS_MODE_R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
704    { SENSORS_W83781D_FAN1_MIN, "fan1_min", SENSORS_W83781D_FAN1,
705                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
706                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
707    { SENSORS_W83781D_FAN2_MIN, "fan2_min", SENSORS_W83781D_FAN2, 
708                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
709                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
710    { SENSORS_W83781D_FAN3_MIN, "fan3_min", SENSORS_W83781D_FAN3, 
711                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
712                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
713    { SENSORS_W83781D_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
714                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
715    { SENSORS_W83781D_TEMP1_HYST, "temp1_hyst", SENSORS_W83781D_TEMP1,
716                         SENSORS_W83781D_TEMP1, SENSORS_MODE_RW, 
717                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
718    { SENSORS_W83781D_TEMP1_OVER, "temp1_over", SENSORS_W83781D_TEMP1,
719                         SENSORS_W83781D_TEMP1, SENSORS_MODE_RW, 
720                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
721    { SENSORS_W83781D_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
722                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
723    { SENSORS_W83781D_TEMP2_HYST, "temp2_hyst", SENSORS_W83781D_TEMP2,
724                         SENSORS_W83781D_TEMP2, SENSORS_MODE_RW, 
725                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
726    { SENSORS_W83781D_TEMP2_OVER, "temp2_over", SENSORS_W83781D_TEMP2,
727                         SENSORS_W83781D_TEMP2, SENSORS_MODE_RW, 
728                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
729    { SENSORS_W83781D_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
730                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP3, VALUE(3), 1 },
731    { SENSORS_W83781D_TEMP3_HYST, "temp3_hyst", SENSORS_W83781D_TEMP3,
732                         SENSORS_W83781D_TEMP3, SENSORS_MODE_RW, 
733                         W83781D_SYSCTL_TEMP3, VALUE(2), 1 },
734    { SENSORS_W83781D_TEMP3_OVER, "temp3_over", SENSORS_W83781D_TEMP3,
735                         SENSORS_W83781D_TEMP3, SENSORS_MODE_RW, 
736                         W83781D_SYSCTL_TEMP3, VALUE(1), 1 },
737
738    { SENSORS_W83781D_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
739                         SENSORS_MODE_R, W83781D_SYSCTL_VID, VALUE(1), 2 },
740    { SENSORS_W83781D_FAN1_DIV, "fan1_div", SENSORS_W83781D_FAN1, 
741                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
742                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
743    { SENSORS_W83781D_FAN2_DIV, "fan2_div", SENSORS_W83781D_FAN2, 
744                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
745                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
746    { SENSORS_W83781D_FAN3_DIV, "fan3_div", SENSORS_W83781D_FAN3, 
747                         SENSORS_NO_MAPPING, SENSORS_MODE_R, 
748                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
749    { SENSORS_W83781D_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
750                         SENSORS_MODE_R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
751    { SENSORS_W83781D_BEEP_ENABLE, "beep_enable", SENSORS_W83781D_ALARMS,
752                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
753                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
754    { SENSORS_W83781D_BEEPS, "beeps", SENSORS_W83781D_ALARMS,
755                         SENSORS_W83781D_ALARMS, SENSORS_MODE_RW,
756                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
757    { 0 }
758  };
759 
760static sensors_chip_feature w83782d_features[] =
761  { 
762    { SENSORS_W83782D_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
763                        SENSORS_MODE_R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
764    { SENSORS_W83782D_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
765                        SENSORS_MODE_R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
766    { SENSORS_W83782D_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
767                        SENSORS_MODE_R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
768    { SENSORS_W83782D_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
769                        SENSORS_MODE_R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
770    { SENSORS_W83782D_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
771                        SENSORS_MODE_R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
772    { SENSORS_W83782D_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
773                        SENSORS_MODE_R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
774    { SENSORS_W83782D_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
775                        SENSORS_MODE_R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
776    { SENSORS_W83782D_IN7, "in7", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
777                        SENSORS_MODE_R, W83781D_SYSCTL_IN7, VALUE(3), 2 },
778    { SENSORS_W83782D_IN8, "in8", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
779                        SENSORS_MODE_R, W83781D_SYSCTL_IN8, VALUE(3), 2 },
780    { SENSORS_W83782D_IN0_MIN, "in0_min", SENSORS_W83782D_IN0, 
781                        SENSORS_W83782D_IN0, SENSORS_MODE_RW, 
782                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
783    { SENSORS_W83782D_IN1_MIN, "in1_min", SENSORS_W83782D_IN1, 
784                        SENSORS_W83782D_IN1, SENSORS_MODE_RW, 
785                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
786    { SENSORS_W83782D_IN2_MIN, "in2_min", SENSORS_W83782D_IN2, 
787                        SENSORS_W83782D_IN2, SENSORS_MODE_RW, 
788                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
789    { SENSORS_W83782D_IN3_MIN, "in3_min", SENSORS_W83782D_IN3, 
790                        SENSORS_W83782D_IN3, SENSORS_MODE_RW, 
791                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
792    { SENSORS_W83782D_IN4_MIN, "in4_min", SENSORS_W83782D_IN4, 
793                        SENSORS_W83782D_IN4, SENSORS_MODE_RW, 
794                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
795    { SENSORS_W83782D_IN5_MIN, "in5_min", SENSORS_W83782D_IN5, 
796                        SENSORS_W83782D_IN5, SENSORS_MODE_RW, 
797                        W83781D_SYSCTL_IN5, VALUE(1), 2 },
798    { SENSORS_W83782D_IN6_MIN, "in6_min", SENSORS_W83782D_IN6, 
799                        SENSORS_W83782D_IN6, SENSORS_MODE_RW, 
800                        W83781D_SYSCTL_IN6, VALUE(1), 2 },
801    { SENSORS_W83782D_IN7_MIN, "in7_min", SENSORS_W83782D_IN7, 
802                        SENSORS_W83782D_IN7, SENSORS_MODE_RW, 
803                        W83781D_SYSCTL_IN7, VALUE(1), 2 },
804    { SENSORS_W83782D_IN8_MIN, "in8_min", SENSORS_W83782D_IN8, 
805                        SENSORS_W83782D_IN8, SENSORS_MODE_RW, 
806                        W83781D_SYSCTL_IN8, VALUE(1), 2 },
807    { SENSORS_W83782D_IN0_MAX, "in0_max", SENSORS_W83782D_IN0, 
808                        SENSORS_W83782D_IN0, SENSORS_MODE_RW,
809                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
810    { SENSORS_W83782D_IN1_MAX, "in1_max", SENSORS_W83782D_IN1, 
811                        SENSORS_W83782D_IN1, SENSORS_MODE_RW, 
812                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
813    { SENSORS_W83782D_IN2_MAX, "in2_max", SENSORS_W83782D_IN2, 
814                        SENSORS_W83782D_IN2, SENSORS_MODE_RW, 
815                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
816    { SENSORS_W83782D_IN3_MAX, "in3_max", SENSORS_W83782D_IN3, 
817                        SENSORS_W83782D_IN3, SENSORS_MODE_RW, 
818                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
819    { SENSORS_W83782D_IN4_MAX, "in4_max", SENSORS_W83782D_IN4, 
820                        SENSORS_W83782D_IN4, SENSORS_MODE_RW,
821                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
822    { SENSORS_W83782D_IN5_MAX, "in5_max", SENSORS_W83782D_IN5, 
823                        SENSORS_W83782D_IN5, SENSORS_MODE_RW, 
824                        W83781D_SYSCTL_IN5, VALUE(2), 2 },
825    { SENSORS_W83782D_IN6_MAX, "in6_max", SENSORS_W83782D_IN6, 
826                        SENSORS_W83782D_IN6, SENSORS_MODE_RW, 
827                        W83781D_SYSCTL_IN6, VALUE(2), 2 },
828    { SENSORS_W83782D_IN7_MAX, "in7_max", SENSORS_W83782D_IN7, 
829                        SENSORS_W83782D_IN7, SENSORS_MODE_RW, 
830                        W83781D_SYSCTL_IN7, VALUE(2), 2 },
831    { SENSORS_W83782D_IN8_MAX, "in8_max", SENSORS_W83782D_IN8, 
832                        SENSORS_W83782D_IN8, SENSORS_MODE_RW, 
833                        W83781D_SYSCTL_IN8, VALUE(2), 2 },
834    { SENSORS_W83782D_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
835                        SENSORS_MODE_R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
836    { SENSORS_W83782D_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
837                        SENSORS_MODE_R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
838    { SENSORS_W83781D_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
839                        SENSORS_MODE_R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
840    { SENSORS_W83782D_FAN1_MIN, "fan1_min", SENSORS_W83782D_FAN1,
841                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
842                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
843    { SENSORS_W83782D_FAN2_MIN, "fan2_min", SENSORS_W83782D_FAN2, 
844                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
845                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
846    { SENSORS_W83781D_FAN3_MIN, "fan3_min", SENSORS_W83781D_FAN3, 
847                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
848                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
849    { SENSORS_W83782D_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
850                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
851    { SENSORS_W83782D_TEMP1_HYST, "temp1_hyst", SENSORS_W83782D_TEMP1,
852                         SENSORS_W83782D_TEMP1, SENSORS_MODE_RW, 
853                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
854    { SENSORS_W83782D_TEMP1_OVER, "temp1_over", SENSORS_W83782D_TEMP1,
855                         SENSORS_W83782D_TEMP1, SENSORS_MODE_RW, 
856                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
857    { SENSORS_W83782D_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
858                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
859    { SENSORS_W83782D_TEMP2_HYST, "temp2_hyst", SENSORS_W83782D_TEMP2,
860                         SENSORS_W83782D_TEMP2, SENSORS_MODE_RW, 
861                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
862    { SENSORS_W83782D_TEMP2_OVER, "temp2_over", SENSORS_W83782D_TEMP2,
863                         SENSORS_W83782D_TEMP2, SENSORS_MODE_RW, 
864                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
865    { SENSORS_W83782D_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
866                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP3, VALUE(3), 1 },
867    { SENSORS_W83782D_TEMP3_HYST, "temp3_hyst", SENSORS_W83782D_TEMP3,
868                         SENSORS_W83782D_TEMP3, SENSORS_MODE_RW, 
869                         W83781D_SYSCTL_TEMP3, VALUE(2), 1 },
870    { SENSORS_W83782D_TEMP3_OVER, "temp3_over", SENSORS_W83782D_TEMP3,
871                         SENSORS_W83782D_TEMP3, SENSORS_MODE_RW, 
872                         W83781D_SYSCTL_TEMP3, VALUE(1), 1 },
873
874    { SENSORS_W83782D_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
875                         SENSORS_MODE_R, W83781D_SYSCTL_VID, VALUE(1), 2 },
876    { SENSORS_W83782D_FAN1_DIV, "fan1_div", SENSORS_W83782D_FAN1, 
877                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
878                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
879    { SENSORS_W83782D_FAN2_DIV, "fan2_div", SENSORS_W83782D_FAN2, 
880                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
881                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
882    { SENSORS_W83782D_FAN3_DIV, "fan3_div", SENSORS_W83781D_FAN3, 
883                         SENSORS_NO_MAPPING, SENSORS_MODE_R, 
884                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
885    { SENSORS_W83782D_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
886                         SENSORS_MODE_R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
887    { SENSORS_W83782D_BEEP_ENABLE, "beep_enable", SENSORS_W83782D_ALARMS,
888                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
889                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
890    { SENSORS_W83782D_BEEPS, "beeps", SENSORS_W83782D_ALARMS,
891                         SENSORS_W83782D_ALARMS, SENSORS_MODE_RW,
892                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
893    { SENSORS_W83782D_SENS1, "sensor1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
894                         SENSORS_MODE_RW, W83781D_SYSCTL_SENS1, VALUE(1), 0 },
895    { SENSORS_W83782D_SENS2, "sensor2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
896                         SENSORS_MODE_RW, W83781D_SYSCTL_SENS2, VALUE(1), 0 },
897    { SENSORS_W83782D_SENS3, "sensor3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
898                         SENSORS_MODE_RW, W83781D_SYSCTL_SENS3, VALUE(1), 0 },
899    { 0 }
900  };
901 
902static sensors_chip_feature w83783s_features[] =
903  { 
904    { SENSORS_W83783S_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
905                        SENSORS_MODE_R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
906    { SENSORS_W83783S_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
907                        SENSORS_MODE_R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
908    { SENSORS_W83783S_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
909                        SENSORS_MODE_R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
910    { SENSORS_W83783S_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
911                        SENSORS_MODE_R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
912    { SENSORS_W83783S_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
913                        SENSORS_MODE_R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
914    { SENSORS_W83783S_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
915                        SENSORS_MODE_R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
916    { SENSORS_W83783S_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
917                        SENSORS_MODE_R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
918    { SENSORS_W83783S_IN0_MIN, "in0_min", SENSORS_W83783S_IN0, 
919                        SENSORS_W83783S_IN0, SENSORS_MODE_RW, 
920                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
921    { SENSORS_W83783S_IN1_MIN, "in1_min", SENSORS_W83783S_IN1, 
922                        SENSORS_W83783S_IN1, SENSORS_MODE_RW, 
923                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
924    { SENSORS_W83783S_IN2_MIN, "in2_min", SENSORS_W83783S_IN2, 
925                        SENSORS_W83783S_IN2, SENSORS_MODE_RW, 
926                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
927    { SENSORS_W83783S_IN3_MIN, "in3_min", SENSORS_W83783S_IN3, 
928                        SENSORS_W83783S_IN3, SENSORS_MODE_RW, 
929                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
930    { SENSORS_W83783S_IN4_MIN, "in4_min", SENSORS_W83783S_IN4, 
931                        SENSORS_W83783S_IN4, SENSORS_MODE_RW, 
932                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
933    { SENSORS_W83783S_IN5_MIN, "in5_min", SENSORS_W83783S_IN5, 
934                        SENSORS_W83783S_IN5, SENSORS_MODE_RW, 
935                        W83781D_SYSCTL_IN5, VALUE(1), 2 },
936    { SENSORS_W83783S_IN6_MIN, "in6_min", SENSORS_W83783S_IN6, 
937                        SENSORS_W83783S_IN6, SENSORS_MODE_RW, 
938                        W83781D_SYSCTL_IN6, VALUE(1), 2 },
939    { SENSORS_W83783S_IN0_MAX, "in0_max", SENSORS_W83783S_IN0, 
940                        SENSORS_W83783S_IN0, SENSORS_MODE_RW,
941                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
942    { SENSORS_W83783S_IN1_MAX, "in1_max", SENSORS_W83783S_IN1, 
943                        SENSORS_W83783S_IN1, SENSORS_MODE_RW, 
944                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
945    { SENSORS_W83783S_IN2_MAX, "in2_max", SENSORS_W83783S_IN2, 
946                        SENSORS_W83783S_IN2, SENSORS_MODE_RW, 
947                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
948    { SENSORS_W83783S_IN3_MAX, "in3_max", SENSORS_W83783S_IN3, 
949                        SENSORS_W83783S_IN3, SENSORS_MODE_RW, 
950                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
951    { SENSORS_W83783S_IN4_MAX, "in4_max", SENSORS_W83783S_IN4, 
952                        SENSORS_W83783S_IN4, SENSORS_MODE_RW,
953                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
954    { SENSORS_W83783S_IN5_MAX, "in5_max", SENSORS_W83783S_IN5, 
955                        SENSORS_W83783S_IN5, SENSORS_MODE_RW, 
956                        W83781D_SYSCTL_IN5, VALUE(2), 2 },
957    { SENSORS_W83783S_IN6_MAX, "in6_max", SENSORS_W83783S_IN6, 
958                        SENSORS_W83783S_IN6, SENSORS_MODE_RW, 
959                        W83781D_SYSCTL_IN6, VALUE(2), 2 },
960    { SENSORS_W83783S_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
961                        SENSORS_MODE_R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
962    { SENSORS_W83783S_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
963                        SENSORS_MODE_R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
964    { SENSORS_W83783S_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
965                        SENSORS_MODE_R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
966    { SENSORS_W83783S_FAN1_MIN, "fan1_min", SENSORS_W83783S_FAN1,
967                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
968                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
969    { SENSORS_W83783S_FAN2_MIN, "fan2_min", SENSORS_W83783S_FAN2, 
970                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
971                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
972    { SENSORS_W83783S_FAN3_MIN, "fan3_min", SENSORS_W83783S_FAN3, 
973                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
974                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
975    { SENSORS_W83783S_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
976                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
977    { SENSORS_W83783S_TEMP1_HYST, "temp1_hyst", SENSORS_W83783S_TEMP1,
978                         SENSORS_W83783S_TEMP1, SENSORS_MODE_RW, 
979                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
980    { SENSORS_W83783S_TEMP1_OVER, "temp1_over", SENSORS_W83783S_TEMP1,
981                         SENSORS_W83783S_TEMP1, SENSORS_MODE_RW, 
982                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
983    { SENSORS_W83783S_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
984                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
985    { SENSORS_W83783S_TEMP2_HYST, "temp2_hyst", SENSORS_W83783S_TEMP2,
986                         SENSORS_W83783S_TEMP2, SENSORS_MODE_RW, 
987                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
988    { SENSORS_W83783S_TEMP2_OVER, "temp2_over", SENSORS_W83783S_TEMP2,
989                         SENSORS_W83783S_TEMP2, SENSORS_MODE_RW, 
990                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
991    { SENSORS_W83783S_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
992                         SENSORS_MODE_R, W83781D_SYSCTL_VID, VALUE(1), 2 },
993    { SENSORS_W83783S_FAN1_DIV, "fan1_div", SENSORS_W83783S_FAN1, 
994                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
995                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
996    { SENSORS_W83783S_FAN2_DIV, "fan2_div", SENSORS_W83783S_FAN2, 
997                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
998                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
999    { SENSORS_W83783S_FAN3_DIV, "fan3_div", SENSORS_W83783S_FAN3, 
1000                         SENSORS_NO_MAPPING, SENSORS_MODE_R, 
1001                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
1002    { SENSORS_W83783S_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1003                         SENSORS_MODE_R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
1004    { SENSORS_W83783S_BEEP_ENABLE, "beep_enable", SENSORS_W83783S_ALARMS,
1005                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1006                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
1007    { SENSORS_W83783S_BEEPS, "beeps", SENSORS_W83783S_ALARMS,
1008                         SENSORS_W83783S_ALARMS, SENSORS_MODE_RW,
1009                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
1010    { SENSORS_W83783S_SENS1, "sensor1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1011                         SENSORS_MODE_RW, W83781D_SYSCTL_SENS1, VALUE(1), 0 },
1012    { SENSORS_W83783S_SENS2, "sensor2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1013                         SENSORS_MODE_RW, W83781D_SYSCTL_SENS2, VALUE(1), 0 },
1014    { 0 }
1015  };
1016 
1017static sensors_chip_feature adm9240_features[] =
1018  { 
1019    { SENSORS_ADM9240_IN0, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1020                        SENSORS_MODE_R, ADM9240_SYSCTL_IN0, VALUE(3), 2 },
1021    { SENSORS_ADM9240_IN1, "Vccp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1022                        SENSORS_MODE_R, ADM9240_SYSCTL_IN1, VALUE(3), 2 },
1023    { SENSORS_ADM9240_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1024                        SENSORS_MODE_R, ADM9240_SYSCTL_IN2, VALUE(3), 2 },
1025    { SENSORS_ADM9240_IN3, "5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1026                        SENSORS_MODE_R, ADM9240_SYSCTL_IN3, VALUE(3), 2 },
1027    { SENSORS_ADM9240_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1028                        SENSORS_MODE_R, ADM9240_SYSCTL_IN4, VALUE(3), 2 },
1029    { SENSORS_ADM9240_IN5, "Vccp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1030                        SENSORS_MODE_R, ADM9240_SYSCTL_IN5, VALUE(3), 2 },
1031    { SENSORS_ADM9240_IN0_MIN, "2.5V_min", SENSORS_ADM9240_IN0, 
1032                        SENSORS_ADM9240_IN0, SENSORS_MODE_RW, 
1033                        ADM9240_SYSCTL_IN0, VALUE(1), 2 },
1034    { SENSORS_ADM9240_IN1_MIN, "Vccp1_min", SENSORS_ADM9240_IN1, 
1035                        SENSORS_ADM9240_IN1, SENSORS_MODE_RW, 
1036                        ADM9240_SYSCTL_IN1, VALUE(1), 2 },
1037    { SENSORS_ADM9240_IN2_MIN, "3.3V_min", SENSORS_ADM9240_IN2, 
1038                        SENSORS_ADM9240_IN2, SENSORS_MODE_RW, 
1039                        ADM9240_SYSCTL_IN2, VALUE(1), 2 },
1040    { SENSORS_ADM9240_IN3_MIN, "5V_min", SENSORS_ADM9240_IN3, 
1041                        SENSORS_ADM9240_IN3, SENSORS_MODE_RW, 
1042                        ADM9240_SYSCTL_IN3, VALUE(1), 2 },
1043    { SENSORS_ADM9240_IN4_MIN, "12V_min", SENSORS_ADM9240_IN4, 
1044                        SENSORS_ADM9240_IN4, SENSORS_MODE_RW, 
1045                        ADM9240_SYSCTL_IN4, VALUE(1), 2 },
1046    { SENSORS_ADM9240_IN5_MIN, "Vccp2_min", SENSORS_ADM9240_IN5, 
1047                        SENSORS_ADM9240_IN5, SENSORS_MODE_RW, 
1048                        ADM9240_SYSCTL_IN5, VALUE(1), 2 },
1049    { SENSORS_ADM9240_IN0_MAX, "2.5V_max", SENSORS_ADM9240_IN0, 
1050                        SENSORS_ADM9240_IN0, SENSORS_MODE_RW,
1051                        ADM9240_SYSCTL_IN0, VALUE(2), 2 },
1052    { SENSORS_ADM9240_IN1_MAX, "Vccp1_max", SENSORS_ADM9240_IN1, 
1053                        SENSORS_ADM9240_IN1, SENSORS_MODE_RW, 
1054                        ADM9240_SYSCTL_IN1, VALUE(2), 2 },
1055    { SENSORS_ADM9240_IN2_MAX, "3.3V_max", SENSORS_ADM9240_IN2, 
1056                        SENSORS_ADM9240_IN2, SENSORS_MODE_RW, 
1057                        ADM9240_SYSCTL_IN2, VALUE(2), 2 },
1058    { SENSORS_ADM9240_IN3_MAX, "5V_max", SENSORS_ADM9240_IN3, 
1059                        SENSORS_ADM9240_IN3, SENSORS_MODE_RW, 
1060                        ADM9240_SYSCTL_IN3, VALUE(2), 2 },
1061    { SENSORS_ADM9240_IN4_MAX, "12V_max", SENSORS_ADM9240_IN4, 
1062                        SENSORS_ADM9240_IN4, SENSORS_MODE_RW,
1063                        ADM9240_SYSCTL_IN4, VALUE(2), 2 },
1064    { SENSORS_ADM9240_IN5_MAX, "Vccp2_max", SENSORS_ADM9240_IN5, 
1065                        SENSORS_ADM9240_IN5, SENSORS_MODE_RW, 
1066                        ADM9240_SYSCTL_IN5, VALUE(2), 2 },
1067    { SENSORS_ADM9240_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1068                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN1, VALUE(2), 0 },
1069    { SENSORS_ADM9240_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1070                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN2, VALUE(2), 0 },
1071    { SENSORS_ADM9240_FAN1_MIN, "fan1_min", SENSORS_ADM9240_FAN1,
1072                        SENSORS_ADM9240_FAN1, SENSORS_MODE_RW, 
1073                        ADM9240_SYSCTL_FAN1, VALUE(1), 0 },
1074    { SENSORS_ADM9240_FAN2_MIN, "fan2_min", SENSORS_ADM9240_FAN2, 
1075                        SENSORS_ADM9240_FAN2, SENSORS_MODE_RW, 
1076                        ADM9240_SYSCTL_FAN2, VALUE(1), 0 },
1077    { SENSORS_ADM9240_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1078                         SENSORS_MODE_R, ADM9240_SYSCTL_TEMP, VALUE(3), 1 },
1079    { SENSORS_ADM9240_TEMP_HYST, "temp_hyst", SENSORS_ADM9240_TEMP,
1080                         SENSORS_ADM9240_TEMP, SENSORS_MODE_RW, 
1081                         ADM9240_SYSCTL_TEMP, VALUE(2), 1 },
1082    { SENSORS_ADM9240_TEMP_OVER, "temp_over", SENSORS_ADM9240_TEMP,
1083                         SENSORS_ADM9240_TEMP, SENSORS_MODE_RW, 
1084                         ADM9240_SYSCTL_TEMP, VALUE(1), 1 },
1085
1086    { SENSORS_ADM9240_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1087                         SENSORS_MODE_R, ADM9240_SYSCTL_VID, VALUE(1), 2 },
1088    { SENSORS_ADM9240_FAN1_DIV, "fan1_div", SENSORS_ADM9240_FAN1, 
1089                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1090                         ADM9240_SYSCTL_FAN_DIV, VALUE(1), 0 },
1091    { SENSORS_ADM9240_FAN2_DIV, "fan2_div", SENSORS_ADM9240_FAN2, 
1092                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1093                         ADM9240_SYSCTL_FAN_DIV, VALUE(2), 0 },
1094    { SENSORS_ADM9240_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1095                         SENSORS_MODE_R, ADM9240_SYSCTL_ALARMS, VALUE(1), 0 },
1096    { SENSORS_ADM9240_ANALOG_OUT, "analog_out", SENSORS_NO_MAPPING,
1097                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1098                         ADM9240_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1099    { 0 }
1100  };
1101
1102static sensors_chip_feature adm1024_features[] =
1103  { 
1104    { SENSORS_ADM1024_IN0, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1105                        SENSORS_MODE_R, ADM1024_SYSCTL_IN0, VALUE(3), 2 },
1106    { SENSORS_ADM1024_IN1, "Vccp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1107                        SENSORS_MODE_R, ADM1024_SYSCTL_IN1, VALUE(3), 2 },
1108    { SENSORS_ADM1024_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1109                        SENSORS_MODE_R, ADM1024_SYSCTL_IN2, VALUE(3), 2 },
1110    { SENSORS_ADM1024_IN3, "5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1111                        SENSORS_MODE_R, ADM1024_SYSCTL_IN3, VALUE(3), 2 },
1112    { SENSORS_ADM1024_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1113                        SENSORS_MODE_R, ADM1024_SYSCTL_IN4, VALUE(3), 2 },
1114    { SENSORS_ADM1024_IN5, "Vccp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1115                        SENSORS_MODE_R, ADM1024_SYSCTL_IN5, VALUE(3), 2 },
1116    { SENSORS_ADM1024_IN0_MIN, "2.5V_min", SENSORS_ADM1024_IN0, 
1117                        SENSORS_ADM1024_IN0, SENSORS_MODE_RW, 
1118                        ADM1024_SYSCTL_IN0, VALUE(1), 2 },
1119    { SENSORS_ADM1024_IN1_MIN, "Vccp1_min", SENSORS_ADM1024_IN1, 
1120                        SENSORS_ADM1024_IN1, SENSORS_MODE_RW, 
1121                        ADM1024_SYSCTL_IN1, VALUE(1), 2 },
1122    { SENSORS_ADM1024_IN2_MIN, "3.3V_min", SENSORS_ADM1024_IN2, 
1123                        SENSORS_ADM1024_IN2, SENSORS_MODE_RW, 
1124                        ADM1024_SYSCTL_IN2, VALUE(1), 2 },
1125    { SENSORS_ADM1024_IN3_MIN, "5V_min", SENSORS_ADM1024_IN3, 
1126                        SENSORS_ADM1024_IN3, SENSORS_MODE_RW, 
1127                        ADM1024_SYSCTL_IN3, VALUE(1), 2 },
1128    { SENSORS_ADM1024_IN4_MIN, "12V_min", SENSORS_ADM1024_IN4, 
1129                        SENSORS_ADM1024_IN4, SENSORS_MODE_RW, 
1130                        ADM1024_SYSCTL_IN4, VALUE(1), 2 },
1131    { SENSORS_ADM1024_IN5_MIN, "Vccp2_min", SENSORS_ADM1024_IN5, 
1132                        SENSORS_ADM1024_IN5, SENSORS_MODE_RW, 
1133                        ADM1024_SYSCTL_IN5, VALUE(1), 2 },
1134    { SENSORS_ADM1024_IN0_MAX, "2.5V_max", SENSORS_ADM1024_IN0, 
1135                        SENSORS_ADM1024_IN0, SENSORS_MODE_RW,
1136                        ADM1024_SYSCTL_IN0, VALUE(2), 2 },
1137    { SENSORS_ADM1024_IN1_MAX, "Vccp1_max", SENSORS_ADM1024_IN1, 
1138                        SENSORS_ADM1024_IN1, SENSORS_MODE_RW, 
1139                        ADM1024_SYSCTL_IN1, VALUE(2), 2 },
1140    { SENSORS_ADM1024_IN2_MAX, "3.3V_max", SENSORS_ADM1024_IN2, 
1141                        SENSORS_ADM1024_IN2, SENSORS_MODE_RW, 
1142                        ADM1024_SYSCTL_IN2, VALUE(2), 2 },
1143    { SENSORS_ADM1024_IN3_MAX, "5V_max", SENSORS_ADM1024_IN3, 
1144                        SENSORS_ADM1024_IN3, SENSORS_MODE_RW, 
1145                        ADM1024_SYSCTL_IN3, VALUE(2), 2 },
1146    { SENSORS_ADM1024_IN4_MAX, "12V_max", SENSORS_ADM1024_IN4, 
1147                        SENSORS_ADM1024_IN4, SENSORS_MODE_RW,
1148                        ADM1024_SYSCTL_IN4, VALUE(2), 2 },
1149    { SENSORS_ADM1024_IN5_MAX, "Vccp2_max", SENSORS_ADM1024_IN5, 
1150                        SENSORS_ADM1024_IN5, SENSORS_MODE_RW, 
1151                        ADM1024_SYSCTL_IN5, VALUE(2), 2 },
1152    { SENSORS_ADM1024_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1153                        SENSORS_MODE_R, ADM1024_SYSCTL_FAN1, VALUE(2), 0 },
1154    { SENSORS_ADM1024_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1155                        SENSORS_MODE_R, ADM1024_SYSCTL_FAN2, VALUE(2), 0 },
1156    { SENSORS_ADM1024_FAN1_MIN, "fan1_min", SENSORS_ADM1024_FAN1,
1157                        SENSORS_ADM1024_FAN1, SENSORS_MODE_RW, 
1158                        ADM1024_SYSCTL_FAN1, VALUE(1), 0 },
1159    { SENSORS_ADM1024_FAN2_MIN, "fan2_min", SENSORS_ADM1024_FAN2, 
1160                        SENSORS_ADM1024_FAN2, SENSORS_MODE_RW, 
1161                        ADM1024_SYSCTL_FAN2, VALUE(1), 0 },
1162    { SENSORS_ADM1024_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1163                         SENSORS_MODE_R, ADM1024_SYSCTL_TEMP, VALUE(3), 1 },
1164    { SENSORS_ADM1024_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1165                         SENSORS_MODE_R, ADM1024_SYSCTL_TEMP1, VALUE(3), 1 },
1166    { SENSORS_ADM1024_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1167                         SENSORS_MODE_R, ADM1024_SYSCTL_TEMP2, VALUE(3), 1 },
1168    { SENSORS_ADM1024_TEMP_HYST, "temp_hyst", SENSORS_ADM1024_TEMP,
1169                         SENSORS_ADM1024_TEMP, SENSORS_MODE_RW, 
1170                         ADM1024_SYSCTL_TEMP, VALUE(2), 1 },
1171    { SENSORS_ADM1024_TEMP_OVER, "temp_over", SENSORS_ADM1024_TEMP,
1172                         SENSORS_ADM1024_TEMP, SENSORS_MODE_RW, 
1173                         ADM1024_SYSCTL_TEMP, VALUE(1), 1 },
1174    { SENSORS_ADM1024_TEMP1_HYST, "temp1_hyst", SENSORS_ADM1024_TEMP1,
1175                         SENSORS_ADM1024_TEMP1, SENSORS_MODE_RW, 
1176                         ADM1024_SYSCTL_TEMP1, VALUE(2), 1 },
1177    { SENSORS_ADM1024_TEMP1_OVER, "temp1_over", SENSORS_ADM1024_TEMP1,
1178                         SENSORS_ADM1024_TEMP1, SENSORS_MODE_RW, 
1179                         ADM1024_SYSCTL_TEMP1, VALUE(1), 1 },
1180    { SENSORS_ADM1024_TEMP2_HYST, "temp2_hyst", SENSORS_ADM1024_TEMP2,
1181                         SENSORS_ADM1024_TEMP2, SENSORS_MODE_RW, 
1182                         ADM1024_SYSCTL_TEMP2, VALUE(2), 1 },
1183    { SENSORS_ADM1024_TEMP2_OVER, "temp2_over", SENSORS_ADM1024_TEMP2,
1184                         SENSORS_ADM1024_TEMP2, SENSORS_MODE_RW, 
1185                         ADM1024_SYSCTL_TEMP2, VALUE(1), 1 },
1186
1187    { SENSORS_ADM1024_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1188                         SENSORS_MODE_R, ADM1024_SYSCTL_VID, VALUE(1), 2 },
1189    { SENSORS_ADM1024_FAN1_DIV, "fan1_div", SENSORS_ADM1024_FAN1, 
1190                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1191                         ADM1024_SYSCTL_FAN_DIV, VALUE(1), 0 },
1192    { SENSORS_ADM1024_FAN2_DIV, "fan2_div", SENSORS_ADM1024_FAN2, 
1193                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1194                         ADM1024_SYSCTL_FAN_DIV, VALUE(2), 0 },
1195    { SENSORS_ADM1024_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1196                         SENSORS_MODE_R, ADM1024_SYSCTL_ALARMS, VALUE(1), 0 },
1197    { SENSORS_ADM1024_ANALOG_OUT, "analog_out", SENSORS_NO_MAPPING,
1198                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1199                         ADM1024_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1200    { 0 }
1201  };
1202
1203static sensors_chip_feature ds1780_features[] =
1204  { 
1205    { SENSORS_DS1780_IN0, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1206                        SENSORS_MODE_R, ADM9240_SYSCTL_IN0, VALUE(3), 2 },
1207    { SENSORS_DS1780_IN1, "Vccp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1208                        SENSORS_MODE_R, ADM9240_SYSCTL_IN1, VALUE(3), 2 },
1209    { SENSORS_DS1780_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1210                        SENSORS_MODE_R, ADM9240_SYSCTL_IN2, VALUE(3), 2 },
1211    { SENSORS_DS1780_IN3, "5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1212                        SENSORS_MODE_R, ADM9240_SYSCTL_IN3, VALUE(3), 2 },
1213    { SENSORS_DS1780_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1214                        SENSORS_MODE_R, ADM9240_SYSCTL_IN4, VALUE(3), 2 },
1215    { SENSORS_DS1780_IN5, "Vccp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1216                        SENSORS_MODE_R, ADM9240_SYSCTL_IN5, VALUE(3), 2 },
1217    { SENSORS_DS1780_IN0_MIN, "2.5V_min", SENSORS_DS1780_IN0, 
1218                        SENSORS_DS1780_IN0, SENSORS_MODE_RW, 
1219                        ADM9240_SYSCTL_IN0, VALUE(1), 2 },
1220    { SENSORS_DS1780_IN1_MIN, "Vccp1_min", SENSORS_DS1780_IN1, 
1221                        SENSORS_DS1780_IN1, SENSORS_MODE_RW, 
1222                        ADM9240_SYSCTL_IN1, VALUE(1), 2 },
1223    { SENSORS_DS1780_IN2_MIN, "3.3V_min", SENSORS_DS1780_IN2, 
1224                        SENSORS_DS1780_IN2, SENSORS_MODE_RW, 
1225                        ADM9240_SYSCTL_IN2, VALUE(1), 2 },
1226    { SENSORS_DS1780_IN3_MIN, "5V_min", SENSORS_DS1780_IN3, 
1227                        SENSORS_DS1780_IN3, SENSORS_MODE_RW, 
1228                        ADM9240_SYSCTL_IN3, VALUE(1), 2 },
1229    { SENSORS_DS1780_IN4_MIN, "12V_min", SENSORS_DS1780_IN4, 
1230                        SENSORS_DS1780_IN4, SENSORS_MODE_RW, 
1231                        ADM9240_SYSCTL_IN4, VALUE(1), 2 },
1232    { SENSORS_DS1780_IN5_MIN, "Vccp2_min", SENSORS_DS1780_IN5, 
1233                        SENSORS_DS1780_IN5, SENSORS_MODE_RW, 
1234                        ADM9240_SYSCTL_IN5, VALUE(1), 2 },
1235    { SENSORS_DS1780_IN0_MAX, "2.5V_max", SENSORS_DS1780_IN0, 
1236                        SENSORS_DS1780_IN0, SENSORS_MODE_RW,
1237                        ADM9240_SYSCTL_IN0, VALUE(2), 2 },
1238    { SENSORS_DS1780_IN1_MAX, "Vccp1_max", SENSORS_DS1780_IN1, 
1239                        SENSORS_DS1780_IN1, SENSORS_MODE_RW, 
1240                        ADM9240_SYSCTL_IN1, VALUE(2), 2 },
1241    { SENSORS_DS1780_IN2_MAX, "3.3V_max", SENSORS_DS1780_IN2, 
1242                        SENSORS_DS1780_IN2, SENSORS_MODE_RW, 
1243                        ADM9240_SYSCTL_IN2, VALUE(2), 2 },
1244    { SENSORS_DS1780_IN3_MAX, "5V_max", SENSORS_DS1780_IN3, 
1245                        SENSORS_DS1780_IN3, SENSORS_MODE_RW, 
1246                        ADM9240_SYSCTL_IN3, VALUE(2), 2 },
1247    { SENSORS_DS1780_IN4_MAX, "12V_max", SENSORS_DS1780_IN4, 
1248                        SENSORS_DS1780_IN4, SENSORS_MODE_RW,
1249                        ADM9240_SYSCTL_IN4, VALUE(2), 2 },
1250    { SENSORS_DS1780_IN5_MAX, "Vccp2_max", SENSORS_DS1780_IN5, 
1251                        SENSORS_DS1780_IN5, SENSORS_MODE_RW, 
1252                        ADM9240_SYSCTL_IN5, VALUE(2), 2 },
1253    { SENSORS_DS1780_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1254                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN1, VALUE(2), 0 },
1255    { SENSORS_DS1780_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1256                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN2, VALUE(2), 0 },
1257    { SENSORS_DS1780_FAN1_MIN, "fan1_min", SENSORS_DS1780_FAN1,
1258                        SENSORS_DS1780_FAN1, SENSORS_MODE_RW, 
1259                        ADM9240_SYSCTL_FAN1, VALUE(1), 0 },
1260    { SENSORS_DS1780_FAN2_MIN, "fan2_min", SENSORS_DS1780_FAN2, 
1261                        SENSORS_DS1780_FAN2, SENSORS_MODE_RW, 
1262                        ADM9240_SYSCTL_FAN2, VALUE(1), 0 },
1263    { SENSORS_DS1780_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1264                         SENSORS_MODE_R, ADM9240_SYSCTL_TEMP, VALUE(3), 1 },
1265    { SENSORS_DS1780_TEMP_HYST, "temp_hyst", SENSORS_DS1780_TEMP,
1266                         SENSORS_DS1780_TEMP, SENSORS_MODE_RW, 
1267                         ADM9240_SYSCTL_TEMP, VALUE(2), 1 },
1268    { SENSORS_DS1780_TEMP_OVER, "temp_over", SENSORS_DS1780_TEMP,
1269                         SENSORS_DS1780_TEMP, SENSORS_MODE_RW, 
1270                         ADM9240_SYSCTL_TEMP, VALUE(1), 1 },
1271
1272    { SENSORS_DS1780_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1273                         SENSORS_MODE_R, ADM9240_SYSCTL_VID, VALUE(1), 2 },
1274    { SENSORS_DS1780_FAN1_DIV, "fan1_div", SENSORS_DS1780_FAN1, 
1275                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1276                         ADM9240_SYSCTL_FAN_DIV, VALUE(1), 0 },
1277    { SENSORS_DS1780_FAN2_DIV, "fan2_div", SENSORS_DS1780_FAN2, 
1278                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1279                         ADM9240_SYSCTL_FAN_DIV, VALUE(2), 0 },
1280    { SENSORS_DS1780_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1281                         SENSORS_MODE_R, ADM9240_SYSCTL_ALARMS, VALUE(1), 0 },
1282    { SENSORS_DS1780_ANALOG_OUT, "analog_out", SENSORS_NO_MAPPING,
1283                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1284                         ADM9240_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1285    { 0 }
1286  };
1287
1288static sensors_chip_feature sis5595_features[] =
1289  { 
1290    { SENSORS_SIS5595_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1291                        SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
1292    { SENSORS_SIS5595_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1293                        SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
1294    { SENSORS_SIS5595_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1295                        SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
1296    { SENSORS_SIS5595_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1297                        SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
1298    { SENSORS_SIS5595_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1299                        SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
1300    { SENSORS_SIS5595_IN0_MIN, "in0_min", SENSORS_SIS5595_IN0, SENSORS_SIS5595_IN0,
1301                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
1302    { SENSORS_SIS5595_IN1_MIN, "in1_min", SENSORS_SIS5595_IN1, SENSORS_SIS5595_IN1,
1303                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
1304    { SENSORS_SIS5595_IN2_MIN, "in2_min", SENSORS_SIS5595_IN2, SENSORS_SIS5595_IN2,
1305                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
1306    { SENSORS_SIS5595_IN3_MIN, "in3_min", SENSORS_SIS5595_IN3, SENSORS_SIS5595_IN3,
1307                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
1308    { SENSORS_SIS5595_IN4_MIN, "in4_min", SENSORS_SIS5595_IN4, SENSORS_SIS5595_IN4,
1309                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
1310    { SENSORS_SIS5595_IN0_MAX, "in0_max", SENSORS_SIS5595_IN0, SENSORS_SIS5595_IN0,
1311                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
1312    { SENSORS_SIS5595_IN1_MAX, "in1_max", SENSORS_SIS5595_IN1, SENSORS_SIS5595_IN1,
1313                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
1314    { SENSORS_SIS5595_IN2_MAX, "in2_max", SENSORS_SIS5595_IN2, SENSORS_SIS5595_IN2,
1315                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
1316    { SENSORS_SIS5595_IN3_MAX, "in3_max", SENSORS_SIS5595_IN3, SENSORS_SIS5595_IN3,
1317                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
1318    { SENSORS_SIS5595_IN4_MAX, "in4_max", SENSORS_SIS5595_IN4, SENSORS_SIS5595_IN4,
1319                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
1320    { SENSORS_SIS5595_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1321                         SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
1322    { SENSORS_SIS5595_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1323                         SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
1324    { SENSORS_SIS5595_FAN1_MIN, "fan1_min", SENSORS_SIS5595_FAN1, SENSORS_SIS5595_FAN1,
1325                             SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
1326    { SENSORS_SIS5595_FAN2_MIN, "fan2_min", SENSORS_SIS5595_FAN2, SENSORS_SIS5595_FAN2,
1327                             SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
1328    { SENSORS_SIS5595_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1329                         SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
1330    { SENSORS_SIS5595_TEMP_HYST, "temp_hyst", SENSORS_SIS5595_TEMP,
1331                              SENSORS_SIS5595_TEMP, SENSORS_MODE_RW, 
1332                              LM78_SYSCTL_TEMP, VALUE(2), 1 },
1333    { SENSORS_SIS5595_TEMP_OVER, "temp_over", SENSORS_SIS5595_TEMP,
1334                              SENSORS_SIS5595_TEMP, SENSORS_MODE_RW, 
1335                              LM78_SYSCTL_TEMP, VALUE(1), 1 },
1336    { SENSORS_SIS5595_FAN1_DIV, "fan1_div", SENSORS_SIS5595_FAN1, SENSORS_NO_MAPPING,
1337                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 
1338                             0 },
1339    { SENSORS_SIS5595_FAN2_DIV, "fan2_div", SENSORS_SIS5595_FAN2, SENSORS_NO_MAPPING,
1340                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 
1341                             0 },
1342    { SENSORS_SIS5595_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1343                           SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
1344    { 0 }
1345  };
1346
1347static sensors_chip_feature maxi_cg_features[] =
1348  { 
1349    { SENSORS_MAXI_CG_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1350                         SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(3), 0 },
1351    { SENSORS_MAXI_CG_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1352                         SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(3), 0 },
1353    { SENSORS_MAXI_CG_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1354                         SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(3), 0 },
1355    { SENSORS_MAXI_CG_FAN1_MIN, "fan1_min", SENSORS_MAXI_CG_FAN1, SENSORS_MAXI_CG_FAN1,
1356                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN1, VALUE(1), 0 },
1357    { SENSORS_MAXI_CG_FAN2_MIN, "fan2_min", SENSORS_MAXI_CG_FAN2, SENSORS_MAXI_CG_FAN2,
1358                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN2, VALUE(1), 0 },
1359    { SENSORS_MAXI_CG_FAN3_MIN, "fan3_min", SENSORS_MAXI_CG_FAN3, SENSORS_MAXI_CG_FAN3,
1360                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN3, VALUE(1), 0 },
1361    { SENSORS_MAXI_CG_FAN1_DIV, "fan1_div", SENSORS_MAXI_CG_FAN1, SENSORS_NO_MAPPING,
1362                             SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(2), 0 },
1363    { SENSORS_MAXI_CG_FAN2_DIV, "fan2_div", SENSORS_MAXI_CG_FAN2, SENSORS_NO_MAPPING,
1364                             SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(2), 0 },
1365    { SENSORS_MAXI_CG_FAN3_DIV, "fan3_div", SENSORS_MAXI_CG_FAN3, SENSORS_NO_MAPPING,
1366                             SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(2), 0 },
1367    { SENSORS_MAXI_CG_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1368                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP1, VALUE(3), 1 },
1369    { SENSORS_MAXI_CG_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1370                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP2, VALUE(3), 1 },
1371    { SENSORS_MAXI_CG_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1372                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP3, VALUE(3), 1 },
1373    { SENSORS_MAXI_CG_TEMP4, "temp4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1374                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP4, VALUE(3), 1 },
1375    { SENSORS_MAXI_CG_TEMP5, "temp5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1376                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP5, VALUE(3), 1 },
1377    { SENSORS_MAXI_CG_TEMP1_MAX, "temp1_max", SENSORS_MAXI_CG_TEMP1,
1378                              SENSORS_MAXI_CG_TEMP1, SENSORS_MODE_R, 
1379                              MAXI_SYSCTL_TEMP1, VALUE(1), 1 },
1380    { SENSORS_MAXI_CG_TEMP2_MAX, "temp2_max", SENSORS_MAXI_CG_TEMP2,
1381                              SENSORS_MAXI_CG_TEMP2, SENSORS_MODE_R, 
1382                              MAXI_SYSCTL_TEMP2, VALUE(1), 1 },
1383    { SENSORS_MAXI_CG_TEMP3_MAX, "temp3_max", SENSORS_MAXI_CG_TEMP3,
1384                              SENSORS_MAXI_CG_TEMP3, SENSORS_MODE_R, 
1385                              MAXI_SYSCTL_TEMP3, VALUE(1), 1 },
1386    { SENSORS_MAXI_CG_TEMP4_MAX, "temp4_max", SENSORS_MAXI_CG_TEMP4,
1387                              SENSORS_MAXI_CG_TEMP4, SENSORS_MODE_R, 
1388                              MAXI_SYSCTL_TEMP4, VALUE(1), 1 },
1389    { SENSORS_MAXI_CG_TEMP5_MAX, "temp5_max", SENSORS_MAXI_CG_TEMP5,
1390                              SENSORS_MAXI_CG_TEMP5, SENSORS_MODE_R, 
1391                              MAXI_SYSCTL_TEMP5, VALUE(1), 1 },
1392    { SENSORS_MAXI_CG_TEMP1_HYST, "temp1_hyst", SENSORS_MAXI_CG_TEMP1,
1393                              SENSORS_MAXI_CG_TEMP1, SENSORS_MODE_R, 
1394                              MAXI_SYSCTL_TEMP1, VALUE(2), 1 },
1395    { SENSORS_MAXI_CG_TEMP2_HYST, "temp2_hyst", SENSORS_MAXI_CG_TEMP2,
1396                              SENSORS_MAXI_CG_TEMP2, SENSORS_MODE_R, 
1397                              MAXI_SYSCTL_TEMP2, VALUE(2), 1 },
1398    { SENSORS_MAXI_CG_TEMP3_HYST, "temp3_hyst", SENSORS_MAXI_CG_TEMP3,
1399                              SENSORS_MAXI_CG_TEMP3, SENSORS_MODE_R, 
1400                              MAXI_SYSCTL_TEMP3, VALUE(2), 1 },
1401    { SENSORS_MAXI_CG_TEMP4_HYST, "temp4_hyst", SENSORS_MAXI_CG_TEMP4,
1402                              SENSORS_MAXI_CG_TEMP4, SENSORS_MODE_R, 
1403                              MAXI_SYSCTL_TEMP4, VALUE(2), 1 },
1404    { SENSORS_MAXI_CG_TEMP5_HYST, "temp5_hyst", SENSORS_MAXI_CG_TEMP5,
1405                              SENSORS_MAXI_CG_TEMP5, SENSORS_MODE_R, 
1406                              MAXI_SYSCTL_TEMP5, VALUE(2), 1 },
1407    { SENSORS_MAXI_CG_PLL, "pll", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1408                        SENSORS_MODE_R, MAXI_SYSCTL_PLL, VALUE(3), 2 },
1409    { SENSORS_MAXI_CG_PLL_MIN, "pll_min", SENSORS_MAXI_CG_PLL, SENSORS_MAXI_CG_PLL,
1410                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(1), 2 },
1411    { SENSORS_MAXI_CG_PLL_MAX, "pll_max", SENSORS_MAXI_CG_PLL, SENSORS_MAXI_CG_PLL,
1412                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(2), 2 },
1413    { SENSORS_MAXI_CG_VID1, "vid1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1414                         SENSORS_MODE_R, MAXI_SYSCTL_VID1, VALUE(3), 4 },
1415    { SENSORS_MAXI_CG_VID2, "vid2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1416                         SENSORS_MODE_R, MAXI_SYSCTL_VID2, VALUE(3), 4 },
1417    { SENSORS_MAXI_CG_VID3, "vid3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1418                         SENSORS_MODE_R, MAXI_SYSCTL_VID3, VALUE(3), 4 },
1419    { SENSORS_MAXI_CG_VID4, "vid4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1420                         SENSORS_MODE_R, MAXI_SYSCTL_VID4, VALUE(3), 4 },
1421    { SENSORS_MAXI_CG_VID1_MIN, "vid1_min", SENSORS_MAXI_CG_VID1, SENSORS_MAXI_CG_VID1,
1422                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(1), 4 },
1423    { SENSORS_MAXI_CG_VID2_MIN, "vid2_min", SENSORS_MAXI_CG_VID2, SENSORS_MAXI_CG_VID2,
1424                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(1), 4 },
1425    { SENSORS_MAXI_CG_VID3_MIN, "vid3_min", SENSORS_MAXI_CG_VID3, SENSORS_MAXI_CG_VID3,
1426                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(1), 4 },
1427    { SENSORS_MAXI_CG_VID4_MIN, "vid4_min", SENSORS_MAXI_CG_VID4, SENSORS_MAXI_CG_VID4,
1428                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(1), 4 },
1429    { SENSORS_MAXI_CG_VID1_MAX, "vid1_max", SENSORS_MAXI_CG_VID1, SENSORS_MAXI_CG_VID1,
1430                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(2), 4 },
1431    { SENSORS_MAXI_CG_VID2_MAX, "vid2_max", SENSORS_MAXI_CG_VID2, SENSORS_MAXI_CG_VID2,
1432                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(2), 4 },
1433    { SENSORS_MAXI_CG_VID3_MAX, "vid3_max", SENSORS_MAXI_CG_VID3, SENSORS_MAXI_CG_VID3,
1434                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(2), 4 },
1435    { SENSORS_MAXI_CG_VID4_MAX, "vid4_max", SENSORS_MAXI_CG_VID4, SENSORS_MAXI_CG_VID4,
1436                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(2), 4 },
1437    { SENSORS_MAXI_CG_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1438                           SENSORS_MODE_R, MAXI_SYSCTL_ALARMS, VALUE(1), 0 },
1439    { 0 }
1440  };
1441
1442static sensors_chip_feature maxi_co_features[] =
1443  { 
1444    { SENSORS_MAXI_CO_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1445                         SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(3), 0 },
1446    { SENSORS_MAXI_CO_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1447                         SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(3), 0 },
1448    { SENSORS_MAXI_CO_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1449                         SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(3), 0 },
1450    { SENSORS_MAXI_CO_FAN1_MIN, "fan1_min", SENSORS_MAXI_CO_FAN1, SENSORS_MAXI_CO_FAN1,
1451                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN1, VALUE(1), 0 },
1452    { SENSORS_MAXI_CO_FAN2_MIN, "fan2_min", SENSORS_MAXI_CO_FAN2, SENSORS_MAXI_CO_FAN2,
1453                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN2, VALUE(1), 0 },
1454    { SENSORS_MAXI_CO_FAN3_MIN, "fan3_min", SENSORS_MAXI_CO_FAN3, SENSORS_MAXI_CO_FAN3,
1455                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN3, VALUE(1), 0 },
1456    { SENSORS_MAXI_CO_FAN1_DIV, "fan1_div", SENSORS_MAXI_CO_FAN1, SENSORS_NO_MAPPING,
1457                             SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(2), 0 },
1458    { SENSORS_MAXI_CO_FAN2_DIV, "fan2_div", SENSORS_MAXI_CO_FAN2, SENSORS_NO_MAPPING,
1459                             SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(2), 0 },
1460    { SENSORS_MAXI_CO_FAN3_DIV, "fan3_div", SENSORS_MAXI_CO_FAN3, SENSORS_NO_MAPPING,
1461                             SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(2), 0 },
1462    { SENSORS_MAXI_CO_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1463                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP1, VALUE(3), 1 },
1464    { SENSORS_MAXI_CO_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1465                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP2, VALUE(3), 1 },
1466    { SENSORS_MAXI_CO_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1467                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP3, VALUE(3), 1 },
1468    { SENSORS_MAXI_CO_TEMP4, "temp4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1469                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP4, VALUE(3), 1 },
1470    { SENSORS_MAXI_CO_TEMP5, "temp5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1471                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP5, VALUE(3), 1 },
1472    { SENSORS_MAXI_CO_TEMP1_MAX, "temp1_max", SENSORS_MAXI_CO_TEMP1,
1473                              SENSORS_MAXI_CO_TEMP1, SENSORS_MODE_R, 
1474                              MAXI_SYSCTL_TEMP1, VALUE(1), 1 },
1475    { SENSORS_MAXI_CO_TEMP2_MAX, "temp2_max", SENSORS_MAXI_CO_TEMP2,
1476                              SENSORS_MAXI_CO_TEMP2, SENSORS_MODE_R, 
1477                              MAXI_SYSCTL_TEMP2, VALUE(1), 1 },
1478    { SENSORS_MAXI_CO_TEMP3_MAX, "temp3_max", SENSORS_MAXI_CO_TEMP3,
1479                              SENSORS_MAXI_CO_TEMP3, SENSORS_MODE_R, 
1480                              MAXI_SYSCTL_TEMP3, VALUE(1), 1 },
1481    { SENSORS_MAXI_CO_TEMP4_MAX, "temp4_max", SENSORS_MAXI_CO_TEMP4,
1482                              SENSORS_MAXI_CO_TEMP4, SENSORS_MODE_R, 
1483                              MAXI_SYSCTL_TEMP4, VALUE(1), 1 },
1484    { SENSORS_MAXI_CO_TEMP5_MAX, "temp5_max", SENSORS_MAXI_CO_TEMP5,
1485                              SENSORS_MAXI_CO_TEMP5, SENSORS_MODE_R, 
1486                              MAXI_SYSCTL_TEMP5, VALUE(1), 1 },
1487    { SENSORS_MAXI_CO_TEMP1_HYST, "temp1_hyst", SENSORS_MAXI_CO_TEMP1,
1488                              SENSORS_MAXI_CO_TEMP1, SENSORS_MODE_R, 
1489                              MAXI_SYSCTL_TEMP1, VALUE(2), 1 },
1490    { SENSORS_MAXI_CO_TEMP2_HYST, "temp2_hyst", SENSORS_MAXI_CO_TEMP2,
1491                              SENSORS_MAXI_CO_TEMP2, SENSORS_MODE_R, 
1492                              MAXI_SYSCTL_TEMP2, VALUE(2), 1 },
1493    { SENSORS_MAXI_CO_TEMP3_HYST, "temp3_hyst", SENSORS_MAXI_CO_TEMP3,
1494                              SENSORS_MAXI_CO_TEMP3, SENSORS_MODE_R, 
1495                              MAXI_SYSCTL_TEMP3, VALUE(2), 1 },
1496    { SENSORS_MAXI_CO_TEMP4_HYST, "temp4_hyst", SENSORS_MAXI_CO_TEMP4,
1497                              SENSORS_MAXI_CO_TEMP4, SENSORS_MODE_R, 
1498                              MAXI_SYSCTL_TEMP4, VALUE(2), 1 },
1499    { SENSORS_MAXI_CO_TEMP5_HYST, "temp5_hyst", SENSORS_MAXI_CO_TEMP5,
1500                              SENSORS_MAXI_CO_TEMP5, SENSORS_MODE_R, 
1501                              MAXI_SYSCTL_TEMP5, VALUE(2), 1 },
1502    { SENSORS_MAXI_CO_PLL, "pll", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1503                        SENSORS_MODE_R, MAXI_SYSCTL_PLL, VALUE(3), 2 },
1504    { SENSORS_MAXI_CO_PLL_MIN, "pll_min", SENSORS_MAXI_CO_PLL, SENSORS_MAXI_CO_PLL,
1505                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(1), 2 },
1506    { SENSORS_MAXI_CO_PLL_MAX, "pll_max", SENSORS_MAXI_CO_PLL, SENSORS_MAXI_CO_PLL,
1507                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(2), 2 },
1508    { SENSORS_MAXI_CO_VID1, "vid1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1509                         SENSORS_MODE_R, MAXI_SYSCTL_VID1, VALUE(3), 4 },
1510    { SENSORS_MAXI_CO_VID2, "vid2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1511                         SENSORS_MODE_R, MAXI_SYSCTL_VID2, VALUE(3), 4 },
1512    { SENSORS_MAXI_CO_VID3, "vid3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1513                         SENSORS_MODE_R, MAXI_SYSCTL_VID3, VALUE(3), 4 },
1514    { SENSORS_MAXI_CO_VID4, "vid4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1515                         SENSORS_MODE_R, MAXI_SYSCTL_VID4, VALUE(3), 4 },
1516    { SENSORS_MAXI_CO_VID1_MIN, "vid1_min", SENSORS_MAXI_CO_VID1, SENSORS_MAXI_CO_VID1,
1517                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(1), 4 },
1518    { SENSORS_MAXI_CO_VID2_MIN, "vid2_min", SENSORS_MAXI_CO_VID2, SENSORS_MAXI_CO_VID2,
1519                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(1), 4 },
1520    { SENSORS_MAXI_CO_VID3_MIN, "vid3_min", SENSORS_MAXI_CO_VID3, SENSORS_MAXI_CO_VID3,
1521                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(1), 4 },
1522    { SENSORS_MAXI_CO_VID4_MIN, "vid4_min", SENSORS_MAXI_CO_VID4, SENSORS_MAXI_CO_VID4,
1523                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(1), 4 },
1524    { SENSORS_MAXI_CO_VID1_MAX, "vid1_max", SENSORS_MAXI_CO_VID1, SENSORS_MAXI_CO_VID1,
1525                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(2), 4 },
1526    { SENSORS_MAXI_CO_VID2_MAX, "vid2_max", SENSORS_MAXI_CO_VID2, SENSORS_MAXI_CO_VID2,
1527                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(2), 4 },
1528    { SENSORS_MAXI_CG_VID3_MAX, "vid3_max", SENSORS_MAXI_CO_VID3, SENSORS_MAXI_CO_VID3,
1529                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(2), 4 },
1530    { SENSORS_MAXI_CO_VID4_MAX, "vid4_max", SENSORS_MAXI_CO_VID4, SENSORS_MAXI_CG_VID4,
1531                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(2), 4 },
1532    { SENSORS_MAXI_CO_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1533                           SENSORS_MODE_R, MAXI_SYSCTL_ALARMS, VALUE(1), 0 },
1534    { 0 }
1535  };
1536
1537static sensors_chip_feature maxi_as_features[] =
1538  { 
1539    { SENSORS_MAXI_AS_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1540                         SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(3), 0 },
1541    { SENSORS_MAXI_AS_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1542                         SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(3), 0 },
1543    { SENSORS_MAXI_AS_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1544                         SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(3), 0 },
1545    { SENSORS_MAXI_AS_FAN1_MIN, "fan1_min", SENSORS_MAXI_AS_FAN1, SENSORS_MAXI_AS_FAN1,
1546                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN1, VALUE(1), 0 },
1547    { SENSORS_MAXI_AS_FAN2_MIN, "fan2_min", SENSORS_MAXI_AS_FAN2, SENSORS_MAXI_AS_FAN2,
1548                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN2, VALUE(1), 0 },
1549    { SENSORS_MAXI_AS_FAN3_MIN, "fan3_min", SENSORS_MAXI_AS_FAN3, SENSORS_MAXI_AS_FAN3,
1550                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN3, VALUE(1), 0 },
1551    { SENSORS_MAXI_AS_FAN1_DIV, "fan1_div", SENSORS_MAXI_AS_FAN1, SENSORS_NO_MAPPING,
1552                             SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(2), 0 },
1553    { SENSORS_MAXI_AS_FAN2_DIV, "fan2_div", SENSORS_MAXI_AS_FAN2, SENSORS_NO_MAPPING,
1554                             SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(2), 0 },
1555    { SENSORS_MAXI_AS_FAN3_DIV, "fan3_div", SENSORS_MAXI_AS_FAN3, SENSORS_NO_MAPPING,
1556                             SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(2), 0 },
1557    { SENSORS_MAXI_AS_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1558                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP1, VALUE(3), 1 },
1559    { SENSORS_MAXI_AS_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1560                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP2, VALUE(3), 1 },
1561    { SENSORS_MAXI_AS_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1562                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP3, VALUE(3), 1 },
1563    { SENSORS_MAXI_AS_TEMP4, "temp4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1564                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP4, VALUE(3), 1 },
1565    { SENSORS_MAXI_AS_TEMP5, "temp5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1566                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP5, VALUE(3), 1 },
1567    { SENSORS_MAXI_AS_TEMP1_MAX, "temp1_max", SENSORS_MAXI_AS_TEMP1,
1568                              SENSORS_MAXI_AS_TEMP1, SENSORS_MODE_R, 
1569                              MAXI_SYSCTL_TEMP1, VALUE(1), 1 },
1570    { SENSORS_MAXI_AS_TEMP2_MAX, "temp2_max", SENSORS_MAXI_AS_TEMP2,
1571                              SENSORS_MAXI_AS_TEMP2, SENSORS_MODE_R, 
1572                              MAXI_SYSCTL_TEMP2, VALUE(1), 1 },
1573    { SENSORS_MAXI_AS_TEMP3_MAX, "temp3_max", SENSORS_MAXI_AS_TEMP3,
1574                              SENSORS_MAXI_AS_TEMP3, SENSORS_MODE_R, 
1575                              MAXI_SYSCTL_TEMP3, VALUE(1), 1 },
1576    { SENSORS_MAXI_AS_TEMP4_MAX, "temp4_max", SENSORS_MAXI_AS_TEMP4,
1577                              SENSORS_MAXI_AS_TEMP4, SENSORS_MODE_R, 
1578                              MAXI_SYSCTL_TEMP4, VALUE(1), 1 },
1579    { SENSORS_MAXI_AS_TEMP5_MAX, "temp5_max", SENSORS_MAXI_AS_TEMP5,
1580                              SENSORS_MAXI_AS_TEMP5, SENSORS_MODE_R, 
1581                              MAXI_SYSCTL_TEMP5, VALUE(1), 1 },
1582    { SENSORS_MAXI_AS_TEMP1_HYST, "temp1_hyst", SENSORS_MAXI_AS_TEMP1,
1583                              SENSORS_MAXI_AS_TEMP1, SENSORS_MODE_R, 
1584                              MAXI_SYSCTL_TEMP1, VALUE(2), 1 },
1585    { SENSORS_MAXI_AS_TEMP2_HYST, "temp2_hyst", SENSORS_MAXI_AS_TEMP2,
1586                              SENSORS_MAXI_AS_TEMP2, SENSORS_MODE_R, 
1587                              MAXI_SYSCTL_TEMP2, VALUE(2), 1 },
1588    { SENSORS_MAXI_AS_TEMP3_HYST, "temp3_hyst", SENSORS_MAXI_AS_TEMP3,
1589                              SENSORS_MAXI_AS_TEMP3, SENSORS_MODE_R, 
1590                              MAXI_SYSCTL_TEMP3, VALUE(2), 1 },
1591    { SENSORS_MAXI_AS_TEMP4_HYST, "temp4_hyst", SENSORS_MAXI_AS_TEMP4,
1592                              SENSORS_MAXI_AS_TEMP4, SENSORS_MODE_R, 
1593                              MAXI_SYSCTL_TEMP4, VALUE(2), 1 },
1594    { SENSORS_MAXI_AS_TEMP5_HYST, "temp5_hyst", SENSORS_MAXI_AS_TEMP5,
1595                              SENSORS_MAXI_AS_TEMP5, SENSORS_MODE_R, 
1596                              MAXI_SYSCTL_TEMP5, VALUE(2), 1 },
1597    { SENSORS_MAXI_AS_PLL, "pll", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1598                        SENSORS_MODE_R, MAXI_SYSCTL_PLL, VALUE(3), 2 },
1599    { SENSORS_MAXI_AS_PLL_MIN, "pll_min", SENSORS_MAXI_AS_PLL, SENSORS_MAXI_AS_PLL,
1600                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(1), 2 },
1601    { SENSORS_MAXI_AS_PLL_MAX, "pll_max", SENSORS_MAXI_AS_PLL, SENSORS_MAXI_AS_PLL,
1602                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(2), 2 },
1603    { SENSORS_MAXI_AS_VID1, "vid1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1604                         SENSORS_MODE_R, MAXI_SYSCTL_VID1, VALUE(3), 4 },
1605    { SENSORS_MAXI_AS_VID2, "vid2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1606                         SENSORS_MODE_R, MAXI_SYSCTL_VID2, VALUE(3), 4 },
1607    { SENSORS_MAXI_AS_VID3, "vid3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1608                         SENSORS_MODE_R, MAXI_SYSCTL_VID3, VALUE(3), 4 },
1609    { SENSORS_MAXI_AS_VID4, "vid4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1610                         SENSORS_MODE_R, MAXI_SYSCTL_VID4, VALUE(3), 4 },
1611    { SENSORS_MAXI_AS_VID1_MIN, "vid1_min", SENSORS_MAXI_AS_VID1, SENSORS_MAXI_AS_VID1,
1612                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(1), 4 },
1613    { SENSORS_MAXI_AS_VID2_MIN, "vid2_min", SENSORS_MAXI_AS_VID2, SENSORS_MAXI_AS_VID2,
1614                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(1), 4 },
1615    { SENSORS_MAXI_AS_VID3_MIN, "vid3_min", SENSORS_MAXI_AS_VID3, SENSORS_MAXI_AS_VID3,
1616                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(1), 4 },
1617    { SENSORS_MAXI_AS_VID4_MIN, "vid4_min", SENSORS_MAXI_AS_VID4, SENSORS_MAXI_AS_VID4,
1618                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(1), 4 },
1619    { SENSORS_MAXI_AS_VID1_MAX, "vid1_max", SENSORS_MAXI_AS_VID1, SENSORS_MAXI_AS_VID1,
1620                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(2), 4 },
1621    { SENSORS_MAXI_AS_VID2_MAX, "vid2_max", SENSORS_MAXI_AS_VID2, SENSORS_MAXI_AS_VID2,
1622                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(2), 4 },
1623    { SENSORS_MAXI_AS_VID3_MAX, "vid3_max", SENSORS_MAXI_AS_VID3, SENSORS_MAXI_AS_VID3,
1624                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(2), 4 },
1625    { SENSORS_MAXI_AS_VID4_MAX, "vid4_max", SENSORS_MAXI_AS_VID4, SENSORS_MAXI_CG_VID4,
1626                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(2), 4 },
1627    { SENSORS_MAXI_AS_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1628                           SENSORS_MODE_R, MAXI_SYSCTL_ALARMS, VALUE(1), 0 },
1629    { 0 }
1630  };
1631
1632static sensors_chip_feature thmc50_features[] =
1633  {
1634    { SENSORS_THMC50_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1635                              SENSORS_MODE_R, THMC50_SYSCTL_TEMP, VALUE(3), 
1636                              0 },
1637    { SENSORS_THMC50_TEMP_HYST, "temp_hyst", SENSORS_THMC50_TEMP,
1638                              SENSORS_THMC50_TEMP, SENSORS_MODE_RW, 
1639                              THMC50_SYSCTL_TEMP, VALUE(2), 0 },
1640    { SENSORS_THMC50_TEMP_OVER, "temp_over", SENSORS_THMC50_TEMP,
1641                              SENSORS_THMC50_TEMP, SENSORS_MODE_RW,
1642                              THMC50_SYSCTL_TEMP, VALUE(1), 0 },
1643    { SENSORS_THMC50_REMOTE_TEMP, "remote_temp", SENSORS_NO_MAPPING, 
1644                              SENSORS_NO_MAPPING, SENSORS_MODE_R, 
1645                              THMC50_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
1646    { SENSORS_THMC50_REMOTE_TEMP_HYST, "remote_temp_hyst", 
1647                              SENSORS_THMC50_REMOTE_TEMP,
1648                              SENSORS_THMC50_REMOTE_TEMP, SENSORS_MODE_RW, 
1649                              THMC50_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
1650    { SENSORS_THMC50_REMOTE_TEMP_OVER, "remote_temp_over", 
1651                              SENSORS_THMC50_REMOTE_TEMP,
1652                              SENSORS_THMC50_REMOTE_TEMP, SENSORS_MODE_RW,
1653                              THMC50_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
1654    { SENSORS_THMC50_INTER_MASK, "analog output", SENSORS_NO_MAPPING,
1655                              SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1656                              THMC50_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1657    { SENSORS_THMC50_INTER, "interrupts", SENSORS_NO_MAPPING,
1658                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
1659                              THMC50_SYSCTL_INTER, VALUE(1), 0 },
1660    { SENSORS_THMC50_INTER_MASK, "interrupt mask", SENSORS_NO_MAPPING,
1661                              SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1662                              THMC50_SYSCTL_INTER_MASK, VALUE(1), 0 },
1663    { SENSORS_THMC50_DIE_CODE, "die_code", SENSORS_NO_MAPPING,
1664                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
1665                              THMC50_SYSCTL_DIE_CODE, VALUE(1), 0 },
1666    { 0 }
1667  };
1668
1669static sensors_chip_feature adm1025_features[] =
1670  { 
1671    { SENSORS_ADM1025_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1672                        SENSORS_MODE_R, ADM1025_SYSCTL_IN0, VALUE(3), 2 },
1673    { SENSORS_ADM1025_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1674                        SENSORS_MODE_R, ADM1025_SYSCTL_IN1, VALUE(3), 2 },
1675    { SENSORS_ADM1025_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1676                        SENSORS_MODE_R, ADM1025_SYSCTL_IN2, VALUE(3), 2 },
1677    { SENSORS_ADM1025_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1678                        SENSORS_MODE_R, ADM1025_SYSCTL_IN3, VALUE(3), 2 },
1679    { SENSORS_ADM1025_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1680                        SENSORS_MODE_R, ADM1025_SYSCTL_IN4, VALUE(3), 2 },
1681    { SENSORS_ADM1025_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1682                        SENSORS_MODE_R, ADM1025_SYSCTL_IN5, VALUE(3), 2 },
1683    { SENSORS_ADM1025_IN0_MIN, "in0_min", SENSORS_ADM1025_IN0, 
1684                        SENSORS_ADM1025_IN0, SENSORS_MODE_RW, 
1685                        ADM1025_SYSCTL_IN0, VALUE(1), 2 },
1686    { SENSORS_ADM1025_IN1_MIN, "in1_min", SENSORS_ADM1025_IN1, 
1687                        SENSORS_ADM1025_IN1, SENSORS_MODE_RW, 
1688                        ADM1025_SYSCTL_IN1, VALUE(1), 2 },
1689    { SENSORS_ADM1025_IN2_MIN, "in2_min", SENSORS_ADM1025_IN2, 
1690                        SENSORS_ADM1025_IN2, SENSORS_MODE_RW, 
1691                        ADM1025_SYSCTL_IN2, VALUE(1), 2 },
1692    { SENSORS_ADM1025_IN3_MIN, "in3_min", SENSORS_ADM1025_IN3, 
1693                        SENSORS_ADM1025_IN3, SENSORS_MODE_RW, 
1694                        ADM1025_SYSCTL_IN3, VALUE(1), 2 },
1695    { SENSORS_ADM1025_IN4_MIN, "in4_min", SENSORS_ADM1025_IN4, 
1696                        SENSORS_ADM1025_IN4, SENSORS_MODE_RW, 
1697                        ADM1025_SYSCTL_IN4, VALUE(1), 2 },
1698    { SENSORS_ADM1025_IN5_MIN, "in5_min", SENSORS_ADM1025_IN5, 
1699                        SENSORS_ADM1025_IN5, SENSORS_MODE_RW, 
1700                        ADM1025_SYSCTL_IN5, VALUE(1), 2 },
1701    { SENSORS_ADM1025_IN0_MAX, "in0_max", SENSORS_ADM1025_IN0, 
1702                        SENSORS_ADM1025_IN0, SENSORS_MODE_RW,
1703                        ADM1025_SYSCTL_IN0, VALUE(2), 2 },
1704    { SENSORS_ADM1025_IN1_MAX, "in1_max", SENSORS_ADM1025_IN1, 
1705                        SENSORS_ADM1025_IN1, SENSORS_MODE_RW, 
1706                        ADM1025_SYSCTL_IN1, VALUE(2), 2 },
1707    { SENSORS_ADM1025_IN2_MAX, "in2_max", SENSORS_ADM1025_IN2, 
1708                        SENSORS_ADM1025_IN2, SENSORS_MODE_RW, 
1709                        ADM1025_SYSCTL_IN2, VALUE(2), 2 },
1710    { SENSORS_ADM1025_IN3_MAX, "in3_max", SENSORS_ADM1025_IN3, 
1711                        SENSORS_ADM1025_IN3, SENSORS_MODE_RW, 
1712                        ADM1025_SYSCTL_IN3, VALUE(2), 2 },
1713    { SENSORS_ADM1025_IN4_MAX, "in4_max", SENSORS_ADM1025_IN4, 
1714                        SENSORS_ADM1025_IN4, SENSORS_MODE_RW,
1715                        ADM1025_SYSCTL_IN4, VALUE(2), 2 },
1716    { SENSORS_ADM1025_IN5_MAX, "in5_max", SENSORS_ADM1025_IN5, 
1717                        SENSORS_ADM1025_IN5, SENSORS_MODE_RW, 
1718                        ADM1025_SYSCTL_IN5, VALUE(2), 2 },
1719    { SENSORS_ADM1025_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1720                         SENSORS_MODE_R, ADM1025_SYSCTL_TEMP, VALUE(3), 1 },
1721    { SENSORS_ADM1025_TEMP1_HYST, "temp1_hyst", SENSORS_ADM1025_TEMP1,
1722                         SENSORS_ADM1025_TEMP1, SENSORS_MODE_RW, 
1723                         ADM1025_SYSCTL_TEMP, VALUE(2), 1 },
1724    { SENSORS_ADM1025_TEMP1_OVER, "temp1_over", SENSORS_ADM1025_TEMP1,
1725                         SENSORS_ADM1025_TEMP1, SENSORS_MODE_RW, 
1726                         ADM1025_SYSCTL_TEMP, VALUE(1), 1 },
1727    { SENSORS_ADM1025_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1728                         SENSORS_MODE_R, ADM1025_SYSCTL_RTEMP, VALUE(3), 1 },
1729    { SENSORS_ADM1025_TEMP2_HYST, "temp2_hyst", SENSORS_ADM1025_TEMP2,
1730                         SENSORS_ADM1025_TEMP2, SENSORS_MODE_RW, 
1731                         ADM1025_SYSCTL_RTEMP, VALUE(2), 1 },
1732    { SENSORS_ADM1025_TEMP2_OVER, "temp2_over", SENSORS_ADM1025_TEMP2,
1733                         SENSORS_ADM1025_TEMP2, SENSORS_MODE_RW, 
1734                         ADM1025_SYSCTL_RTEMP, VALUE(1), 1 },
1735    { SENSORS_ADM1025_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1736                         SENSORS_MODE_R, ADM1025_SYSCTL_VID, VALUE(1), 2 },
1737    { SENSORS_ADM1025_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1738                         SENSORS_MODE_R, ADM1025_SYSCTL_ALARMS, VALUE(1), 0 },
1739    { 0 }
1740  };
1741 
1742static sensors_chip_feature via686a_features[] =
1743  { 
1744    { SENSORS_VIA686A_IN0, "2.0V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1745                        SENSORS_MODE_R, VIA686A_SYSCTL_IN0, VALUE(3), 2 },
1746    { SENSORS_VIA686A_IN1, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1747                        SENSORS_MODE_R, VIA686A_SYSCTL_IN1, VALUE(3), 2 },
1748    { SENSORS_VIA686A_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1749                        SENSORS_MODE_R, VIA686A_SYSCTL_IN2, VALUE(3), 2 },
1750    { SENSORS_VIA686A_IN3, "5.0V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1751                        SENSORS_MODE_R, VIA686A_SYSCTL_IN3, VALUE(3), 2 },
1752    { SENSORS_VIA686A_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1753                        SENSORS_MODE_R, VIA686A_SYSCTL_IN4, VALUE(3), 2 },
1754    { SENSORS_VIA686A_IN0_MIN, "in0_min", SENSORS_VIA686A_IN0,
1755                            SENSORS_VIA686A_IN0,
1756                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN0, VALUE(1), 2 },
1757    { SENSORS_VIA686A_IN1_MIN, "in1_min", SENSORS_VIA686A_IN1,
1758                            SENSORS_VIA686A_IN1,
1759                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN1, VALUE(1), 2 },
1760    { SENSORS_VIA686A_IN2_MIN, "in2_min", SENSORS_VIA686A_IN2,
1761                            SENSORS_VIA686A_IN2,
1762                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN2, VALUE(1), 2 },
1763    { SENSORS_VIA686A_IN3_MIN, "in3_min", SENSORS_VIA686A_IN3,
1764                            SENSORS_VIA686A_IN3,
1765                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN3, VALUE(1), 2 },
1766    { SENSORS_VIA686A_IN4_MIN, "in4_min", SENSORS_VIA686A_IN4,
1767                            SENSORS_VIA686A_IN4,
1768                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN4, VALUE(1), 2 },
1769    { SENSORS_VIA686A_IN0_MAX, "in0_max", SENSORS_VIA686A_IN0,
1770                            SENSORS_VIA686A_IN0,
1771                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN0, VALUE(2), 2 },
1772    { SENSORS_VIA686A_IN1_MAX, "in1_max", SENSORS_VIA686A_IN1,
1773                            SENSORS_VIA686A_IN1,
1774                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN1, VALUE(2), 2 },
1775    { SENSORS_VIA686A_IN2_MAX, "in2_max", SENSORS_VIA686A_IN2,
1776                            SENSORS_VIA686A_IN2,
1777                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN2, VALUE(2), 2 },
1778    { SENSORS_VIA686A_IN3_MAX, "in3_max", SENSORS_VIA686A_IN3,
1779                            SENSORS_VIA686A_IN3,
1780                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN3, VALUE(2), 2 },
1781    { SENSORS_VIA686A_IN4_MAX, "in4_max", SENSORS_VIA686A_IN4,
1782                            SENSORS_VIA686A_IN4,
1783                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN4, VALUE(2), 2 },
1784    { SENSORS_VIA686A_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1785                         SENSORS_MODE_R, VIA686A_SYSCTL_FAN1, VALUE(2), 0 },
1786    { SENSORS_VIA686A_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1787                         SENSORS_MODE_R, VIA686A_SYSCTL_FAN2, VALUE(2), 0 },
1788    { SENSORS_VIA686A_FAN1_MIN, "fan1_min", SENSORS_VIA686A_FAN1,
1789                             SENSORS_VIA686A_FAN1,
1790                             SENSORS_MODE_RW, VIA686A_SYSCTL_FAN1, VALUE(1), 0 },
1791    { SENSORS_VIA686A_FAN2_MIN, "fan2_min", SENSORS_VIA686A_FAN2,
1792                             SENSORS_VIA686A_FAN2,
1793                             SENSORS_MODE_RW, VIA686A_SYSCTL_FAN2, VALUE(1), 0 },
1794    { SENSORS_VIA686A_TEMP, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1795                         SENSORS_MODE_R, VIA686A_SYSCTL_TEMP, VALUE(3), 1 },
1796    { SENSORS_VIA686A_TEMP_HYST, "temp1_hyst", SENSORS_VIA686A_TEMP,
1797                              SENSORS_VIA686A_TEMP, SENSORS_MODE_RW, 
1798                              VIA686A_SYSCTL_TEMP, VALUE(2), 1 },
1799    { SENSORS_VIA686A_TEMP_OVER, "temp1_over", SENSORS_VIA686A_TEMP,
1800                              SENSORS_VIA686A_TEMP, SENSORS_MODE_RW, 
1801                              VIA686A_SYSCTL_TEMP, VALUE(1), 1 },
1802    { SENSORS_VIA686A_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1803                         SENSORS_MODE_R, VIA686A_SYSCTL_TEMP2, VALUE(3), 1 },
1804    { SENSORS_VIA686A_TEMP2_HYST, "temp2_hyst", SENSORS_VIA686A_TEMP2,
1805                              SENSORS_VIA686A_TEMP2, SENSORS_MODE_RW, 
1806                              VIA686A_SYSCTL_TEMP2, VALUE(2), 1 },
1807    { SENSORS_VIA686A_TEMP2_OVER, "temp2_over", SENSORS_VIA686A_TEMP2,
1808                              SENSORS_VIA686A_TEMP2, SENSORS_MODE_RW, 
1809                              VIA686A_SYSCTL_TEMP2, VALUE(1), 1 },
1810    { SENSORS_VIA686A_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1811                         SENSORS_MODE_R, VIA686A_SYSCTL_TEMP3, VALUE(3), 1 },
1812    { SENSORS_VIA686A_TEMP3_HYST, "temp3_hyst", SENSORS_VIA686A_TEMP3,
1813                              SENSORS_VIA686A_TEMP3, SENSORS_MODE_RW, 
1814                              VIA686A_SYSCTL_TEMP3, VALUE(2), 1 },
1815    { SENSORS_VIA686A_TEMP3_OVER, "temp3_over", SENSORS_VIA686A_TEMP3,
1816                              SENSORS_VIA686A_TEMP3, SENSORS_MODE_RW, 
1817                              VIA686A_SYSCTL_TEMP3, VALUE(1), 1 },
1818    { SENSORS_VIA686A_FAN1_DIV, "fan1_div", SENSORS_VIA686A_FAN1,
1819                             SENSORS_NO_MAPPING,
1820                             SENSORS_MODE_RW, VIA686A_SYSCTL_FAN_DIV, VALUE(1), 
1821                             0 },
1822    { SENSORS_VIA686A_FAN2_DIV, "fan2_div", SENSORS_VIA686A_FAN2,
1823                             SENSORS_NO_MAPPING,
1824                             SENSORS_MODE_RW, VIA686A_SYSCTL_FAN_DIV, VALUE(2), 
1825                             0 },
1826    { SENSORS_VIA686A_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1827                           SENSORS_MODE_R, VIA686A_SYSCTL_ALARMS, VALUE(1), 0 },
1828    { 0 }
1829  };
1830
1831static sensors_chip_feature ddcmon_features[] =
1832  {
1833    { SENSORS_DDCMON_ID, "Monitor ID",
1834                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1835                         SENSORS_MODE_R, DDCMON_SYSCTL_ID, VALUE(1), 0 },
1836    { SENSORS_DDCMON_VERSIZE, "Monitor Size (cm)",
1837                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1838                         SENSORS_MODE_R, DDCMON_SYSCTL_SIZE, VALUE(1), 0 },
1839    { SENSORS_DDCMON_HORSIZE, "hsize",
1840                         SENSORS_DDCMON_VERSIZE, SENSORS_NO_MAPPING,
1841                         SENSORS_MODE_R, DDCMON_SYSCTL_SIZE, VALUE(2), 0 },
1842    { SENSORS_DDCMON_VERSYNCMIN, "Vertical Sync (Hz)",
1843                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1844                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(1), 0 },
1845    { SENSORS_DDCMON_VERSYNCMAX, "v_sync_max",
1846                         SENSORS_DDCMON_VERSYNCMIN, SENSORS_NO_MAPPING,
1847                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(2), 0 },
1848    { SENSORS_DDCMON_HORSYNCMIN, "Horizontal Sync (KHz)",
1849                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1850                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(3), 0 },
1851    { SENSORS_DDCMON_HORSYNCMAX, "h_sync_max",
1852                         SENSORS_DDCMON_HORSYNCMIN, SENSORS_NO_MAPPING,
1853                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(4), 0 },
1854    { SENSORS_DDCMON_TIMINGS, "timings",
1855                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1856                         SENSORS_MODE_R, DDCMON_SYSCTL_TIMINGS, VALUE(1), 0 },
1857    { SENSORS_DDCMON_SERIAL, "Serial number",
1858                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1859                         SENSORS_MODE_R, DDCMON_SYSCTL_SERIAL, VALUE(1), 0 },
1860    { 0 }
1861  };
1862
1863static sensors_chip_feature eeprom_features[] =
1864  {
1865    { SENSORS_EEPROM_TYPE, "Memory type",
1866                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1867                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(3), 0 },
1868/* cheat and use the row-address-bits label for the total size in sensors */
1869    { SENSORS_EEPROM_ROWADDR, "SDRAM Size (MB)",
1870                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1871                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(4), 0 },
1872    { SENSORS_EEPROM_COLADDR, "col",
1873                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1874                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(5), 0 },
1875    { SENSORS_EEPROM_NUMROWS, "num rows",
1876                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1877                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(6), 0 },
1878    { SENSORS_EEPROM_BANKS, "banks",
1879                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1880                         SENSORS_MODE_R, EEPROM_SYSCTL2, VALUE(2), 0 },
1881    { 0 }
1882  };
1883
1884static sensors_chip_feature lm87_features[] =
1885  { 
1886    { SENSORS_LM87_IN0, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1887                        SENSORS_MODE_R, LM87_SYSCTL_IN0, VALUE(3), 2 },
1888    { SENSORS_LM87_IN1, "Vccp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1889                        SENSORS_MODE_R, LM87_SYSCTL_IN1, VALUE(3), 2 },
1890    { SENSORS_LM87_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1891                        SENSORS_MODE_R, LM87_SYSCTL_IN2, VALUE(3), 2 },
1892    { SENSORS_LM87_IN3, "5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1893                        SENSORS_MODE_R, LM87_SYSCTL_IN3, VALUE(3), 2 },
1894    { SENSORS_LM87_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1895                        SENSORS_MODE_R, LM87_SYSCTL_IN4, VALUE(3), 2 },
1896    { SENSORS_LM87_IN5, "Vccp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1897                        SENSORS_MODE_R, LM87_SYSCTL_IN5, VALUE(3), 2 },
1898    { SENSORS_LM87_AIN1, "AIN1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1899                        SENSORS_MODE_R, LM87_SYSCTL_AIN1, VALUE(3), 0 },
1900    { SENSORS_LM87_AIN2, "AIN2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1901                        SENSORS_MODE_R, LM87_SYSCTL_AIN2, VALUE(3), 0 },
1902    { SENSORS_LM87_IN0_MIN, "AmbTemp_min", SENSORS_LM87_IN0, 
1903                        SENSORS_LM87_IN0, SENSORS_MODE_RW, 
1904                        LM87_SYSCTL_IN0, VALUE(1), 2 },
1905    { SENSORS_LM87_IN1_MIN, "Vccp1_min", SENSORS_LM87_IN1, 
1906                        SENSORS_LM87_IN1, SENSORS_MODE_RW, 
1907                        LM87_SYSCTL_IN1, VALUE(1), 2 },
1908    { SENSORS_LM87_IN2_MIN, "3.3V_min", SENSORS_LM87_IN2, 
1909                        SENSORS_LM87_IN2, SENSORS_MODE_RW, 
1910                        LM87_SYSCTL_IN2, VALUE(1), 2 },
1911    { SENSORS_LM87_IN3_MIN, "5V_min", SENSORS_LM87_IN3, 
1912                        SENSORS_LM87_IN3, SENSORS_MODE_RW, 
1913                        LM87_SYSCTL_IN3, VALUE(1), 2 },
1914    { SENSORS_LM87_IN4_MIN, "12V_min", SENSORS_LM87_IN4, 
1915                        SENSORS_LM87_IN4, SENSORS_MODE_RW, 
1916                        LM87_SYSCTL_IN4, VALUE(1), 2 },
1917    { SENSORS_LM87_IN5_MIN, "Vccp2_min", SENSORS_LM87_IN5, 
1918                        SENSORS_LM87_IN5, SENSORS_MODE_RW, 
1919                        LM87_SYSCTL_IN5, VALUE(1), 2 },
1920    { SENSORS_LM87_AIN1_MIN, "AIN1_min", SENSORS_LM87_AIN1, 
1921                        SENSORS_LM87_AIN1, SENSORS_MODE_RW, 
1922                        LM87_SYSCTL_AIN1, VALUE(1), 0 },
1923    { SENSORS_LM87_AIN2_MIN, "AIN2_min", SENSORS_LM87_AIN2, 
1924                        SENSORS_LM87_AIN2, SENSORS_MODE_RW, 
1925                        LM87_SYSCTL_AIN2, VALUE(1), 0 },
1926    { SENSORS_LM87_IN0_MAX, "AmbTemp_max", SENSORS_LM87_IN0, 
1927                        SENSORS_LM87_IN0, SENSORS_MODE_RW,
1928                        LM87_SYSCTL_IN0, VALUE(2), 2 },
1929    { SENSORS_LM87_IN1_MAX, "Vccp1_max", SENSORS_LM87_IN1, 
1930                        SENSORS_LM87_IN1, SENSORS_MODE_RW, 
1931                        LM87_SYSCTL_IN1, VALUE(2), 2 },
1932    { SENSORS_LM87_IN2_MAX, "3.3V_max", SENSORS_LM87_IN2, 
1933                        SENSORS_LM87_IN2, SENSORS_MODE_RW, 
1934                        LM87_SYSCTL_IN2, VALUE(2), 2 },
1935    { SENSORS_LM87_IN3_MAX, "5V_max", SENSORS_LM87_IN3, 
1936                        SENSORS_LM87_IN3, SENSORS_MODE_RW, 
1937                        LM87_SYSCTL_IN3, VALUE(2), 2 },
1938    { SENSORS_LM87_IN4_MAX, "12V_max", SENSORS_LM87_IN4, 
1939                        SENSORS_LM87_IN4, SENSORS_MODE_RW,
1940                        LM87_SYSCTL_IN4, VALUE(2), 2 },
1941    { SENSORS_LM87_IN5_MAX, "Vccp2_max", SENSORS_LM87_IN5, 
1942                        SENSORS_LM87_IN5, SENSORS_MODE_RW, 
1943                        LM87_SYSCTL_IN5, VALUE(2), 2 },
1944    { SENSORS_LM87_AIN1_MAX, "AIN1_max", SENSORS_LM87_AIN1, 
1945                        SENSORS_LM87_AIN1, SENSORS_MODE_RW, 
1946                        LM87_SYSCTL_AIN1, VALUE(2), 0 },
1947    { SENSORS_LM87_AIN2_MAX, "AIN2_max", SENSORS_LM87_AIN2, 
1948                        SENSORS_LM87_AIN2, SENSORS_MODE_RW, 
1949                        LM87_SYSCTL_AIN2, VALUE(2), 0 },
1950    { SENSORS_LM87_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1951                        SENSORS_MODE_R, LM87_SYSCTL_FAN1, VALUE(2), 0 },
1952    { SENSORS_LM87_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1953                        SENSORS_MODE_R, LM87_SYSCTL_FAN2, VALUE(2), 0 },
1954    { SENSORS_LM87_FAN1_MIN, "fan1_min", SENSORS_LM87_FAN1,
1955                        SENSORS_LM87_FAN1, SENSORS_MODE_RW, 
1956                        LM87_SYSCTL_FAN1, VALUE(1), 0 },
1957    { SENSORS_LM87_FAN2_MIN, "fan2_min", SENSORS_LM87_FAN2, 
1958                        SENSORS_LM87_FAN2, SENSORS_MODE_RW, 
1959                        LM87_SYSCTL_FAN2, VALUE(1), 0 },
1960    { SENSORS_LM87_TEMP3, "CPU2_Temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1961                         SENSORS_MODE_R, LM87_SYSCTL_TEMP3, VALUE(3), 1 },
1962    { SENSORS_LM87_TEMP2, "CPU_Temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1963                        SENSORS_MODE_R, LM87_SYSCTL_TEMP2, VALUE(3), 1 },
1964    { SENSORS_LM87_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1965                         SENSORS_MODE_R, LM87_SYSCTL_TEMP1, VALUE(3), 1 },
1966    { SENSORS_LM87_TEMP1_HYST, "temp1_min", SENSORS_LM87_TEMP1,
1967                         SENSORS_LM87_TEMP1, SENSORS_MODE_RW, 
1968                         LM87_SYSCTL_TEMP1, VALUE(2), 1 },
1969    { SENSORS_LM87_TEMP1_OVER, "temp1_max", SENSORS_LM87_TEMP1,
1970                         SENSORS_LM87_TEMP1, SENSORS_MODE_RW, 
1971                         LM87_SYSCTL_TEMP1, VALUE(1), 1 },
1972    { SENSORS_LM87_TEMP2_HYST, "temp2_min", SENSORS_LM87_TEMP2,
1973                         SENSORS_LM87_TEMP2, SENSORS_MODE_RW, 
1974                         LM87_SYSCTL_TEMP2, VALUE(2), 1 },
1975    { SENSORS_LM87_TEMP2_OVER, "temp2_max", SENSORS_LM87_TEMP2,
1976                         SENSORS_LM87_TEMP2, SENSORS_MODE_RW, 
1977                         LM87_SYSCTL_TEMP2, VALUE(1), 1 },
1978    { SENSORS_LM87_TEMP3_HYST, "temp3_min", SENSORS_LM87_TEMP3,
1979                         SENSORS_LM87_TEMP3, SENSORS_MODE_RW, 
1980                         LM87_SYSCTL_TEMP3, VALUE(2), 1 },
1981    { SENSORS_LM87_TEMP3_OVER, "temp3_max", SENSORS_LM87_TEMP3,
1982                         SENSORS_LM87_TEMP3, SENSORS_MODE_RW, 
1983                         LM87_SYSCTL_TEMP3, VALUE(1), 1 },
1984    { SENSORS_LM87_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1985                         SENSORS_MODE_R, LM87_SYSCTL_VID, VALUE(1), 2 },
1986/* Ho hum, this will be wrong if fan1 is disabled, but fan2 isn't.. fix?? */
1987    { SENSORS_LM87_FAN1_DIV, "fan1_div", SENSORS_LM87_FAN1, 
1988                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1989                         LM87_SYSCTL_FAN_DIV, VALUE(1), 0 },
1990    { SENSORS_LM87_FAN2_DIV, "fan2_div", SENSORS_LM87_FAN2, 
1991                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1992                         LM87_SYSCTL_FAN_DIV, VALUE(2), 0 },
1993    { SENSORS_LM87_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1994                         SENSORS_MODE_R, LM87_SYSCTL_ALARMS, VALUE(1), 0 },
1995    { SENSORS_LM87_ANALOG_OUT, "analog_out", SENSORS_NO_MAPPING,
1996                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1997                         LM87_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1998    { 0 }
1999  };
2000
2001static sensors_chip_feature mtp008_features[] =
2002  { 
2003    { SENSORS_MTP008_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2004                        SENSORS_MODE_R, MTP008_SYSCTL_IN0, VALUE(3), 2 },
2005    { SENSORS_MTP008_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2006                        SENSORS_MODE_R, MTP008_SYSCTL_IN1, VALUE(3), 2 },
2007    { SENSORS_MTP008_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2008                        SENSORS_MODE_R, MTP008_SYSCTL_IN2, VALUE(3), 2 },
2009    { SENSORS_MTP008_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2010                        SENSORS_MODE_R, MTP008_SYSCTL_IN3, VALUE(3), 2 },
2011    { SENSORS_MTP008_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2012                        SENSORS_MODE_R, MTP008_SYSCTL_IN4, VALUE(3), 2 },
2013    { SENSORS_MTP008_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2014                        SENSORS_MODE_R, MTP008_SYSCTL_IN5, VALUE(3), 2 },
2015    { SENSORS_MTP008_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2016                        SENSORS_MODE_R, MTP008_SYSCTL_IN6, VALUE(3), 2 },
2017    { SENSORS_MTP008_IN0_MIN, "in0_min", SENSORS_MTP008_IN0, 
2018                        SENSORS_MTP008_IN0, SENSORS_MODE_RW, 
2019                        MTP008_SYSCTL_IN0, VALUE(1), 2 },
2020    { SENSORS_MTP008_IN1_MIN, "in1_min", SENSORS_MTP008_IN1, 
2021                        SENSORS_MTP008_IN1, SENSORS_MODE_RW, 
2022                        MTP008_SYSCTL_IN1, VALUE(1), 2 },
2023    { SENSORS_MTP008_IN2_MIN, "in2_min", SENSORS_MTP008_IN2, 
2024                        SENSORS_MTP008_IN2, SENSORS_MODE_RW, 
2025                        MTP008_SYSCTL_IN2, VALUE(1), 2 },
2026    { SENSORS_MTP008_IN3_MIN, "in3_min", SENSORS_MTP008_IN3, 
2027                        SENSORS_MTP008_IN3, SENSORS_MODE_RW, 
2028                        MTP008_SYSCTL_IN3, VALUE(1), 2 },
2029    { SENSORS_MTP008_IN4_MIN, "in4_min", SENSORS_MTP008_IN4, 
2030                        SENSORS_MTP008_IN4, SENSORS_MODE_RW, 
2031                        MTP008_SYSCTL_IN4, VALUE(1), 2 },
2032    { SENSORS_MTP008_IN5_MIN, "in5_min", SENSORS_MTP008_IN5, 
2033                        SENSORS_MTP008_IN5, SENSORS_MODE_RW, 
2034                        MTP008_SYSCTL_IN5, VALUE(1), 2 },
2035    { SENSORS_MTP008_IN6_MIN, "in6_min", SENSORS_MTP008_IN6, 
2036                        SENSORS_MTP008_IN6, SENSORS_MODE_RW, 
2037                        MTP008_SYSCTL_IN6, VALUE(1), 2 },
2038    { SENSORS_MTP008_IN0_MAX, "in0_max", SENSORS_MTP008_IN0, 
2039                        SENSORS_MTP008_IN0, SENSORS_MODE_RW,
2040                        MTP008_SYSCTL_IN0, VALUE(2), 2 },
2041    { SENSORS_MTP008_IN1_MAX, "in1_max", SENSORS_MTP008_IN1, 
2042                        SENSORS_MTP008_IN1, SENSORS_MODE_RW, 
2043                        MTP008_SYSCTL_IN1, VALUE(2), 2 },
2044    { SENSORS_MTP008_IN2_MAX, "in2_max", SENSORS_MTP008_IN2, 
2045                        SENSORS_MTP008_IN2, SENSORS_MODE_RW, 
2046                        MTP008_SYSCTL_IN2, VALUE(2), 2 },
2047    { SENSORS_MTP008_IN3_MAX, "in3_max", SENSORS_MTP008_IN3, 
2048                        SENSORS_MTP008_IN3, SENSORS_MODE_RW, 
2049                        MTP008_SYSCTL_IN3, VALUE(2), 2 },
2050    { SENSORS_MTP008_IN4_MAX, "in4_max", SENSORS_MTP008_IN4, 
2051                        SENSORS_MTP008_IN4, SENSORS_MODE_RW,
2052                        MTP008_SYSCTL_IN4, VALUE(2), 2 },
2053    { SENSORS_MTP008_IN5_MAX, "in5_max", SENSORS_MTP008_IN5, 
2054                        SENSORS_MTP008_IN5, SENSORS_MODE_RW, 
2055                        MTP008_SYSCTL_IN5, VALUE(2), 2 },
2056    { SENSORS_MTP008_IN6_MAX, "in6_max", SENSORS_MTP008_IN6, 
2057                        SENSORS_MTP008_IN6, SENSORS_MODE_RW, 
2058                        MTP008_SYSCTL_IN6, VALUE(2), 2 },
2059    { SENSORS_MTP008_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2060                        SENSORS_MODE_R, MTP008_SYSCTL_FAN1, VALUE(2), 0 },
2061    { SENSORS_MTP008_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2062                        SENSORS_MODE_R, MTP008_SYSCTL_FAN2, VALUE(2), 0 },
2063    { SENSORS_MTP008_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2064                        SENSORS_MODE_R, MTP008_SYSCTL_FAN3, VALUE(2), 0 },
2065    { SENSORS_MTP008_FAN1_MIN, "fan1_min", SENSORS_MTP008_FAN1,
2066                        SENSORS_MTP008_FAN1, SENSORS_MODE_RW, 
2067                        MTP008_SYSCTL_FAN1, VALUE(1), 0 },
2068    { SENSORS_MTP008_FAN2_MIN, "fan2_min", SENSORS_MTP008_FAN2, 
2069                        SENSORS_MTP008_FAN2, SENSORS_MODE_RW, 
2070                        MTP008_SYSCTL_FAN2, VALUE(1), 0 },
2071    { SENSORS_MTP008_FAN3_MIN, "fan3_min", SENSORS_MTP008_FAN3, 
2072                        SENSORS_MTP008_FAN3, SENSORS_MODE_RW, 
2073                        MTP008_SYSCTL_FAN3, VALUE(1), 0 },
2074    { SENSORS_MTP008_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2075                        SENSORS_MODE_R, MTP008_SYSCTL_TEMP1, VALUE(3), 1 },
2076    { SENSORS_MTP008_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
2077                        SENSORS_MODE_R, MTP008_SYSCTL_TEMP2, VALUE(3), 1 },
2078    { SENSORS_MTP008_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2079                        SENSORS_MODE_R, MTP008_SYSCTL_TEMP3, VALUE(3), 1 },
2080    { SENSORS_MTP008_TEMP1_OVER, "temp1_over", SENSORS_MTP008_TEMP1,
2081                        SENSORS_MTP008_TEMP1, SENSORS_MODE_RW,
2082                        MTP008_SYSCTL_TEMP1, VALUE(1), 1 },
2083    { SENSORS_MTP008_TEMP2_OVER, "temp2_over", SENSORS_MTP008_TEMP2,
2084                        SENSORS_MTP008_TEMP2, SENSORS_MODE_RW,
2085                        MTP008_SYSCTL_TEMP2, VALUE(1), 1 },
2086    { SENSORS_MTP008_TEMP3_OVER, "temp3_over", SENSORS_MTP008_TEMP3,
2087                        SENSORS_MTP008_TEMP3, SENSORS_MODE_RW,
2088                        MTP008_SYSCTL_TEMP3, VALUE(1), 1 },
2089    { SENSORS_MTP008_TEMP1_HYST, "temp1_hyst", SENSORS_MTP008_TEMP1,
2090                        SENSORS_MTP008_TEMP1, SENSORS_MODE_RW,
2091                        MTP008_SYSCTL_TEMP1, VALUE(2), 1 },
2092    { SENSORS_MTP008_TEMP2_HYST, "temp2_hyst", SENSORS_MTP008_TEMP2,
2093                        SENSORS_MTP008_TEMP2, SENSORS_MODE_RW,
2094                        MTP008_SYSCTL_TEMP2, VALUE(2), 1 },
2095    { SENSORS_MTP008_TEMP3_HYST, "temp3_hyst", SENSORS_MTP008_TEMP3,
2096                        SENSORS_MTP008_TEMP3, SENSORS_MODE_RW,
2097                        MTP008_SYSCTL_TEMP3, VALUE(2), 1 },
2098    { SENSORS_MTP008_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2099                         SENSORS_MODE_R, MTP008_SYSCTL_VID, VALUE(1), 2 },
2100    { SENSORS_MTP008_FAN1_DIV, "fan1_div", SENSORS_NO_MAPPING, 
2101                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
2102                         MTP008_SYSCTL_FAN_DIV, VALUE(1), 0 },
2103    { SENSORS_MTP008_FAN2_DIV, "fan2_div", SENSORS_NO_MAPPING, 
2104                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
2105                         MTP008_SYSCTL_FAN_DIV, VALUE(2), 0 },
2106    { SENSORS_MTP008_FAN3_DIV, "fan3_div", SENSORS_NO_MAPPING, 
2107                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
2108                         MTP008_SYSCTL_FAN_DIV, VALUE(3), 0 },
2109    { SENSORS_MTP008_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
2110                         SENSORS_MODE_R, MTP008_SYSCTL_ALARMS, VALUE(1), 0 },
2111    { SENSORS_MTP008_BEEP, "beeps", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
2112                         SENSORS_MODE_R, MTP008_SYSCTL_BEEP, VALUE(1), 0 },
2113    { 0 }
2114  };
2115
2116static sensors_chip_feature ds1621_features[] =
2117  {
2118    { SENSORS_DS1621_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2119                         SENSORS_MODE_R, DS1621_SYSCTL_TEMP, VALUE(3), 1 },
2120    { SENSORS_DS1621_TEMP_HYST, "temp_hyst", SENSORS_DS1621_TEMP,
2121                              SENSORS_DS1621_TEMP, SENSORS_MODE_RW, 
2122                              DS1621_SYSCTL_TEMP, VALUE(2), 1 },
2123    { SENSORS_DS1621_TEMP_OVER, "temp_over", SENSORS_DS1621_TEMP,
2124                              SENSORS_DS1621_TEMP, SENSORS_MODE_RW, 
2125                              DS1621_SYSCTL_TEMP, VALUE(1), 1 },
2126    { SENSORS_DS1621_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2127                           SENSORS_MODE_R, DS1621_SYSCTL_ALARMS, VALUE(1), 0 },
2128    { 0 }
2129  };
2130
2131static sensors_chip_feature it87_features[] =
2132  {
2133    { SENSORS_IT87_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2134                        SENSORS_MODE_R, IT87_SYSCTL_IN0, VALUE(3), 2 },
2135    { SENSORS_IT87_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2136                        SENSORS_MODE_R, IT87_SYSCTL_IN1, VALUE(3), 2 },
2137    { SENSORS_IT87_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2138                        SENSORS_MODE_R, IT87_SYSCTL_IN2, VALUE(3), 2 },
2139    { SENSORS_IT87_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2140                        SENSORS_MODE_R, IT87_SYSCTL_IN3, VALUE(3), 2 },
2141    { SENSORS_IT87_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2142                        SENSORS_MODE_R, IT87_SYSCTL_IN4, VALUE(3), 2 },
2143    { SENSORS_IT87_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2144                        SENSORS_MODE_R, IT87_SYSCTL_IN5, VALUE(3), 2 },
2145    { SENSORS_IT87_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2146                        SENSORS_MODE_R, IT87_SYSCTL_IN6, VALUE(3), 2 },
2147    { SENSORS_IT87_IN7, "in7", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2148                        SENSORS_MODE_R, IT87_SYSCTL_IN7, VALUE(3), 2 },
2149    { SENSORS_IT87_IN8, "in8", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2150                        SENSORS_MODE_R, IT87_SYSCTL_IN8, VALUE(3), 2 },
2151    { SENSORS_IT87_IN0_MIN, "in0_min", SENSORS_IT87_IN0, SENSORS_IT87_IN0,
2152                            SENSORS_MODE_RW, IT87_SYSCTL_IN0, VALUE(1), 2 },
2153    { SENSORS_IT87_IN1_MIN, "in1_min", SENSORS_IT87_IN1, SENSORS_IT87_IN1,
2154                            SENSORS_MODE_RW, IT87_SYSCTL_IN1, VALUE(1), 2 },
2155    { SENSORS_IT87_IN2_MIN, "in2_min", SENSORS_IT87_IN2, SENSORS_IT87_IN2,
2156                            SENSORS_MODE_RW, IT87_SYSCTL_IN2, VALUE(1), 2 },
2157    { SENSORS_IT87_IN3_MIN, "in3_min", SENSORS_IT87_IN3, SENSORS_IT87_IN3,
2158                            SENSORS_MODE_RW, IT87_SYSCTL_IN3, VALUE(1), 2 },
2159    { SENSORS_IT87_IN4_MIN, "in4_min", SENSORS_IT87_IN4, SENSORS_IT87_IN4,
2160                            SENSORS_MODE_RW, IT87_SYSCTL_IN4, VALUE(1), 2 },
2161    { SENSORS_IT87_IN5_MIN, "in5_min", SENSORS_IT87_IN5, SENSORS_IT87_IN5,
2162                            SENSORS_MODE_RW, IT87_SYSCTL_IN5, VALUE(1), 2 },
2163    { SENSORS_IT87_IN6_MIN, "in6_min", SENSORS_IT87_IN6, SENSORS_IT87_IN6,
2164                            SENSORS_MODE_RW, IT87_SYSCTL_IN6, VALUE(1), 2 },
2165    { SENSORS_IT87_IN7_MIN, "in7_min", SENSORS_IT87_IN7, SENSORS_IT87_IN7,
2166                            SENSORS_MODE_RW, IT87_SYSCTL_IN7, VALUE(1), 2 },
2167    { SENSORS_IT87_IN0_MAX, "in0_max", SENSORS_IT87_IN0, SENSORS_IT87_IN0,
2168                            SENSORS_MODE_RW, IT87_SYSCTL_IN0, VALUE(2), 2 },
2169    { SENSORS_IT87_IN1_MAX, "in1_max", SENSORS_IT87_IN1, SENSORS_IT87_IN1,
2170                            SENSORS_MODE_RW, IT87_SYSCTL_IN1, VALUE(2), 2 },
2171    { SENSORS_IT87_IN2_MAX, "in2_max", SENSORS_IT87_IN2, SENSORS_IT87_IN2,
2172                            SENSORS_MODE_RW, IT87_SYSCTL_IN2, VALUE(2), 2 },
2173    { SENSORS_IT87_IN3_MAX, "in3_max", SENSORS_IT87_IN3, SENSORS_IT87_IN3,
2174                            SENSORS_MODE_RW, IT87_SYSCTL_IN3, VALUE(2), 2 },
2175    { SENSORS_IT87_IN4_MAX, "in4_max", SENSORS_IT87_IN4, SENSORS_IT87_IN4,
2176                            SENSORS_MODE_RW, IT87_SYSCTL_IN4, VALUE(2), 2 },
2177    { SENSORS_IT87_IN5_MAX, "in5_max", SENSORS_IT87_IN5, SENSORS_IT87_IN5,
2178                            SENSORS_MODE_RW, IT87_SYSCTL_IN5, VALUE(2), 2 },
2179    { SENSORS_IT87_IN6_MAX, "in6_max", SENSORS_IT87_IN6, SENSORS_IT87_IN6,
2180                            SENSORS_MODE_RW, IT87_SYSCTL_IN6, VALUE(2), 2 },
2181    { SENSORS_IT87_IN7_MAX, "in7_max", SENSORS_IT87_IN7, SENSORS_IT87_IN7,
2182                            SENSORS_MODE_RW, IT87_SYSCTL_IN7, VALUE(2), 2 },
2183    { SENSORS_IT87_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2184                         SENSORS_MODE_R, IT87_SYSCTL_FAN1, VALUE(2), 0 },
2185    { SENSORS_IT87_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2186                         SENSORS_MODE_R, IT87_SYSCTL_FAN2, VALUE(2), 0 },
2187    { SENSORS_IT87_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2188                         SENSORS_MODE_R, IT87_SYSCTL_FAN3, VALUE(2), 0 },
2189    { SENSORS_IT87_FAN1_MIN, "fan1_min", SENSORS_IT87_FAN1, SENSORS_IT87_FAN1,
2190                             SENSORS_MODE_RW, IT87_SYSCTL_FAN1, VALUE(1), 0 },
2191    { SENSORS_IT87_FAN2_MIN, "fan2_min", SENSORS_IT87_FAN2, SENSORS_IT87_FAN2,
2192                             SENSORS_MODE_RW, IT87_SYSCTL_FAN2, VALUE(1), 0 },
2193    { SENSORS_IT87_FAN3_MIN, "fan3_min", SENSORS_IT87_FAN3, SENSORS_IT87_FAN3,
2194                             SENSORS_MODE_RW, IT87_SYSCTL_FAN3, VALUE(1), 0 },
2195    { SENSORS_IT87_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2196                         SENSORS_MODE_R, IT87_SYSCTL_TEMP1, VALUE(3), 1 },
2197    { SENSORS_IT87_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2198                         SENSORS_MODE_R, IT87_SYSCTL_TEMP2, VALUE(3), 1 },
2199    { SENSORS_IT87_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2200                         SENSORS_MODE_R, IT87_SYSCTL_TEMP3, VALUE(3), 1 },
2201    { SENSORS_IT87_TEMP1_LOW, "temp1_hyst", SENSORS_IT87_TEMP1,
2202                              SENSORS_IT87_TEMP1, SENSORS_MODE_RW,
2203                              IT87_SYSCTL_TEMP1, VALUE(2), 1 },
2204    { SENSORS_IT87_TEMP2_LOW, "temp2_hyst", SENSORS_IT87_TEMP2,
2205                              SENSORS_IT87_TEMP2, SENSORS_MODE_RW,
2206                              IT87_SYSCTL_TEMP2, VALUE(2), 1 },
2207    { SENSORS_IT87_TEMP3_LOW, "temp3_hyst", SENSORS_IT87_TEMP3,
2208                              SENSORS_IT87_TEMP3, SENSORS_MODE_RW,
2209                              IT87_SYSCTL_TEMP3, VALUE(2), 1 },
2210    { SENSORS_IT87_TEMP1_HIGH, "temp1_over", SENSORS_IT87_TEMP1,
2211                              SENSORS_IT87_TEMP1, SENSORS_MODE_RW,
2212                              IT87_SYSCTL_TEMP1, VALUE(1), 1 },
2213    { SENSORS_IT87_TEMP2_HIGH, "temp2_over", SENSORS_IT87_TEMP2,
2214                              SENSORS_IT87_TEMP2, SENSORS_MODE_RW,
2215                              IT87_SYSCTL_TEMP2, VALUE(1), 1 },
2216    { SENSORS_IT87_TEMP3_HIGH, "temp3_over", SENSORS_IT87_TEMP3,
2217                              SENSORS_IT87_TEMP3, SENSORS_MODE_RW,
2218                              IT87_SYSCTL_TEMP3, VALUE(1), 1 },
2219    { SENSORS_IT87_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2220                        SENSORS_MODE_R, IT87_SYSCTL_VID, VALUE(1), 2 },
2221    { SENSORS_IT87_FAN1_DIV, "fan1_div", SENSORS_IT87_FAN1, SENSORS_NO_MAPPING,
2222                             SENSORS_MODE_RW, IT87_SYSCTL_FAN_DIV, VALUE(1),
2223                             0 },
2224    { SENSORS_IT87_FAN2_DIV, "fan2_div", SENSORS_IT87_FAN2, SENSORS_NO_MAPPING,
2225                             SENSORS_MODE_RW, IT87_SYSCTL_FAN_DIV, VALUE(2),
2226                             0 },
2227    { SENSORS_IT87_FAN3_DIV, "fan3_div", SENSORS_IT87_FAN3, SENSORS_NO_MAPPING,
2228                              SENSORS_MODE_R, IT87_SYSCTL_FAN_DIV, VALUE(3),
2229                              0 },
2230    { SENSORS_IT87_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2231                           SENSORS_MODE_R, IT87_SYSCTL_ALARMS, VALUE(1), 0 },
2232    { 0 }
2233  };
2234
2235static sensors_chip_feature fscpos_features[] =
2236  {
2237    { SENSORS_FSCPOS_REV, "rev", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2238                        SENSORS_MODE_R, FSCPOS_SYSCTL_REV, VALUE(1), 0 },
2239    { SENSORS_FSCPOS_EVENT, "event", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2240                        SENSORS_MODE_R, FSCPOS_SYSCTL_EVENT, VALUE(1), 0 },
2241    { SENSORS_FSCPOS_CONTROL, "control", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2242                        SENSORS_MODE_RW, FSCPOS_SYSCTL_CONTROL, VALUE(1), 0 },
2243    { SENSORS_FSCPOS_VOLTAGE1, "volt12", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2244                        SENSORS_MODE_R, FSCPOS_SYSCTL_VOLT0, VALUE(1), 2 },
2245    { SENSORS_FSCPOS_VOLTAGE2, "volt5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2246                        SENSORS_MODE_R, FSCPOS_SYSCTL_VOLT1, VALUE(1), 2 },
2247    { SENSORS_FSCPOS_VOLTAGE3, "voltbatt", SENSORS_NO_MAPPING,
2248                        SENSORS_NO_MAPPING, SENSORS_MODE_R, 
2249                        FSCPOS_SYSCTL_VOLT2, VALUE(1), 2 },
2250    { SENSORS_FSCPOS_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2251                        SENSORS_MODE_R, FSCPOS_SYSCTL_TEMP0, VALUE(2), 0 },
2252    { SENSORS_FSCPOS_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2253                        SENSORS_MODE_R, FSCPOS_SYSCTL_TEMP1, VALUE(2), 0 },
2254    { SENSORS_FSCPOS_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2255                        SENSORS_MODE_R, FSCPOS_SYSCTL_TEMP2, VALUE(2), 0 },
2256    { SENSORS_FSCPOS_TEMP1_STATE, "temp1_state", SENSORS_FSCPOS_TEMP1,
2257                        SENSORS_FSCPOS_TEMP1, SENSORS_MODE_RW, 
2258                        FSCPOS_SYSCTL_TEMP0, VALUE(1), 0 },
2259    { SENSORS_FSCPOS_TEMP2_STATE, "temp2_state", SENSORS_FSCPOS_TEMP2, 
2260                        SENSORS_FSCPOS_TEMP2, SENSORS_MODE_RW, 
2261                        FSCPOS_SYSCTL_TEMP1, VALUE(1), 0 },
2262    { SENSORS_FSCPOS_TEMP3_STATE, "temp3_state", SENSORS_FSCPOS_TEMP3, 
2263                        SENSORS_FSCPOS_TEMP3, SENSORS_MODE_RW, 
2264                        FSCPOS_SYSCTL_TEMP2, VALUE(1), 0 },
2265    { SENSORS_FSCPOS_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2266                        SENSORS_MODE_R, FSCPOS_SYSCTL_FAN0, VALUE(4), 0 },
2267    { SENSORS_FSCPOS_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2268                        SENSORS_MODE_R, FSCPOS_SYSCTL_FAN1, VALUE(4), 0 },
2269    { SENSORS_FSCPOS_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2270                        SENSORS_MODE_R, FSCPOS_SYSCTL_FAN2, VALUE(4), 0 },
2271    { SENSORS_FSCPOS_FAN1_MIN, "fan1_min", SENSORS_FSCPOS_FAN1, 
2272                        SENSORS_FSCPOS_FAN1, SENSORS_MODE_RW, 
2273                        FSCPOS_SYSCTL_FAN0, VALUE(2), 0 },
2274    { SENSORS_FSCPOS_FAN2_MIN, "fan2_min", SENSORS_FSCPOS_FAN2, 
2275                        SENSORS_FSCPOS_FAN2, SENSORS_MODE_RW, 
2276                        FSCPOS_SYSCTL_FAN1, VALUE(2), 0 },
2277    { SENSORS_FSCPOS_FAN1_STATE, "fan1_state", SENSORS_FSCPOS_FAN1, 
2278                        SENSORS_FSCPOS_FAN1, SENSORS_MODE_RW, 
2279                        FSCPOS_SYSCTL_FAN0, VALUE(1), 0 },
2280    { SENSORS_FSCPOS_FAN2_STATE, "fan2_state", SENSORS_FSCPOS_FAN2, 
2281                        SENSORS_FSCPOS_FAN2, SENSORS_MODE_RW, 
2282                        FSCPOS_SYSCTL_FAN1, VALUE(1), 0 },
2283    { SENSORS_FSCPOS_FAN3_STATE, "fan3_state", SENSORS_FSCPOS_FAN3, 
2284                        SENSORS_FSCPOS_FAN3, SENSORS_MODE_RW, 
2285                        FSCPOS_SYSCTL_FAN2, VALUE(1), 0 },
2286    { SENSORS_FSCPOS_FAN1_RIPPLE, "fan1_ripple", SENSORS_FSCPOS_FAN1, 
2287                        SENSORS_FSCPOS_FAN1, SENSORS_MODE_RW, 
2288                        FSCPOS_SYSCTL_FAN0, VALUE(3), 0 },
2289    { SENSORS_FSCPOS_FAN2_RIPPLE, "fan2_ripple", SENSORS_FSCPOS_FAN2, 
2290                        SENSORS_FSCPOS_FAN2, SENSORS_MODE_RW, 
2291                        FSCPOS_SYSCTL_FAN1, VALUE(3), 0 },
2292    { SENSORS_FSCPOS_FAN3_RIPPLE, "fan3_ripple", SENSORS_FSCPOS_FAN3, 
2293                        SENSORS_FSCPOS_FAN3, SENSORS_MODE_RW, 
2294                        FSCPOS_SYSCTL_FAN2, VALUE(3), 0 },
2295    { SENSORS_FSCPOS_WDOG_PRESET, "wdog_preset", SENSORS_NO_MAPPING, 
2296                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
2297                        FSCPOS_SYSCTL_WDOG, VALUE(1), 0 },
2298    { SENSORS_FSCPOS_WDOG_STATE, "wdog_state", SENSORS_FSCPOS_WDOG_PRESET, 
2299                        SENSORS_FSCPOS_WDOG_PRESET, SENSORS_MODE_RW, 
2300                        FSCPOS_SYSCTL_WDOG, VALUE(2), 0 },
2301    { SENSORS_FSCPOS_WDOG_CONTROL, "wdog_control", SENSORS_FSCPOS_WDOG_PRESET, 
2302                        SENSORS_FSCPOS_WDOG_PRESET, SENSORS_MODE_RW, 
2303                        FSCPOS_SYSCTL_WDOG, VALUE(3), 0 },
2304    { 0 }
2305  };
2306
2307static sensors_chip_feature fscscy_features[] =
2308  {
2309    { SENSORS_FSCSCY_REV, "rev", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2310                        SENSORS_MODE_R, FSCSCY_SYSCTL_REV, VALUE(1), 0 },
2311    { SENSORS_FSCSCY_EVENT, "event", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2312                        SENSORS_MODE_R, FSCSCY_SYSCTL_EVENT, VALUE(1), 0 },
2313    { SENSORS_FSCSCY_CONTROL, "control", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2314                        SENSORS_MODE_RW, FSCSCY_SYSCTL_CONTROL, VALUE(1), 0 },
2315    { SENSORS_FSCSCY_VOLTAGE1, "volt12", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2316                        SENSORS_MODE_R, FSCSCY_SYSCTL_VOLT0, VALUE(1), 2 },
2317    { SENSORS_FSCSCY_VOLTAGE2, "volt5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2318                        SENSORS_MODE_R, FSCSCY_SYSCTL_VOLT1, VALUE(1), 2 },
2319    { SENSORS_FSCSCY_VOLTAGE3, "voltbatt", SENSORS_NO_MAPPING,
2320                        SENSORS_NO_MAPPING, SENSORS_MODE_R, 
2321                        FSCSCY_SYSCTL_VOLT2, VALUE(1), 2 },
2322    { SENSORS_FSCSCY_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2323                        SENSORS_MODE_R, FSCSCY_SYSCTL_TEMP0, VALUE(2), 0 },
2324    { SENSORS_FSCSCY_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2325                        SENSORS_MODE_R, FSCSCY_SYSCTL_TEMP1, VALUE(2), 0 },
2326    { SENSORS_FSCSCY_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2327                        SENSORS_MODE_R, FSCSCY_SYSCTL_TEMP2, VALUE(2), 0 },
2328    { SENSORS_FSCSCY_TEMP4, "temp4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2329                        SENSORS_MODE_R, FSCSCY_SYSCTL_TEMP3, VALUE(2), 0 },
2330    { SENSORS_FSCSCY_TEMP1_STATE, "temp1_state", SENSORS_FSCSCY_TEMP1,
2331                        SENSORS_FSCSCY_TEMP1, SENSORS_MODE_RW, 
2332                        FSCSCY_SYSCTL_TEMP0, VALUE(1), 0 },
2333    { SENSORS_FSCSCY_TEMP2_STATE, "temp2_state", SENSORS_FSCSCY_TEMP2, 
2334                        SENSORS_FSCSCY_TEMP2, SENSORS_MODE_RW, 
2335                        FSCSCY_SYSCTL_TEMP1, VALUE(1), 0 },
2336    { SENSORS_FSCSCY_TEMP3_STATE, "temp3_state", SENSORS_FSCSCY_TEMP3, 
2337                        SENSORS_FSCSCY_TEMP3, SENSORS_MODE_RW, 
2338                        FSCSCY_SYSCTL_TEMP2, VALUE(1), 0 },
2339    { SENSORS_FSCSCY_TEMP4_STATE, "temp4_state", SENSORS_FSCSCY_TEMP4, 
2340                        SENSORS_FSCSCY_TEMP4, SENSORS_MODE_RW, 
2341                        FSCSCY_SYSCTL_TEMP3, VALUE(1), 0 },
2342    { SENSORS_FSCSCY_TEMP1_LIM, "temp1_lim", SENSORS_FSCSCY_TEMP1,
2343                        SENSORS_FSCSCY_TEMP1, SENSORS_MODE_R, 
2344                        FSCSCY_SYSCTL_TEMP0, VALUE(3), 0 },
2345    { SENSORS_FSCSCY_TEMP2_LIM, "temp2_lim", SENSORS_FSCSCY_TEMP2,
2346                        SENSORS_FSCSCY_TEMP2, SENSORS_MODE_R, 
2347                        FSCSCY_SYSCTL_TEMP1, VALUE(3), 0 },
2348    { SENSORS_FSCSCY_TEMP3_LIM, "temp3_lim", SENSORS_FSCSCY_TEMP3,
2349                        SENSORS_FSCSCY_TEMP3, SENSORS_MODE_R, 
2350                        FSCSCY_SYSCTL_TEMP2, VALUE(3), 0 },
2351    { SENSORS_FSCSCY_TEMP4_LIM, "temp4_lim", SENSORS_FSCSCY_TEMP4,
2352                        SENSORS_FSCSCY_TEMP4, SENSORS_MODE_R, 
2353                        FSCSCY_SYSCTL_TEMP3, VALUE(4), 0 },
2354    { SENSORS_FSCSCY_TEMP1_MIN, "temp1_min", SENSORS_FSCSCY_TEMP1,
2355                        SENSORS_FSCSCY_TEMP1, SENSORS_MODE_R, 
2356                        FSCSCY_SYSCTL_TEMP0, VALUE(4), 0 },
2357    { SENSORS_FSCSCY_TEMP2_MIN, "temp2_min", SENSORS_FSCSCY_TEMP2,
2358                        SENSORS_FSCSCY_TEMP2, SENSORS_MODE_R, 
2359                        FSCSCY_SYSCTL_TEMP1, VALUE(4), 0 },
2360    { SENSORS_FSCSCY_TEMP3_MIN, "temp3_min", SENSORS_FSCSCY_TEMP3,
2361                        SENSORS_FSCSCY_TEMP3, SENSORS_MODE_R, 
2362                        FSCSCY_SYSCTL_TEMP2, VALUE(4), 0 },
2363    { SENSORS_FSCSCY_TEMP4_MIN, "temp4_min", SENSORS_FSCSCY_TEMP4,
2364                        SENSORS_FSCSCY_TEMP4, SENSORS_MODE_R, 
2365                        FSCSCY_SYSCTL_TEMP3, VALUE(5), 0 },
2366    { SENSORS_FSCSCY_TEMP1_MAX, "temp1_max", SENSORS_FSCSCY_TEMP1,
2367                        SENSORS_FSCSCY_TEMP1, SENSORS_MODE_R, 
2368                        FSCSCY_SYSCTL_TEMP0, VALUE(5), 0 },
2369    { SENSORS_FSCSCY_TEMP2_MAX, "temp2_max", SENSORS_FSCSCY_TEMP2,
2370                        SENSORS_FSCSCY_TEMP2, SENSORS_MODE_R, 
2371                        FSCSCY_SYSCTL_TEMP1, VALUE(5), 0 },
2372    { SENSORS_FSCSCY_TEMP3_MAX, "temp3_max", SENSORS_FSCSCY_TEMP3,
2373                        SENSORS_FSCSCY_TEMP3, SENSORS_MODE_R, 
2374                        FSCSCY_SYSCTL_TEMP2, VALUE(5), 0 },
2375    { SENSORS_FSCSCY_TEMP4_MAX, "temp4_max", SENSORS_FSCSCY_TEMP4,
2376                        SENSORS_FSCSCY_TEMP4, SENSORS_MODE_R, 
2377                        FSCSCY_SYSCTL_TEMP3, VALUE(5), 0 },
2378    { SENSORS_FSCSCY_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2379                        SENSORS_MODE_R, FSCSCY_SYSCTL_FAN0, VALUE(4), 0 },
2380    { SENSORS_FSCSCY_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2381                        SENSORS_MODE_R, FSCSCY_SYSCTL_FAN1, VALUE(4), 0 },
2382    { SENSORS_FSCSCY_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2383                        SENSORS_MODE_R, FSCSCY_SYSCTL_FAN2, VALUE(4), 0 },
2384    { SENSORS_FSCSCY_FAN4, "fan4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2385                        SENSORS_MODE_R, FSCSCY_SYSCTL_FAN3, VALUE(4), 0 },
2386    { SENSORS_FSCSCY_FAN5, "fan5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2387                        SENSORS_MODE_R, FSCSCY_SYSCTL_FAN4, VALUE(4), 0 },
2388    { SENSORS_FSCSCY_FAN6, "fan6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
2389                        SENSORS_MODE_R, FSCSCY_SYSCTL_FAN5, VALUE(4), 0 },
2390    { SENSORS_FSCSCY_FAN1_MIN, "fan1_min", SENSORS_FSCSCY_FAN1, 
2391                        SENSORS_FSCSCY_FAN1, SENSORS_MODE_RW, 
2392                        FSCSCY_SYSCTL_FAN0, VALUE(2), 0 },
2393    { SENSORS_FSCSCY_FAN2_MIN, "fan2_min", SENSORS_FSCSCY_FAN2, 
2394                        SENSORS_FSCSCY_FAN2, SENSORS_MODE_RW, 
2395                        FSCSCY_SYSCTL_FAN1, VALUE(2), 0 },
2396    { SENSORS_FSCSCY_FAN3_MIN, "fan3_min", SENSORS_FSCSCY_FAN3, 
2397                        SENSORS_FSCSCY_FAN3, SENSORS_MODE_RW, 
2398                        FSCSCY_SYSCTL_FAN2, VALUE(2), 0 },
2399    { SENSORS_FSCSCY_FAN4_MIN, "fan4_min", SENSORS_FSCSCY_FAN4, 
2400                        SENSORS_FSCSCY_FAN4, SENSORS_MODE_RW, 
2401                        FSCSCY_SYSCTL_FAN3, VALUE(2), 0 },
2402    { SENSORS_FSCSCY_FAN5_MIN, "fan5_min", SENSORS_FSCSCY_FAN5, 
2403                        SENSORS_FSCSCY_FAN5, SENSORS_MODE_RW, 
2404                        FSCSCY_SYSCTL_FAN4, VALUE(2), 0 },
2405    { SENSORS_FSCSCY_FAN6_MIN, "fan6_min", SENSORS_FSCSCY_FAN6, 
2406                        SENSORS_FSCSCY_FAN6, SENSORS_MODE_RW, 
2407                        FSCSCY_SYSCTL_FAN5, VALUE(2), 0 },
2408    { SENSORS_FSCSCY_FAN1_STATE, "fan1_state", SENSORS_FSCSCY_FAN1, 
2409                        SENSORS_FSCSCY_FAN1, SENSORS_MODE_RW, 
2410                        FSCSCY_SYSCTL_FAN0, VALUE(1), 0 },
2411    { SENSORS_FSCSCY_FAN2_STATE, "fan2_state", SENSORS_FSCSCY_FAN2, 
2412                        SENSORS_FSCSCY_FAN2, SENSORS_MODE_RW, 
2413                        FSCSCY_SYSCTL_FAN1, VALUE(1), 0 },
2414    { SENSORS_FSCSCY_FAN3_STATE, "fan3_state", SENSORS_FSCSCY_FAN3, 
2415                        SENSORS_FSCSCY_FAN3, SENSORS_MODE_RW, 
2416                        FSCSCY_SYSCTL_FAN2, VALUE(1), 0 },
2417    { SENSORS_FSCSCY_FAN4_STATE, "fan4_state", SENSORS_FSCSCY_FAN4, 
2418                        SENSORS_FSCSCY_FAN4, SENSORS_MODE_RW, 
2419                        FSCSCY_SYSCTL_FAN3, VALUE(1), 0 },
2420    { SENSORS_FSCSCY_FAN5_STATE, "fan5_state", SENSORS_FSCSCY_FAN5, 
2421                        SENSORS_FSCSCY_FAN5, SENSORS_MODE_RW, 
2422                        FSCSCY_SYSCTL_FAN4, VALUE(1), 0 },
2423    { SENSORS_FSCSCY_FAN6_STATE, "fan6_state", SENSORS_FSCSCY_FAN6, 
2424                        SENSORS_FSCSCY_FAN6, SENSORS_MODE_RW, 
2425                        FSCSCY_SYSCTL_FAN5, VALUE(1), 0 },
2426    { SENSORS_FSCSCY_FAN1_RIPPLE, "fan1_ripple", SENSORS_FSCSCY_FAN1, 
2427                        SENSORS_FSCSCY_FAN1, SENSORS_MODE_RW, 
2428                        FSCSCY_SYSCTL_FAN0, VALUE(3), 0 },
2429    { SENSORS_FSCSCY_FAN2_RIPPLE, "fan2_ripple", SENSORS_FSCSCY_FAN2, 
2430                        SENSORS_FSCSCY_FAN2, SENSORS_MODE_RW, 
2431                        FSCSCY_SYSCTL_FAN1, VALUE(3), 0 },
2432    { SENSORS_FSCSCY_FAN3_RIPPLE, "fan3_ripple", SENSORS_FSCSCY_FAN3, 
2433                        SENSORS_FSCSCY_FAN3, SENSORS_MODE_RW, 
2434                        FSCSCY_SYSCTL_FAN2, VALUE(3), 0 },
2435    { SENSORS_FSCSCY_FAN4_RIPPLE, "fan4_ripple", SENSORS_FSCSCY_FAN4, 
2436                        SENSORS_FSCSCY_FAN4, SENSORS_MODE_RW, 
2437                        FSCSCY_SYSCTL_FAN3, VALUE(3), 0 },
2438    { SENSORS_FSCSCY_FAN5_RIPPLE, "fan5_ripple", SENSORS_FSCSCY_FAN5, 
2439                        SENSORS_FSCSCY_FAN5, SENSORS_MODE_RW, 
2440                        FSCSCY_SYSCTL_FAN4, VALUE(3), 0 },
2441    { SENSORS_FSCSCY_FAN6_RIPPLE, "fan6_ripple", SENSORS_FSCSCY_FAN6, 
2442                        SENSORS_FSCSCY_FAN6, SENSORS_MODE_RW, 
2443                        FSCSCY_SYSCTL_FAN5, VALUE(3), 0 },
2444    { SENSORS_FSCSCY_WDOG_PRESET, "wdog_preset", SENSORS_NO_MAPPING, 
2445                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
2446                        FSCSCY_SYSCTL_WDOG, VALUE(1), 0 },
2447    { SENSORS_FSCSCY_WDOG_STATE, "wdog_state", SENSORS_FSCSCY_WDOG_PRESET, 
2448                        SENSORS_FSCSCY_WDOG_PRESET, SENSORS_MODE_RW, 
2449                        FSCSCY_SYSCTL_WDOG, VALUE(2), 0 },
2450    { SENSORS_FSCSCY_WDOG_CONTROL, "wdog_control", SENSORS_FSCSCY_WDOG_PRESET, 
2451                        SENSORS_FSCSCY_WDOG_PRESET, SENSORS_MODE_RW, 
2452                        FSCSCY_SYSCTL_WDOG, VALUE(3), 0 },
2453    { 0 }
2454  };
2455
2456sensors_chip_features sensors_chip_features_list[] =
2457{
2458 { SENSORS_LM78_PREFIX, lm78_features },
2459 { SENSORS_LM78J_PREFIX, lm78j_features },
2460 { SENSORS_LM79_PREFIX, lm79_features },
2461 { SENSORS_LM75_PREFIX, lm75_features },
2462 { SENSORS_GL518_PREFIX, gl518_features },
2463 { SENSORS_GL520_PREFIX, gl520_features },
2464 { SENSORS_LM80_PREFIX, lm80_features },
2465 { SENSORS_W83781D_PREFIX, w83781d_features },
2466 { SENSORS_W83782D_PREFIX, w83782d_features },
2467 { SENSORS_W83783S_PREFIX, w83783s_features },
2468                /* Cheat on 83627HF for now - no separate #defines */
2469 { SENSORS_W83627HF_PREFIX, w83782d_features },
2470                /* Cheat on 991627HF for now - no separate #defines */
2471 { SENSORS_AS99127F_PREFIX, w83782d_features },
2472 { SENSORS_ADM9240_PREFIX, adm9240_features },
2473                /* Cheat on LM81 for now - no separate #defines */
2474 { SENSORS_LM81_PREFIX, adm9240_features },
2475 { SENSORS_DS1780_PREFIX, ds1780_features },
2476 { SENSORS_ADM1021_PREFIX, adm1021_features },
2477 { SENSORS_MAX1617_PREFIX, max1617_features },
2478 { SENSORS_MAX1617A_PREFIX, max1617a_features },
2479                /* Cheat on LM84 for now - no separate #defines */
2480 { SENSORS_LM84_PREFIX, adm1021_features },
2481                /* Cheat on GL523 for now - no separate #defines */
2482 { SENSORS_GL523_PREFIX, adm1021_features },
2483                /* Cheat on THMC10 for now - no separate #defines */
2484 { SENSORS_THMC10_PREFIX, adm1021_features },
2485 { SENSORS_SIS5595_PREFIX, sis5595_features },
2486 { SENSORS_MAXI_CG_PREFIX, maxi_cg_features },
2487 { SENSORS_MAXI_CO_PREFIX, maxi_co_features },
2488 { SENSORS_MAXI_AS_PREFIX, maxi_as_features },
2489                /* Cheat on NBA for now - no separate #defines */
2490 { SENSORS_MAXI_NBA_PREFIX, maxi_as_features },
2491 { SENSORS_THMC50_PREFIX, thmc50_features },
2492                /* Cheat on ADM1022 for now - no separate #defines */
2493 { SENSORS_ADM1022_PREFIX, thmc50_features },
2494 { SENSORS_ADM1025_PREFIX, adm1025_features },
2495 { SENSORS_VIA686A_PREFIX, via686a_features },
2496 { SENSORS_DDCMON_PREFIX, ddcmon_features },
2497 { SENSORS_EEPROM_PREFIX, eeprom_features },
2498 { SENSORS_LM87_PREFIX, lm87_features },
2499 { SENSORS_MTP008_PREFIX, mtp008_features },
2500 { SENSORS_DS1621_PREFIX, ds1621_features },
2501 { SENSORS_ADM1024_PREFIX, adm1024_features },
2502 { SENSORS_IT87_PREFIX, it87_features },
2503 { SENSORS_FSCPOS_PREFIX, fscpos_features },
2504 { SENSORS_FSCSCY_PREFIX, fscscy_features },
2505 { 0 }
2506};
Note: See TracBrowser for help on using the browser.