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

Revision 935, 127.3 KB (checked in by mds, 14 years ago)

(mds) add ds1621 driver from Christian Zuckschwerdt (zany@…)

  • 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 ds1780_features[] =
1103  { 
1104    { SENSORS_DS1780_IN0, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1105                        SENSORS_MODE_R, ADM9240_SYSCTL_IN0, VALUE(3), 2 },
1106    { SENSORS_DS1780_IN1, "Vccp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1107                        SENSORS_MODE_R, ADM9240_SYSCTL_IN1, VALUE(3), 2 },
1108    { SENSORS_DS1780_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1109                        SENSORS_MODE_R, ADM9240_SYSCTL_IN2, VALUE(3), 2 },
1110    { SENSORS_DS1780_IN3, "5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1111                        SENSORS_MODE_R, ADM9240_SYSCTL_IN3, VALUE(3), 2 },
1112    { SENSORS_DS1780_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1113                        SENSORS_MODE_R, ADM9240_SYSCTL_IN4, VALUE(3), 2 },
1114    { SENSORS_DS1780_IN5, "Vccp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1115                        SENSORS_MODE_R, ADM9240_SYSCTL_IN5, VALUE(3), 2 },
1116    { SENSORS_DS1780_IN0_MIN, "2.5V_min", SENSORS_DS1780_IN0, 
1117                        SENSORS_DS1780_IN0, SENSORS_MODE_RW, 
1118                        ADM9240_SYSCTL_IN0, VALUE(1), 2 },
1119    { SENSORS_DS1780_IN1_MIN, "Vccp1_min", SENSORS_DS1780_IN1, 
1120                        SENSORS_DS1780_IN1, SENSORS_MODE_RW, 
1121                        ADM9240_SYSCTL_IN1, VALUE(1), 2 },
1122    { SENSORS_DS1780_IN2_MIN, "3.3V_min", SENSORS_DS1780_IN2, 
1123                        SENSORS_DS1780_IN2, SENSORS_MODE_RW, 
1124                        ADM9240_SYSCTL_IN2, VALUE(1), 2 },
1125    { SENSORS_DS1780_IN3_MIN, "5V_min", SENSORS_DS1780_IN3, 
1126                        SENSORS_DS1780_IN3, SENSORS_MODE_RW, 
1127                        ADM9240_SYSCTL_IN3, VALUE(1), 2 },
1128    { SENSORS_DS1780_IN4_MIN, "12V_min", SENSORS_DS1780_IN4, 
1129                        SENSORS_DS1780_IN4, SENSORS_MODE_RW, 
1130                        ADM9240_SYSCTL_IN4, VALUE(1), 2 },
1131    { SENSORS_DS1780_IN5_MIN, "Vccp2_min", SENSORS_DS1780_IN5, 
1132                        SENSORS_DS1780_IN5, SENSORS_MODE_RW, 
1133                        ADM9240_SYSCTL_IN5, VALUE(1), 2 },
1134    { SENSORS_DS1780_IN0_MAX, "2.5V_max", SENSORS_DS1780_IN0, 
1135                        SENSORS_DS1780_IN0, SENSORS_MODE_RW,
1136                        ADM9240_SYSCTL_IN0, VALUE(2), 2 },
1137    { SENSORS_DS1780_IN1_MAX, "Vccp1_max", SENSORS_DS1780_IN1, 
1138                        SENSORS_DS1780_IN1, SENSORS_MODE_RW, 
1139                        ADM9240_SYSCTL_IN1, VALUE(2), 2 },
1140    { SENSORS_DS1780_IN2_MAX, "3.3V_max", SENSORS_DS1780_IN2, 
1141                        SENSORS_DS1780_IN2, SENSORS_MODE_RW, 
1142                        ADM9240_SYSCTL_IN2, VALUE(2), 2 },
1143    { SENSORS_DS1780_IN3_MAX, "5V_max", SENSORS_DS1780_IN3, 
1144                        SENSORS_DS1780_IN3, SENSORS_MODE_RW, 
1145                        ADM9240_SYSCTL_IN3, VALUE(2), 2 },
1146    { SENSORS_DS1780_IN4_MAX, "12V_max", SENSORS_DS1780_IN4, 
1147                        SENSORS_DS1780_IN4, SENSORS_MODE_RW,
1148                        ADM9240_SYSCTL_IN4, VALUE(2), 2 },
1149    { SENSORS_DS1780_IN5_MAX, "Vccp2_max", SENSORS_DS1780_IN5, 
1150                        SENSORS_DS1780_IN5, SENSORS_MODE_RW, 
1151                        ADM9240_SYSCTL_IN5, VALUE(2), 2 },
1152    { SENSORS_DS1780_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1153                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN1, VALUE(2), 0 },
1154    { SENSORS_DS1780_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1155                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN2, VALUE(2), 0 },
1156    { SENSORS_DS1780_FAN1_MIN, "fan1_min", SENSORS_DS1780_FAN1,
1157                        SENSORS_DS1780_FAN1, SENSORS_MODE_RW, 
1158                        ADM9240_SYSCTL_FAN1, VALUE(1), 0 },
1159    { SENSORS_DS1780_FAN2_MIN, "fan2_min", SENSORS_DS1780_FAN2, 
1160                        SENSORS_DS1780_FAN2, SENSORS_MODE_RW, 
1161                        ADM9240_SYSCTL_FAN2, VALUE(1), 0 },
1162    { SENSORS_DS1780_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1163                         SENSORS_MODE_R, ADM9240_SYSCTL_TEMP, VALUE(3), 1 },
1164    { SENSORS_DS1780_TEMP_HYST, "temp_hyst", SENSORS_DS1780_TEMP,
1165                         SENSORS_DS1780_TEMP, SENSORS_MODE_RW, 
1166                         ADM9240_SYSCTL_TEMP, VALUE(2), 1 },
1167    { SENSORS_DS1780_TEMP_OVER, "temp_over", SENSORS_DS1780_TEMP,
1168                         SENSORS_DS1780_TEMP, SENSORS_MODE_RW, 
1169                         ADM9240_SYSCTL_TEMP, VALUE(1), 1 },
1170
1171    { SENSORS_DS1780_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1172                         SENSORS_MODE_R, ADM9240_SYSCTL_VID, VALUE(1), 2 },
1173    { SENSORS_DS1780_FAN1_DIV, "fan1_div", SENSORS_DS1780_FAN1, 
1174                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1175                         ADM9240_SYSCTL_FAN_DIV, VALUE(1), 0 },
1176    { SENSORS_DS1780_FAN2_DIV, "fan2_div", SENSORS_DS1780_FAN2, 
1177                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1178                         ADM9240_SYSCTL_FAN_DIV, VALUE(2), 0 },
1179    { SENSORS_DS1780_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1180                         SENSORS_MODE_R, ADM9240_SYSCTL_ALARMS, VALUE(1), 0 },
1181    { SENSORS_DS1780_ANALOG_OUT, "analog_out", SENSORS_NO_MAPPING,
1182                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1183                         ADM9240_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1184    { 0 }
1185  };
1186
1187static sensors_chip_feature sis5595_features[] =
1188  { 
1189    { SENSORS_SIS5595_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1190                        SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
1191    { SENSORS_SIS5595_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1192                        SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
1193    { SENSORS_SIS5595_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1194                        SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
1195    { SENSORS_SIS5595_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1196                        SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
1197    { SENSORS_SIS5595_IN0_MIN, "in0_min", SENSORS_SIS5595_IN0, SENSORS_SIS5595_IN0,
1198                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
1199    { SENSORS_SIS5595_IN1_MIN, "in1_min", SENSORS_SIS5595_IN1, SENSORS_SIS5595_IN1,
1200                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
1201    { SENSORS_SIS5595_IN2_MIN, "in2_min", SENSORS_SIS5595_IN2, SENSORS_SIS5595_IN2,
1202                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
1203    { SENSORS_SIS5595_IN3_MIN, "in3_min", SENSORS_SIS5595_IN3, SENSORS_SIS5595_IN3,
1204                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
1205    { SENSORS_SIS5595_IN0_MAX, "in0_max", SENSORS_SIS5595_IN0, SENSORS_SIS5595_IN0,
1206                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
1207    { SENSORS_SIS5595_IN1_MAX, "in1_max", SENSORS_SIS5595_IN1, SENSORS_SIS5595_IN1,
1208                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
1209    { SENSORS_SIS5595_IN2_MAX, "in2_max", SENSORS_SIS5595_IN2, SENSORS_SIS5595_IN2,
1210                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
1211    { SENSORS_SIS5595_IN3_MAX, "in3_max", SENSORS_SIS5595_IN3, SENSORS_SIS5595_IN3,
1212                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
1213    { SENSORS_SIS5595_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1214                         SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
1215    { SENSORS_SIS5595_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1216                         SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
1217    { SENSORS_SIS5595_FAN1_MIN, "fan1_min", SENSORS_SIS5595_FAN1, SENSORS_SIS5595_FAN1,
1218                             SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
1219    { SENSORS_SIS5595_FAN2_MIN, "fan2_min", SENSORS_SIS5595_FAN2, SENSORS_SIS5595_FAN2,
1220                             SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
1221    { SENSORS_SIS5595_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1222                         SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
1223    { SENSORS_SIS5595_TEMP_HYST, "temp_hyst", SENSORS_SIS5595_TEMP,
1224                              SENSORS_SIS5595_TEMP, SENSORS_MODE_RW, 
1225                              LM78_SYSCTL_TEMP, VALUE(2), 1 },
1226    { SENSORS_SIS5595_TEMP_OVER, "temp_over", SENSORS_SIS5595_TEMP,
1227                              SENSORS_SIS5595_TEMP, SENSORS_MODE_RW, 
1228                              LM78_SYSCTL_TEMP, VALUE(1), 1 },
1229    { SENSORS_SIS5595_FAN1_DIV, "fan1_div", SENSORS_SIS5595_FAN1, SENSORS_NO_MAPPING,
1230                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 
1231                             0 },
1232    { SENSORS_SIS5595_FAN2_DIV, "fan2_div", SENSORS_SIS5595_FAN2, SENSORS_NO_MAPPING,
1233                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 
1234                             0 },
1235    { SENSORS_SIS5595_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1236                           SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
1237    { 0 }
1238  };
1239
1240static sensors_chip_feature maxi_cg_features[] =
1241  { 
1242    { SENSORS_MAXI_CG_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1243                         SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(3), 0 },
1244    { SENSORS_MAXI_CG_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1245                         SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(3), 0 },
1246    { SENSORS_MAXI_CG_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1247                         SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(3), 0 },
1248    { SENSORS_MAXI_CG_FAN1_MIN, "fan1_min", SENSORS_MAXI_CG_FAN1, SENSORS_MAXI_CG_FAN1,
1249                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN1, VALUE(1), 0 },
1250    { SENSORS_MAXI_CG_FAN2_MIN, "fan2_min", SENSORS_MAXI_CG_FAN2, SENSORS_MAXI_CG_FAN2,
1251                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN2, VALUE(1), 0 },
1252    { SENSORS_MAXI_CG_FAN3_MIN, "fan3_min", SENSORS_MAXI_CG_FAN3, SENSORS_MAXI_CG_FAN3,
1253                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN3, VALUE(1), 0 },
1254    { SENSORS_MAXI_CG_FAN1_DIV, "fan1_div", SENSORS_MAXI_CG_FAN1, SENSORS_NO_MAPPING,
1255                             SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(2), 0 },
1256    { SENSORS_MAXI_CG_FAN2_DIV, "fan2_div", SENSORS_MAXI_CG_FAN2, SENSORS_NO_MAPPING,
1257                             SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(2), 0 },
1258    { SENSORS_MAXI_CG_FAN3_DIV, "fan3_div", SENSORS_MAXI_CG_FAN3, SENSORS_NO_MAPPING,
1259                             SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(2), 0 },
1260    { SENSORS_MAXI_CG_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1261                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP1, VALUE(3), 1 },
1262    { SENSORS_MAXI_CG_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1263                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP2, VALUE(3), 1 },
1264    { SENSORS_MAXI_CG_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1265                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP3, VALUE(3), 1 },
1266    { SENSORS_MAXI_CG_TEMP4, "temp4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1267                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP4, VALUE(3), 1 },
1268    { SENSORS_MAXI_CG_TEMP5, "temp5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1269                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP5, VALUE(3), 1 },
1270    { SENSORS_MAXI_CG_TEMP1_MAX, "temp1_max", SENSORS_MAXI_CG_TEMP1,
1271                              SENSORS_MAXI_CG_TEMP1, SENSORS_MODE_R, 
1272                              MAXI_SYSCTL_TEMP1, VALUE(1), 1 },
1273    { SENSORS_MAXI_CG_TEMP2_MAX, "temp2_max", SENSORS_MAXI_CG_TEMP2,
1274                              SENSORS_MAXI_CG_TEMP2, SENSORS_MODE_R, 
1275                              MAXI_SYSCTL_TEMP2, VALUE(1), 1 },
1276    { SENSORS_MAXI_CG_TEMP3_MAX, "temp3_max", SENSORS_MAXI_CG_TEMP3,
1277                              SENSORS_MAXI_CG_TEMP3, SENSORS_MODE_R, 
1278                              MAXI_SYSCTL_TEMP3, VALUE(1), 1 },
1279    { SENSORS_MAXI_CG_TEMP4_MAX, "temp4_max", SENSORS_MAXI_CG_TEMP4,
1280                              SENSORS_MAXI_CG_TEMP4, SENSORS_MODE_R, 
1281                              MAXI_SYSCTL_TEMP4, VALUE(1), 1 },
1282    { SENSORS_MAXI_CG_TEMP5_MAX, "temp5_max", SENSORS_MAXI_CG_TEMP5,
1283                              SENSORS_MAXI_CG_TEMP5, SENSORS_MODE_R, 
1284                              MAXI_SYSCTL_TEMP5, VALUE(1), 1 },
1285    { SENSORS_MAXI_CG_TEMP1_HYST, "temp1_hyst", SENSORS_MAXI_CG_TEMP1,
1286                              SENSORS_MAXI_CG_TEMP1, SENSORS_MODE_R, 
1287                              MAXI_SYSCTL_TEMP1, VALUE(2), 1 },
1288    { SENSORS_MAXI_CG_TEMP2_HYST, "temp2_hyst", SENSORS_MAXI_CG_TEMP2,
1289                              SENSORS_MAXI_CG_TEMP2, SENSORS_MODE_R, 
1290                              MAXI_SYSCTL_TEMP2, VALUE(2), 1 },
1291    { SENSORS_MAXI_CG_TEMP3_HYST, "temp3_hyst", SENSORS_MAXI_CG_TEMP3,
1292                              SENSORS_MAXI_CG_TEMP3, SENSORS_MODE_R, 
1293                              MAXI_SYSCTL_TEMP3, VALUE(2), 1 },
1294    { SENSORS_MAXI_CG_TEMP4_HYST, "temp4_hyst", SENSORS_MAXI_CG_TEMP4,
1295                              SENSORS_MAXI_CG_TEMP4, SENSORS_MODE_R, 
1296                              MAXI_SYSCTL_TEMP4, VALUE(2), 1 },
1297    { SENSORS_MAXI_CG_TEMP5_HYST, "temp5_hyst", SENSORS_MAXI_CG_TEMP5,
1298                              SENSORS_MAXI_CG_TEMP5, SENSORS_MODE_R, 
1299                              MAXI_SYSCTL_TEMP5, VALUE(2), 1 },
1300    { SENSORS_MAXI_CG_PLL, "pll", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1301                        SENSORS_MODE_R, MAXI_SYSCTL_PLL, VALUE(3), 2 },
1302    { SENSORS_MAXI_CG_PLL_MIN, "pll_min", SENSORS_MAXI_CG_PLL, SENSORS_MAXI_CG_PLL,
1303                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(1), 2 },
1304    { SENSORS_MAXI_CG_PLL_MAX, "pll_max", SENSORS_MAXI_CG_PLL, SENSORS_MAXI_CG_PLL,
1305                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(2), 2 },
1306    { SENSORS_MAXI_CG_VID1, "vid1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1307                         SENSORS_MODE_R, MAXI_SYSCTL_VID1, VALUE(3), 4 },
1308    { SENSORS_MAXI_CG_VID2, "vid2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1309                         SENSORS_MODE_R, MAXI_SYSCTL_VID2, VALUE(3), 4 },
1310    { SENSORS_MAXI_CG_VID3, "vid3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1311                         SENSORS_MODE_R, MAXI_SYSCTL_VID3, VALUE(3), 4 },
1312    { SENSORS_MAXI_CG_VID4, "vid4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1313                         SENSORS_MODE_R, MAXI_SYSCTL_VID4, VALUE(3), 4 },
1314    { SENSORS_MAXI_CG_VID1_MIN, "vid1_min", SENSORS_MAXI_CG_VID1, SENSORS_MAXI_CG_VID1,
1315                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(1), 4 },
1316    { SENSORS_MAXI_CG_VID2_MIN, "vid2_min", SENSORS_MAXI_CG_VID2, SENSORS_MAXI_CG_VID2,
1317                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(1), 4 },
1318    { SENSORS_MAXI_CG_VID3_MIN, "vid3_min", SENSORS_MAXI_CG_VID3, SENSORS_MAXI_CG_VID3,
1319                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(1), 4 },
1320    { SENSORS_MAXI_CG_VID4_MIN, "vid4_min", SENSORS_MAXI_CG_VID4, SENSORS_MAXI_CG_VID4,
1321                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(1), 4 },
1322    { SENSORS_MAXI_CG_VID1_MAX, "vid1_max", SENSORS_MAXI_CG_VID1, SENSORS_MAXI_CG_VID1,
1323                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(2), 4 },
1324    { SENSORS_MAXI_CG_VID2_MAX, "vid2_max", SENSORS_MAXI_CG_VID2, SENSORS_MAXI_CG_VID2,
1325                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(2), 4 },
1326    { SENSORS_MAXI_CG_VID3_MAX, "vid3_max", SENSORS_MAXI_CG_VID3, SENSORS_MAXI_CG_VID3,
1327                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(2), 4 },
1328    { SENSORS_MAXI_CG_VID4_MAX, "vid4_max", SENSORS_MAXI_CG_VID4, SENSORS_MAXI_CG_VID4,
1329                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(2), 4 },
1330    { SENSORS_MAXI_CG_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1331                           SENSORS_MODE_R, MAXI_SYSCTL_ALARMS, VALUE(1), 0 },
1332    { 0 }
1333  };
1334
1335static sensors_chip_feature maxi_co_features[] =
1336  { 
1337    { SENSORS_MAXI_CO_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1338                         SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(3), 0 },
1339    { SENSORS_MAXI_CO_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1340                         SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(3), 0 },
1341    { SENSORS_MAXI_CO_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1342                         SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(3), 0 },
1343    { SENSORS_MAXI_CO_FAN1_MIN, "fan1_min", SENSORS_MAXI_CO_FAN1, SENSORS_MAXI_CO_FAN1,
1344                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN1, VALUE(1), 0 },
1345    { SENSORS_MAXI_CO_FAN2_MIN, "fan2_min", SENSORS_MAXI_CO_FAN2, SENSORS_MAXI_CO_FAN2,
1346                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN2, VALUE(1), 0 },
1347    { SENSORS_MAXI_CO_FAN3_MIN, "fan3_min", SENSORS_MAXI_CO_FAN3, SENSORS_MAXI_CO_FAN3,
1348                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN3, VALUE(1), 0 },
1349    { SENSORS_MAXI_CO_FAN1_DIV, "fan1_div", SENSORS_MAXI_CO_FAN1, SENSORS_NO_MAPPING,
1350                             SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(2), 0 },
1351    { SENSORS_MAXI_CO_FAN2_DIV, "fan2_div", SENSORS_MAXI_CO_FAN2, SENSORS_NO_MAPPING,
1352                             SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(2), 0 },
1353    { SENSORS_MAXI_CO_FAN3_DIV, "fan3_div", SENSORS_MAXI_CO_FAN3, SENSORS_NO_MAPPING,
1354                             SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(2), 0 },
1355    { SENSORS_MAXI_CO_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1356                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP1, VALUE(3), 1 },
1357    { SENSORS_MAXI_CO_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1358                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP2, VALUE(3), 1 },
1359    { SENSORS_MAXI_CO_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1360                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP3, VALUE(3), 1 },
1361    { SENSORS_MAXI_CO_TEMP4, "temp4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1362                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP4, VALUE(3), 1 },
1363    { SENSORS_MAXI_CO_TEMP5, "temp5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1364                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP5, VALUE(3), 1 },
1365    { SENSORS_MAXI_CO_TEMP1_MAX, "temp1_max", SENSORS_MAXI_CO_TEMP1,
1366                              SENSORS_MAXI_CO_TEMP1, SENSORS_MODE_R, 
1367                              MAXI_SYSCTL_TEMP1, VALUE(1), 1 },
1368    { SENSORS_MAXI_CO_TEMP2_MAX, "temp2_max", SENSORS_MAXI_CO_TEMP2,
1369                              SENSORS_MAXI_CO_TEMP2, SENSORS_MODE_R, 
1370                              MAXI_SYSCTL_TEMP2, VALUE(1), 1 },
1371    { SENSORS_MAXI_CO_TEMP3_MAX, "temp3_max", SENSORS_MAXI_CO_TEMP3,
1372                              SENSORS_MAXI_CO_TEMP3, SENSORS_MODE_R, 
1373                              MAXI_SYSCTL_TEMP3, VALUE(1), 1 },
1374    { SENSORS_MAXI_CO_TEMP4_MAX, "temp4_max", SENSORS_MAXI_CO_TEMP4,
1375                              SENSORS_MAXI_CO_TEMP4, SENSORS_MODE_R, 
1376                              MAXI_SYSCTL_TEMP4, VALUE(1), 1 },
1377    { SENSORS_MAXI_CO_TEMP5_MAX, "temp5_max", SENSORS_MAXI_CO_TEMP5,
1378                              SENSORS_MAXI_CO_TEMP5, SENSORS_MODE_R, 
1379                              MAXI_SYSCTL_TEMP5, VALUE(1), 1 },
1380    { SENSORS_MAXI_CO_TEMP1_HYST, "temp1_hyst", SENSORS_MAXI_CO_TEMP1,
1381                              SENSORS_MAXI_CO_TEMP1, SENSORS_MODE_R, 
1382                              MAXI_SYSCTL_TEMP1, VALUE(2), 1 },
1383    { SENSORS_MAXI_CO_TEMP2_HYST, "temp2_hyst", SENSORS_MAXI_CO_TEMP2,
1384                              SENSORS_MAXI_CO_TEMP2, SENSORS_MODE_R, 
1385                              MAXI_SYSCTL_TEMP2, VALUE(2), 1 },
1386    { SENSORS_MAXI_CO_TEMP3_HYST, "temp3_hyst", SENSORS_MAXI_CO_TEMP3,
1387                              SENSORS_MAXI_CO_TEMP3, SENSORS_MODE_R, 
1388                              MAXI_SYSCTL_TEMP3, VALUE(2), 1 },
1389    { SENSORS_MAXI_CO_TEMP4_HYST, "temp4_hyst", SENSORS_MAXI_CO_TEMP4,
1390                              SENSORS_MAXI_CO_TEMP4, SENSORS_MODE_R, 
1391                              MAXI_SYSCTL_TEMP4, VALUE(2), 1 },
1392    { SENSORS_MAXI_CO_TEMP5_HYST, "temp5_hyst", SENSORS_MAXI_CO_TEMP5,
1393                              SENSORS_MAXI_CO_TEMP5, SENSORS_MODE_R, 
1394                              MAXI_SYSCTL_TEMP5, VALUE(2), 1 },
1395    { SENSORS_MAXI_CO_PLL, "pll", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1396                        SENSORS_MODE_R, MAXI_SYSCTL_PLL, VALUE(3), 2 },
1397    { SENSORS_MAXI_CO_PLL_MIN, "pll_min", SENSORS_MAXI_CO_PLL, SENSORS_MAXI_CO_PLL,
1398                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(1), 2 },
1399    { SENSORS_MAXI_CO_PLL_MAX, "pll_max", SENSORS_MAXI_CO_PLL, SENSORS_MAXI_CO_PLL,
1400                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(2), 2 },
1401    { SENSORS_MAXI_CO_VID1, "vid1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1402                         SENSORS_MODE_R, MAXI_SYSCTL_VID1, VALUE(3), 4 },
1403    { SENSORS_MAXI_CO_VID2, "vid2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1404                         SENSORS_MODE_R, MAXI_SYSCTL_VID2, VALUE(3), 4 },
1405    { SENSORS_MAXI_CO_VID3, "vid3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1406                         SENSORS_MODE_R, MAXI_SYSCTL_VID3, VALUE(3), 4 },
1407    { SENSORS_MAXI_CO_VID4, "vid4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1408                         SENSORS_MODE_R, MAXI_SYSCTL_VID4, VALUE(3), 4 },
1409    { SENSORS_MAXI_CO_VID1_MIN, "vid1_min", SENSORS_MAXI_CO_VID1, SENSORS_MAXI_CO_VID1,
1410                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(1), 4 },
1411    { SENSORS_MAXI_CO_VID2_MIN, "vid2_min", SENSORS_MAXI_CO_VID2, SENSORS_MAXI_CO_VID2,
1412                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(1), 4 },
1413    { SENSORS_MAXI_CO_VID3_MIN, "vid3_min", SENSORS_MAXI_CO_VID3, SENSORS_MAXI_CO_VID3,
1414                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(1), 4 },
1415    { SENSORS_MAXI_CO_VID4_MIN, "vid4_min", SENSORS_MAXI_CO_VID4, SENSORS_MAXI_CO_VID4,
1416                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(1), 4 },
1417    { SENSORS_MAXI_CO_VID1_MAX, "vid1_max", SENSORS_MAXI_CO_VID1, SENSORS_MAXI_CO_VID1,
1418                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(2), 4 },
1419    { SENSORS_MAXI_CO_VID2_MAX, "vid2_max", SENSORS_MAXI_CO_VID2, SENSORS_MAXI_CO_VID2,
1420                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(2), 4 },
1421    { SENSORS_MAXI_CG_VID3_MAX, "vid3_max", SENSORS_MAXI_CO_VID3, SENSORS_MAXI_CO_VID3,
1422                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(2), 4 },
1423    { SENSORS_MAXI_CO_VID4_MAX, "vid4_max", SENSORS_MAXI_CO_VID4, SENSORS_MAXI_CG_VID4,
1424                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(2), 4 },
1425    { SENSORS_MAXI_CO_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1426                           SENSORS_MODE_R, MAXI_SYSCTL_ALARMS, VALUE(1), 0 },
1427    { 0 }
1428  };
1429
1430static sensors_chip_feature maxi_as_features[] =
1431  { 
1432    { SENSORS_MAXI_AS_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1433                         SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(3), 0 },
1434    { SENSORS_MAXI_AS_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1435                         SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(3), 0 },
1436    { SENSORS_MAXI_AS_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1437                         SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(3), 0 },
1438    { SENSORS_MAXI_AS_FAN1_MIN, "fan1_min", SENSORS_MAXI_AS_FAN1, SENSORS_MAXI_AS_FAN1,
1439                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN1, VALUE(1), 0 },
1440    { SENSORS_MAXI_AS_FAN2_MIN, "fan2_min", SENSORS_MAXI_AS_FAN2, SENSORS_MAXI_AS_FAN2,
1441                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN2, VALUE(1), 0 },
1442    { SENSORS_MAXI_AS_FAN3_MIN, "fan3_min", SENSORS_MAXI_AS_FAN3, SENSORS_MAXI_AS_FAN3,
1443                             SENSORS_MODE_RW, MAXI_SYSCTL_FAN3, VALUE(1), 0 },
1444    { SENSORS_MAXI_AS_FAN1_DIV, "fan1_div", SENSORS_MAXI_AS_FAN1, SENSORS_NO_MAPPING,
1445                             SENSORS_MODE_R, MAXI_SYSCTL_FAN1, VALUE(2), 0 },
1446    { SENSORS_MAXI_AS_FAN2_DIV, "fan2_div", SENSORS_MAXI_AS_FAN2, SENSORS_NO_MAPPING,
1447                             SENSORS_MODE_R, MAXI_SYSCTL_FAN2, VALUE(2), 0 },
1448    { SENSORS_MAXI_AS_FAN3_DIV, "fan3_div", SENSORS_MAXI_AS_FAN3, SENSORS_NO_MAPPING,
1449                             SENSORS_MODE_R, MAXI_SYSCTL_FAN3, VALUE(2), 0 },
1450    { SENSORS_MAXI_AS_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1451                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP1, VALUE(3), 1 },
1452    { SENSORS_MAXI_AS_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1453                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP2, VALUE(3), 1 },
1454    { SENSORS_MAXI_AS_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1455                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP3, VALUE(3), 1 },
1456    { SENSORS_MAXI_AS_TEMP4, "temp4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1457                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP4, VALUE(3), 1 },
1458    { SENSORS_MAXI_AS_TEMP5, "temp5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1459                          SENSORS_MODE_R, MAXI_SYSCTL_TEMP5, VALUE(3), 1 },
1460    { SENSORS_MAXI_AS_TEMP1_MAX, "temp1_max", SENSORS_MAXI_AS_TEMP1,
1461                              SENSORS_MAXI_AS_TEMP1, SENSORS_MODE_R, 
1462                              MAXI_SYSCTL_TEMP1, VALUE(1), 1 },
1463    { SENSORS_MAXI_AS_TEMP2_MAX, "temp2_max", SENSORS_MAXI_AS_TEMP2,
1464                              SENSORS_MAXI_AS_TEMP2, SENSORS_MODE_R, 
1465                              MAXI_SYSCTL_TEMP2, VALUE(1), 1 },
1466    { SENSORS_MAXI_AS_TEMP3_MAX, "temp3_max", SENSORS_MAXI_AS_TEMP3,
1467                              SENSORS_MAXI_AS_TEMP3, SENSORS_MODE_R, 
1468                              MAXI_SYSCTL_TEMP3, VALUE(1), 1 },
1469    { SENSORS_MAXI_AS_TEMP4_MAX, "temp4_max", SENSORS_MAXI_AS_TEMP4,
1470                              SENSORS_MAXI_AS_TEMP4, SENSORS_MODE_R, 
1471                              MAXI_SYSCTL_TEMP4, VALUE(1), 1 },
1472    { SENSORS_MAXI_AS_TEMP5_MAX, "temp5_max", SENSORS_MAXI_AS_TEMP5,
1473                              SENSORS_MAXI_AS_TEMP5, SENSORS_MODE_R, 
1474                              MAXI_SYSCTL_TEMP5, VALUE(1), 1 },
1475    { SENSORS_MAXI_AS_TEMP1_HYST, "temp1_hyst", SENSORS_MAXI_AS_TEMP1,
1476                              SENSORS_MAXI_AS_TEMP1, SENSORS_MODE_R, 
1477                              MAXI_SYSCTL_TEMP1, VALUE(2), 1 },
1478    { SENSORS_MAXI_AS_TEMP2_HYST, "temp2_hyst", SENSORS_MAXI_AS_TEMP2,
1479                              SENSORS_MAXI_AS_TEMP2, SENSORS_MODE_R, 
1480                              MAXI_SYSCTL_TEMP2, VALUE(2), 1 },
1481    { SENSORS_MAXI_AS_TEMP3_HYST, "temp3_hyst", SENSORS_MAXI_AS_TEMP3,
1482                              SENSORS_MAXI_AS_TEMP3, SENSORS_MODE_R, 
1483                              MAXI_SYSCTL_TEMP3, VALUE(2), 1 },
1484    { SENSORS_MAXI_AS_TEMP4_HYST, "temp4_hyst", SENSORS_MAXI_AS_TEMP4,
1485                              SENSORS_MAXI_AS_TEMP4, SENSORS_MODE_R, 
1486                              MAXI_SYSCTL_TEMP4, VALUE(2), 1 },
1487    { SENSORS_MAXI_AS_TEMP5_HYST, "temp5_hyst", SENSORS_MAXI_AS_TEMP5,
1488                              SENSORS_MAXI_AS_TEMP5, SENSORS_MODE_R, 
1489                              MAXI_SYSCTL_TEMP5, VALUE(2), 1 },
1490    { SENSORS_MAXI_AS_PLL, "pll", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1491                        SENSORS_MODE_R, MAXI_SYSCTL_PLL, VALUE(3), 2 },
1492    { SENSORS_MAXI_AS_PLL_MIN, "pll_min", SENSORS_MAXI_AS_PLL, SENSORS_MAXI_AS_PLL,
1493                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(1), 2 },
1494    { SENSORS_MAXI_AS_PLL_MAX, "pll_max", SENSORS_MAXI_AS_PLL, SENSORS_MAXI_AS_PLL,
1495                            SENSORS_MODE_RW, MAXI_SYSCTL_PLL, VALUE(2), 2 },
1496    { SENSORS_MAXI_AS_VID1, "vid1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1497                         SENSORS_MODE_R, MAXI_SYSCTL_VID1, VALUE(3), 4 },
1498    { SENSORS_MAXI_AS_VID2, "vid2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1499                         SENSORS_MODE_R, MAXI_SYSCTL_VID2, VALUE(3), 4 },
1500    { SENSORS_MAXI_AS_VID3, "vid3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1501                         SENSORS_MODE_R, MAXI_SYSCTL_VID3, VALUE(3), 4 },
1502    { SENSORS_MAXI_AS_VID4, "vid4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1503                         SENSORS_MODE_R, MAXI_SYSCTL_VID4, VALUE(3), 4 },
1504    { SENSORS_MAXI_AS_VID1_MIN, "vid1_min", SENSORS_MAXI_AS_VID1, SENSORS_MAXI_AS_VID1,
1505                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(1), 4 },
1506    { SENSORS_MAXI_AS_VID2_MIN, "vid2_min", SENSORS_MAXI_AS_VID2, SENSORS_MAXI_AS_VID2,
1507                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(1), 4 },
1508    { SENSORS_MAXI_AS_VID3_MIN, "vid3_min", SENSORS_MAXI_AS_VID3, SENSORS_MAXI_AS_VID3,
1509                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(1), 4 },
1510    { SENSORS_MAXI_AS_VID4_MIN, "vid4_min", SENSORS_MAXI_AS_VID4, SENSORS_MAXI_AS_VID4,
1511                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(1), 4 },
1512    { SENSORS_MAXI_AS_VID1_MAX, "vid1_max", SENSORS_MAXI_AS_VID1, SENSORS_MAXI_AS_VID1,
1513                             SENSORS_MODE_RW, MAXI_SYSCTL_VID1, VALUE(2), 4 },
1514    { SENSORS_MAXI_AS_VID2_MAX, "vid2_max", SENSORS_MAXI_AS_VID2, SENSORS_MAXI_AS_VID2,
1515                             SENSORS_MODE_RW, MAXI_SYSCTL_VID2, VALUE(2), 4 },
1516    { SENSORS_MAXI_AS_VID3_MAX, "vid3_max", SENSORS_MAXI_AS_VID3, SENSORS_MAXI_AS_VID3,
1517                             SENSORS_MODE_RW, MAXI_SYSCTL_VID3, VALUE(2), 4 },
1518    { SENSORS_MAXI_AS_VID4_MAX, "vid4_max", SENSORS_MAXI_AS_VID4, SENSORS_MAXI_CG_VID4,
1519                             SENSORS_MODE_RW, MAXI_SYSCTL_VID4, VALUE(2), 4 },
1520    { SENSORS_MAXI_AS_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1521                           SENSORS_MODE_R, MAXI_SYSCTL_ALARMS, VALUE(1), 0 },
1522    { 0 }
1523  };
1524
1525static sensors_chip_feature thmc50_features[] =
1526  {
1527    { SENSORS_THMC50_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1528                              SENSORS_MODE_R, THMC50_SYSCTL_TEMP, VALUE(3), 
1529                              0 },
1530    { SENSORS_THMC50_TEMP_HYST, "temp_hyst", SENSORS_THMC50_TEMP,
1531                              SENSORS_THMC50_TEMP, SENSORS_MODE_RW, 
1532                              THMC50_SYSCTL_TEMP, VALUE(2), 0 },
1533    { SENSORS_THMC50_TEMP_OVER, "temp_over", SENSORS_THMC50_TEMP,
1534                              SENSORS_THMC50_TEMP, SENSORS_MODE_RW,
1535                              THMC50_SYSCTL_TEMP, VALUE(1), 0 },
1536    { SENSORS_THMC50_REMOTE_TEMP, "remote_temp", SENSORS_NO_MAPPING, 
1537                              SENSORS_NO_MAPPING, SENSORS_MODE_R, 
1538                              THMC50_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
1539    { SENSORS_THMC50_REMOTE_TEMP_HYST, "remote_temp_hyst", 
1540                              SENSORS_THMC50_REMOTE_TEMP,
1541                              SENSORS_THMC50_REMOTE_TEMP, SENSORS_MODE_RW, 
1542                              THMC50_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
1543    { SENSORS_THMC50_REMOTE_TEMP_OVER, "remote_temp_over", 
1544                              SENSORS_THMC50_REMOTE_TEMP,
1545                              SENSORS_THMC50_REMOTE_TEMP, SENSORS_MODE_RW,
1546                              THMC50_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
1547    { SENSORS_THMC50_INTER_MASK, "analog output", SENSORS_NO_MAPPING,
1548                              SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1549                              THMC50_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1550    { SENSORS_THMC50_INTER, "interrupts", SENSORS_NO_MAPPING,
1551                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
1552                              THMC50_SYSCTL_INTER, VALUE(1), 0 },
1553    { SENSORS_THMC50_INTER_MASK, "interrupt mask", SENSORS_NO_MAPPING,
1554                              SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1555                              THMC50_SYSCTL_INTER_MASK, VALUE(1), 0 },
1556    { SENSORS_THMC50_DIE_CODE, "die_code", SENSORS_NO_MAPPING,
1557                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
1558                              THMC50_SYSCTL_DIE_CODE, VALUE(1), 0 },
1559    { 0 }
1560  };
1561
1562static sensors_chip_feature adm1025_features[] =
1563  { 
1564    { SENSORS_ADM1025_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1565                        SENSORS_MODE_R, ADM1025_SYSCTL_IN0, VALUE(3), 2 },
1566    { SENSORS_ADM1025_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1567                        SENSORS_MODE_R, ADM1025_SYSCTL_IN1, VALUE(3), 2 },
1568    { SENSORS_ADM1025_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1569                        SENSORS_MODE_R, ADM1025_SYSCTL_IN2, VALUE(3), 2 },
1570    { SENSORS_ADM1025_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1571                        SENSORS_MODE_R, ADM1025_SYSCTL_IN3, VALUE(3), 2 },
1572    { SENSORS_ADM1025_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1573                        SENSORS_MODE_R, ADM1025_SYSCTL_IN4, VALUE(3), 2 },
1574    { SENSORS_ADM1025_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1575                        SENSORS_MODE_R, ADM1025_SYSCTL_IN5, VALUE(3), 2 },
1576    { SENSORS_ADM1025_IN0_MIN, "in0_min", SENSORS_ADM1025_IN0, 
1577                        SENSORS_ADM1025_IN0, SENSORS_MODE_RW, 
1578                        ADM1025_SYSCTL_IN0, VALUE(1), 2 },
1579    { SENSORS_ADM1025_IN1_MIN, "in1_min", SENSORS_ADM1025_IN1, 
1580                        SENSORS_ADM1025_IN1, SENSORS_MODE_RW, 
1581                        ADM1025_SYSCTL_IN1, VALUE(1), 2 },
1582    { SENSORS_ADM1025_IN2_MIN, "in2_min", SENSORS_ADM1025_IN2, 
1583                        SENSORS_ADM1025_IN2, SENSORS_MODE_RW, 
1584                        ADM1025_SYSCTL_IN2, VALUE(1), 2 },
1585    { SENSORS_ADM1025_IN3_MIN, "in3_min", SENSORS_ADM1025_IN3, 
1586                        SENSORS_ADM1025_IN3, SENSORS_MODE_RW, 
1587                        ADM1025_SYSCTL_IN3, VALUE(1), 2 },
1588    { SENSORS_ADM1025_IN4_MIN, "in4_min", SENSORS_ADM1025_IN4, 
1589                        SENSORS_ADM1025_IN4, SENSORS_MODE_RW, 
1590                        ADM1025_SYSCTL_IN4, VALUE(1), 2 },
1591    { SENSORS_ADM1025_IN5_MIN, "in5_min", SENSORS_ADM1025_IN5, 
1592                        SENSORS_ADM1025_IN5, SENSORS_MODE_RW, 
1593                        ADM1025_SYSCTL_IN5, VALUE(1), 2 },
1594    { SENSORS_ADM1025_IN0_MAX, "in0_max", SENSORS_ADM1025_IN0, 
1595                        SENSORS_ADM1025_IN0, SENSORS_MODE_RW,
1596                        ADM1025_SYSCTL_IN0, VALUE(2), 2 },
1597    { SENSORS_ADM1025_IN1_MAX, "in1_max", SENSORS_ADM1025_IN1, 
1598                        SENSORS_ADM1025_IN1, SENSORS_MODE_RW, 
1599                        ADM1025_SYSCTL_IN1, VALUE(2), 2 },
1600    { SENSORS_ADM1025_IN2_MAX, "in2_max", SENSORS_ADM1025_IN2, 
1601                        SENSORS_ADM1025_IN2, SENSORS_MODE_RW, 
1602                        ADM1025_SYSCTL_IN2, VALUE(2), 2 },
1603    { SENSORS_ADM1025_IN3_MAX, "in3_max", SENSORS_ADM1025_IN3, 
1604                        SENSORS_ADM1025_IN3, SENSORS_MODE_RW, 
1605                        ADM1025_SYSCTL_IN3, VALUE(2), 2 },
1606    { SENSORS_ADM1025_IN4_MAX, "in4_max", SENSORS_ADM1025_IN4, 
1607                        SENSORS_ADM1025_IN4, SENSORS_MODE_RW,
1608                        ADM1025_SYSCTL_IN4, VALUE(2), 2 },
1609    { SENSORS_ADM1025_IN5_MAX, "in5_max", SENSORS_ADM1025_IN5, 
1610                        SENSORS_ADM1025_IN5, SENSORS_MODE_RW, 
1611                        ADM1025_SYSCTL_IN5, VALUE(2), 2 },
1612    { SENSORS_ADM1025_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1613                         SENSORS_MODE_R, ADM1025_SYSCTL_TEMP, VALUE(3), 1 },
1614    { SENSORS_ADM1025_TEMP1_HYST, "temp1_hyst", SENSORS_ADM1025_TEMP1,
1615                         SENSORS_ADM1025_TEMP1, SENSORS_MODE_RW, 
1616                         ADM1025_SYSCTL_TEMP, VALUE(2), 1 },
1617    { SENSORS_ADM1025_TEMP1_OVER, "temp1_over", SENSORS_ADM1025_TEMP1,
1618                         SENSORS_ADM1025_TEMP1, SENSORS_MODE_RW, 
1619                         ADM1025_SYSCTL_TEMP, VALUE(1), 1 },
1620    { SENSORS_ADM1025_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1621                         SENSORS_MODE_R, ADM1025_SYSCTL_RTEMP, VALUE(3), 1 },
1622    { SENSORS_ADM1025_TEMP2_HYST, "temp2_hyst", SENSORS_ADM1025_TEMP2,
1623                         SENSORS_ADM1025_TEMP2, SENSORS_MODE_RW, 
1624                         ADM1025_SYSCTL_RTEMP, VALUE(2), 1 },
1625    { SENSORS_ADM1025_TEMP2_OVER, "temp2_over", SENSORS_ADM1025_TEMP2,
1626                         SENSORS_ADM1025_TEMP2, SENSORS_MODE_RW, 
1627                         ADM1025_SYSCTL_RTEMP, VALUE(1), 1 },
1628    { SENSORS_ADM1025_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1629                         SENSORS_MODE_R, ADM1025_SYSCTL_VID, VALUE(1), 2 },
1630    { SENSORS_ADM1025_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1631                         SENSORS_MODE_R, ADM1025_SYSCTL_ALARMS, VALUE(1), 0 },
1632    { 0 }
1633  };
1634 
1635static sensors_chip_feature via686a_features[] =
1636  { 
1637    { SENSORS_VIA686A_IN0, "2.0V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1638                        SENSORS_MODE_R, VIA686A_SYSCTL_IN0, VALUE(3), 2 },
1639    { SENSORS_VIA686A_IN1, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1640                        SENSORS_MODE_R, VIA686A_SYSCTL_IN1, VALUE(3), 2 },
1641    { SENSORS_VIA686A_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1642                        SENSORS_MODE_R, VIA686A_SYSCTL_IN2, VALUE(3), 2 },
1643    { SENSORS_VIA686A_IN3, "5.0V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1644                        SENSORS_MODE_R, VIA686A_SYSCTL_IN3, VALUE(3), 2 },
1645    { SENSORS_VIA686A_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1646                        SENSORS_MODE_R, VIA686A_SYSCTL_IN4, VALUE(3), 2 },
1647    { SENSORS_VIA686A_IN0_MIN, "in0_min", SENSORS_VIA686A_IN0,
1648                            SENSORS_VIA686A_IN0,
1649                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN0, VALUE(1), 2 },
1650    { SENSORS_VIA686A_IN1_MIN, "in1_min", SENSORS_VIA686A_IN1,
1651                            SENSORS_VIA686A_IN1,
1652                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN1, VALUE(1), 2 },
1653    { SENSORS_VIA686A_IN2_MIN, "in2_min", SENSORS_VIA686A_IN2,
1654                            SENSORS_VIA686A_IN2,
1655                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN2, VALUE(1), 2 },
1656    { SENSORS_VIA686A_IN3_MIN, "in3_min", SENSORS_VIA686A_IN3,
1657                            SENSORS_VIA686A_IN3,
1658                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN3, VALUE(1), 2 },
1659    { SENSORS_VIA686A_IN4_MIN, "in4_min", SENSORS_VIA686A_IN4,
1660                            SENSORS_VIA686A_IN4,
1661                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN4, VALUE(1), 2 },
1662    { SENSORS_VIA686A_IN0_MAX, "in0_max", SENSORS_VIA686A_IN0,
1663                            SENSORS_VIA686A_IN0,
1664                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN0, VALUE(2), 2 },
1665    { SENSORS_VIA686A_IN1_MAX, "in1_max", SENSORS_VIA686A_IN1,
1666                            SENSORS_VIA686A_IN1,
1667                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN1, VALUE(2), 2 },
1668    { SENSORS_VIA686A_IN2_MAX, "in2_max", SENSORS_VIA686A_IN2,
1669                            SENSORS_VIA686A_IN2,
1670                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN2, VALUE(2), 2 },
1671    { SENSORS_VIA686A_IN3_MAX, "in3_max", SENSORS_VIA686A_IN3,
1672                            SENSORS_VIA686A_IN3,
1673                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN3, VALUE(2), 2 },
1674    { SENSORS_VIA686A_IN4_MAX, "in4_max", SENSORS_VIA686A_IN4,
1675                            SENSORS_VIA686A_IN4,
1676                            SENSORS_MODE_RW, VIA686A_SYSCTL_IN4, VALUE(2), 2 },
1677    { SENSORS_VIA686A_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1678                         SENSORS_MODE_R, VIA686A_SYSCTL_FAN1, VALUE(2), 0 },
1679    { SENSORS_VIA686A_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1680                         SENSORS_MODE_R, VIA686A_SYSCTL_FAN2, VALUE(2), 0 },
1681    { SENSORS_VIA686A_FAN1_MIN, "fan1_min", SENSORS_VIA686A_FAN1,
1682                             SENSORS_VIA686A_FAN1,
1683                             SENSORS_MODE_RW, VIA686A_SYSCTL_FAN1, VALUE(1), 0 },
1684    { SENSORS_VIA686A_FAN2_MIN, "fan2_min", SENSORS_VIA686A_FAN2,
1685                             SENSORS_VIA686A_FAN2,
1686                             SENSORS_MODE_RW, VIA686A_SYSCTL_FAN2, VALUE(1), 0 },
1687    { SENSORS_VIA686A_TEMP, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1688                         SENSORS_MODE_R, VIA686A_SYSCTL_TEMP, VALUE(3), 1 },
1689    { SENSORS_VIA686A_TEMP_HYST, "temp1_hyst", SENSORS_VIA686A_TEMP,
1690                              SENSORS_VIA686A_TEMP, SENSORS_MODE_RW, 
1691                              VIA686A_SYSCTL_TEMP, VALUE(2), 1 },
1692    { SENSORS_VIA686A_TEMP_OVER, "temp1_over", SENSORS_VIA686A_TEMP,
1693                              SENSORS_VIA686A_TEMP, SENSORS_MODE_RW, 
1694                              VIA686A_SYSCTL_TEMP, VALUE(1), 1 },
1695    { SENSORS_VIA686A_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1696                         SENSORS_MODE_R, VIA686A_SYSCTL_TEMP2, VALUE(3), 1 },
1697    { SENSORS_VIA686A_TEMP2_HYST, "temp2_hyst", SENSORS_VIA686A_TEMP2,
1698                              SENSORS_VIA686A_TEMP2, SENSORS_MODE_RW, 
1699                              VIA686A_SYSCTL_TEMP2, VALUE(2), 1 },
1700    { SENSORS_VIA686A_TEMP2_OVER, "temp2_over", SENSORS_VIA686A_TEMP2,
1701                              SENSORS_VIA686A_TEMP2, SENSORS_MODE_RW, 
1702                              VIA686A_SYSCTL_TEMP2, VALUE(1), 1 },
1703    { SENSORS_VIA686A_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1704                         SENSORS_MODE_R, VIA686A_SYSCTL_TEMP3, VALUE(3), 1 },
1705    { SENSORS_VIA686A_TEMP3_HYST, "temp3_hyst", SENSORS_VIA686A_TEMP3,
1706                              SENSORS_VIA686A_TEMP3, SENSORS_MODE_RW, 
1707                              VIA686A_SYSCTL_TEMP3, VALUE(2), 1 },
1708    { SENSORS_VIA686A_TEMP3_OVER, "temp3_over", SENSORS_VIA686A_TEMP3,
1709                              SENSORS_VIA686A_TEMP3, SENSORS_MODE_RW, 
1710                              VIA686A_SYSCTL_TEMP3, VALUE(1), 1 },
1711    { SENSORS_VIA686A_FAN1_DIV, "fan1_div", SENSORS_VIA686A_FAN1,
1712                             SENSORS_NO_MAPPING,
1713                             SENSORS_MODE_RW, VIA686A_SYSCTL_FAN_DIV, VALUE(1), 
1714                             0 },
1715    { SENSORS_VIA686A_FAN2_DIV, "fan2_div", SENSORS_VIA686A_FAN2,
1716                             SENSORS_NO_MAPPING,
1717                             SENSORS_MODE_RW, VIA686A_SYSCTL_FAN_DIV, VALUE(2), 
1718                             0 },
1719    { SENSORS_VIA686A_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1720                           SENSORS_MODE_R, VIA686A_SYSCTL_ALARMS, VALUE(1), 0 },
1721    { 0 }
1722  };
1723
1724static sensors_chip_feature ddcmon_features[] =
1725  {
1726    { SENSORS_DDCMON_ID, "Monitor ID",
1727                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1728                         SENSORS_MODE_R, DDCMON_SYSCTL_ID, VALUE(1), 0 },
1729    { SENSORS_DDCMON_VERSIZE, "Monitor Size (cm)",
1730                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1731                         SENSORS_MODE_R, DDCMON_SYSCTL_SIZE, VALUE(1), 0 },
1732    { SENSORS_DDCMON_HORSIZE, "hsize",
1733                         SENSORS_DDCMON_VERSIZE, SENSORS_NO_MAPPING,
1734                         SENSORS_MODE_R, DDCMON_SYSCTL_SIZE, VALUE(2), 0 },
1735    { SENSORS_DDCMON_VERSYNCMIN, "Vertical Sync (Hz)",
1736                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1737                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(1), 0 },
1738    { SENSORS_DDCMON_VERSYNCMAX, "v_sync_max",
1739                         SENSORS_DDCMON_VERSYNCMIN, SENSORS_NO_MAPPING,
1740                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(2), 0 },
1741    { SENSORS_DDCMON_HORSYNCMIN, "Horizontal Sync (KHz)",
1742                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1743                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(3), 0 },
1744    { SENSORS_DDCMON_HORSYNCMAX, "h_sync_max",
1745                         SENSORS_DDCMON_HORSYNCMIN, SENSORS_NO_MAPPING,
1746                         SENSORS_MODE_R, DDCMON_SYSCTL_SYNC, VALUE(4), 0 },
1747    { SENSORS_DDCMON_TIMINGS, "timings",
1748                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1749                         SENSORS_MODE_R, DDCMON_SYSCTL_TIMINGS, VALUE(1), 0 },
1750    { SENSORS_DDCMON_SERIAL, "Serial number",
1751                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1752                         SENSORS_MODE_R, DDCMON_SYSCTL_SERIAL, VALUE(1), 0 },
1753    { 0 }
1754  };
1755
1756static sensors_chip_feature eeprom_features[] =
1757  {
1758    { SENSORS_EEPROM_TYPE, "Memory type",
1759                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1760                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(3), 0 },
1761/* cheat and use the row-address-bits label for the total size in sensors */
1762    { SENSORS_EEPROM_ROWADDR, "SDRAM Size (MB)",
1763                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1764                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(4), 0 },
1765    { SENSORS_EEPROM_COLADDR, "col",
1766                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1767                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(5), 0 },
1768    { SENSORS_EEPROM_NUMROWS, "num rows",
1769                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1770                         SENSORS_MODE_R, EEPROM_SYSCTL1, VALUE(6), 0 },
1771    { SENSORS_EEPROM_BANKS, "banks",
1772                         SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1773                         SENSORS_MODE_R, EEPROM_SYSCTL2, VALUE(2), 0 },
1774    { 0 }
1775  };
1776
1777static sensors_chip_feature lm87_features[] =
1778  { 
1779    { SENSORS_LM87_IN0, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1780                        SENSORS_MODE_R, LM87_SYSCTL_IN0, VALUE(2), 2 },
1781    { SENSORS_LM87_IN1, "Vccp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1782                        SENSORS_MODE_R, LM87_SYSCTL_IN1, VALUE(3), 2 },
1783    { SENSORS_LM87_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1784                        SENSORS_MODE_R, LM87_SYSCTL_IN2, VALUE(3), 2 },
1785    { SENSORS_LM87_IN3, "5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1786                        SENSORS_MODE_R, LM87_SYSCTL_IN3, VALUE(3), 2 },
1787    { SENSORS_LM87_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1788                        SENSORS_MODE_R, LM87_SYSCTL_IN4, VALUE(3), 2 },
1789    { SENSORS_LM87_IN5, "Vccp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1790                        SENSORS_MODE_R, LM87_SYSCTL_IN5, VALUE(3), 2 },
1791    { SENSORS_LM87_IN0_MIN, "AmbTemp_min", SENSORS_LM87_IN0, 
1792                        SENSORS_LM87_IN0, SENSORS_MODE_RW, 
1793                        LM87_SYSCTL_IN0, VALUE(1), 2 },
1794    { SENSORS_LM87_IN1_MIN, "Vccp1_min", SENSORS_LM87_IN1, 
1795                        SENSORS_LM87_IN1, SENSORS_MODE_RW, 
1796                        LM87_SYSCTL_IN1, VALUE(1), 2 },
1797    { SENSORS_LM87_IN2_MIN, "3.3V_min", SENSORS_LM87_IN2, 
1798                        SENSORS_LM87_IN2, SENSORS_MODE_RW, 
1799                        LM87_SYSCTL_IN2, VALUE(1), 2 },
1800    { SENSORS_LM87_IN3_MIN, "5V_min", SENSORS_LM87_IN3, 
1801                        SENSORS_LM87_IN3, SENSORS_MODE_RW, 
1802                        LM87_SYSCTL_IN3, VALUE(1), 2 },
1803    { SENSORS_LM87_IN4_MIN, "12V_min", SENSORS_LM87_IN4, 
1804                        SENSORS_LM87_IN4, SENSORS_MODE_RW, 
1805                        LM87_SYSCTL_IN4, VALUE(1), 2 },
1806    { SENSORS_LM87_IN5_MIN, "Vccp2_min", SENSORS_LM87_IN5, 
1807                        SENSORS_LM87_IN5, SENSORS_MODE_RW, 
1808                        LM87_SYSCTL_IN5, VALUE(1), 2 },
1809    { SENSORS_LM87_IN0_MAX, "AmbTemp_max", SENSORS_LM87_IN0, 
1810                        SENSORS_LM87_IN0, SENSORS_MODE_RW,
1811                        LM87_SYSCTL_IN0, VALUE(2), 2 },
1812    { SENSORS_LM87_IN1_MAX, "Vccp1_max", SENSORS_LM87_IN1, 
1813                        SENSORS_LM87_IN1, SENSORS_MODE_RW, 
1814                        LM87_SYSCTL_IN1, VALUE(2), 2 },
1815    { SENSORS_LM87_IN2_MAX, "3.3V_max", SENSORS_LM87_IN2, 
1816                        SENSORS_LM87_IN2, SENSORS_MODE_RW, 
1817                        LM87_SYSCTL_IN2, VALUE(2), 2 },
1818    { SENSORS_LM87_IN3_MAX, "5V_max", SENSORS_LM87_IN3, 
1819                        SENSORS_LM87_IN3, SENSORS_MODE_RW, 
1820                        LM87_SYSCTL_IN3, VALUE(2), 2 },
1821    { SENSORS_LM87_IN4_MAX, "12V_max", SENSORS_LM87_IN4, 
1822                        SENSORS_LM87_IN4, SENSORS_MODE_RW,
1823                        LM87_SYSCTL_IN4, VALUE(2), 2 },
1824    { SENSORS_LM87_IN5_MAX, "Vccp2_max", SENSORS_LM87_IN5, 
1825                        SENSORS_LM87_IN5, SENSORS_MODE_RW, 
1826                        LM87_SYSCTL_IN5, VALUE(2), 2 },
1827    { SENSORS_LM87_FAN2_AIN2, "fan", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1828                        SENSORS_MODE_R, LM87_SYSCTL_FAN, VALUE(2), 0 },
1829    { SENSORS_LM87_FAN1_AIN1_LIMIT, "fan1/ain1_limit", SENSORS_LM87_FAN1_AIN1,
1830                        SENSORS_LM87_FAN1_AIN1, SENSORS_MODE_RW, 
1831                        LM87_SYSCTL_FAN, VALUE(1), 0 },
1832    { SENSORS_LM87_FAN2_AIN2_LIMIT, "fan2/ain2_limit", SENSORS_LM87_FAN2_AIN2, 
1833                        SENSORS_LM87_FAN2_AIN2, SENSORS_MODE_RW, 
1834                        LM87_SYSCTL_FAN, VALUE(1), 0 },
1835    { SENSORS_LM87_FRONT_TEMP, "frnt_amb_temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1836                         SENSORS_MODE_R, LM87_SYSCTL_FRNT_TEMP, VALUE(3), 1 },
1837    { SENSORS_LM87_CPU_TEMP, "CPU_Temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1838                        SENSORS_MODE_R, LM87_SYSCTL_CPU_TEMP, VALUE(3), 1 },
1839    { SENSORS_LM87_INT_TEMP, "int_temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1840                         SENSORS_MODE_R, LM87_SYSCTL_INT_TEMP, VALUE(3), 1 },
1841    { SENSORS_LM87_INT_TEMP_HYST, "temp_hyst", SENSORS_LM87_INT_TEMP,
1842                         SENSORS_LM87_INT_TEMP, SENSORS_MODE_RW, 
1843                         LM87_SYSCTL_INT_TEMP, VALUE(2), 1 },
1844    { SENSORS_LM87_INT_TEMP_OVER, "temp_over", SENSORS_LM87_INT_TEMP,
1845                         SENSORS_LM87_INT_TEMP, SENSORS_MODE_RW, 
1846                         LM87_SYSCTL_INT_TEMP, VALUE(1), 1 },
1847    { SENSORS_LM87_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1848                         SENSORS_MODE_R, LM87_SYSCTL_VID, VALUE(1), 2 },
1849    { SENSORS_LM87_FAN_DIV, "fan_div", SENSORS_LM87_FAN2_AIN2, 
1850                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1851                         LM87_SYSCTL_FAN_DIV, VALUE(1), 0 },
1852    { SENSORS_LM87_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1853                         SENSORS_MODE_R, LM87_SYSCTL_ALARMS, VALUE(1), 0 },
1854    { SENSORS_LM87_ANALOG_OUT, "analog_out", SENSORS_NO_MAPPING,
1855                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
1856                         LM87_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
1857    { 0 }
1858  };
1859
1860static sensors_chip_feature mtp008_features[] =
1861  { 
1862    { SENSORS_MTP008_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1863                        SENSORS_MODE_R, MTP008_SYSCTL_IN0, VALUE(3), 2 },
1864    { SENSORS_MTP008_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1865                        SENSORS_MODE_R, MTP008_SYSCTL_IN1, VALUE(3), 2 },
1866    { SENSORS_MTP008_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1867                        SENSORS_MODE_R, MTP008_SYSCTL_IN2, VALUE(3), 2 },
1868    { SENSORS_MTP008_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1869                        SENSORS_MODE_R, MTP008_SYSCTL_IN3, VALUE(3), 2 },
1870    { SENSORS_MTP008_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1871                        SENSORS_MODE_R, MTP008_SYSCTL_IN4, VALUE(3), 2 },
1872    { SENSORS_MTP008_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1873                        SENSORS_MODE_R, MTP008_SYSCTL_IN5, VALUE(3), 2 },
1874    { SENSORS_MTP008_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1875                        SENSORS_MODE_R, MTP008_SYSCTL_IN6, VALUE(3), 2 },
1876    { SENSORS_MTP008_IN0_MIN, "in0_min", SENSORS_MTP008_IN0, 
1877                        SENSORS_MTP008_IN0, SENSORS_MODE_RW, 
1878                        MTP008_SYSCTL_IN0, VALUE(1), 2 },
1879    { SENSORS_MTP008_IN1_MIN, "in1_min", SENSORS_MTP008_IN1, 
1880                        SENSORS_MTP008_IN1, SENSORS_MODE_RW, 
1881                        MTP008_SYSCTL_IN1, VALUE(1), 2 },
1882    { SENSORS_MTP008_IN2_MIN, "in2_min", SENSORS_MTP008_IN2, 
1883                        SENSORS_MTP008_IN2, SENSORS_MODE_RW, 
1884                        MTP008_SYSCTL_IN2, VALUE(1), 2 },
1885    { SENSORS_MTP008_IN3_MIN, "in3_min", SENSORS_MTP008_IN3, 
1886                        SENSORS_MTP008_IN3, SENSORS_MODE_RW, 
1887                        MTP008_SYSCTL_IN3, VALUE(1), 2 },
1888    { SENSORS_MTP008_IN4_MIN, "in4_min", SENSORS_MTP008_IN4, 
1889                        SENSORS_MTP008_IN4, SENSORS_MODE_RW, 
1890                        MTP008_SYSCTL_IN4, VALUE(1), 2 },
1891    { SENSORS_MTP008_IN5_MIN, "in5_min", SENSORS_MTP008_IN5, 
1892                        SENSORS_MTP008_IN5, SENSORS_MODE_RW, 
1893                        MTP008_SYSCTL_IN5, VALUE(1), 2 },
1894    { SENSORS_MTP008_IN6_MIN, "in6_min", SENSORS_MTP008_IN6, 
1895                        SENSORS_MTP008_IN6, SENSORS_MODE_RW, 
1896                        MTP008_SYSCTL_IN6, VALUE(1), 2 },
1897    { SENSORS_MTP008_IN0_MAX, "in0_max", SENSORS_MTP008_IN0, 
1898                        SENSORS_MTP008_IN0, SENSORS_MODE_RW,
1899                        MTP008_SYSCTL_IN0, VALUE(2), 2 },
1900    { SENSORS_MTP008_IN1_MAX, "in1_max", SENSORS_MTP008_IN1, 
1901                        SENSORS_MTP008_IN1, SENSORS_MODE_RW, 
1902                        MTP008_SYSCTL_IN1, VALUE(2), 2 },
1903    { SENSORS_MTP008_IN2_MAX, "in2_max", SENSORS_MTP008_IN2, 
1904                        SENSORS_MTP008_IN2, SENSORS_MODE_RW, 
1905                        MTP008_SYSCTL_IN2, VALUE(2), 2 },
1906    { SENSORS_MTP008_IN3_MAX, "in3_max", SENSORS_MTP008_IN3, 
1907                        SENSORS_MTP008_IN3, SENSORS_MODE_RW, 
1908                        MTP008_SYSCTL_IN3, VALUE(2), 2 },
1909    { SENSORS_MTP008_IN4_MAX, "in4_max", SENSORS_MTP008_IN4, 
1910                        SENSORS_MTP008_IN4, SENSORS_MODE_RW,
1911                        MTP008_SYSCTL_IN4, VALUE(2), 2 },
1912    { SENSORS_MTP008_IN5_MAX, "in5_max", SENSORS_MTP008_IN5, 
1913                        SENSORS_MTP008_IN5, SENSORS_MODE_RW, 
1914                        MTP008_SYSCTL_IN5, VALUE(2), 2 },
1915    { SENSORS_MTP008_IN6_MAX, "in6_max", SENSORS_MTP008_IN6, 
1916                        SENSORS_MTP008_IN6, SENSORS_MODE_RW, 
1917                        MTP008_SYSCTL_IN6, VALUE(2), 2 },
1918    { SENSORS_MTP008_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1919                        SENSORS_MODE_R, MTP008_SYSCTL_FAN1, VALUE(2), 0 },
1920    { SENSORS_MTP008_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1921                        SENSORS_MODE_R, MTP008_SYSCTL_FAN2, VALUE(2), 0 },
1922    { SENSORS_MTP008_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1923                        SENSORS_MODE_R, MTP008_SYSCTL_FAN3, VALUE(2), 0 },
1924    { SENSORS_MTP008_FAN1_MIN, "fan1_limit", SENSORS_MTP008_FAN1,
1925                        SENSORS_MTP008_FAN1, SENSORS_MODE_RW, 
1926                        MTP008_SYSCTL_FAN1, VALUE(1), 0 },
1927    { SENSORS_MTP008_FAN2_MIN, "fan2_limit", SENSORS_MTP008_FAN2, 
1928                        SENSORS_MTP008_FAN2, SENSORS_MODE_RW, 
1929                        MTP008_SYSCTL_FAN2, VALUE(1), 0 },
1930    { SENSORS_MTP008_FAN3_MIN, "fan3_limit", SENSORS_MTP008_FAN3, 
1931                        SENSORS_MTP008_FAN3, SENSORS_MODE_RW, 
1932                        MTP008_SYSCTL_FAN3, VALUE(1), 0 },
1933    { SENSORS_MTP008_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1934                        SENSORS_MODE_R, MTP008_SYSCTL_TEMP1, VALUE(3), 1 },
1935    { SENSORS_MTP008_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1936                        SENSORS_MODE_R, MTP008_SYSCTL_TEMP2, VALUE(3), 1 },
1937    { SENSORS_MTP008_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1938                        SENSORS_MODE_R, MTP008_SYSCTL_TEMP3, VALUE(3), 1 },
1939    { SENSORS_MTP008_TEMP1_OVER, "temp1_over", SENSORS_MTP008_TEMP1,
1940                        SENSORS_MTP008_TEMP1, SENSORS_MODE_RW,
1941                        MTP008_SYSCTL_TEMP1, VALUE(1), 1 },
1942    { SENSORS_MTP008_TEMP2_OVER, "temp2_over", SENSORS_MTP008_TEMP2,
1943                        SENSORS_MTP008_TEMP2, SENSORS_MODE_RW,
1944                        MTP008_SYSCTL_TEMP2, VALUE(1), 1 },
1945    { SENSORS_MTP008_TEMP3_OVER, "temp3_over", SENSORS_MTP008_TEMP3,
1946                        SENSORS_MTP008_TEMP3, SENSORS_MODE_RW,
1947                        MTP008_SYSCTL_TEMP3, VALUE(1), 1 },
1948    { SENSORS_MTP008_TEMP1_HYST, "temp1_hyst", SENSORS_MTP008_TEMP1,
1949                        SENSORS_MTP008_TEMP1, SENSORS_MODE_RW,
1950                        MTP008_SYSCTL_TEMP1, VALUE(2), 1 },
1951    { SENSORS_MTP008_TEMP2_HYST, "temp2_hyst", SENSORS_MTP008_TEMP2,
1952                        SENSORS_MTP008_TEMP2, SENSORS_MODE_RW,
1953                        MTP008_SYSCTL_TEMP2, VALUE(2), 1 },
1954    { SENSORS_MTP008_TEMP3_HYST, "temp3_hyst", SENSORS_MTP008_TEMP3,
1955                        SENSORS_MTP008_TEMP3, SENSORS_MODE_RW,
1956                        MTP008_SYSCTL_TEMP3, VALUE(2), 1 },
1957    { SENSORS_MTP008_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1958                         SENSORS_MODE_R, MTP008_SYSCTL_VID, VALUE(1), 2 },
1959    { SENSORS_MTP008_FAN1_DIV, "fan1_div", SENSORS_NO_MAPPING, 
1960                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1961                         MTP008_SYSCTL_FAN_DIV, VALUE(1), 0 },
1962    { SENSORS_MTP008_FAN2_DIV, "fan2_div", SENSORS_NO_MAPPING, 
1963                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1964                         MTP008_SYSCTL_FAN_DIV, VALUE(2), 0 },
1965    { SENSORS_MTP008_FAN3_DIV, "fan3_div", SENSORS_NO_MAPPING, 
1966                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
1967                         MTP008_SYSCTL_FAN_DIV, VALUE(3), 0 },
1968    { SENSORS_MTP008_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1969                         SENSORS_MODE_R, MTP008_SYSCTL_ALARMS, VALUE(1), 0 },
1970    { SENSORS_MTP008_BEEP, "beeps", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
1971                         SENSORS_MODE_R, MTP008_SYSCTL_BEEP, VALUE(1), 0 },
1972    { 0 }
1973  };
1974
1975static sensors_chip_feature ds1621_features[] =
1976  {
1977    { SENSORS_DS1621_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1978                         SENSORS_MODE_R, DS1621_SYSCTL_TEMP, VALUE(3), 1 },
1979    { SENSORS_DS1621_TEMP_HYST, "temp_hyst", SENSORS_DS1621_TEMP,
1980                              SENSORS_DS1621_TEMP, SENSORS_MODE_RW, 
1981                              DS1621_SYSCTL_TEMP, VALUE(2), 1 },
1982    { SENSORS_DS1621_TEMP_OVER, "temp_over", SENSORS_DS1621_TEMP,
1983                              SENSORS_DS1621_TEMP, SENSORS_MODE_RW, 
1984                              DS1621_SYSCTL_TEMP, VALUE(1), 1 },
1985    { SENSORS_DS1621_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
1986                           SENSORS_MODE_R, DS1621_SYSCTL_ALARMS, VALUE(1), 0 },
1987    { 0 }
1988  };
1989
1990sensors_chip_features sensors_chip_features_list[] =
1991{
1992 { SENSORS_LM78_PREFIX, lm78_features },
1993 { SENSORS_LM78J_PREFIX, lm78j_features },
1994 { SENSORS_LM79_PREFIX, lm79_features },
1995 { SENSORS_LM75_PREFIX, lm75_features },
1996 { SENSORS_GL518_PREFIX, gl518_features },
1997 { SENSORS_GL520_PREFIX, gl520_features },
1998 { SENSORS_LM80_PREFIX, lm80_features },
1999 { SENSORS_W83781D_PREFIX, w83781d_features },
2000 { SENSORS_W83782D_PREFIX, w83782d_features },
2001 { SENSORS_W83783S_PREFIX, w83783s_features },
2002                /* Cheat on 83627HF for now - no separate #defines */
2003 { SENSORS_W83627HF_PREFIX, w83782d_features },
2004                /* Cheat on 991627HF for now - no separate #defines */
2005 { SENSORS_AS99127F_PREFIX, w83782d_features },
2006 { SENSORS_ADM9240_PREFIX, adm9240_features },
2007                /* Cheat on LM81 for now - no separate #defines */
2008 { SENSORS_LM81_PREFIX, adm9240_features },
2009 { SENSORS_DS1780_PREFIX, ds1780_features },
2010 { SENSORS_ADM1021_PREFIX, adm1021_features },
2011 { SENSORS_MAX1617_PREFIX, max1617_features },
2012 { SENSORS_MAX1617A_PREFIX, max1617a_features },
2013                /* Cheat on LM84 for now - no separate #defines */
2014 { SENSORS_LM84_PREFIX, adm1021_features },
2015                /* Cheat on GL523 for now - no separate #defines */
2016 { SENSORS_GL523_PREFIX, adm1021_features },
2017                /* Cheat on THMC10 for now - no separate #defines */
2018 { SENSORS_THMC10_PREFIX, adm1021_features },
2019 { SENSORS_SIS5595_PREFIX, sis5595_features },
2020 { SENSORS_MAXI_CG_PREFIX, maxi_cg_features },
2021 { SENSORS_MAXI_CO_PREFIX, maxi_co_features },
2022 { SENSORS_MAXI_AS_PREFIX, maxi_as_features },
2023 { SENSORS_THMC50_PREFIX, thmc50_features },
2024                /* Cheat on ADM1022 for now - no separate #defines */
2025 { SENSORS_ADM1022_PREFIX, thmc50_features },
2026 { SENSORS_ADM1025_PREFIX, adm1025_features },
2027 { SENSORS_VIA686A_PREFIX, via686a_features },
2028 { SENSORS_DDCMON_PREFIX, ddcmon_features },
2029 { SENSORS_EEPROM_PREFIX, eeprom_features },
2030 { SENSORS_LM87_PREFIX, lm87_features },
2031 { SENSORS_MTP008_PREFIX, mtp008_features },
2032 { SENSORS_DS1621_PREFIX, ds1621_features },
2033 { 0 }
2034};
Note: See TracBrowser for help on using the browser.