diff --git a/doc/chips/sis5595 b/doc/chips/sis5595 index 6f81951c..56bfb3f8 100644 --- a/doc/chips/sis5595 +++ b/doc/chips/sis5595 @@ -1,7 +1,134 @@ +Kernel driver `sis5595.o' +========================= -This driver is for the SiS 5595 southbridge. -This is called sis5595-isa-* in /proc/sys/dev/sensors/chips +Status: Complete and tested + +Supported chips: + * Silicon Integrated Systems Corp. SiS5595 Southbridge Hardware Monitor + Prefix: sis5595 + Addresses scanned: ISA in PCI-space encoded address + Datasheet: Publicly available at the Silicon Integrated Systems Corp. site. + +Author: Kyösti Mälkki + + +Module Parameters +----------------- + +* force: short array (min = 1, max = 48) + List of adapter,address pairs to boldly assume to be present +* force_sis5595: short array (min = 1, max = 48) + List of adapter,address pairs which are unquestionably assumed to contain + a `sis5595' chip +* ignore: short array (min = 1, max = 48) + List of adapter,address pairs not to scan +* ignore_range: short array (min = 1, max = 48) + List of adapter,start-addr,end-addr triples not to scan +* probe: short array (min = 1, max = 48) + List of adapter,address pairs to scan additionally +* probe_range: short array (min = 1, max = 48) + List of adapter,start-addr,end-addr triples to scan additionally + + +Description +----------- + +The Sis5595 southbridge has integrated hardware monitor functionality. +It also has an I2C bus, but this driver only supports the hardware monitor. + +The SiS5595 implements one temperature sensor, two FAN rotation speed +sensors, four voltage sensors and alarms. + +Temperatures are measured in degrees Celcius. An alarm is triggered once +when the Overtemperature Shutdown limit is crossed; it is triggered again +as soon as it drops below the Hysteris value. A more useful behaviour +can be found by setting the Hysteris value to +127 degrees Celcius; in +this case, alarms are issued during all the time when the actual temperature +is above the Overtemperature Shutdown value. Measurements are guaranteed +between -55 and +125 degrees, with a resolution of 1 degree. + +FAN rotation speeds are reported in RPM (rotations per minute). An alarm is +triggered if the rotation speed has dropped below a programmable limit. FAN +readings can be divided by a programmable divider (1, 2, 4 or 8) to give +the readings more range or accuracy. This is important because some FANs +report only one 'tick' each rotation, while others report two - making +all readings twice as high. Not all RPM values can accurately be represented, +so some rounding is done. With a divider of 2, the lowest representable +value is around 2600 RPM. + +Voltage sensors (also known as IN sensors) report their values in volts. +An alarm is triggered if the voltage has crossed a programmable minimum +or maximum limit. Note that minimum in this case always means 'closest to +zero'; this is important for negative voltage measurements. All voltage +inputs can measure voltages between 0 and 4.08 volts, with a resolution +of 0.016 volt. + +In addition to the alarms described above, there is a BTI alarm, which gets +triggered when an external chip has crossed its limits. Usually, this is +connected to some LM75-like chip; if at least one crosses its limits, this +bit gets set. + +If an alarm triggers, it will remain triggered until the hardware register +is read at least once. This means that the cause for the alarm may +already have disappeared! Note that in the current implementation, all +hardware registers are read whenever any data is read (unless it is less +than 1.5 seconds since the last update). This means that you can easily +miss once-only alarms. + +The Sis5595 only updates its values each 1.5 seconds; reading it more often +will do no harm, but will return 'old' values. + + +Chip Features +------------- + +Chip `sis5595' + LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE + in0 NONE NONE R 2 + in1 NONE NONE R 2 + in2 NONE NONE R 2 + in3 NONE NONE R 2 + in0_min in0 in0 RW 2 + in1_min in1 in1 RW 2 + in2_min in2 in2 RW 2 + in3_min in3 in3 RW 2 + in0_max in0 in0 RW 2 + in1_max in1 in1 RW 2 + in2_max in2 in2 RW 2 + in3_max in3 in3 RW 2 + fan1 NONE NONE R 0 + fan2 NONE NONE R 0 + fan1_min fan1 fan1 RW 0 + fan2_min fan2 fan2 RW 0 + temp NONE NONE R 1 + temp_hyst temp temp RW 1 + temp_over temp temp RW 1 + fan1_div fan1 NONE RW 0 + fan2_div fan2 NONE RW 0 + alarms NONE NONE R 0 + + LABEL FEATURE SYMBOL SYSCTL FILE:NR + in0 SENSORS_SIS5595_IN0 in0:3 + in1 SENSORS_SIS5595_IN1 in1:3 + in2 SENSORS_SIS5595_IN2 in2:3 + in3 SENSORS_SIS5595_IN3 in3:3 + in0_min SENSORS_SIS5595_IN0_MIN in0:1 + in1_min SENSORS_SIS5595_IN1_MIN in1:1 + in2_min SENSORS_SIS5595_IN2_MIN in2:1 + in3_min SENSORS_SIS5595_IN3_MIN in3:1 + in0_max SENSORS_SIS5595_IN0_MAX in0:2 + in1_max SENSORS_SIS5595_IN1_MAX in1:2 + in2_max SENSORS_SIS5595_IN2_MAX in2:2 + in3_max SENSORS_SIS5595_IN3_MAX in3:2 + fan1 SENSORS_SIS5595_FAN1 fan1:2 + fan2 SENSORS_SIS5595_FAN2 fan2:2 + fan1_min SENSORS_SIS5595_FAN1_MIN fan1:1 + fan2_min SENSORS_SIS5595_FAN2_MIN fan2:1 + temp SENSORS_SIS5595_TEMP temp:3 + temp_hyst SENSORS_SIS5595_TEMP_HYST temp:2 + temp_over SENSORS_SIS5595_TEMP_OVER temp:1 + fan1_div SENSORS_SIS5595_FAN1_DIV fan_div:1 + fan2_div SENSORS_SIS5595_FAN2_DIV fan_div:2 + alarms SENSORS_SIS5595_ALARMS alarms:1 -It has an integrated LM78 connected on ISA bus, so for any -sensor related information, read document lm78. diff --git a/lib/chips.c b/lib/chips.c index fef10672..2f13f9f9 100644 --- a/lib/chips.c +++ b/lib/chips.c @@ -1160,12 +1160,6 @@ static sensors_chip_feature sis5595_features[] = SENSORS_MODE_R, LM78_SYSCTL_IN2, VALUE(3), 2 }, { SENSORS_SIS5595_IN3, "in3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R, LM78_SYSCTL_IN3, VALUE(3), 2 }, - { SENSORS_SIS5595_IN4, "in4", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM78_SYSCTL_IN4, VALUE(3), 2 }, - { SENSORS_SIS5595_IN5, "in5", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM78_SYSCTL_IN5, VALUE(3), 2 }, - { SENSORS_SIS5595_IN6, "in6", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM78_SYSCTL_IN6, VALUE(3), 2 }, { SENSORS_SIS5595_IN0_MIN, "in0_min", SENSORS_SIS5595_IN0, SENSORS_SIS5595_IN0, SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(1), 2 }, { SENSORS_SIS5595_IN1_MIN, "in1_min", SENSORS_SIS5595_IN1, SENSORS_SIS5595_IN1, @@ -1174,12 +1168,6 @@ static sensors_chip_feature sis5595_features[] = SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(1), 2 }, { SENSORS_SIS5595_IN3_MIN, "in3_min", SENSORS_SIS5595_IN3, SENSORS_SIS5595_IN3, SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(1), 2 }, - { SENSORS_SIS5595_IN4_MIN, "in4_min", SENSORS_SIS5595_IN4, SENSORS_SIS5595_IN4, - SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(1), 2 }, - { SENSORS_SIS5595_IN5_MIN, "in5_min", SENSORS_SIS5595_IN5, SENSORS_SIS5595_IN5, - SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(1), 2 }, - { SENSORS_SIS5595_IN6_MIN, "in6_min", SENSORS_SIS5595_IN6, SENSORS_SIS5595_IN6, - SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(1), 2 }, { SENSORS_SIS5595_IN0_MAX, "in0_max", SENSORS_SIS5595_IN0, SENSORS_SIS5595_IN0, SENSORS_MODE_RW, LM78_SYSCTL_IN0, VALUE(2), 2 }, { SENSORS_SIS5595_IN1_MAX, "in1_max", SENSORS_SIS5595_IN1, SENSORS_SIS5595_IN1, @@ -1188,24 +1176,14 @@ static sensors_chip_feature sis5595_features[] = SENSORS_MODE_RW, LM78_SYSCTL_IN2, VALUE(2), 2 }, { SENSORS_SIS5595_IN3_MAX, "in3_max", SENSORS_SIS5595_IN3, SENSORS_SIS5595_IN3, SENSORS_MODE_RW, LM78_SYSCTL_IN3, VALUE(2), 2 }, - { SENSORS_SIS5595_IN4_MAX, "in4_max", SENSORS_SIS5595_IN4, SENSORS_SIS5595_IN4, - SENSORS_MODE_RW, LM78_SYSCTL_IN4, VALUE(2), 2 }, - { SENSORS_SIS5595_IN5_MAX, "in5_max", SENSORS_SIS5595_IN5, SENSORS_SIS5595_IN5, - SENSORS_MODE_RW, LM78_SYSCTL_IN5, VALUE(2), 2 }, - { SENSORS_SIS5595_IN6_MAX, "in6_max", SENSORS_SIS5595_IN6, SENSORS_SIS5595_IN6, - SENSORS_MODE_RW, LM78_SYSCTL_IN6, VALUE(2), 2 }, { SENSORS_SIS5595_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R, LM78_SYSCTL_FAN1, VALUE(2), 0 }, { SENSORS_SIS5595_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R, LM78_SYSCTL_FAN2, VALUE(2), 0 }, - { SENSORS_SIS5595_FAN3, "fan3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM78_SYSCTL_FAN3, VALUE(2), 0 }, { SENSORS_SIS5595_FAN1_MIN, "fan1_min", SENSORS_SIS5595_FAN1, SENSORS_SIS5595_FAN1, SENSORS_MODE_RW, LM78_SYSCTL_FAN1, VALUE(1), 0 }, { SENSORS_SIS5595_FAN2_MIN, "fan2_min", SENSORS_SIS5595_FAN2, SENSORS_SIS5595_FAN2, SENSORS_MODE_RW, LM78_SYSCTL_FAN2, VALUE(1), 0 }, - { SENSORS_SIS5595_FAN3_MIN, "fan3_min", SENSORS_SIS5595_FAN3, SENSORS_SIS5595_FAN3, - SENSORS_MODE_RW, LM78_SYSCTL_FAN3, VALUE(1), 0 }, { SENSORS_SIS5595_TEMP, "temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R, LM78_SYSCTL_TEMP, VALUE(3), 1 }, { SENSORS_SIS5595_TEMP_HYST, "temp_hyst", SENSORS_SIS5595_TEMP, @@ -1214,17 +1192,12 @@ static sensors_chip_feature sis5595_features[] = { SENSORS_SIS5595_TEMP_OVER, "temp_over", SENSORS_SIS5595_TEMP, SENSORS_SIS5595_TEMP, SENSORS_MODE_RW, LM78_SYSCTL_TEMP, VALUE(1), 1 }, - { SENSORS_SIS5595_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM78_SYSCTL_VID, VALUE(1), 2 }, { SENSORS_SIS5595_FAN1_DIV, "fan1_div", SENSORS_SIS5595_FAN1, SENSORS_NO_MAPPING, SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(1), 0 }, { SENSORS_SIS5595_FAN2_DIV, "fan2_div", SENSORS_SIS5595_FAN2, SENSORS_NO_MAPPING, SENSORS_MODE_RW, LM78_SYSCTL_FAN_DIV, VALUE(2), 0 }, - { SENSORS_SIS5595_FAN3_DIV, "fan3_div", SENSORS_SIS5595_FAN3, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM78_SYSCTL_FAN_DIV, VALUE(3), - 0 }, { SENSORS_SIS5595_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R, LM78_SYSCTL_ALARMS, VALUE(1), 0 }, { 0 } diff --git a/lib/chips.h b/lib/chips.h index 88335d3a..5bc0241e 100644 --- a/lib/chips.h +++ b/lib/chips.h @@ -539,36 +539,23 @@ #define SENSORS_SIS5595_IN1 2 /* R */ #define SENSORS_SIS5595_IN2 3 /* R */ #define SENSORS_SIS5595_IN3 4 /* R */ -#define SENSORS_SIS5595_IN4 5 /* R */ -#define SENSORS_SIS5595_IN5 6 /* R */ -#define SENSORS_SIS5595_IN6 7 /* R */ #define SENSORS_SIS5595_IN0_MIN 11 /* RW */ #define SENSORS_SIS5595_IN1_MIN 12 /* RW */ #define SENSORS_SIS5595_IN2_MIN 13 /* RW */ #define SENSORS_SIS5595_IN3_MIN 14 /* RW */ -#define SENSORS_SIS5595_IN4_MIN 15 /* RW */ -#define SENSORS_SIS5595_IN5_MIN 16 /* RW */ -#define SENSORS_SIS5595_IN6_MIN 17 /* RW */ #define SENSORS_SIS5595_IN0_MAX 21 /* RW */ #define SENSORS_SIS5595_IN1_MAX 22 /* RW */ #define SENSORS_SIS5595_IN2_MAX 23 /* RW */ #define SENSORS_SIS5595_IN3_MAX 24 /* RW */ -#define SENSORS_SIS5595_IN4_MAX 25 /* RW */ -#define SENSORS_SIS5595_IN5_MAX 26 /* RW */ -#define SENSORS_SIS5595_IN6_MAX 27 /* RW */ #define SENSORS_SIS5595_FAN1 31 /* R */ #define SENSORS_SIS5595_FAN2 32 /* R */ -#define SENSORS_SIS5595_FAN3 33 /* R */ #define SENSORS_SIS5595_FAN1_MIN 41 /* RW */ #define SENSORS_SIS5595_FAN2_MIN 42 /* RW */ -#define SENSORS_SIS5595_FAN3_MIN 43 /* RW */ #define SENSORS_SIS5595_TEMP 51 /* R */ #define SENSORS_SIS5595_TEMP_HYST 52 /* RW */ #define SENSORS_SIS5595_TEMP_OVER 53 /* RW */ -#define SENSORS_SIS5595_VID 61 /* R */ #define SENSORS_SIS5595_FAN1_DIV 71 /* RW */ #define SENSORS_SIS5595_FAN2_DIV 72 /* RW */ -#define SENSORS_SIS5595_FAN3_DIV 73 /* R (yes, really! */ #define SENSORS_SIS5595_ALARMS 81 /* R */