2
0
mirror of https://github.com/lm-sensors/lm-sensors synced 2025-08-30 05:48:07 +00:00

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.


git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@110 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
Frodo Looijaard 1998-12-24 18:40:58 +00:00
parent dc9ff8085a
commit 2b415b8690
8 changed files with 282 additions and 175 deletions

6
README
View File

@ -79,3 +79,9 @@ is copyright (c) 1995-1998 by Simon Vogl. See the individual files for
more exact copyright information. This package may be distributed
according to the GNU General Public License (GPL), as included in the
file COPYING.
Note that at this moment, libsensors falls under the GPL, not the LGPL.
In more human language, that means it is FORBIDDEN to link any application
to the library, even to the shared version, if the application itself
does not fall under the GPL. This will probably be changed in the future.
In the meantime, you will have to contact us first if you want to do this.

View File

@ -172,7 +172,7 @@ int sensors_get_feature(sensors_chip_name name, int feature, double *result)
sensors_lookup_feature_nr(name.prefix,
main_feature->compute_mapping)))
return -SENSORS_ERR_NO_ENTRY;
if (! (main_feature->mode && SENSORS_R))
if (! (main_feature->mode && SENSORS_MODE_R))
return -SENSORS_ERR_ACCESS;
for (chip = NULL; !expr && (chip = sensors_for_all_config_chips(name,chip));)
for (i = 0; !final_expr && (i < chip->computes_count); i++) {
@ -206,7 +206,7 @@ int sensors_set_feature(sensors_chip_name name, int feature, double value)
return -SENSORS_ERR_WILDCARDS;
if (! (featureptr = sensors_lookup_feature_nr(name.prefix,feature)))
return -SENSORS_ERR_NO_ENTRY;
if (! (featureptr->mode && SENSORS_W))
if (! (featureptr->mode && SENSORS_MODE_W))
return -SENSORS_ERR_ACCESS;
for (chip = NULL; !expr && (chip = sensors_for_all_config_chips(name,chip));)
for (i = 0; !expr && (i < chip->computes_count); i++)
@ -249,3 +249,34 @@ const char *sensors_get_algorithm_name(int bus_nr)
return sensors_proc_bus[i].algorithm;
return NULL;
}
/* nr1-1 is the last main feature found; nr2-1 is the last subfeature found */
const sensors_feature_data *sensors_get_all_features (sensors_chip_name name,
int *nr1, int*nr2)
{
sensors_chip_feature *feature_list;
int i;
for (i = 0; sensors_chip_features_list[i].prefix; i++)
if (!strcmp(sensors_chip_features_list[i].prefix,name.prefix)) {
feature_list=sensors_chip_features_list[i].feature;
if (!*nr1 && !*nr2) { /* Return the first entry */
if (!feature_list[0].name) /* The list may be empty */
return NULL;
*nr1 = *nr2 = 1;
return (sensors_feature_data *) (feature_list + 0);
}
for ((*nr2)++; feature_list[*nr2-1].name; (*nr2)++)
if (feature_list[*nr2-1].logical_mapping == feature_list[*nr1-1].number)
return (sensors_feature_data *) (feature_list + *nr2 - 1);
for ((*nr1)++; feature_list[*nr1-1].name &&
(feature_list[*nr1-1].logical_mapping != SENSORS_NO_MAPPING);
(*nr1)++);
*nr2 = *nr1;
if (! feature_list[*nr1-1].name)
return NULL;
return (sensors_feature_data *) (feature_list + *nr1 - 1);
}
return NULL;
}

View File

@ -39,13 +39,6 @@ typedef struct sensors_chip_features {
struct sensors_chip_feature *feature;
} sensors_chip_features;
#define SENSORS_NO_RW 0
#define SENSORS_R 1
#define SENSORS_W 2
#define SENSORS_RW 3
#define SENSORS_NO_MAPPING -1
extern sensors_chip_features sensors_chip_features_list[];
/* Returns, one by one, a pointer to all sensor_chip structs of the

View File

@ -19,6 +19,7 @@
#include "chips.h"
#include "access.h"
#include "sensors.h"
#include "src/sensors.h"
/* For each chip, a list of features;
@ -40,237 +41,243 @@
static sensors_chip_feature lm78_features[] =
{
{ SENSORS_LM78_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
{ SENSORS_LM78_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
{ SENSORS_LM78_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
{ SENSORS_LM78_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
{ SENSORS_LM78_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
{ SENSORS_LM78_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
{ SENSORS_LM78_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
{ SENSORS_LM78_IN0_MIN, "in0_min", SENSORS_LM78_IN0, SENSORS_LM78_IN0,
SENSORS_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
{ SENSORS_LM78_IN1_MIN, "in1_min", SENSORS_LM78_IN1, SENSORS_LM78_IN1,
SENSORS_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
{ SENSORS_LM78_IN2_MIN, "in2_min", SENSORS_LM78_IN2, SENSORS_LM78_IN2,
SENSORS_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
{ SENSORS_LM78_IN3_MIN, "in3_min", SENSORS_LM78_IN3, SENSORS_LM78_IN3,
SENSORS_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
{ SENSORS_LM78_IN4_MIN, "in4_min", SENSORS_LM78_IN4, SENSORS_LM78_IN4,
SENSORS_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
{ SENSORS_LM78_IN5_MIN, "in5_min", SENSORS_LM78_IN5, SENSORS_LM78_IN5,
SENSORS_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
{ SENSORS_LM78_IN6_MIN, "in6_min", SENSORS_LM78_IN6, SENSORS_LM78_IN6,
SENSORS_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
{ SENSORS_LM78_IN0_MAX, "in0_max", SENSORS_LM78_IN0, SENSORS_LM78_IN0,
SENSORS_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
{ SENSORS_LM78_IN1_MAX, "in1_max", SENSORS_LM78_IN1, SENSORS_LM78_IN1,
SENSORS_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
{ SENSORS_LM78_IN2_MAX, "in2_max", SENSORS_LM78_IN2, SENSORS_LM78_IN2,
SENSORS_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
{ SENSORS_LM78_IN3_MAX, "in3_max", SENSORS_LM78_IN3, SENSORS_LM78_IN3,
SENSORS_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
{ SENSORS_LM78_IN4_MAX, "in4_max", SENSORS_LM78_IN4, SENSORS_LM78_IN4,
SENSORS_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
{ SENSORS_LM78_IN5_MAX, "in5_max", SENSORS_LM78_IN5, SENSORS_LM78_IN5,
SENSORS_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
{ SENSORS_LM78_IN6_MAX, "in6_max", SENSORS_LM78_IN6, SENSORS_LM78_IN6,
SENSORS_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
{ SENSORS_LM78_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
{ SENSORS_LM78_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
{ SENSORS_LM78_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
{ SENSORS_LM78_FAN1_MIN, "fan1_min", SENSORS_LM78_FAN1, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
{ SENSORS_LM78_FAN2_MIN, "fan2_min", SENSORS_LM78_FAN2, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
{ SENSORS_LM78_FAN3_MIN, "fan3_min", SENSORS_LM78_FAN3, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
{ SENSORS_LM78_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
{ SENSORS_LM78_TEMP_HYST, "temp_hyst", SENSORS_LM78_TEMP,
SENSORS_LM78_TEMP, SENSORS_RW, LM78_SYSCTL_TEMP,
VALUE(2), 1 },
SENSORS_LM78_TEMP, SENSORS_MODE_RW,
LM78_SYSCTL_TEMP, VALUE(2), 1 },
{ SENSORS_LM78_TEMP_OVER, "temp_over", SENSORS_LM78_TEMP,
SENSORS_LM78_TEMP, SENSORS_RW, LM78_SYSCTL_TEMP,
VALUE(1), 1 },
SENSORS_LM78_TEMP, SENSORS_MODE_RW,
LM78_SYSCTL_TEMP, VALUE(1), 1 },
{ SENSORS_LM78_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_VID, VALUE(1), 2 },
SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 },
{ SENSORS_LM78_FAN1_DIV, "fan1_div", SENSORS_LM78_FAN1, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(1),
0 },
{ SENSORS_LM78_FAN2_DIV, "fan2_div", SENSORS_LM78_FAN2, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(2),
0 },
{ SENSORS_LM78_FAN3_DIV, "fan3_div", SENSORS_LM78_FAN3, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN_DIV, VALUE(3), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN_DIV, VALUE(3),
0 },
{ SENSORS_LM78_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
{ 0 }
};
static sensors_chip_feature lm78j_features[] =
{
{ SENSORS_LM78J_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
{ SENSORS_LM78J_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
{ SENSORS_LM78J_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
{ SENSORS_LM78J_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
{ SENSORS_LM78J_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
{ SENSORS_LM78J_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
{ SENSORS_LM78J_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
{ SENSORS_LM78J_IN0_MIN, "in0_min", SENSORS_LM78J_IN0, SENSORS_LM78J_IN0,
SENSORS_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
{ SENSORS_LM78J_IN1_MIN, "in1_min", SENSORS_LM78J_IN1, SENSORS_LM78J_IN1,
SENSORS_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
{ SENSORS_LM78J_IN2_MIN, "in2_min", SENSORS_LM78J_IN2, SENSORS_LM78J_IN2,
SENSORS_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
{ SENSORS_LM78J_IN3_MIN, "in3_min", SENSORS_LM78J_IN3, SENSORS_LM78J_IN3,
SENSORS_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
{ SENSORS_LM78J_IN4_MIN, "in4_min", SENSORS_LM78J_IN4, SENSORS_LM78J_IN4,
SENSORS_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
{ SENSORS_LM78J_IN5_MIN, "in5_min", SENSORS_LM78J_IN5, SENSORS_LM78J_IN5,
SENSORS_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
{ SENSORS_LM78J_IN6_MIN, "in6_min", SENSORS_LM78J_IN6, SENSORS_LM78J_IN6,
SENSORS_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
{ SENSORS_LM78J_IN0_MAX, "in0_max", SENSORS_LM78J_IN0, SENSORS_LM78J_IN0,
SENSORS_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
{ SENSORS_LM78J_IN1_MAX, "in1_max", SENSORS_LM78J_IN1, SENSORS_LM78J_IN1,
SENSORS_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
{ SENSORS_LM78J_IN2_MAX, "in2_max", SENSORS_LM78J_IN2, SENSORS_LM78J_IN2,
SENSORS_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
{ SENSORS_LM78J_IN3_MAX, "in3_max", SENSORS_LM78J_IN3, SENSORS_LM78J_IN3,
SENSORS_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
{ SENSORS_LM78J_IN4_MAX, "in4_max", SENSORS_LM78J_IN4, SENSORS_LM78J_IN4,
SENSORS_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
{ SENSORS_LM78J_IN5_MAX, "in5_max", SENSORS_LM78J_IN5, SENSORS_LM78J_IN5,
SENSORS_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
{ SENSORS_LM78J_IN6_MAX, "in6_max", SENSORS_LM78J_IN6, SENSORS_LM78J_IN6,
SENSORS_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
{ SENSORS_LM78J_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
{ SENSORS_LM78J_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
{ SENSORS_LM78J_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
{ SENSORS_LM78J_FAN1_MIN, "fan1_min", SENSORS_LM78J_FAN1,
SENSORS_NO_MAPPING, SENSORS_RW, LM78_SYSCTL_FAN1,
VALUE(1), 0 },
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
LM78_SYSCTL_FAN1, VALUE(1), 0 },
{ SENSORS_LM78J_FAN2_MIN, "fan2_min", SENSORS_LM78J_FAN2,
SENSORS_NO_MAPPING, SENSORS_RW, LM78_SYSCTL_FAN2,
VALUE(1), 0 },
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
LM78_SYSCTL_FAN2, VALUE(1), 0 },
{ SENSORS_LM78J_FAN3_MIN, "fan3_min", SENSORS_LM78J_FAN3,
SENSORS_NO_MAPPING, SENSORS_RW, LM78_SYSCTL_FAN3,
VALUE(1), 0 },
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
LM78_SYSCTL_FAN3, VALUE(1), 0 },
{ SENSORS_LM78J_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
{ SENSORS_LM78J_TEMP_HYST, "temp_hyst", SENSORS_LM78J_TEMP,
SENSORS_LM78J_TEMP, SENSORS_RW, LM78_SYSCTL_TEMP,
VALUE(2), 1 },
SENSORS_LM78J_TEMP, SENSORS_MODE_RW,
LM78_SYSCTL_TEMP, VALUE(2), 1 },
{ SENSORS_LM78J_TEMP_OVER, "temp_over", SENSORS_LM78J_TEMP,
SENSORS_LM78J_TEMP, SENSORS_RW, LM78_SYSCTL_TEMP,
VALUE(1), 1 },
SENSORS_LM78J_TEMP, SENSORS_MODE_RW,
LM78_SYSCTL_TEMP, VALUE(1), 1 },
{ SENSORS_LM78J_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_VID, VALUE(1), 2 },
SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 },
{ SENSORS_LM78J_FAN1_DIV, "fan1_div", SENSORS_LM78J_FAN1,
SENSORS_NO_MAPPING, SENSORS_RW,
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
LM78_SYSCTL_FAN_DIV, VALUE(1), 0 },
{ SENSORS_LM78J_FAN2_DIV, "fan2_div", SENSORS_LM78J_FAN2,
SENSORS_NO_MAPPING, SENSORS_RW,
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
LM78_SYSCTL_FAN_DIV, VALUE(2), 0 },
{ SENSORS_LM78J_FAN3_DIV, "fan3_div", SENSORS_LM78J_FAN3,
SENSORS_NO_MAPPING, SENSORS_R,
SENSORS_NO_MAPPING, SENSORS_MODE_R,
LM78_SYSCTL_FAN_DIV, VALUE(3), 0 },
{ SENSORS_LM78J_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
{ 0 }
};
static sensors_chip_feature lm79_features[] =
{
{ SENSORS_LM79_IN0, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN0, VALUE(3), 2 },
{ SENSORS_LM79_IN1, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN1, VALUE(3), 2 },
{ SENSORS_LM79_IN2, "in2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 },
{ SENSORS_LM79_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 },
{ SENSORS_LM79_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 },
{ SENSORS_LM79_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 },
{ SENSORS_LM79_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 },
{ SENSORS_LM79_IN0_MIN, "in0_min", SENSORS_LM79_IN0, SENSORS_LM79_IN0,
SENSORS_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 },
{ SENSORS_LM79_IN1_MIN, "in1_min", SENSORS_LM79_IN1, SENSORS_LM79_IN1,
SENSORS_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(1), 2 },
{ SENSORS_LM79_IN2_MIN, "in2_min", SENSORS_LM79_IN2, SENSORS_LM79_IN2,
SENSORS_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 },
{ SENSORS_LM79_IN3_MIN, "in3_min", SENSORS_LM79_IN3, SENSORS_LM79_IN3,
SENSORS_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 },
{ SENSORS_LM79_IN4_MIN, "in4_min", SENSORS_LM79_IN4, SENSORS_LM79_IN4,
SENSORS_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 },
{ SENSORS_LM79_IN5_MIN, "in5_min", SENSORS_LM79_IN5, SENSORS_LM79_IN5,
SENSORS_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 },
{ SENSORS_LM79_IN6_MIN, "in6_min", SENSORS_LM79_IN6, SENSORS_LM79_IN6,
SENSORS_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 },
{ SENSORS_LM79_IN0_MAX, "in0_max", SENSORS_LM79_IN0, SENSORS_LM79_IN0,
SENSORS_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 },
{ SENSORS_LM79_IN1_MAX, "in1_max", SENSORS_LM79_IN1, SENSORS_LM79_IN1,
SENSORS_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN1, VALUE(2), 2 },
{ SENSORS_LM79_IN2_MAX, "in2_max", SENSORS_LM79_IN2, SENSORS_LM79_IN2,
SENSORS_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 },
{ SENSORS_LM79_IN3_MAX, "in3_max", SENSORS_LM79_IN3, SENSORS_LM79_IN3,
SENSORS_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 },
{ SENSORS_LM79_IN4_MAX, "in4_max", SENSORS_LM79_IN4, SENSORS_LM79_IN4,
SENSORS_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 },
{ SENSORS_LM79_IN5_MAX, "in5_max", SENSORS_LM79_IN5, SENSORS_LM79_IN5,
SENSORS_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 },
{ SENSORS_LM79_IN6_MAX, "in6_max", SENSORS_LM79_IN6, SENSORS_LM79_IN6,
SENSORS_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 },
{ SENSORS_LM79_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 },
{ SENSORS_LM79_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 },
{ SENSORS_LM79_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 },
{ SENSORS_LM79_FAN1_MIN, "fan1_min", SENSORS_LM79_FAN1, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 },
{ SENSORS_LM79_FAN2_MIN, "fan2_min", SENSORS_LM79_FAN2, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 },
{ SENSORS_LM79_FAN3_MIN, "fan3_min", SENSORS_LM79_FAN3, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 },
{ SENSORS_LM79_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 },
{ SENSORS_LM79_TEMP_HYST, "temp_hyst", SENSORS_LM79_TEMP,
SENSORS_LM79_TEMP, SENSORS_RW, LM78_SYSCTL_TEMP,
VALUE(2), 1 },
SENSORS_LM79_TEMP, SENSORS_MODE_RW,
LM78_SYSCTL_TEMP, VALUE(2), 1 },
{ SENSORS_LM79_TEMP_OVER, "temp_over", SENSORS_LM79_TEMP,
SENSORS_LM79_TEMP, SENSORS_RW, LM78_SYSCTL_TEMP,
VALUE(1), 1 },
SENSORS_LM79_TEMP, SENSORS_MODE_RW,
LM78_SYSCTL_TEMP, VALUE(1), 1 },
{ SENSORS_LM79_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_VID, VALUE(1), 2 },
SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 },
{ SENSORS_LM79_FAN1_DIV, "fan1_div", SENSORS_LM79_FAN1, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(1),
0 },
{ SENSORS_LM79_FAN2_DIV, "fan2_div", SENSORS_LM79_FAN2, SENSORS_NO_MAPPING,
SENSORS_RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 0 },
SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(2),
0 },
{ SENSORS_LM79_FAN3_DIV, "fan3_div", SENSORS_LM79_FAN3, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_FAN_DIV, VALUE(3), 0 },
SENSORS_MODE_R, LM78_SYSCTL_FAN_DIV, VALUE(3),
0 },
{ SENSORS_LM79_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 },
{ 0 }
};
@ -278,78 +285,80 @@ static sensors_chip_feature lm79_features[] =
static sensors_chip_feature lm75_features[] =
{
{ SENSORS_LM75_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, LM75_SYSCTL_TEMP, VALUE(3), 1 },
SENSORS_MODE_R, LM75_SYSCTL_TEMP, VALUE(3), 1 },
{ SENSORS_LM75_TEMP_HYST, "temp_hyst", SENSORS_LM75_TEMP,
SENSORS_LM75_TEMP, SENSORS_RW, LM75_SYSCTL_TEMP,
VALUE(2), 1 },
SENSORS_LM75_TEMP, SENSORS_MODE_RW,
LM75_SYSCTL_TEMP, VALUE(2), 1 },
{ SENSORS_LM75_TEMP_OVER, "temp_over", SENSORS_LM75_TEMP,
SENSORS_LM75_TEMP, SENSORS_RW, LM75_SYSCTL_TEMP,
VALUE(1), 1 },
SENSORS_LM75_TEMP, SENSORS_MODE_RW,
LM75_SYSCTL_TEMP, VALUE(1), 1 },
{ 0 }
};
static sensors_chip_feature gl518r00_features[] =
{
{ SENSORS_GL518R00_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
SENSORS_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 },
SENSORS_MODE_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 },
{ SENSORS_GL518R00_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
SENSORS_NO_RW, GL518_SYSCTL_VIN1, VALUE(3), 2 },
SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN1, VALUE(3),
2 },
{ SENSORS_GL518R00_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
SENSORS_NO_RW, GL518_SYSCTL_VIN2, VALUE(3), 2 },
SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN2, VALUE(3),
2 },
{ SENSORS_GL518R00_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
SENSORS_MODE_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
{ SENSORS_GL518R00_VDD_MIN, "vdd_min", SENSORS_GL518R00_VDD,
SENSORS_GL518R00_VDD, SENSORS_RW,
SENSORS_GL518R00_VDD, SENSORS_MODE_RW,
GL518_SYSCTL_VDD, VALUE(1), 2 },
{ SENSORS_GL518R00_VIN1_MIN, "vin1_min", SENSORS_GL518R00_VIN1,
SENSORS_GL518R00_VIN1, SENSORS_RW,
SENSORS_GL518R00_VIN1, SENSORS_MODE_RW,
GL518_SYSCTL_VIN1, VALUE(1), 2 },
{ SENSORS_GL518R00_VIN2_MIN, "vin2_min", SENSORS_GL518R00_VIN2,
SENSORS_GL518R00_VIN2, SENSORS_RW,
SENSORS_GL518R00_VIN2, SENSORS_MODE_RW,
GL518_SYSCTL_VIN2, VALUE(1), 2 },
{ SENSORS_GL518R00_VIN3_MIN, "vin3_min", SENSORS_GL518R00_VIN3,
SENSORS_GL518R00_VIN3, SENSORS_RW,
SENSORS_GL518R00_VIN3, SENSORS_MODE_RW,
GL518_SYSCTL_VIN3, VALUE(1), 2 },
{ SENSORS_GL518R00_VDD_MAX, "vdd_max", SENSORS_GL518R00_VDD,
SENSORS_GL518R00_VDD, SENSORS_RW,
SENSORS_GL518R00_VDD, SENSORS_MODE_RW,
GL518_SYSCTL_VDD, VALUE(2), 2 },
{ SENSORS_GL518R00_VIN1_MAX, "vin1_max", SENSORS_GL518R00_VIN1,
SENSORS_GL518R00_VIN1, SENSORS_RW,
SENSORS_GL518R00_VIN1, SENSORS_MODE_RW,
GL518_SYSCTL_VIN1, VALUE(2), 2 },
{ SENSORS_GL518R00_VIN2_MAX, "vin2_max", SENSORS_GL518R00_VIN2,
SENSORS_GL518R00_VIN2, SENSORS_RW,
SENSORS_GL518R00_VIN2, SENSORS_MODE_RW,
GL518_SYSCTL_VIN2, VALUE(2), 2 },
{ SENSORS_GL518R00_VIN3_MAX, "vin3_max", SENSORS_GL518R00_VIN3,
SENSORS_GL518R00_VIN3, SENSORS_RW,
SENSORS_GL518R00_VIN3, SENSORS_MODE_RW,
GL518_SYSCTL_VIN3, VALUE(2), 2 },
{ SENSORS_GL518R00_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
SENSORS_MODE_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
{ SENSORS_GL518R00_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
SENSORS_MODE_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
{ SENSORS_GL518R00_FAN1_MIN, "fan1_min", SENSORS_GL518R00_FAN1,
SENSORS_GL518R00_FAN1, SENSORS_RW,
SENSORS_GL518R00_FAN1, SENSORS_MODE_RW,
GL518_SYSCTL_FAN1, VALUE(1), 0 },
{ SENSORS_GL518R00_FAN2_MIN, "fan2_min", SENSORS_GL518R00_FAN2,
SENSORS_GL518R00_FAN2, SENSORS_RW,
SENSORS_GL518R00_FAN2, SENSORS_MODE_RW,
GL518_SYSCTL_FAN2, VALUE(1), 0 },
{ SENSORS_GL518R00_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
SENSORS_MODE_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
{ SENSORS_GL518R00_TEMP_HYST, "temp_hyst", SENSORS_GL518R00_TEMP,
SENSORS_GL518R00_TEMP, SENSORS_RW,
SENSORS_GL518R00_TEMP, SENSORS_MODE_RW,
GL518_SYSCTL_TEMP, VALUE(2), 1 },
{ SENSORS_GL518R00_TEMP_OVER, "temp_over", SENSORS_GL518R00_TEMP,
SENSORS_GL518R00_TEMP, SENSORS_RW,
SENSORS_GL518R00_TEMP, SENSORS_MODE_RW,
GL518_SYSCTL_VDD, VALUE(1), 1 },
{ SENSORS_GL518R00_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_VID, VALUE(1), 0 },
SENSORS_MODE_R, GL518_SYSCTL_VID, VALUE(1), 0 },
{ SENSORS_GL518R00_FAN1_DIV, "fan1_div", SENSORS_GL518R00_FAN1,
SENSORS_NO_MAPPING, SENSORS_RW,
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
GL518_SYSCTL_FAN_DIV, VALUE(1), 0 },
{ SENSORS_GL518R00_FAN2_DIV, "fan2_div", SENSORS_GL518R00_FAN2,
SENSORS_NO_MAPPING, SENSORS_RW,
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
GL518_SYSCTL_FAN_DIV, VALUE(2), 0 },
{ SENSORS_GL518R00_ALARMS, "alarms", SENSORS_NO_MAPPING,
SENSORS_NO_MAPPING, SENSORS_R,
SENSORS_NO_MAPPING, SENSORS_MODE_R,
GL518_SYSCTL_FAN_DIV, VALUE(3), 0 },
{ 0 }
};
@ -358,65 +367,67 @@ static sensors_chip_feature gl518r00_features[] =
static sensors_chip_feature gl518r80_features[] =
{
{ SENSORS_GL518R80_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
SENSORS_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 },
SENSORS_MODE_NO_RW, GL518_SYSCTL_VDD, VALUE(3), 2 },
{ SENSORS_GL518R80_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
SENSORS_NO_RW, GL518_SYSCTL_VIN1, VALUE(3), 2 },
SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN1, VALUE(3),
2 },
{ SENSORS_GL518R80_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
SENSORS_NO_RW, GL518_SYSCTL_VIN2, VALUE(3), 2 },
SENSORS_MODE_NO_RW, GL518_SYSCTL_VIN2, VALUE(3),
2 },
{ SENSORS_GL518R80_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
SENSORS_MODE_R, GL518_SYSCTL_VIN3, VALUE(3), 2 },
{ SENSORS_GL518R80_VDD_MIN, "vdd_min", SENSORS_GL518R80_VDD,
SENSORS_GL518R80_VDD, SENSORS_RW,
SENSORS_GL518R80_VDD, SENSORS_MODE_RW,
GL518_SYSCTL_VDD, VALUE(1), 2 },
{ SENSORS_GL518R80_VIN1_MIN, "vin1_min", SENSORS_GL518R80_VIN1,
SENSORS_GL518R80_VIN1, SENSORS_RW,
SENSORS_GL518R80_VIN1, SENSORS_MODE_RW,
GL518_SYSCTL_VIN1, VALUE(1), 2 },
{ SENSORS_GL518R80_VIN2_MIN, "vin2_min", SENSORS_GL518R80_VIN2,
SENSORS_GL518R80_VIN2, SENSORS_RW,
SENSORS_GL518R80_VIN2, SENSORS_MODE_RW,
GL518_SYSCTL_VIN2, VALUE(1), 2 },
{ SENSORS_GL518R80_VIN3_MIN, "vin3_min", SENSORS_GL518R80_VIN3,
SENSORS_GL518R80_VIN3, SENSORS_RW,
SENSORS_GL518R80_VIN3, SENSORS_MODE_RW,
GL518_SYSCTL_VIN3, VALUE(1), 2 },
{ SENSORS_GL518R80_VDD_MAX, "vdd_max", SENSORS_GL518R80_VDD,
SENSORS_GL518R80_VDD, SENSORS_RW,
SENSORS_GL518R80_VDD, SENSORS_MODE_RW,
GL518_SYSCTL_VDD, VALUE(2), 2 },
{ SENSORS_GL518R80_VIN1_MAX, "vin1_max", SENSORS_GL518R80_VIN1,
SENSORS_GL518R80_VIN1, SENSORS_RW,
SENSORS_GL518R80_VIN1, SENSORS_MODE_RW,
GL518_SYSCTL_VIN1, VALUE(2), 2 },
{ SENSORS_GL518R80_VIN2_MAX, "vin2_max", SENSORS_GL518R80_VIN2,
SENSORS_GL518R80_VIN2, SENSORS_RW,
SENSORS_GL518R80_VIN2, SENSORS_MODE_RW,
GL518_SYSCTL_VIN2, VALUE(2), 2 },
{ SENSORS_GL518R80_VIN3_MAX, "vin3_max", SENSORS_GL518R80_VIN3,
SENSORS_GL518R80_VIN3, SENSORS_RW,
SENSORS_GL518R80_VIN3, SENSORS_MODE_RW,
GL518_SYSCTL_VIN3, VALUE(2), 2 },
{ SENSORS_GL518R80_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
SENSORS_MODE_R, GL518_SYSCTL_FAN1, VALUE(2), 0 },
{ SENSORS_GL518R80_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
SENSORS_MODE_R, GL518_SYSCTL_FAN2, VALUE(2), 0 },
{ SENSORS_GL518R80_FAN1_MIN, "fan1_min", SENSORS_GL518R80_FAN1,
SENSORS_GL518R80_FAN1, SENSORS_RW,
SENSORS_GL518R80_FAN1, SENSORS_MODE_RW,
GL518_SYSCTL_FAN1, VALUE(1), 0 },
{ SENSORS_GL518R80_FAN2_MIN, "fan2_min", SENSORS_GL518R80_FAN2,
SENSORS_GL518R80_FAN2, SENSORS_RW,
SENSORS_GL518R80_FAN2, SENSORS_MODE_RW,
GL518_SYSCTL_FAN2, VALUE(1), 0 },
{ SENSORS_GL518R80_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
SENSORS_MODE_R, GL518_SYSCTL_TEMP, VALUE(3), 1 },
{ SENSORS_GL518R80_TEMP_HYST, "temp_hyst", SENSORS_GL518R80_TEMP,
SENSORS_GL518R80_TEMP, SENSORS_RW,
SENSORS_GL518R80_TEMP, SENSORS_MODE_RW,
GL518_SYSCTL_TEMP, VALUE(2), 1 },
{ SENSORS_GL518R80_TEMP_OVER, "temp_over", SENSORS_GL518R80_TEMP,
SENSORS_GL518R80_TEMP, SENSORS_RW,
SENSORS_GL518R80_TEMP, SENSORS_MODE_RW,
GL518_SYSCTL_VDD, VALUE(1), 1 },
{ SENSORS_GL518R80_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_R, GL518_SYSCTL_VID, VALUE(1), 0 },
SENSORS_MODE_R, GL518_SYSCTL_VID, VALUE(1), 0 },
{ SENSORS_GL518R80_FAN1_DIV, "fan1_div", SENSORS_GL518R80_FAN1,
SENSORS_NO_MAPPING, SENSORS_RW,
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
GL518_SYSCTL_FAN_DIV, VALUE(1), 0 },
{ SENSORS_GL518R80_FAN2_DIV, "fan2_div", SENSORS_GL518R80_FAN2,
SENSORS_NO_MAPPING, SENSORS_RW,
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
GL518_SYSCTL_FAN_DIV, VALUE(2), 0 },
{ SENSORS_GL518R80_ALARMS, "alarms", SENSORS_NO_MAPPING,
SENSORS_NO_MAPPING, SENSORS_R,
SENSORS_NO_MAPPING, SENSORS_MODE_R,
GL518_SYSCTL_FAN_DIV, VALUE(3), 0 },
{ 0 }
};

View File

@ -30,6 +30,7 @@
#define SENSORS_CHIP_NAME_BUS_ANY_I2C -3
#define SENSORS_CHIP_NAME_ADDR_ANY -1
/* A chip name is encoded is in this structure */
typedef struct sensors_chip_name {
char *prefix;
int bus;
@ -80,7 +81,7 @@ extern int sensors_get_feature(sensors_chip_name name, int feature,
/* Set the value of a feature of a certain chip. Note that chip should not
contain wildcard values! This function will return 0 on success, and <0
on failure. */
on failure. BUGGY! */
extern int sensors_set_feature(sensors_chip_name name, int feature,
double value);
@ -91,4 +92,35 @@ extern int sensors_set_feature(sensors_chip_name name, int feature,
extern const sensors_chip_name *sensors_get_detected_chips(int *nr);
/* These defines are used in the mode field of sensors_feature_data */
#define SENSORS_MODE_NO_RW 0
#define SENSORS_MODE_R 1
#define SENSORS_MODE_W 2
#define SENSORS_MODE_RW 3
/* This define is used in the mapping field of sensors_feature_data if no
mapping is available */
#define SENSORS_NO_MAPPING -1
/* This structure is used when you want to get all features of a specific
chip. */
typedef struct sensors_feature_data {
int number;
const char *name;
int mapping;
int unused;
int mode;
} sensors_feature_data;
/* This returns all features of a specific chip. They are returned in
bunches: everything with the same mapping is returned just after each
other, with the master feature in front (that feature does not map to
itself, but has SENSORS_NO_MAPPING as mapping field). nr1 and nr2 are
two internally used variables. Set both to zero to start again at the
begin of the list. If no more features are found NULL is returned.
Do not try to change the returned structure; you will corrupt internal
data structures. */
extern const sensors_feature_data *sensors_get_all_features
(sensors_chip_name name, int *nr1,int *nr2);
#endif /* def LIB_SENSORS_ERROR_H */

View File

@ -218,3 +218,30 @@ void print_lm78(const sensors_chip_name *name)
free_the_label(&label);
}
void print_unknown_chip(const sensors_chip_name *name)
{
int a,b;
const sensors_feature_data *data;
char *label;
double val;
a=b=0;
while((data=sensors_get_all_features(*name,&a,&b))) {
if (sensors_get_label(*name,data->number,&label)) {
printf("ERROR: Can't get feature `%s' data!",data->name);
continue;
}
if (data->mode & SENSORS_MODE_R) {
if(sensors_get_feature(*name,data->number,&val)) {
printf("ERROR: Can't get feature `%s' data!",data->name);
continue;
}
if (data->mapping != SENSORS_NO_MAPPING)
printf(" %s: %.2f (%s)\n",label,val,data->name);
else
printf("%s: %.2f (%s)\n",label,val,data->name);
} else
printf("(%s)",label);
}
}

View File

@ -22,6 +22,8 @@
#include "lib/sensors.h"
extern void print_unknown_chip(const sensors_chip_name *name);
extern void print_lm75(const sensors_chip_name *name);
extern void print_lm78(const sensors_chip_name *name);

View File

@ -165,6 +165,7 @@ int main (int argc, char *argv[])
}
/* Here comes the real code... */
for (chip_nr = 0; (chip = sensors_get_detected_chips(&chip_nr));) {
if (chip->bus == SENSORS_CHIP_NAME_BUS_ISA)
printf("%s-isa-%04x\n",chip->prefix,chip->addr);
@ -183,7 +184,11 @@ int main (int argc, char *argv[])
else if (!strcmp(chip->prefix,"lm78") || !strcmp(chip->prefix,"lm78-j") ||
!strcmp(chip->prefix,"lm79"))
print_lm78(chip);
else
print_unknown_chip(chip);
printf("\n");
}
exit(0);
}