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

Revision 1458, 178.3 KB (checked in by mds, 11 years ago)

change vrm permissions to r/w. Uncovered by fix to access.c.

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