New FSC Hermes chip driver, contributed by Reinhard Nissl

<rnissl@gmx.de>.


git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@2029 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
Jean Delvare committed 2003-10-27 21:14:26 +00:00
1 parent 08b64e8200
commit f67324f3be
11 files changed
+268 -11

No files matched your search

+2 -1
View File
@@ -22,7 +22,8 @@ ask CVS about it:
Makefiles: Install burntest, fancontrol, pwmconfig, decode-*.pl
Module bmcsensors: Fix voltage scaling, voltage and fan limits
Module i2c-piix4: Add support for CSB6
Module i2c-sis630: sync with 2.6.0-X driver version.
Module i2c-sis630: Sync with 2.6.0-X driver version
Module fscher: New (Fujitsu-Siemens Hermes driver)
Program sensors-detect: Prefer Super I/O drivers;
Fix w83627hf detection; detect CSB6
+3 -1
View File
@@ -92,4 +92,6 @@ problems.
Author of the SAA1064 chip driver.
* John Morris (john.morris@spirentcom.com)
Author of the MAX6650 chip driver.
* Reinhard Nissl <rnissl@gmx.de>
Author of the fscher driver.
+1 -1
View File
@@ -73,7 +73,7 @@ At least the following hardware sensor chips are supported:
Asus AS99127F, ASB100 Bach
Dallas Semiconductor DS75, DS1621, DS1625, DS1775, and DS1780
Hewlett Packard Maxilife (several revisions including '99 NBA)
Fujitsu Siemens Poseidon, Scylla
Fujitsu Siemens Poseidon, Scylla, Hermes
Genesys Logic GL518SM (rev 00, 80), GL520SM, GL523SM
Intel Xeon processor embedded sensors
ITE IT8705F, IT8712F embedded sensors
+6
View File
@@ -80,6 +80,9 @@ ds1621
(the following chip is detected as a ds1621)
ds1625 1 - - - yes no
fscher
fscher 3 3 3 - yes no
fscpos
fscpos 3 3 3 - yes no
@@ -126,6 +129,9 @@ lm85
lm87
lm87 2-3 6-8 0-2 1 pwm yes no
lm90
lm90 2 - - - yes no
lm92
lm92 1 - - - yes no
+28 -8
View File
@@ -1398,11 +1398,10 @@ chip "it87-*" "it8705-*" "it8712-*"
# ignore fan2
# ignore fan3
chip "fscpos-*"
#
# values for the fujitsu siemens poseidon chip
#
chip "fscpos-*"
# Fujitsu-Siemens Poseidon chip
# Temperature
label temp1 "Temp1/CPU"
@@ -1421,11 +1420,10 @@ chip "fscpos-*"
label volt5 "+5V"
label voltbatt "+3.3V"
chip "fscscy-*"
#
# values for the fujitsu siemens Scylla chip
#
chip "fscscy-*"
# Fujitsu-Siemens Scylla chip
# Temperature
label temp1 "Temp1/CPU0"
@@ -1449,6 +1447,28 @@ chip "fscscy-*"
label voltbatt "+3.3V"
chip "fscher-*"
# Fujitsu-Siemens Hermes chip
# Temperature
label temp1 "Temp1/CPU"
label temp2 "Temp2/MB"
label temp3 "Temp3/AUX"
# Fans
label fan1 "Fan1/CPU"
label fan2 "Fan2/AUX"
label fan3 "Fan3/PS"
# Voltage
label in0 "+12V"
label in1 "+5V"
label in2 "Battery"
chip "pcf8591-*"
#
# values for the Philips PCF8591 chip
+3
View File
@@ -75,6 +75,9 @@ endif
ifneq ($(shell if grep -q '^CONFIG_SENSORS_FSCSCY=y' $(LINUX)/.config; then echo 1; fi),1)
KERNELCHIPSTARGETS += $(MODULE_DIR)/fscscy.o
endif
ifneq ($(shell if grep -q '^CONFIG_SENSORS_FSCHER=y' $(LINUX)/.config; then echo 1; fi),1)
KERNELCHIPSTARGETS += $(MODULE_DIR)/fscher.o
endif
ifneq ($(shell if grep -q '^CONFIG_SENSORS_GL518SM=y' $(LINUX)/.config; then echo 1; fi),1)
KERNELCHIPSTARGETS += $(MODULE_DIR)/gl518sm.o
endif
+77
View File
@@ -3921,6 +3921,81 @@ static sensors_chip_feature fscscy_features[] =
{ 0 }
};
static sensors_chip_feature fscher_features[] =
{
{ SENSORS_FSCHER_REV, "rev", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_REV, VALUE(1), 0 },
{ SENSORS_FSCHER_EVENT, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_EVENT, VALUE(1), 0 },
{ SENSORS_FSCHER_CONTROL, "control", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_RW, FSCHER_SYSCTL_CONTROL, VALUE(1), 0 },
{ SENSORS_FSCHER_VOLTAGE1, "in0", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_VOLT0, VALUE(1), 2 },
{ SENSORS_FSCHER_VOLTAGE2, "in1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_VOLT1, VALUE(1), 2 },
{ SENSORS_FSCHER_VOLTAGE3, "in2", SENSORS_NO_MAPPING,
SENSORS_NO_MAPPING, SENSORS_MODE_R,
FSCHER_SYSCTL_VOLT2, VALUE(1), 2 },
{ SENSORS_FSCHER_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_TEMP0, VALUE(2), 0 },
{ SENSORS_FSCHER_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_TEMP1, VALUE(2), 0 },
{ SENSORS_FSCHER_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_TEMP2, VALUE(2), 0 },
{ SENSORS_FSCHER_TEMP1_STATE, "temp1_state", SENSORS_FSCHER_TEMP1,
SENSORS_FSCHER_TEMP1, SENSORS_MODE_RW,
FSCHER_SYSCTL_TEMP0, VALUE(1), 0 },
{ SENSORS_FSCHER_TEMP2_STATE, "temp2_state", SENSORS_FSCHER_TEMP2,
SENSORS_FSCHER_TEMP2, SENSORS_MODE_RW,
FSCHER_SYSCTL_TEMP1, VALUE(1), 0 },
{ SENSORS_FSCHER_TEMP3_STATE, "temp3_state", SENSORS_FSCHER_TEMP3,
SENSORS_FSCHER_TEMP3, SENSORS_MODE_RW,
FSCHER_SYSCTL_TEMP2, VALUE(1), 0 },
{ SENSORS_FSCHER_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_FAN0, VALUE(4), 0 },
{ SENSORS_FSCHER_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_FAN1, VALUE(4), 0 },
{ SENSORS_FSCHER_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
SENSORS_MODE_R, FSCHER_SYSCTL_FAN2, VALUE(4), 0 },
{ SENSORS_FSCHER_FAN1_MIN, "fan1_min", SENSORS_FSCHER_FAN1,
SENSORS_FSCHER_FAN1, SENSORS_MODE_RW,
FSCHER_SYSCTL_FAN0, VALUE(2), 0 },
{ SENSORS_FSCHER_FAN2_MIN, "fan2_min", SENSORS_FSCHER_FAN2,
SENSORS_FSCHER_FAN2, SENSORS_MODE_RW,
FSCHER_SYSCTL_FAN1, VALUE(2), 0 },
{ SENSORS_FSCHER_FAN3_MIN, "fan3_min", SENSORS_FSCHER_FAN3,
SENSORS_FSCHER_FAN3, SENSORS_MODE_RW,
FSCHER_SYSCTL_FAN2, VALUE(2), 0 },
{ SENSORS_FSCHER_FAN1_STATE, "fan1_state", SENSORS_FSCHER_FAN1,
SENSORS_FSCHER_FAN1, SENSORS_MODE_RW,
FSCHER_SYSCTL_FAN0, VALUE(1), 0 },
{ SENSORS_FSCHER_FAN2_STATE, "fan2_state", SENSORS_FSCHER_FAN2,
SENSORS_FSCHER_FAN2, SENSORS_MODE_RW,
FSCHER_SYSCTL_FAN1, VALUE(1), 0 },
{ SENSORS_FSCHER_FAN3_STATE, "fan3_state", SENSORS_FSCHER_FAN3,
SENSORS_FSCHER_FAN3, SENSORS_MODE_RW,
FSCHER_SYSCTL_FAN2, VALUE(1), 0 },
{ SENSORS_FSCHER_FAN1_RIPPLE, "fan1_ripple", SENSORS_FSCHER_FAN1,
SENSORS_FSCHER_FAN1, SENSORS_MODE_RW,
FSCHER_SYSCTL_FAN0, VALUE(3), 0 },
{ SENSORS_FSCHER_FAN2_RIPPLE, "fan2_ripple", SENSORS_FSCHER_FAN2,
SENSORS_FSCHER_FAN2, SENSORS_MODE_RW,
FSCHER_SYSCTL_FAN1, VALUE(3), 0 },
{ SENSORS_FSCHER_FAN3_RIPPLE, "fan3_ripple", SENSORS_FSCHER_FAN3,
SENSORS_FSCHER_FAN3, SENSORS_MODE_RW,
FSCHER_SYSCTL_FAN2, VALUE(3), 0 },
{ SENSORS_FSCHER_WDOG_PRESET, "wdog_preset", SENSORS_NO_MAPPING,
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
FSCHER_SYSCTL_WDOG, VALUE(1), 0 },
{ SENSORS_FSCHER_WDOG_STATE, "wdog_state", SENSORS_FSCHER_WDOG_PRESET,
SENSORS_FSCHER_WDOG_PRESET, SENSORS_MODE_RW,
FSCHER_SYSCTL_WDOG, VALUE(2), 0 },
{ SENSORS_FSCHER_WDOG_CONTROL, "wdog_control", SENSORS_FSCHER_WDOG_PRESET,
SENSORS_FSCHER_WDOG_PRESET, SENSORS_MODE_RW,
FSCHER_SYSCTL_WDOG, VALUE(3), 0 },
{ 0 }
};
static sensors_chip_feature pcf8591_features[] =
{
{ SENSORS_PCF8591_AIN_CONF, "ain_conf", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING,
@@ -4603,6 +4678,7 @@ static sensors_chip_feature max6650_features[] =
{ SENSORS_MAX6650_SPEED, "speed", SENSORS_NO_MAPPING,
SENSORS_NO_MAPPING, SENSORS_MODE_RW,
MAX6650_SYSCTL_SPEED, VALUE(1), 0 },
{ 0 }
};
sensors_chip_features sensors_chip_features_list[] =
@@ -4660,6 +4736,7 @@ sensors_chip_features sensors_chip_features_list[] =
{ SENSORS_IT87_PREFIX, it87_features },
{ SENSORS_FSCPOS_PREFIX, fscpos_features },
{ SENSORS_FSCSCY_PREFIX, fscscy_features },
{ SENSORS_FSCHER_PREFIX, fscher_features },
{ SENSORS_PCF8591_PREFIX, pcf8591_features },
{ SENSORS_VT1211_PREFIX, vt1211_features },
{ SENSORS_SMSC47M1_PREFIX, smsc47m1_features },
+32
View File
@@ -1490,6 +1490,38 @@
#define SENSORS_FSCSCY_WDOG_STATE 52 /* RW */
#define SENSORS_FSCSCY_WDOG_CONTROL 52 /* RW */
/* fsc hermes chip */
#define SENSORS_FSCHER_PREFIX "fscher"
#define SENSORS_FSCHER_REV 1 /* R */
#define SENSORS_FSCHER_EVENT 2 /* R */
#define SENSORS_FSCHER_CONTROL 3 /* RW */
#define SENSORS_FSCHER_FAN1 4 /* R */
#define SENSORS_FSCHER_FAN2 5 /* R */
#define SENSORS_FSCHER_FAN3 6 /* R */
#define SENSORS_FSCHER_FAN1_MIN 7 /* RW */
#define SENSORS_FSCHER_FAN2_MIN 8 /* RW */
#define SENSORS_FSCHER_FAN3_MIN 9 /* RW */
#define SENSORS_FSCHER_FAN1_STATE 10 /* RW */
#define SENSORS_FSCHER_FAN2_STATE 11 /* RW */
#define SENSORS_FSCHER_FAN3_STATE 12 /* RW */
#define SENSORS_FSCHER_FAN1_RIPPLE 13 /* RW */
#define SENSORS_FSCHER_FAN2_RIPPLE 14 /* RW */
#define SENSORS_FSCHER_FAN3_RIPPLE 15 /* RW */
#define SENSORS_FSCHER_TEMP1 16 /* R */
#define SENSORS_FSCHER_TEMP2 17 /* R */
#define SENSORS_FSCHER_TEMP3 18 /* R */
#define SENSORS_FSCHER_TEMP1_STATE 19 /* RW */
#define SENSORS_FSCHER_TEMP2_STATE 20 /* RW */
#define SENSORS_FSCHER_TEMP3_STATE 21 /* RW */
#define SENSORS_FSCHER_VOLTAGE1 22 /* R */
#define SENSORS_FSCHER_VOLTAGE2 23 /* R */
#define SENSORS_FSCHER_VOLTAGE3 24 /* R */
#define SENSORS_FSCHER_WDOG_PRESET 25/* RW */
#define SENSORS_FSCHER_WDOG_STATE 26/* RW */
#define SENSORS_FSCHER_WDOG_CONTROL 27/* RW */
/* PCF8591 chip. */
#define SENSORS_PCF8591_PREFIX "pcf8591"
+113
View File
@@ -3511,6 +3511,119 @@ void print_fscscy(const sensors_chip_name *name)
free_the_label(&label);
}
void print_fscher(const sensors_chip_name *name)
{
char *label = NULL;
double voltage, temp,state,fan,min_rpm;
int valid;
if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_TEMP1,&label,&valid)
&& !sensors_get_feature(*name,SENSORS_FSCHER_TEMP1,&temp)
&& !sensors_get_feature(*name,SENSORS_FSCHER_TEMP1_STATE,&state)) {
if (valid) {
print_label(label,10);
if((int) state & 0x01)
printf("\t%+6.2f C \n",temp);
else
printf("\tfailed\n");
}
}
free_the_label(&label);
if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_TEMP2,&label,&valid)
&& !sensors_get_feature(*name,SENSORS_FSCHER_TEMP2,&temp)
&& !sensors_get_feature(*name,SENSORS_FSCHER_TEMP2_STATE,&state)) {
if (valid) {
print_label(label,10);
if((int) state & 0x01)
printf("\t%+6.2f C \n",temp);
else
printf("\tfailed\n");
}
}
free_the_label(&label);
if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_TEMP3,&label,&valid)
&& !sensors_get_feature(*name,SENSORS_FSCHER_TEMP3,&temp)
&& !sensors_get_feature(*name,SENSORS_FSCHER_TEMP3_STATE,&state)) {
if (valid) {
print_label(label,10);
if((int) state & 0x01)
printf("\t%+6.2f C \n",temp);
else
printf("\tfailed\n");
}
}
free_the_label(&label);
if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_FAN1,&label,&valid)
&& !sensors_get_feature(*name,SENSORS_FSCHER_FAN1,&fan)
&& !sensors_get_feature(*name,SENSORS_FSCHER_FAN1_MIN,&min_rpm)
&& !sensors_get_feature(*name,SENSORS_FSCHER_FAN1_STATE,&state)) {
if (valid) {
print_label(label,10);
if((int) state & 0x02)
printf("\tfaulty\n");
else if (fan < min_rpm)
printf("\t%6.0f RPM (not present or faulty)\n",fan);
else
printf("\t%6.0f RPM \n",fan);
}
}
free_the_label(&label);
if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_FAN2,&label,&valid)
&& !sensors_get_feature(*name,SENSORS_FSCHER_FAN2,&fan)
&& !sensors_get_feature(*name,SENSORS_FSCHER_FAN2_MIN,&min_rpm)
&& !sensors_get_feature(*name,SENSORS_FSCHER_FAN2_STATE,&state)) {
if (valid) {
print_label(label,10);
if((int) state & 0x02)
printf("\tfaulty\n");
else if (fan < min_rpm)
printf("\t%6.0f RPM (not present or faulty)\n",fan);
else
printf("\t%6.0f RPM \n",fan);
}
}
free_the_label(&label);
if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_FAN3,&label,&valid)
&& !sensors_get_feature(*name,SENSORS_FSCHER_FAN3,&fan)
&& !sensors_get_feature(*name,SENSORS_FSCHER_FAN3_MIN,&min_rpm)
&& !sensors_get_feature(*name,SENSORS_FSCHER_FAN3_STATE,&state)) {
if (valid) {
print_label(label,10);
if((int) state & 0x02)
printf("\tfaulty\n");
else if (fan < min_rpm)
printf("\t%6.0f RPM (not present or faulty)\n",fan);
else
printf("\t%6.0f RPM \n",fan);
}
}
free_the_label(&label);
if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_VOLTAGE1,&label,&valid)
&& !sensors_get_feature(*name,SENSORS_FSCHER_VOLTAGE1,&voltage)) {
if (valid) {
print_label(label,10);
printf("\t%+6.2f V\n",voltage);
}
}
free_the_label(&label);
if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_VOLTAGE2,&label,&valid)
&& !sensors_get_feature(*name,SENSORS_FSCHER_VOLTAGE2,&voltage)) {
if (valid) {
print_label(label,10);
printf("\t%+6.2f V\n",voltage);
}
}
free_the_label(&label);
if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_VOLTAGE3,&label,&valid)
&& !sensors_get_feature(*name,SENSORS_FSCHER_VOLTAGE3,&voltage)) {
if (valid) {
print_label(label,10);
printf("\t%+6.2f V\n",voltage);
}
}
free_the_label(&label);
}
void print_pcf8591(const sensors_chip_name *name)
{
char *label;
+1
View File
@@ -46,6 +46,7 @@ extern void print_lm87(const sensors_chip_name *name);
extern void print_it87(const sensors_chip_name *name);
extern void print_fscpos(const sensors_chip_name *name);
extern void print_fscscy(const sensors_chip_name *name);
extern void print_fscher(const sensors_chip_name *name);
extern void print_pcf8591(const sensors_chip_name *name);
extern void print_vt1211(const sensors_chip_name *name);
extern void print_smsc47m1(const sensors_chip_name *name);
+2
View File
@@ -361,6 +361,8 @@ void do_a_print(sensors_chip_name name)
print_fscpos(&name);
else if (!strcmp(name.prefix,"fscscy"))
print_fscscy(&name);
else if (!strcmp(name.prefix,"fscher"))
print_fscher(&name);
else if (!strcmp(name.prefix,"pcf8591"))
print_pcf8591(&name);
else if (!strcmp(name.prefix,"vt1211"))