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

Revision 176, 47.9 KB (checked in by phil, 14 years ago)

(Phil) Made slight adjustments so the new file arrangement will build.
I added two new make file 'includes': busses/Module.mk and chips/Module.mk
Frodo- You may want to review the makefile structure to make sure that
the system works as you intended.

Note: The docs still need to be updated to reflect the new file arrangement,
but at least it builds!

  • 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  Frodo Looijaard <frodol@dds.nl>
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 2 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18*/
19
20#include "chips.h"
21#include "data.h"
22#include "sensors.h"
23#include "kernel/include/sensors.h"
24
25/* For each chip, a list of features;
26   For each feature, the number, its name, the logical mapping (for example,
27   fan1_div belongs to fan1), the compute mapping, an access field, the
28   SYSCTL id of the /proc field, the value location of the /proc field,
29   and the magnitude.
30   The access field  indicates whether resources are readable and writable.
31   Sometimes, a resource is neither; in this case, it is just a catch-all
32   category, for mappings.
33   The value location is the byte-offset where this value can be found in
34   the sysctl buffer.
35   The magnitude is the 10-power through which the read value must be
36   divided. */
37
38
39#define VALUE(x) (x-1) * sizeof(long)
40
41static sensors_chip_feature lm78_features[] =
42  { 
43    { SENSORS_LM78_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
44                        SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
45    { SENSORS_LM78_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
46                        SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
47    { SENSORS_LM78_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
48                        SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
49    { SENSORS_LM78_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
50                        SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
51    { SENSORS_LM78_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
52                        SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
53    { SENSORS_LM78_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
54                        SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
55    { SENSORS_LM78_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
56                        SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
57    { SENSORS_LM78_IN0_MIN, "in0_min", SENSORS_LM78_IN0, SENSORS_LM78_IN0,
58                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
59    { SENSORS_LM78_IN1_MIN, "in1_min", SENSORS_LM78_IN1, SENSORS_LM78_IN1,
60                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
61    { SENSORS_LM78_IN2_MIN, "in2_min", SENSORS_LM78_IN2, SENSORS_LM78_IN2,
62                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
63    { SENSORS_LM78_IN3_MIN, "in3_min", SENSORS_LM78_IN3, SENSORS_LM78_IN3,
64                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
65    { SENSORS_LM78_IN4_MIN, "in4_min", SENSORS_LM78_IN4, SENSORS_LM78_IN4,
66                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
67    { SENSORS_LM78_IN5_MIN, "in5_min", SENSORS_LM78_IN5, SENSORS_LM78_IN5,
68                            SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
69    { SENSORS_LM78_IN6_MIN, "in6_min", SENSORS_LM78_IN6, SENSORS_LM78_IN6,
70                            SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
71    { SENSORS_LM78_IN0_MAX, "in0_max", SENSORS_LM78_IN0, SENSORS_LM78_IN0,
72                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
73    { SENSORS_LM78_IN1_MAX, "in1_max", SENSORS_LM78_IN1, SENSORS_LM78_IN1,
74                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
75    { SENSORS_LM78_IN2_MAX, "in2_max", SENSORS_LM78_IN2, SENSORS_LM78_IN2,
76                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
77    { SENSORS_LM78_IN3_MAX, "in3_max", SENSORS_LM78_IN3, SENSORS_LM78_IN3,
78                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
79    { SENSORS_LM78_IN4_MAX, "in4_max", SENSORS_LM78_IN4, SENSORS_LM78_IN4,
80                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
81    { SENSORS_LM78_IN5_MAX, "in5_max", SENSORS_LM78_IN5, SENSORS_LM78_IN5,
82                            SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
83    { SENSORS_LM78_IN6_MAX, "in6_max", SENSORS_LM78_IN6, SENSORS_LM78_IN6,
84                            SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
85    { SENSORS_LM78_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
86                         SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
87    { SENSORS_LM78_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
88                         SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
89    { SENSORS_LM78_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
90                         SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
91    { SENSORS_LM78_FAN1_MIN, "fan1_min", SENSORS_LM78_FAN1, SENSORS_NO_MAPPING,
92                             SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
93    { SENSORS_LM78_FAN2_MIN, "fan2_min", SENSORS_LM78_FAN2, SENSORS_NO_MAPPING,
94                             SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
95    { SENSORS_LM78_FAN3_MIN, "fan3_min", SENSORS_LM78_FAN3, SENSORS_NO_MAPPING,
96                             SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
97    { SENSORS_LM78_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
98                         SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
99    { SENSORS_LM78_TEMP_HYST, "temp_hyst", SENSORS_LM78_TEMP,
100                              SENSORS_LM78_TEMP, SENSORS_MODE_RW, 
101                              LM78_SYSCTL_TEMP, VALUE(2), 1 },
102    { SENSORS_LM78_TEMP_OVER, "temp_over", SENSORS_LM78_TEMP,
103                              SENSORS_LM78_TEMP, SENSORS_MODE_RW, 
104                              LM78_SYSCTL_TEMP, VALUE(1), 1 },
105    { SENSORS_LM78_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
106                        SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 },
107    { SENSORS_LM78_FAN1_DIV, "fan1_div", SENSORS_LM78_FAN1, SENSORS_NO_MAPPING,
108                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 
109                             0 },
110    { SENSORS_LM78_FAN2_DIV, "fan2_div", SENSORS_LM78_FAN2, SENSORS_NO_MAPPING,
111                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 
112                             0 },
113    { SENSORS_LM78_FAN3_DIV, "fan3_div", SENSORS_LM78_FAN3, SENSORS_NO_MAPPING,
114                              SENSORS_MODE_R, LM78_SYSCTL_FAN_DIV, VALUE(3), 
115                              0 },
116    { SENSORS_LM78_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
117                           SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
118    { 0 }
119  };
120
121static sensors_chip_feature lm78j_features[] =
122  { 
123    { SENSORS_LM78J_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
124                         SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
125    { SENSORS_LM78J_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
126                         SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
127    { SENSORS_LM78J_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
128                         SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
129    { SENSORS_LM78J_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
130                         SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
131    { SENSORS_LM78J_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
132                         SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
133    { SENSORS_LM78J_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
134                         SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
135    { SENSORS_LM78J_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
136                         SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
137    { SENSORS_LM78J_IN0_MIN, "in0_min", SENSORS_LM78J_IN0, SENSORS_LM78J_IN0,
138                             SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
139    { SENSORS_LM78J_IN1_MIN, "in1_min", SENSORS_LM78J_IN1, SENSORS_LM78J_IN1,
140                             SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
141    { SENSORS_LM78J_IN2_MIN, "in2_min", SENSORS_LM78J_IN2, SENSORS_LM78J_IN2,
142                             SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
143    { SENSORS_LM78J_IN3_MIN, "in3_min", SENSORS_LM78J_IN3, SENSORS_LM78J_IN3,
144                             SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
145    { SENSORS_LM78J_IN4_MIN, "in4_min", SENSORS_LM78J_IN4, SENSORS_LM78J_IN4,
146                             SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
147    { SENSORS_LM78J_IN5_MIN, "in5_min", SENSORS_LM78J_IN5, SENSORS_LM78J_IN5,
148                             SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
149    { SENSORS_LM78J_IN6_MIN, "in6_min", SENSORS_LM78J_IN6, SENSORS_LM78J_IN6,
150                             SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
151    { SENSORS_LM78J_IN0_MAX, "in0_max", SENSORS_LM78J_IN0, SENSORS_LM78J_IN0,
152                             SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
153    { SENSORS_LM78J_IN1_MAX, "in1_max", SENSORS_LM78J_IN1, SENSORS_LM78J_IN1,
154                             SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
155    { SENSORS_LM78J_IN2_MAX, "in2_max", SENSORS_LM78J_IN2, SENSORS_LM78J_IN2,
156                             SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
157    { SENSORS_LM78J_IN3_MAX, "in3_max", SENSORS_LM78J_IN3, SENSORS_LM78J_IN3,
158                             SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
159    { SENSORS_LM78J_IN4_MAX, "in4_max", SENSORS_LM78J_IN4, SENSORS_LM78J_IN4,
160                             SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
161    { SENSORS_LM78J_IN5_MAX, "in5_max", SENSORS_LM78J_IN5, SENSORS_LM78J_IN5,
162                             SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
163    { SENSORS_LM78J_IN6_MAX, "in6_max", SENSORS_LM78J_IN6, SENSORS_LM78J_IN6,
164                             SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
165    { SENSORS_LM78J_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
166                          SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
167    { SENSORS_LM78J_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
168                          SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
169    { SENSORS_LM78J_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
170                          SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
171    { SENSORS_LM78J_FAN1_MIN, "fan1_min", SENSORS_LM78J_FAN1,
172                              SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
173                              LM78_SYSCTL_FAN1, VALUE(1), 0 },
174    { SENSORS_LM78J_FAN2_MIN, "fan2_min", SENSORS_LM78J_FAN2,
175                              SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
176                              LM78_SYSCTL_FAN2, VALUE(1), 0 },
177    { SENSORS_LM78J_FAN3_MIN, "fan3_min", SENSORS_LM78J_FAN3,
178                              SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
179                              LM78_SYSCTL_FAN3, VALUE(1), 0 },
180    { SENSORS_LM78J_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
181                          SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
182    { SENSORS_LM78J_TEMP_HYST, "temp_hyst", SENSORS_LM78J_TEMP,
183                               SENSORS_LM78J_TEMP, SENSORS_MODE_RW, 
184                               LM78_SYSCTL_TEMP, VALUE(2), 1 },
185    { SENSORS_LM78J_TEMP_OVER, "temp_over", SENSORS_LM78J_TEMP,
186                               SENSORS_LM78J_TEMP, SENSORS_MODE_RW, 
187                               LM78_SYSCTL_TEMP, VALUE(1), 1 },
188    { SENSORS_LM78J_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
189                         SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 },
190    { SENSORS_LM78J_FAN1_DIV, "fan1_div", SENSORS_LM78J_FAN1,
191                              SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
192                              LM78_SYSCTL_FAN_DIV, VALUE(1), 0 },
193    { SENSORS_LM78J_FAN2_DIV, "fan2_div", SENSORS_LM78J_FAN2,
194                              SENSORS_NO_MAPPING, SENSORS_MODE_RW,
195                              LM78_SYSCTL_FAN_DIV, VALUE(2), 0 },
196    { SENSORS_LM78J_FAN3_DIV, "fan3_div", SENSORS_LM78J_FAN3,
197                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
198                              LM78_SYSCTL_FAN_DIV, VALUE(3), 0 },
199    { SENSORS_LM78J_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
200                            SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
201    { 0 }
202  };
203
204static sensors_chip_feature lm79_features[] =
205  { 
206    { SENSORS_LM79_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
207                        SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
208    { SENSORS_LM79_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
209                        SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
210    { SENSORS_LM79_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
211                        SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
212    { SENSORS_LM79_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
213                        SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
214    { SENSORS_LM79_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
215                        SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
216    { SENSORS_LM79_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
217                        SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
218    { SENSORS_LM79_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
219                        SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
220    { SENSORS_LM79_IN0_MIN, "in0_min", SENSORS_LM79_IN0, SENSORS_LM79_IN0,
221                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
222    { SENSORS_LM79_IN1_MIN, "in1_min", SENSORS_LM79_IN1, SENSORS_LM79_IN1,
223                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
224    { SENSORS_LM79_IN2_MIN, "in2_min", SENSORS_LM79_IN2, SENSORS_LM79_IN2,
225                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
226    { SENSORS_LM79_IN3_MIN, "in3_min", SENSORS_LM79_IN3, SENSORS_LM79_IN3,
227                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
228    { SENSORS_LM79_IN4_MIN, "in4_min", SENSORS_LM79_IN4, SENSORS_LM79_IN4,
229                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
230    { SENSORS_LM79_IN5_MIN, "in5_min", SENSORS_LM79_IN5, SENSORS_LM79_IN5,
231                            SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
232    { SENSORS_LM79_IN6_MIN, "in6_min", SENSORS_LM79_IN6, SENSORS_LM79_IN6,
233                            SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
234    { SENSORS_LM79_IN0_MAX, "in0_max", SENSORS_LM79_IN0, SENSORS_LM79_IN0,
235                            SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
236    { SENSORS_LM79_IN1_MAX, "in1_max", SENSORS_LM79_IN1, SENSORS_LM79_IN1,
237                            SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
238    { SENSORS_LM79_IN2_MAX, "in2_max", SENSORS_LM79_IN2, SENSORS_LM79_IN2,
239                            SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
240    { SENSORS_LM79_IN3_MAX, "in3_max", SENSORS_LM79_IN3, SENSORS_LM79_IN3,
241                            SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
242    { SENSORS_LM79_IN4_MAX, "in4_max", SENSORS_LM79_IN4, SENSORS_LM79_IN4,
243                            SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
244    { SENSORS_LM79_IN5_MAX, "in5_max", SENSORS_LM79_IN5, SENSORS_LM79_IN5,
245                            SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
246    { SENSORS_LM79_IN6_MAX, "in6_max", SENSORS_LM79_IN6, SENSORS_LM79_IN6,
247                            SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
248    { SENSORS_LM79_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
249                         SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
250    { SENSORS_LM79_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
251                         SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
252    { SENSORS_LM79_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
253                         SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
254    { SENSORS_LM79_FAN1_MIN, "fan1_min", SENSORS_LM79_FAN1, SENSORS_NO_MAPPING,
255                             SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
256    { SENSORS_LM79_FAN2_MIN, "fan2_min", SENSORS_LM79_FAN2, SENSORS_NO_MAPPING,
257                             SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
258    { SENSORS_LM79_FAN3_MIN, "fan3_min", SENSORS_LM79_FAN3, SENSORS_NO_MAPPING,
259                             SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
260    { SENSORS_LM79_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
261                         SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
262    { SENSORS_LM79_TEMP_HYST, "temp_hyst", SENSORS_LM79_TEMP,
263                              SENSORS_LM79_TEMP, SENSORS_MODE_RW, 
264                              LM78_SYSCTL_TEMP, VALUE(2), 1 },
265    { SENSORS_LM79_TEMP_OVER, "temp_over", SENSORS_LM79_TEMP,
266                              SENSORS_LM79_TEMP, SENSORS_MODE_RW, 
267                              LM78_SYSCTL_TEMP, VALUE(1), 1 },
268    { SENSORS_LM79_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
269                        SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 },
270    { SENSORS_LM79_FAN1_DIV, "fan1_div", SENSORS_LM79_FAN1, SENSORS_NO_MAPPING,
271                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 
272                             0 },
273    { SENSORS_LM79_FAN2_DIV, "fan2_div", SENSORS_LM79_FAN2, SENSORS_NO_MAPPING,
274                             SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 
275                             0 },
276    { SENSORS_LM79_FAN3_DIV, "fan3_div", SENSORS_LM79_FAN3, SENSORS_NO_MAPPING,
277                              SENSORS_MODE_R, LM78_SYSCTL_FAN_DIV, VALUE(3), 
278                              0 },
279    { SENSORS_LM79_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
280                           SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
281    { 0 }
282  };
283
284
285static sensors_chip_feature lm75_features[] =
286  {
287    { SENSORS_LM75_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
288                         SENSORS_MODE_R, LM75_SYSCTL_TEMP, VALUE(3), 1 },
289    { SENSORS_LM75_TEMP_HYST, "temp_hyst", SENSORS_LM75_TEMP,
290                              SENSORS_LM75_TEMP, SENSORS_MODE_RW, 
291                              LM75_SYSCTL_TEMP, VALUE(2), 1 },
292    { SENSORS_LM75_TEMP_OVER, "temp_over", SENSORS_LM75_TEMP,
293                              SENSORS_LM75_TEMP, SENSORS_MODE_RW, 
294                              LM75_SYSCTL_TEMP, VALUE(1), 1 },
295    { 0 }
296  };
297
298
299static sensors_chip_feature adm1021_features[] =
300  {
301    { SENSORS_ADM1021_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
302                         SENSORS_MODE_R, ADM1021_SYSCTL_TEMP, VALUE(3), 0 },
303    { SENSORS_ADM1021_TEMP_HYST, "temp_low", SENSORS_ADM1021_TEMP,
304                              SENSORS_ADM1021_TEMP, SENSORS_MODE_RW, 
305                              ADM1021_SYSCTL_TEMP, VALUE(2), 0 },
306    { SENSORS_ADM1021_TEMP_OVER, "temp_over", SENSORS_ADM1021_TEMP,
307                              SENSORS_ADM1021_TEMP, SENSORS_MODE_RW,
308                              ADM1021_SYSCTL_TEMP, VALUE(1), 0 },
309    { SENSORS_ADM1021_REMOTE_TEMP, "remote_temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
310                         SENSORS_MODE_R, ADM1021_SYSCTL_REMOTE_TEMP, VALUE(3), 0 },
311    { SENSORS_ADM1021_REMOTE_TEMP_HYST, "remote_temp_low", SENSORS_ADM1021_REMOTE_TEMP,
312                              SENSORS_ADM1021_REMOTE_TEMP, SENSORS_MODE_RW, 
313                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(2), 0 },
314    { SENSORS_ADM1021_REMOTE_TEMP_OVER, "remote_temp_over", SENSORS_ADM1021_REMOTE_TEMP,
315                              SENSORS_ADM1021_REMOTE_TEMP, SENSORS_MODE_RW,
316                              ADM1021_SYSCTL_REMOTE_TEMP, VALUE(1), 0 },
317    { SENSORS_ADM1021_STATUS, "status", SENSORS_NO_MAPPING,
318                              SENSORS_NO_MAPPING, SENSORS_MODE_R,
319                              ADM1021_SYSCTL_STATUS, VALUE(1), 0 },
320    { 0 }
321  };
322
323static sensors_chip_feature gl518r00_features[] =
324  {
325    { SENSORS_GL518R00_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
326                            SENSORS_MODE_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 },
327    { SENSORS_GL518R00_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
328                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN1, VALUE(3), 
329                             2 },
330    { SENSORS_GL518R00_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
331                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN2, VALUE(3), 
332                             2 },
333    { SENSORS_GL518R00_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
334                             SENSORS_MODE_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
335    { SENSORS_GL518R00_VDD_MIN, "vdd_min", SENSORS_GL518R00_VDD,
336                                SENSORS_GL518R00_VDD, SENSORS_MODE_RW,
337                                GL518_SYSCTL_VDD, VALUE(1), 2 },
338    { SENSORS_GL518R00_VIN1_MIN, "vin1_min", SENSORS_GL518R00_VIN1, 
339                                 SENSORS_GL518R00_VIN1, SENSORS_MODE_RW,
340                                 GL518_SYSCTL_VIN1, VALUE(1), 2 },
341    { SENSORS_GL518R00_VIN2_MIN, "vin2_min", SENSORS_GL518R00_VIN2, 
342                                 SENSORS_GL518R00_VIN2, SENSORS_MODE_RW,
343                                 GL518_SYSCTL_VIN2, VALUE(1), 2 },
344    { SENSORS_GL518R00_VIN3_MIN, "vin3_min", SENSORS_GL518R00_VIN3, 
345                                 SENSORS_GL518R00_VIN3, SENSORS_MODE_RW,
346                                 GL518_SYSCTL_VIN3, VALUE(1), 2 },
347    { SENSORS_GL518R00_VDD_MAX, "vdd_max", SENSORS_GL518R00_VDD,
348                                SENSORS_GL518R00_VDD, SENSORS_MODE_RW,
349                                GL518_SYSCTL_VDD, VALUE(2), 2 },
350    { SENSORS_GL518R00_VIN1_MAX, "vin1_max", SENSORS_GL518R00_VIN1, 
351                                 SENSORS_GL518R00_VIN1, SENSORS_MODE_RW,
352                                 GL518_SYSCTL_VIN1, VALUE(2), 2 },
353    { SENSORS_GL518R00_VIN2_MAX, "vin2_max", SENSORS_GL518R00_VIN2, 
354                                 SENSORS_GL518R00_VIN2, SENSORS_MODE_RW,
355                                 GL518_SYSCTL_VIN2, VALUE(2), 2 },
356    { SENSORS_GL518R00_VIN3_MAX, "vin3_max", SENSORS_GL518R00_VIN3, 
357                                 SENSORS_GL518R00_VIN3, SENSORS_MODE_RW,
358                                 GL518_SYSCTL_VIN3, VALUE(2), 2 },
359    { SENSORS_GL518R00_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
360                             SENSORS_MODE_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
361    { SENSORS_GL518R00_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
362                             SENSORS_MODE_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
363    { SENSORS_GL518R00_FAN1_MIN, "fan1_min", SENSORS_GL518R00_FAN1, 
364                                 SENSORS_GL518R00_FAN1, SENSORS_MODE_RW,
365                                 GL518_SYSCTL_FAN1, VALUE(1), 0 },
366    { SENSORS_GL518R00_FAN2_MIN, "fan2_min", SENSORS_GL518R00_FAN2, 
367                                 SENSORS_GL518R00_FAN2, SENSORS_MODE_RW,
368                                 GL518_SYSCTL_FAN2, VALUE(1), 0 },
369    { SENSORS_GL518R00_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
370                             SENSORS_MODE_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
371    { SENSORS_GL518R00_TEMP_HYST, "temp_hyst", SENSORS_GL518R00_TEMP, 
372                                  SENSORS_GL518R00_TEMP, SENSORS_MODE_RW,
373                                  GL518_SYSCTL_TEMP, VALUE(2), 1 },
374    { SENSORS_GL518R00_TEMP_OVER, "temp_over", SENSORS_GL518R00_TEMP, 
375                                  SENSORS_GL518R00_TEMP, SENSORS_MODE_RW,
376                                  GL518_SYSCTL_TEMP, VALUE(1), 1 },
377    { SENSORS_GL518R00_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
378                            SENSORS_MODE_R, GL518_SYSCTL_VID, VALUE(1), 0 },
379    { SENSORS_GL518R00_FAN1_DIV, "fan1_div", SENSORS_GL518R00_FAN1, 
380                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
381                                 GL518_SYSCTL_FAN_DIV, VALUE(1), 0 },
382    { SENSORS_GL518R00_FAN2_DIV, "fan2_div", SENSORS_GL518R00_FAN2, 
383                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
384                                 GL518_SYSCTL_FAN_DIV, VALUE(2), 0 },
385    { SENSORS_GL518R00_ALARMS, "alarms", SENSORS_NO_MAPPING,
386                               SENSORS_NO_MAPPING, SENSORS_MODE_R,
387                               GL518_SYSCTL_ALARMS, VALUE(1), 0 },
388    { SENSORS_GL518R00_BEEP_ENABLE, "beep_enable", SENSORS_GL518R00_ALARMS,
389                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
390                               GL518_SYSCTL_BEEP, VALUE(1), 0 },
391    { SENSORS_GL518R00_BEEPS, "beeps", SENSORS_GL518R00_ALARMS,
392                               SENSORS_GL518R00_ALARMS, SENSORS_MODE_RW,
393                               GL518_SYSCTL_BEEP, VALUE(2), 0 },
394    { 0 }
395  };
396
397
398static sensors_chip_feature gl518r80_features[] =
399  {
400    { SENSORS_GL518R80_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
401                            SENSORS_MODE_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 },
402    { SENSORS_GL518R80_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
403                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN1, VALUE(3), 
404                             2 },
405    { SENSORS_GL518R80_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
406                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN2, VALUE(3), 
407                             2 },
408    { SENSORS_GL518R80_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
409                             SENSORS_MODE_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
410    { SENSORS_GL518R80_VDD_MIN, "vdd_min", SENSORS_GL518R80_VDD,
411                                SENSORS_GL518R80_VDD, SENSORS_MODE_RW,
412                                GL518_SYSCTL_VDD, VALUE(1), 2 },
413    { SENSORS_GL518R80_VIN1_MIN, "vin1_min", SENSORS_GL518R80_VIN1, 
414                                 SENSORS_GL518R80_VIN1, SENSORS_MODE_RW,
415                                 GL518_SYSCTL_VIN1, VALUE(1), 2 },
416    { SENSORS_GL518R80_VIN2_MIN, "vin2_min", SENSORS_GL518R80_VIN2, 
417                                 SENSORS_GL518R80_VIN2, SENSORS_MODE_RW,
418                                 GL518_SYSCTL_VIN2, VALUE(1), 2 },
419    { SENSORS_GL518R80_VIN3_MIN, "vin3_min", SENSORS_GL518R80_VIN3, 
420                                 SENSORS_GL518R80_VIN3, SENSORS_MODE_RW,
421                                 GL518_SYSCTL_VIN3, VALUE(1), 2 },
422    { SENSORS_GL518R80_VDD_MAX, "vdd_max", SENSORS_GL518R80_VDD,
423                                SENSORS_GL518R80_VDD, SENSORS_MODE_RW,
424                                GL518_SYSCTL_VDD, VALUE(2), 2 },
425    { SENSORS_GL518R80_VIN1_MAX, "vin1_max", SENSORS_GL518R80_VIN1, 
426                                 SENSORS_GL518R80_VIN1, SENSORS_MODE_RW,
427                                 GL518_SYSCTL_VIN1, VALUE(2), 2 },
428    { SENSORS_GL518R80_VIN2_MAX, "vin2_max", SENSORS_GL518R80_VIN2, 
429                                 SENSORS_GL518R80_VIN2, SENSORS_MODE_RW,
430                                 GL518_SYSCTL_VIN2, VALUE(2), 2 },
431    { SENSORS_GL518R80_VIN3_MAX, "vin3_max", SENSORS_GL518R80_VIN3, 
432                                 SENSORS_GL518R80_VIN3, SENSORS_MODE_RW,
433                                 GL518_SYSCTL_VIN3, VALUE(2), 2 },
434    { SENSORS_GL518R80_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
435                             SENSORS_MODE_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
436    { SENSORS_GL518R80_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
437                             SENSORS_MODE_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
438    { SENSORS_GL518R80_FAN1_MIN, "fan1_min", SENSORS_GL518R80_FAN1, 
439                                 SENSORS_GL518R80_FAN1, SENSORS_MODE_RW,
440                                 GL518_SYSCTL_FAN1, VALUE(1), 0 },
441    { SENSORS_GL518R80_FAN2_MIN, "fan2_min", SENSORS_GL518R80_FAN2, 
442                                 SENSORS_GL518R80_FAN2, SENSORS_MODE_RW,
443                                 GL518_SYSCTL_FAN2, VALUE(1), 0 },
444    { SENSORS_GL518R80_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
445                             SENSORS_MODE_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
446    { SENSORS_GL518R80_TEMP_HYST, "temp_hyst", SENSORS_GL518R80_TEMP, 
447                                  SENSORS_GL518R80_TEMP, SENSORS_MODE_RW,
448                                  GL518_SYSCTL_TEMP, VALUE(2), 1 },
449    { SENSORS_GL518R80_TEMP_OVER, "temp_over", SENSORS_GL518R80_TEMP, 
450                                  SENSORS_GL518R80_TEMP, SENSORS_MODE_RW,
451                                  GL518_SYSCTL_VDD, VALUE(1), 1 },
452    { SENSORS_GL518R80_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
453                            SENSORS_MODE_R, GL518_SYSCTL_VID, VALUE(1), 0 },
454    { SENSORS_GL518R80_FAN1_DIV, "fan1_div", SENSORS_GL518R80_FAN1, 
455                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
456                                 GL518_SYSCTL_FAN_DIV, VALUE(1), 0 },
457    { SENSORS_GL518R80_FAN2_DIV, "fan2_div", SENSORS_GL518R80_FAN2, 
458                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
459                                 GL518_SYSCTL_FAN_DIV, VALUE(2), 0 },
460    { SENSORS_GL518R80_ALARMS, "alarms", SENSORS_NO_MAPPING,
461                               SENSORS_NO_MAPPING, SENSORS_MODE_R,
462                               GL518_SYSCTL_ALARMS, VALUE(1), 0 },
463    { SENSORS_GL518R80_BEEP_ENABLE, "beep_enable", SENSORS_GL518R80_ALARMS,
464                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
465                               GL518_SYSCTL_BEEP, VALUE(1), 0 },
466    { SENSORS_GL518R80_BEEPS, "beeps", SENSORS_GL518R80_ALARMS,
467                               SENSORS_GL518R80_ALARMS, SENSORS_MODE_RW,
468                               GL518_SYSCTL_BEEP, VALUE(2), 0 },
469    { 0 }
470  };
471
472static sensors_chip_feature lm80_features[] =
473  { 
474    { SENSORS_LM80_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
475                        SENSORS_MODE_R, LM80_SYSCTL_IN0, VALUE(3), 2 },
476    { SENSORS_LM80_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
477                        SENSORS_MODE_R, LM80_SYSCTL_IN1, VALUE(3), 2 },
478    { SENSORS_LM80_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
479                        SENSORS_MODE_R, LM80_SYSCTL_IN2, VALUE(3), 2 },
480    { SENSORS_LM80_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
481                        SENSORS_MODE_R, LM80_SYSCTL_IN3, VALUE(3), 2 },
482    { SENSORS_LM80_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
483                        SENSORS_MODE_R, LM80_SYSCTL_IN4, VALUE(3), 2 },
484    { SENSORS_LM80_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
485                        SENSORS_MODE_R, LM80_SYSCTL_IN5, VALUE(3), 2 },
486    { SENSORS_LM80_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
487                        SENSORS_MODE_R, LM80_SYSCTL_IN6, VALUE(3), 2 },
488    { SENSORS_LM80_IN0_MIN, "in0_min", SENSORS_LM80_IN0, SENSORS_LM80_IN0,
489                            SENSORS_MODE_RW, LM80_SYSCTL_IN0, VALUE(1), 2 },
490    { SENSORS_LM80_IN1_MIN, "in1_min", SENSORS_LM80_IN1, SENSORS_LM80_IN1,
491                            SENSORS_MODE_RW, LM80_SYSCTL_IN1, VALUE(1), 2 },
492    { SENSORS_LM80_IN2_MIN, "in2_min", SENSORS_LM80_IN2, SENSORS_LM80_IN2,
493                            SENSORS_MODE_RW, LM80_SYSCTL_IN2, VALUE(1), 2 },
494    { SENSORS_LM80_IN3_MIN, "in3_min", SENSORS_LM80_IN3, SENSORS_LM80_IN3,
495                            SENSORS_MODE_RW, LM80_SYSCTL_IN3, VALUE(1), 2 },
496    { SENSORS_LM80_IN4_MIN, "in4_min", SENSORS_LM80_IN4, SENSORS_LM80_IN4,
497                            SENSORS_MODE_RW, LM80_SYSCTL_IN4, VALUE(1), 2 },
498    { SENSORS_LM80_IN5_MIN, "in5_min", SENSORS_LM80_IN5, SENSORS_LM80_IN5,
499                            SENSORS_MODE_RW, LM80_SYSCTL_IN5, VALUE(1), 2 },
500    { SENSORS_LM80_IN6_MIN, "in6_min", SENSORS_LM80_IN6, SENSORS_LM80_IN6,
501                            SENSORS_MODE_RW, LM80_SYSCTL_IN6, VALUE(1), 2 },
502    { SENSORS_LM80_IN0_MAX, "in0_max", SENSORS_LM80_IN0, SENSORS_LM80_IN0,
503                            SENSORS_MODE_RW, LM80_SYSCTL_IN0, VALUE(2), 2 },
504    { SENSORS_LM80_IN1_MAX, "in1_max", SENSORS_LM80_IN1, SENSORS_LM80_IN1,
505                            SENSORS_MODE_RW, LM80_SYSCTL_IN1, VALUE(2), 2 },
506    { SENSORS_LM80_IN2_MAX, "in2_max", SENSORS_LM80_IN2, SENSORS_LM80_IN2,
507                            SENSORS_MODE_RW, LM80_SYSCTL_IN2, VALUE(2), 2 },
508    { SENSORS_LM80_IN3_MAX, "in3_max", SENSORS_LM80_IN3, SENSORS_LM80_IN3,
509                            SENSORS_MODE_RW, LM80_SYSCTL_IN3, VALUE(2), 2 },
510    { SENSORS_LM80_IN4_MAX, "in4_max", SENSORS_LM80_IN4, SENSORS_LM80_IN4,
511                            SENSORS_MODE_RW, LM80_SYSCTL_IN4, VALUE(2), 2 },
512    { SENSORS_LM80_IN5_MAX, "in5_max", SENSORS_LM80_IN5, SENSORS_LM80_IN5,
513                            SENSORS_MODE_RW, LM80_SYSCTL_IN5, VALUE(2), 2 },
514    { SENSORS_LM80_IN6_MAX, "in6_max", SENSORS_LM80_IN6, SENSORS_LM80_IN6,
515                            SENSORS_MODE_RW, LM80_SYSCTL_IN6, VALUE(2), 2 },
516    { SENSORS_LM80_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
517                         SENSORS_MODE_R, LM80_SYSCTL_FAN1, VALUE(2), 0 },
518    { SENSORS_LM80_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
519                         SENSORS_MODE_R, LM80_SYSCTL_FAN2, VALUE(2), 0 },
520    { SENSORS_LM80_FAN1_MIN, "fan1_min", SENSORS_LM80_FAN1, SENSORS_NO_MAPPING,
521                             SENSORS_MODE_RW, LM80_SYSCTL_FAN1, VALUE(1), 0 },
522    { SENSORS_LM80_FAN2_MIN, "fan2_min", SENSORS_LM80_FAN2, SENSORS_NO_MAPPING,
523                             SENSORS_MODE_RW, LM80_SYSCTL_FAN2, VALUE(1), 0 },
524    { SENSORS_LM80_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
525                         SENSORS_MODE_R, LM80_SYSCTL_TEMP, VALUE(5), 2 },
526    { SENSORS_LM80_TEMP_HOT_HYST, "temp_hot_hyst", SENSORS_LM80_TEMP,
527                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
528                              LM80_SYSCTL_TEMP, VALUE(2), 2 },
529    { SENSORS_LM80_TEMP_HOT_MAX, "temp_hot_max", SENSORS_LM80_TEMP,
530                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
531                              LM80_SYSCTL_TEMP, VALUE(1), 2 },
532    { SENSORS_LM80_TEMP_OS_HYST, "temp_os_hyst", SENSORS_LM80_TEMP,
533                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
534                              LM80_SYSCTL_TEMP, VALUE(4), 2 },
535    { SENSORS_LM80_TEMP_OS_MAX, "temp_os_max", SENSORS_LM80_TEMP,
536                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
537                              LM80_SYSCTL_TEMP, VALUE(3), 2 },
538    { SENSORS_LM80_FAN1_DIV, "fan1_div", SENSORS_LM80_FAN1, SENSORS_NO_MAPPING,
539                             SENSORS_MODE_RW, LM80_SYSCTL_FAN_DIV, VALUE(1), 
540                             0 },
541    { SENSORS_LM80_FAN2_DIV, "fan2_div", SENSORS_LM80_FAN2, SENSORS_NO_MAPPING,
542                             SENSORS_MODE_RW, LM80_SYSCTL_FAN_DIV, VALUE(2), 
543                             0 },
544    { SENSORS_LM80_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
545                           SENSORS_MODE_R, LM80_SYSCTL_ALARMS, VALUE(1), 0 },
546    { 0 }
547  };
548
549
550static sensors_chip_feature w83781d_features[] =
551  { 
552    { SENSORS_W83781D_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
553                        SENSORS_MODE_R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
554    { SENSORS_W83781D_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
555                        SENSORS_MODE_R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
556    { SENSORS_W83781D_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
557                        SENSORS_MODE_R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
558    { SENSORS_W83781D_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
559                        SENSORS_MODE_R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
560    { SENSORS_W83781D_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
561                        SENSORS_MODE_R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
562    { SENSORS_W83781D_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
563                        SENSORS_MODE_R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
564    { SENSORS_W83781D_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
565                        SENSORS_MODE_R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
566    { SENSORS_W83781D_IN0_MIN, "in0_min", SENSORS_W83781D_IN0, 
567                        SENSORS_W83781D_IN0, SENSORS_MODE_RW, 
568                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
569    { SENSORS_W83781D_IN1_MIN, "in1_min", SENSORS_W83781D_IN1, 
570                        SENSORS_W83781D_IN1, SENSORS_MODE_RW, 
571                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
572    { SENSORS_W83781D_IN2_MIN, "in2_min", SENSORS_W83781D_IN2, 
573                        SENSORS_W83781D_IN2, SENSORS_MODE_RW, 
574                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
575    { SENSORS_W83781D_IN3_MIN, "in3_min", SENSORS_W83781D_IN3, 
576                        SENSORS_W83781D_IN3, SENSORS_MODE_RW, 
577                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
578    { SENSORS_W83781D_IN4_MIN, "in4_min", SENSORS_W83781D_IN4, 
579                        SENSORS_W83781D_IN4, SENSORS_MODE_RW, 
580                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
581    { SENSORS_W83781D_IN5_MIN, "in5_min", SENSORS_W83781D_IN5, 
582                        SENSORS_W83781D_IN5, SENSORS_MODE_RW, 
583                        W83781D_SYSCTL_IN5, VALUE(1), 2 },
584    { SENSORS_W83781D_IN6_MIN, "in6_min", SENSORS_W83781D_IN6, 
585                        SENSORS_W83781D_IN6, SENSORS_MODE_RW, 
586                        W83781D_SYSCTL_IN6, VALUE(1), 2 },
587    { SENSORS_W83781D_IN0_MAX, "in0_max", SENSORS_W83781D_IN0, 
588                        SENSORS_W83781D_IN0, SENSORS_MODE_RW,
589                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
590    { SENSORS_W83781D_IN1_MAX, "in1_max", SENSORS_W83781D_IN1, 
591                        SENSORS_W83781D_IN1, SENSORS_MODE_RW, 
592                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
593    { SENSORS_W83781D_IN2_MAX, "in2_max", SENSORS_W83781D_IN2, 
594                        SENSORS_W83781D_IN2, SENSORS_MODE_RW, 
595                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
596    { SENSORS_W83781D_IN3_MAX, "in3_max", SENSORS_W83781D_IN3, 
597                        SENSORS_W83781D_IN3, SENSORS_MODE_RW, 
598                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
599    { SENSORS_W83781D_IN4_MAX, "in4_max", SENSORS_W83781D_IN4, 
600                        SENSORS_W83781D_IN4, SENSORS_MODE_RW,
601                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
602    { SENSORS_W83781D_IN5_MAX, "in5_max", SENSORS_W83781D_IN5, 
603                        SENSORS_W83781D_IN5, SENSORS_MODE_RW, 
604                        W83781D_SYSCTL_IN5, VALUE(2), 2 },
605    { SENSORS_W83781D_IN6_MAX, "in6_max", SENSORS_W83781D_IN6, 
606                        SENSORS_W83781D_IN6, SENSORS_MODE_RW, 
607                        W83781D_SYSCTL_IN6, VALUE(2), 2 },
608    { SENSORS_W83781D_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
609                        SENSORS_MODE_R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
610    { SENSORS_W83781D_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
611                        SENSORS_MODE_R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
612    { SENSORS_W83781D_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
613                        SENSORS_MODE_R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
614    { SENSORS_W83781D_FAN1_MIN, "fan1_min", SENSORS_W83781D_FAN1,
615                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
616                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
617    { SENSORS_W83781D_FAN2_MIN, "fan2_min", SENSORS_W83781D_FAN2, 
618                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
619                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
620    { SENSORS_W83781D_FAN3_MIN, "fan3_min", SENSORS_W83781D_FAN3, 
621                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
622                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
623    { SENSORS_W83781D_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
624                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
625    { SENSORS_W83781D_TEMP1_HYST, "temp1_hyst", SENSORS_W83781D_TEMP1,
626                         SENSORS_W83781D_TEMP1, SENSORS_MODE_RW, 
627                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
628    { SENSORS_W83781D_TEMP1_OVER, "temp1_over", SENSORS_W83781D_TEMP1,
629                         SENSORS_W83781D_TEMP1, SENSORS_MODE_RW, 
630                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
631    { SENSORS_W83781D_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
632                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
633    { SENSORS_W83781D_TEMP2_HYST, "temp2_hyst", SENSORS_W83781D_TEMP2,
634                         SENSORS_W83781D_TEMP2, SENSORS_MODE_RW, 
635                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
636    { SENSORS_W83781D_TEMP2_OVER, "temp2_over", SENSORS_W83781D_TEMP2,
637                         SENSORS_W83781D_TEMP2, SENSORS_MODE_RW, 
638                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
639    { SENSORS_W83781D_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
640                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP3, VALUE(3), 1 },
641    { SENSORS_W83781D_TEMP3_HYST, "temp3_hyst", SENSORS_W83781D_TEMP3,
642                         SENSORS_W83781D_TEMP3, SENSORS_MODE_RW, 
643                         W83781D_SYSCTL_TEMP3, VALUE(2), 1 },
644    { SENSORS_W83781D_TEMP3_OVER, "temp3_over", SENSORS_W83781D_TEMP3,
645                         SENSORS_W83781D_TEMP3, SENSORS_MODE_RW, 
646                         W83781D_SYSCTL_TEMP3, VALUE(1), 1 },
647
648    { SENSORS_W83781D_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
649                         SENSORS_MODE_R, W83781D_SYSCTL_VID, VALUE(1), 2 },
650    { SENSORS_W83781D_FAN1_DIV, "fan1_div", SENSORS_W83781D_FAN1, 
651                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
652                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
653    { SENSORS_W83781D_FAN2_DIV, "fan2_div", SENSORS_W83781D_FAN2, 
654                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
655                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
656    { SENSORS_W83781D_FAN3_DIV, "fan3_div", SENSORS_W83781D_FAN3, 
657                         SENSORS_NO_MAPPING, SENSORS_MODE_R, 
658                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
659    { SENSORS_W83781D_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
660                         SENSORS_MODE_R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
661    { SENSORS_W83781D_BEEP_ENABLE, "beep_enable", SENSORS_W83781D_ALARMS,
662                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
663                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
664    { SENSORS_W83781D_BEEPS, "beeps", SENSORS_W83781D_ALARMS,
665                         SENSORS_W83781D_ALARMS, SENSORS_MODE_RW,
666                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
667    { 0 }
668  };
669 
670static sensors_chip_feature adm9240_features[] =
671  { 
672    { SENSORS_ADM9240_IN0, "2.5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
673                        SENSORS_MODE_R, ADM9240_SYSCTL_IN0, VALUE(3), 2 },
674    { SENSORS_ADM9240_IN1, "Vccp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
675                        SENSORS_MODE_R, ADM9240_SYSCTL_IN1, VALUE(3), 2 },
676    { SENSORS_ADM9240_IN2, "3.3V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
677                        SENSORS_MODE_R, ADM9240_SYSCTL_IN2, VALUE(3), 2 },
678    { SENSORS_ADM9240_IN3, "5V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
679                        SENSORS_MODE_R, ADM9240_SYSCTL_IN3, VALUE(3), 2 },
680    { SENSORS_ADM9240_IN4, "12V", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
681                        SENSORS_MODE_R, ADM9240_SYSCTL_IN4, VALUE(3), 2 },
682    { SENSORS_ADM9240_IN5, "Vccp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
683                        SENSORS_MODE_R, ADM9240_SYSCTL_IN5, VALUE(3), 2 },
684    { SENSORS_ADM9240_IN0_MIN, "2.5V_min", SENSORS_ADM9240_IN0, 
685                        SENSORS_ADM9240_IN0, SENSORS_MODE_RW, 
686                        ADM9240_SYSCTL_IN0, VALUE(1), 2 },
687    { SENSORS_ADM9240_IN1_MIN, "Vccp1_min", SENSORS_ADM9240_IN1, 
688                        SENSORS_ADM9240_IN1, SENSORS_MODE_RW, 
689                        ADM9240_SYSCTL_IN1, VALUE(1), 2 },
690    { SENSORS_ADM9240_IN2_MIN, "3.3V_min", SENSORS_ADM9240_IN2, 
691                        SENSORS_ADM9240_IN2, SENSORS_MODE_RW, 
692                        ADM9240_SYSCTL_IN2, VALUE(1), 2 },
693    { SENSORS_ADM9240_IN3_MIN, "5V_min", SENSORS_ADM9240_IN3, 
694                        SENSORS_ADM9240_IN3, SENSORS_MODE_RW, 
695                        ADM9240_SYSCTL_IN3, VALUE(1), 2 },
696    { SENSORS_ADM9240_IN4_MIN, "12V_min", SENSORS_ADM9240_IN4, 
697                        SENSORS_ADM9240_IN4, SENSORS_MODE_RW, 
698                        ADM9240_SYSCTL_IN4, VALUE(1), 2 },
699    { SENSORS_ADM9240_IN5_MIN, "Vccp2_min", SENSORS_ADM9240_IN5, 
700                        SENSORS_ADM9240_IN5, SENSORS_MODE_RW, 
701                        ADM9240_SYSCTL_IN5, VALUE(1), 2 },
702    { SENSORS_ADM9240_IN0_MAX, "2.5V_max", SENSORS_ADM9240_IN0, 
703                        SENSORS_ADM9240_IN0, SENSORS_MODE_RW,
704                        ADM9240_SYSCTL_IN0, VALUE(2), 2 },
705    { SENSORS_ADM9240_IN1_MAX, "Vccp1_max", SENSORS_ADM9240_IN1, 
706                        SENSORS_ADM9240_IN1, SENSORS_MODE_RW, 
707                        ADM9240_SYSCTL_IN1, VALUE(2), 2 },
708    { SENSORS_ADM9240_IN2_MAX, "3.3V_max", SENSORS_ADM9240_IN2, 
709                        SENSORS_ADM9240_IN2, SENSORS_MODE_RW, 
710                        ADM9240_SYSCTL_IN2, VALUE(2), 2 },
711    { SENSORS_ADM9240_IN3_MAX, "5V_max", SENSORS_ADM9240_IN3, 
712                        SENSORS_ADM9240_IN3, SENSORS_MODE_RW, 
713                        ADM9240_SYSCTL_IN3, VALUE(2), 2 },
714    { SENSORS_ADM9240_IN4_MAX, "12V_max", SENSORS_ADM9240_IN4, 
715                        SENSORS_ADM9240_IN4, SENSORS_MODE_RW,
716                        ADM9240_SYSCTL_IN4, VALUE(2), 2 },
717    { SENSORS_ADM9240_IN5_MAX, "Vccp2_max", SENSORS_ADM9240_IN5, 
718                        SENSORS_ADM9240_IN5, SENSORS_MODE_RW, 
719                        ADM9240_SYSCTL_IN5, VALUE(2), 2 },
720    { SENSORS_ADM9240_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
721                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN1, VALUE(2), 0 },
722    { SENSORS_ADM9240_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
723                        SENSORS_MODE_R, ADM9240_SYSCTL_FAN2, VALUE(2), 0 },
724    { SENSORS_ADM9240_FAN1_MIN, "fan1_min", SENSORS_ADM9240_FAN1,
725                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
726                        ADM9240_SYSCTL_FAN1, VALUE(1), 0 },
727    { SENSORS_ADM9240_FAN2_MIN, "fan2_min", SENSORS_ADM9240_FAN2, 
728                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
729                        ADM9240_SYSCTL_FAN2, VALUE(1), 0 },
730    { SENSORS_ADM9240_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
731                         SENSORS_MODE_R, ADM9240_SYSCTL_TEMP, VALUE(3), 1 },
732    { SENSORS_ADM9240_TEMP_HYST, "temp_hyst", SENSORS_ADM9240_TEMP,
733                         SENSORS_ADM9240_TEMP, SENSORS_MODE_RW, 
734                         ADM9240_SYSCTL_TEMP, VALUE(2), 1 },
735    { SENSORS_ADM9240_TEMP_OVER, "temp_over", SENSORS_ADM9240_TEMP,
736                         SENSORS_ADM9240_TEMP, SENSORS_MODE_RW, 
737                         ADM9240_SYSCTL_TEMP, VALUE(1), 1 },
738
739    { SENSORS_ADM9240_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
740                         SENSORS_MODE_R, ADM9240_SYSCTL_VID, VALUE(1), 2 },
741    { SENSORS_ADM9240_FAN1_DIV, "fan1_div", SENSORS_ADM9240_FAN1, 
742                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
743                         ADM9240_SYSCTL_FAN_DIV, VALUE(1), 0 },
744    { SENSORS_ADM9240_FAN2_DIV, "fan2_div", SENSORS_ADM9240_FAN2, 
745                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
746                         ADM9240_SYSCTL_FAN_DIV, VALUE(2), 0 },
747    { SENSORS_ADM9240_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
748                         SENSORS_MODE_R, ADM9240_SYSCTL_ALARMS, VALUE(1), 0 },
749    { SENSORS_ADM9240_ANALOG_OUT, "analog_out", SENSORS_NO_MAPPING,
750                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
751                         ADM9240_SYSCTL_ANALOG_OUT, VALUE(1), 0 },
752    { 0 }
753  };
754
755sensors_chip_features sensors_chip_features_list[] =
756{
757 { SENSORS_LM78_PREFIX, lm78_features },
758 { SENSORS_LM78J_PREFIX, lm78j_features },
759 { SENSORS_LM79_PREFIX, lm79_features },
760 { SENSORS_LM75_PREFIX, lm75_features },
761 { SENSORS_GL518R00_PREFIX, gl518r00_features },
762 { SENSORS_GL518R80_PREFIX, gl518r80_features },
763 { SENSORS_LM80_PREFIX, lm80_features },
764 { SENSORS_W83781D_PREFIX, w83781d_features },
765 { SENSORS_ADM9240_PREFIX, adm9240_features },
766 { SENSORS_ADM1021_PREFIX, adm1021_features },
767 { 0 }
768};
769
Note: See TracBrowser for help on using the browser.