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

Revision 110, 27.6 KB (checked in by frodo, 14 years ago)

Unknown chip support

Some basic support, in the form of sensors_get_all_features(), for chips that
are known to the library, but unknown to the application. prog/sensors has
a demo of how to use this, in function print_unknown_chip in chips.c.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/*
2    chips.c - Part of libsensors, a Linux library for reading sensor data.
3    Copyright (c) 1998  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 "access.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_VDD, 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    { 0 }
364  };
365
366
367static sensors_chip_feature gl518r80_features[] =
368  {
369    { SENSORS_GL518R80_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
370                            SENSORS_MODE_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 },
371    { SENSORS_GL518R80_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
372                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN1, VALUE(3), 
373                             2 },
374    { SENSORS_GL518R80_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
375                             SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN2, VALUE(3), 
376                             2 },
377    { SENSORS_GL518R80_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
378                             SENSORS_MODE_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
379    { SENSORS_GL518R80_VDD_MIN, "vdd_min", SENSORS_GL518R80_VDD,
380                                SENSORS_GL518R80_VDD, SENSORS_MODE_RW,
381                                GL518_SYSCTL_VDD, VALUE(1), 2 },
382    { SENSORS_GL518R80_VIN1_MIN, "vin1_min", SENSORS_GL518R80_VIN1, 
383                                 SENSORS_GL518R80_VIN1, SENSORS_MODE_RW,
384                                 GL518_SYSCTL_VIN1, VALUE(1), 2 },
385    { SENSORS_GL518R80_VIN2_MIN, "vin2_min", SENSORS_GL518R80_VIN2, 
386                                 SENSORS_GL518R80_VIN2, SENSORS_MODE_RW,
387                                 GL518_SYSCTL_VIN2, VALUE(1), 2 },
388    { SENSORS_GL518R80_VIN3_MIN, "vin3_min", SENSORS_GL518R80_VIN3, 
389                                 SENSORS_GL518R80_VIN3, SENSORS_MODE_RW,
390                                 GL518_SYSCTL_VIN3, VALUE(1), 2 },
391    { SENSORS_GL518R80_VDD_MAX, "vdd_max", SENSORS_GL518R80_VDD,
392                                SENSORS_GL518R80_VDD, SENSORS_MODE_RW,
393                                GL518_SYSCTL_VDD, VALUE(2), 2 },
394    { SENSORS_GL518R80_VIN1_MAX, "vin1_max", SENSORS_GL518R80_VIN1, 
395                                 SENSORS_GL518R80_VIN1, SENSORS_MODE_RW,
396                                 GL518_SYSCTL_VIN1, VALUE(2), 2 },
397    { SENSORS_GL518R80_VIN2_MAX, "vin2_max", SENSORS_GL518R80_VIN2, 
398                                 SENSORS_GL518R80_VIN2, SENSORS_MODE_RW,
399                                 GL518_SYSCTL_VIN2, VALUE(2), 2 },
400    { SENSORS_GL518R80_VIN3_MAX, "vin3_max", SENSORS_GL518R80_VIN3, 
401                                 SENSORS_GL518R80_VIN3, SENSORS_MODE_RW,
402                                 GL518_SYSCTL_VIN3, VALUE(2), 2 },
403    { SENSORS_GL518R80_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
404                             SENSORS_MODE_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
405    { SENSORS_GL518R80_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
406                             SENSORS_MODE_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
407    { SENSORS_GL518R80_FAN1_MIN, "fan1_min", SENSORS_GL518R80_FAN1, 
408                                 SENSORS_GL518R80_FAN1, SENSORS_MODE_RW,
409                                 GL518_SYSCTL_FAN1, VALUE(1), 0 },
410    { SENSORS_GL518R80_FAN2_MIN, "fan2_min", SENSORS_GL518R80_FAN2, 
411                                 SENSORS_GL518R80_FAN2, SENSORS_MODE_RW,
412                                 GL518_SYSCTL_FAN2, VALUE(1), 0 },
413    { SENSORS_GL518R80_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
414                             SENSORS_MODE_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
415    { SENSORS_GL518R80_TEMP_HYST, "temp_hyst", SENSORS_GL518R80_TEMP, 
416                                  SENSORS_GL518R80_TEMP, SENSORS_MODE_RW,
417                                  GL518_SYSCTL_TEMP, VALUE(2), 1 },
418    { SENSORS_GL518R80_TEMP_OVER, "temp_over", SENSORS_GL518R80_TEMP, 
419                                  SENSORS_GL518R80_TEMP, SENSORS_MODE_RW,
420                                  GL518_SYSCTL_VDD, VALUE(1), 1 },
421    { SENSORS_GL518R80_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
422                            SENSORS_MODE_R, GL518_SYSCTL_VID, VALUE(1), 0 },
423    { SENSORS_GL518R80_FAN1_DIV, "fan1_div", SENSORS_GL518R80_FAN1, 
424                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
425                                 GL518_SYSCTL_FAN_DIV, VALUE(1), 0 },
426    { SENSORS_GL518R80_FAN2_DIV, "fan2_div", SENSORS_GL518R80_FAN2, 
427                                 SENSORS_NO_MAPPING, SENSORS_MODE_RW,
428                                 GL518_SYSCTL_FAN_DIV, VALUE(2), 0 },
429    { SENSORS_GL518R80_ALARMS, "alarms", SENSORS_NO_MAPPING,
430                               SENSORS_NO_MAPPING, SENSORS_MODE_R,
431                               GL518_SYSCTL_FAN_DIV, VALUE(3), 0 },
432    { 0 }
433  };
434
435
436sensors_chip_features sensors_chip_features_list[] =
437{
438 { SENSORS_LM78_PREFIX, lm78_features },
439 { SENSORS_LM78J_PREFIX, lm78j_features },
440 { SENSORS_LM79_PREFIX, lm79_features },
441 { SENSORS_LM75_PREFIX, lm75_features },
442 { SENSORS_GL518R00_PREFIX, gl518r00_features },
443 { SENSORS_GL518R80_PREFIX, gl518r80_features },
444 { 0 }
445};
446
Note: See TracBrowser for help on using the browser.