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

Revision 145, 41.2 KB (checked in by frodo, 14 years ago)

Several small GL518SM fixes

* (module) VIN limits are now set to sane values (3V instead of 30V, which

caused nasty overflows)

* (module) VIN limits had min/max swapped in gl518_attach_adapter
* (lib) TEMP_HYST used the VID sysctl instead of the TEMP sysctl, leading

to bogus readings

* (sensors) print n/a for gl518 not available readings.

  • 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 "src/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
298static sensors_chip_feature gl518r00_features[] =
299  {
300    { SENSORS_GL518R00_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
301                            SENSORS_MODE_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 },
302    { SENSORS_GL518R00_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
303                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN1, VALUE(3), 
304                             2 },
305    { SENSORS_GL518R00_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
306                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN2, VALUE(3), 
307                             2 },
308    { SENSORS_GL518R00_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
309                             SENSORS_MODE_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
310    { SENSORS_GL518R00_VDD_MIN, "vdd_min", SENSORS_GL518R00_VDD,
311                                SENSORS_GL518R00_VDD, SENSORS_MODE_RW,
312                                GL518_SYSCTL_VDD, VALUE(1), 2 },
313    { SENSORS_GL518R00_VIN1_MIN, "vin1_min", SENSORS_GL518R00_VIN1, 
314                                 SENSORS_GL518R00_VIN1, SENSORS_MODE_RW,
315                                 GL518_SYSCTL_VIN1, VALUE(1), 2 },
316    { SENSORS_GL518R00_VIN2_MIN, "vin2_min", SENSORS_GL518R00_VIN2, 
317                                 SENSORS_GL518R00_VIN2, SENSORS_MODE_RW,
318                                 GL518_SYSCTL_VIN2, VALUE(1), 2 },
319    { SENSORS_GL518R00_VIN3_MIN, "vin3_min", SENSORS_GL518R00_VIN3, 
320                                 SENSORS_GL518R00_VIN3, SENSORS_MODE_RW,
321                                 GL518_SYSCTL_VIN3, VALUE(1), 2 },
322    { SENSORS_GL518R00_VDD_MAX, "vdd_max", SENSORS_GL518R00_VDD,
323                                SENSORS_GL518R00_VDD, SENSORS_MODE_RW,
324                                GL518_SYSCTL_VDD, VALUE(2), 2 },
325    { SENSORS_GL518R00_VIN1_MAX, "vin1_max", SENSORS_GL518R00_VIN1, 
326                                 SENSORS_GL518R00_VIN1, SENSORS_MODE_RW,
327                                 GL518_SYSCTL_VIN1, VALUE(2), 2 },
328    { SENSORS_GL518R00_VIN2_MAX, "vin2_max", SENSORS_GL518R00_VIN2, 
329                                 SENSORS_GL518R00_VIN2, SENSORS_MODE_RW,
330                                 GL518_SYSCTL_VIN2, VALUE(2), 2 },
331    { SENSORS_GL518R00_VIN3_MAX, "vin3_max", SENSORS_GL518R00_VIN3, 
332                                 SENSORS_GL518R00_VIN3, SENSORS_MODE_RW,
333                                 GL518_SYSCTL_VIN3, VALUE(2), 2 },
334    { SENSORS_GL518R00_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
335                             SENSORS_MODE_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
336    { SENSORS_GL518R00_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
337                             SENSORS_MODE_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
338    { SENSORS_GL518R00_FAN1_MIN, "fan1_min", SENSORS_GL518R00_FAN1, 
339                                 SENSORS_GL518R00_FAN1, SENSORS_MODE_RW,
340                                 GL518_SYSCTL_FAN1, VALUE(1), 0 },
341    { SENSORS_GL518R00_FAN2_MIN, "fan2_min", SENSORS_GL518R00_FAN2, 
342                                 SENSORS_GL518R00_FAN2, SENSORS_MODE_RW,
343                                 GL518_SYSCTL_FAN2, VALUE(1), 0 },
344    { SENSORS_GL518R00_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
345                             SENSORS_MODE_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
346    { SENSORS_GL518R00_TEMP_HYST, "temp_hyst", SENSORS_GL518R00_TEMP, 
347                                  SENSORS_GL518R00_TEMP, SENSORS_MODE_RW,
348                                  GL518_SYSCTL_TEMP, VALUE(2), 1 },
349    { SENSORS_GL518R00_TEMP_OVER, "temp_over", SENSORS_GL518R00_TEMP, 
350                                  SENSORS_GL518R00_TEMP, SENSORS_MODE_RW,
351                                  GL518_SYSCTL_TEMP, VALUE(1), 1 },
352    { SENSORS_GL518R00_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
353                            SENSORS_MODE_R, GL518_SYSCTL_VID, VALUE(1), 0 },
354    { SENSORS_GL518R00_FAN1_DIV, "fan1_div", SENSORS_GL518R00_FAN1, 
355                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
356                                 GL518_SYSCTL_FAN_DIV, VALUE(1), 0 },
357    { SENSORS_GL518R00_FAN2_DIV, "fan2_div", SENSORS_GL518R00_FAN2, 
358                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
359                                 GL518_SYSCTL_FAN_DIV, VALUE(2), 0 },
360    { SENSORS_GL518R00_ALARMS, "alarms", SENSORS_NO_MAPPING,
361                               SENSORS_NO_MAPPING, SENSORS_MODE_R,
362                               GL518_SYSCTL_FAN_DIV, VALUE(3), 0 },
363    { SENSORS_GL518R00_BEEP_ENABLE, "beep_enable", SENSORS_GL518R00_ALARMS,
364                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
365                               GL518_SYSCTL_BEEP, VALUE(1), 0 },
366    { SENSORS_GL518R00_BEEPS, "beeps", SENSORS_GL518R00_ALARMS,
367                               SENSORS_GL518R00_ALARMS, SENSORS_MODE_RW,
368                               GL518_SYSCTL_BEEP, VALUE(2), 0 },
369    { 0 }
370  };
371
372
373static sensors_chip_feature gl518r80_features[] =
374  {
375    { SENSORS_GL518R80_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
376                            SENSORS_MODE_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 },
377    { SENSORS_GL518R80_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
378                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN1, VALUE(3), 
379                             2 },
380    { SENSORS_GL518R80_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
381                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN2, VALUE(3), 
382                             2 },
383    { SENSORS_GL518R80_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
384                             SENSORS_MODE_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
385    { SENSORS_GL518R80_VDD_MIN, "vdd_min", SENSORS_GL518R80_VDD,
386                                SENSORS_GL518R80_VDD, SENSORS_MODE_RW,
387                                GL518_SYSCTL_VDD, VALUE(1), 2 },
388    { SENSORS_GL518R80_VIN1_MIN, "vin1_min", SENSORS_GL518R80_VIN1, 
389                                 SENSORS_GL518R80_VIN1, SENSORS_MODE_RW,
390                                 GL518_SYSCTL_VIN1, VALUE(1), 2 },
391    { SENSORS_GL518R80_VIN2_MIN, "vin2_min", SENSORS_GL518R80_VIN2, 
392                                 SENSORS_GL518R80_VIN2, SENSORS_MODE_RW,
393                                 GL518_SYSCTL_VIN2, VALUE(1), 2 },
394    { SENSORS_GL518R80_VIN3_MIN, "vin3_min", SENSORS_GL518R80_VIN3, 
395                                 SENSORS_GL518R80_VIN3, SENSORS_MODE_RW,
396                                 GL518_SYSCTL_VIN3, VALUE(1), 2 },
397    { SENSORS_GL518R80_VDD_MAX, "vdd_max", SENSORS_GL518R80_VDD,
398                                SENSORS_GL518R80_VDD, SENSORS_MODE_RW,
399                                GL518_SYSCTL_VDD, VALUE(2), 2 },
400    { SENSORS_GL518R80_VIN1_MAX, "vin1_max", SENSORS_GL518R80_VIN1, 
401                                 SENSORS_GL518R80_VIN1, SENSORS_MODE_RW,
402                                 GL518_SYSCTL_VIN1, VALUE(2), 2 },
403    { SENSORS_GL518R80_VIN2_MAX, "vin2_max", SENSORS_GL518R80_VIN2, 
404                                 SENSORS_GL518R80_VIN2, SENSORS_MODE_RW,
405                                 GL518_SYSCTL_VIN2, VALUE(2), 2 },
406    { SENSORS_GL518R80_VIN3_MAX, "vin3_max", SENSORS_GL518R80_VIN3, 
407                                 SENSORS_GL518R80_VIN3, SENSORS_MODE_RW,
408                                 GL518_SYSCTL_VIN3, VALUE(2), 2 },
409    { SENSORS_GL518R80_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
410                             SENSORS_MODE_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
411    { SENSORS_GL518R80_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
412                             SENSORS_MODE_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
413    { SENSORS_GL518R80_FAN1_MIN, "fan1_min", SENSORS_GL518R80_FAN1, 
414                                 SENSORS_GL518R80_FAN1, SENSORS_MODE_RW,
415                                 GL518_SYSCTL_FAN1, VALUE(1), 0 },
416    { SENSORS_GL518R80_FAN2_MIN, "fan2_min", SENSORS_GL518R80_FAN2, 
417                                 SENSORS_GL518R80_FAN2, SENSORS_MODE_RW,
418                                 GL518_SYSCTL_FAN2, VALUE(1), 0 },
419    { SENSORS_GL518R80_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
420                             SENSORS_MODE_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
421    { SENSORS_GL518R80_TEMP_HYST, "temp_hyst", SENSORS_GL518R80_TEMP, 
422                                  SENSORS_GL518R80_TEMP, SENSORS_MODE_RW,
423                                  GL518_SYSCTL_TEMP, VALUE(2), 1 },
424    { SENSORS_GL518R80_TEMP_OVER, "temp_over", SENSORS_GL518R80_TEMP, 
425                                  SENSORS_GL518R80_TEMP, SENSORS_MODE_RW,
426                                  GL518_SYSCTL_VDD, VALUE(1), 1 },
427    { SENSORS_GL518R80_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
428                            SENSORS_MODE_R, GL518_SYSCTL_VID, VALUE(1), 0 },
429    { SENSORS_GL518R80_FAN1_DIV, "fan1_div", SENSORS_GL518R80_FAN1, 
430                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
431                                 GL518_SYSCTL_FAN_DIV, VALUE(1), 0 },
432    { SENSORS_GL518R80_FAN2_DIV, "fan2_div", SENSORS_GL518R80_FAN2, 
433                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
434                                 GL518_SYSCTL_FAN_DIV, VALUE(2), 0 },
435    { SENSORS_GL518R80_ALARMS, "alarms", SENSORS_NO_MAPPING,
436                               SENSORS_NO_MAPPING, SENSORS_MODE_R,
437                               GL518_SYSCTL_FAN_DIV, VALUE(3), 0 },
438    { SENSORS_GL518R80_BEEP_ENABLE, "beep_enable", SENSORS_GL518R80_ALARMS,
439                               SENSORS_NO_MAPPING, SENSORS_MODE_RW,
440                               GL518_SYSCTL_BEEP, VALUE(1), 0 },
441    { SENSORS_GL518R80_BEEPS, "beeps", SENSORS_GL518R80_ALARMS,
442                               SENSORS_GL518R80_ALARMS, SENSORS_MODE_RW,
443                               GL518_SYSCTL_BEEP, VALUE(2), 0 },
444    { 0 }
445  };
446
447static sensors_chip_feature lm80_features[] =
448  { 
449    { SENSORS_LM80_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
450                        SENSORS_MODE_R, LM80_SYSCTL_IN0, VALUE(3), 2 },
451    { SENSORS_LM80_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
452                        SENSORS_MODE_R, LM80_SYSCTL_IN1, VALUE(3), 2 },
453    { SENSORS_LM80_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
454                        SENSORS_MODE_R, LM80_SYSCTL_IN2, VALUE(3), 2 },
455    { SENSORS_LM80_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
456                        SENSORS_MODE_R, LM80_SYSCTL_IN3, VALUE(3), 2 },
457    { SENSORS_LM80_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
458                        SENSORS_MODE_R, LM80_SYSCTL_IN4, VALUE(3), 2 },
459    { SENSORS_LM80_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
460                        SENSORS_MODE_R, LM80_SYSCTL_IN5, VALUE(3), 2 },
461    { SENSORS_LM80_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
462                        SENSORS_MODE_R, LM80_SYSCTL_IN6, VALUE(3), 2 },
463    { SENSORS_LM80_IN0_MIN, "in0_min", SENSORS_LM80_IN0, SENSORS_LM80_IN0,
464                            SENSORS_MODE_RW, LM80_SYSCTL_IN0, VALUE(1), 2 },
465    { SENSORS_LM80_IN1_MIN, "in1_min", SENSORS_LM80_IN1, SENSORS_LM80_IN1,
466                            SENSORS_MODE_RW, LM80_SYSCTL_IN1, VALUE(1), 2 },
467    { SENSORS_LM80_IN2_MIN, "in2_min", SENSORS_LM80_IN2, SENSORS_LM80_IN2,
468                            SENSORS_MODE_RW, LM80_SYSCTL_IN2, VALUE(1), 2 },
469    { SENSORS_LM80_IN3_MIN, "in3_min", SENSORS_LM80_IN3, SENSORS_LM80_IN3,
470                            SENSORS_MODE_RW, LM80_SYSCTL_IN3, VALUE(1), 2 },
471    { SENSORS_LM80_IN4_MIN, "in4_min", SENSORS_LM80_IN4, SENSORS_LM80_IN4,
472                            SENSORS_MODE_RW, LM80_SYSCTL_IN4, VALUE(1), 2 },
473    { SENSORS_LM80_IN5_MIN, "in5_min", SENSORS_LM80_IN5, SENSORS_LM80_IN5,
474                            SENSORS_MODE_RW, LM80_SYSCTL_IN5, VALUE(1), 2 },
475    { SENSORS_LM80_IN6_MIN, "in6_min", SENSORS_LM80_IN6, SENSORS_LM80_IN6,
476                            SENSORS_MODE_RW, LM80_SYSCTL_IN6, VALUE(1), 2 },
477    { SENSORS_LM80_IN0_MAX, "in0_max", SENSORS_LM80_IN0, SENSORS_LM80_IN0,
478                            SENSORS_MODE_RW, LM80_SYSCTL_IN0, VALUE(2), 2 },
479    { SENSORS_LM80_IN1_MAX, "in1_max", SENSORS_LM80_IN1, SENSORS_LM80_IN1,
480                            SENSORS_MODE_RW, LM80_SYSCTL_IN1, VALUE(2), 2 },
481    { SENSORS_LM80_IN2_MAX, "in2_max", SENSORS_LM80_IN2, SENSORS_LM80_IN2,
482                            SENSORS_MODE_RW, LM80_SYSCTL_IN2, VALUE(2), 2 },
483    { SENSORS_LM80_IN3_MAX, "in3_max", SENSORS_LM80_IN3, SENSORS_LM80_IN3,
484                            SENSORS_MODE_RW, LM80_SYSCTL_IN3, VALUE(2), 2 },
485    { SENSORS_LM80_IN4_MAX, "in4_max", SENSORS_LM80_IN4, SENSORS_LM80_IN4,
486                            SENSORS_MODE_RW, LM80_SYSCTL_IN4, VALUE(2), 2 },
487    { SENSORS_LM80_IN5_MAX, "in5_max", SENSORS_LM80_IN5, SENSORS_LM80_IN5,
488                            SENSORS_MODE_RW, LM80_SYSCTL_IN5, VALUE(2), 2 },
489    { SENSORS_LM80_IN6_MAX, "in6_max", SENSORS_LM80_IN6, SENSORS_LM80_IN6,
490                            SENSORS_MODE_RW, LM80_SYSCTL_IN6, VALUE(2), 2 },
491    { SENSORS_LM80_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
492                         SENSORS_MODE_R, LM80_SYSCTL_FAN1, VALUE(2), 0 },
493    { SENSORS_LM80_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
494                         SENSORS_MODE_R, LM80_SYSCTL_FAN2, VALUE(2), 0 },
495    { SENSORS_LM80_FAN1_MIN, "fan1_min", SENSORS_LM80_FAN1, SENSORS_NO_MAPPING,
496                             SENSORS_MODE_RW, LM80_SYSCTL_FAN1, VALUE(1), 0 },
497    { SENSORS_LM80_FAN2_MIN, "fan2_min", SENSORS_LM80_FAN2, SENSORS_NO_MAPPING,
498                             SENSORS_MODE_RW, LM80_SYSCTL_FAN2, VALUE(1), 0 },
499    { SENSORS_LM80_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
500                         SENSORS_MODE_R, LM80_SYSCTL_TEMP, VALUE(5), 2 },
501    { SENSORS_LM80_TEMP_HOT_HYST, "temp_hot_hyst", SENSORS_LM80_TEMP,
502                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
503                              LM80_SYSCTL_TEMP, VALUE(2), 2 },
504    { SENSORS_LM80_TEMP_HOT_MAX, "temp_hot_max", SENSORS_LM80_TEMP,
505                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
506                              LM80_SYSCTL_TEMP, VALUE(1), 2 },
507    { SENSORS_LM80_TEMP_OS_HYST, "temp_os_hyst", SENSORS_LM80_TEMP,
508                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
509                              LM80_SYSCTL_TEMP, VALUE(4), 2 },
510    { SENSORS_LM80_TEMP_OS_MAX, "temp_os_max", SENSORS_LM80_TEMP,
511                              SENSORS_LM80_TEMP, SENSORS_MODE_RW, 
512                              LM80_SYSCTL_TEMP, VALUE(3), 2 },
513    { SENSORS_LM80_FAN1_DIV, "fan1_div", SENSORS_LM80_FAN1, SENSORS_NO_MAPPING,
514                             SENSORS_MODE_RW, LM80_SYSCTL_FAN_DIV, VALUE(1), 
515                             0 },
516    { SENSORS_LM80_FAN2_DIV, "fan2_div", SENSORS_LM80_FAN2, SENSORS_NO_MAPPING,
517                             SENSORS_MODE_RW, LM80_SYSCTL_FAN_DIV, VALUE(2), 
518                             0 },
519    { SENSORS_LM80_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
520                           SENSORS_MODE_R, LM80_SYSCTL_ALARMS, VALUE(1), 0 },
521    { 0 }
522  };
523
524
525static sensors_chip_feature w83781d_features[] =
526  { 
527    { SENSORS_W83781D_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
528                        SENSORS_MODE_R, W83781D_SYSCTL_IN0, VALUE(3), 2 },
529    { SENSORS_W83781D_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
530                        SENSORS_MODE_R, W83781D_SYSCTL_IN1, VALUE(3), 2 },
531    { SENSORS_W83781D_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
532                        SENSORS_MODE_R, W83781D_SYSCTL_IN2, VALUE(3), 2 },
533    { SENSORS_W83781D_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
534                        SENSORS_MODE_R, W83781D_SYSCTL_IN3, VALUE(3), 2 },
535    { SENSORS_W83781D_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
536                        SENSORS_MODE_R, W83781D_SYSCTL_IN4, VALUE(3), 2 },
537    { SENSORS_W83781D_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
538                        SENSORS_MODE_R, W83781D_SYSCTL_IN5, VALUE(3), 2 },
539    { SENSORS_W83781D_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
540                        SENSORS_MODE_R, W83781D_SYSCTL_IN6, VALUE(3), 2 },
541    { SENSORS_W83781D_IN0_MIN, "in0_min", SENSORS_W83781D_IN0, 
542                        SENSORS_W83781D_IN0, SENSORS_MODE_RW, 
543                        W83781D_SYSCTL_IN0, VALUE(1), 2 },
544    { SENSORS_W83781D_IN1_MIN, "in1_min", SENSORS_W83781D_IN1, 
545                        SENSORS_W83781D_IN1, SENSORS_MODE_RW, 
546                        W83781D_SYSCTL_IN1, VALUE(1), 2 },
547    { SENSORS_W83781D_IN2_MIN, "in2_min", SENSORS_W83781D_IN2, 
548                        SENSORS_W83781D_IN2, SENSORS_MODE_RW, 
549                        W83781D_SYSCTL_IN2, VALUE(1), 2 },
550    { SENSORS_W83781D_IN3_MIN, "in3_min", SENSORS_W83781D_IN3, 
551                        SENSORS_W83781D_IN3, SENSORS_MODE_RW, 
552                        W83781D_SYSCTL_IN3, VALUE(1), 2 },
553    { SENSORS_W83781D_IN4_MIN, "in4_min", SENSORS_W83781D_IN4, 
554                        SENSORS_W83781D_IN4, SENSORS_MODE_RW, 
555                        W83781D_SYSCTL_IN4, VALUE(1), 2 },
556    { SENSORS_W83781D_IN5_MIN, "in5_min", SENSORS_W83781D_IN5, 
557                        SENSORS_W83781D_IN5, SENSORS_MODE_RW, 
558                        W83781D_SYSCTL_IN5, VALUE(1), 2 },
559    { SENSORS_W83781D_IN6_MIN, "in6_min", SENSORS_W83781D_IN6, 
560                        SENSORS_W83781D_IN6, SENSORS_MODE_RW, 
561                        W83781D_SYSCTL_IN6, VALUE(1), 2 },
562    { SENSORS_W83781D_IN0_MAX, "in0_max", SENSORS_W83781D_IN0, 
563                        SENSORS_W83781D_IN0, SENSORS_MODE_RW,
564                        W83781D_SYSCTL_IN0, VALUE(2), 2 },
565    { SENSORS_W83781D_IN1_MAX, "in1_max", SENSORS_W83781D_IN1, 
566                        SENSORS_W83781D_IN1, SENSORS_MODE_RW, 
567                        W83781D_SYSCTL_IN1, VALUE(2), 2 },
568    { SENSORS_W83781D_IN2_MAX, "in2_max", SENSORS_W83781D_IN2, 
569                        SENSORS_W83781D_IN2, SENSORS_MODE_RW, 
570                        W83781D_SYSCTL_IN2, VALUE(2), 2 },
571    { SENSORS_W83781D_IN3_MAX, "in3_max", SENSORS_W83781D_IN3, 
572                        SENSORS_W83781D_IN3, SENSORS_MODE_RW, 
573                        W83781D_SYSCTL_IN3, VALUE(2), 2 },
574    { SENSORS_W83781D_IN4_MAX, "in4_max", SENSORS_W83781D_IN4, 
575                        SENSORS_W83781D_IN4, SENSORS_MODE_RW,
576                        W83781D_SYSCTL_IN4, VALUE(2), 2 },
577    { SENSORS_W83781D_IN5_MAX, "in5_max", SENSORS_W83781D_IN5, 
578                        SENSORS_W83781D_IN5, SENSORS_MODE_RW, 
579                        W83781D_SYSCTL_IN5, VALUE(2), 2 },
580    { SENSORS_W83781D_IN6_MAX, "in6_max", SENSORS_W83781D_IN6, 
581                        SENSORS_W83781D_IN6, SENSORS_MODE_RW, 
582                        W83781D_SYSCTL_IN6, VALUE(2), 2 },
583    { SENSORS_W83781D_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
584                        SENSORS_MODE_R, W83781D_SYSCTL_FAN1, VALUE(2), 0 },
585    { SENSORS_W83781D_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
586                        SENSORS_MODE_R, W83781D_SYSCTL_FAN2, VALUE(2), 0 },
587    { SENSORS_W83781D_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
588                        SENSORS_MODE_R, W83781D_SYSCTL_FAN3, VALUE(2), 0 },
589    { SENSORS_W83781D_FAN1_MIN, "fan1_min", SENSORS_W83781D_FAN1,
590                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
591                        W83781D_SYSCTL_FAN1, VALUE(1), 0 },
592    { SENSORS_W83781D_FAN2_MIN, "fan2_min", SENSORS_W83781D_FAN2, 
593                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
594                        W83781D_SYSCTL_FAN2, VALUE(1), 0 },
595    { SENSORS_W83781D_FAN3_MIN, "fan3_min", SENSORS_W83781D_FAN3, 
596                        SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
597                        W83781D_SYSCTL_FAN3, VALUE(1), 0 },
598    { SENSORS_W83781D_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
599                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP1, VALUE(3), 1 },
600    { SENSORS_W83781D_TEMP1_HYST, "temp1_hyst", SENSORS_W83781D_TEMP1,
601                         SENSORS_W83781D_TEMP1, SENSORS_MODE_RW, 
602                         W83781D_SYSCTL_TEMP1, VALUE(2), 1 },
603    { SENSORS_W83781D_TEMP1_OVER, "temp1_over", SENSORS_W83781D_TEMP1,
604                         SENSORS_W83781D_TEMP1, SENSORS_MODE_RW, 
605                         W83781D_SYSCTL_TEMP1, VALUE(1), 1 },
606    { SENSORS_W83781D_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
607                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP2, VALUE(3), 1 },
608    { SENSORS_W83781D_TEMP2_HYST, "temp2_hyst", SENSORS_W83781D_TEMP2,
609                         SENSORS_W83781D_TEMP2, SENSORS_MODE_RW, 
610                         W83781D_SYSCTL_TEMP2, VALUE(2), 1 },
611    { SENSORS_W83781D_TEMP2_OVER, "temp2_over", SENSORS_W83781D_TEMP2,
612                         SENSORS_W83781D_TEMP2, SENSORS_MODE_RW, 
613                         W83781D_SYSCTL_TEMP2, VALUE(1), 1 },
614    { SENSORS_W83781D_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
615                         SENSORS_MODE_R, W83781D_SYSCTL_TEMP3, VALUE(3), 1 },
616    { SENSORS_W83781D_TEMP3_HYST, "temp3_hyst", SENSORS_W83781D_TEMP3,
617                         SENSORS_W83781D_TEMP3, SENSORS_MODE_RW, 
618                         W83781D_SYSCTL_TEMP3, VALUE(2), 1 },
619    { SENSORS_W83781D_TEMP3_OVER, "temp3_over", SENSORS_W83781D_TEMP3,
620                         SENSORS_W83781D_TEMP3, SENSORS_MODE_RW, 
621                         W83781D_SYSCTL_TEMP3, VALUE(1), 1 },
622
623    { SENSORS_W83781D_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
624                         SENSORS_MODE_R, W83781D_SYSCTL_VID, VALUE(1), 2 },
625    { SENSORS_W83781D_FAN1_DIV, "fan1_div", SENSORS_W83781D_FAN1, 
626                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
627                         W83781D_SYSCTL_FAN_DIV, VALUE(1), 0 },
628    { SENSORS_W83781D_FAN2_DIV, "fan2_div", SENSORS_W83781D_FAN2, 
629                         SENSORS_NO_MAPPING, SENSORS_MODE_RW, 
630                         W83781D_SYSCTL_FAN_DIV, VALUE(2), 0 },
631    { SENSORS_W83781D_FAN3_DIV, "fan3_div", SENSORS_W83781D_FAN3, 
632                         SENSORS_NO_MAPPING, SENSORS_MODE_R, 
633                         W83781D_SYSCTL_FAN_DIV, VALUE(3), 0 },
634    { SENSORS_W83781D_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, 
635                         SENSORS_MODE_R, W83781D_SYSCTL_ALARMS, VALUE(1), 0 },
636    { SENSORS_W83781D_BEEP_ENABLE, "beep_enable", SENSORS_W83781D_ALARMS,
637                         SENSORS_NO_MAPPING, SENSORS_MODE_RW,
638                         W83781D_SYSCTL_BEEP, VALUE(1), 0 },
639    { SENSORS_W83781D_BEEPS, "beeps", SENSORS_W83781D_ALARMS,
640                         SENSORS_W83781D_ALARMS, SENSORS_MODE_RW,
641                         W83781D_SYSCTL_BEEP, VALUE(2), 0 },
642    { 0 }
643  };
644
645sensors_chip_features sensors_chip_features_list[] =
646{
647 { SENSORS_LM78_PREFIX, lm78_features },
648 { SENSORS_LM78J_PREFIX, lm78j_features },
649 { SENSORS_LM79_PREFIX, lm79_features },
650 { SENSORS_LM75_PREFIX, lm75_features },
651 { SENSORS_GL518R00_PREFIX, gl518r00_features },
652 { SENSORS_GL518R80_PREFIX, gl518r80_features },
653 { SENSORS_LM80_PREFIX, lm80_features },
654 { SENSORS_W83781D_PREFIX, w83781d_features },
655 { 0 }
656};
657
Note: See TracBrowser for help on using the browser.