mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-10-27 12:30:43 +00:00
add back temperature support for version 1 of chip.
The temperature registers are in different places for the two
versions. Both versions unfortunately have the same PCI ID.
Apparently the temperature conversion formulas are different
for the two versions. Neither is yet implemented in the driver.
git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@1070 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
1 parent
2dc8cc9b41
commit
ffedd9fa93
3 files changed
+45
-15
No files matched your search
@@ -42,7 +42,7 @@ ask CVS about it:
|
||||
Module mtp008: Fix temp initializations;
|
||||
Save BIOS pin configuration of temps and fans
|
||||
Module sensors: Disabled, moved to i2c package as i2c-proc.c
|
||||
Module sis5595: Fix temp, add in4.
|
||||
Module sis5595: Fix temp, add in4 for chip revision 0xc0.
|
||||
Module via686a: Allow force=9191,address (for A7V/K7V boards)
|
||||
Module w83781d: Don't reinitialize as99127f chip; this may cause fan/temp
|
||||
reading changes
|
||||
@@ -57,7 +57,8 @@ ask CVS about it:
|
||||
Change mtp008 temps from max/min to limit/hyst.
|
||||
Program sensors-detect: Recognize lm78 with chipid=0x20;
|
||||
Recognize SMSC Victory66 South Bridge;
|
||||
Add devfs /dev/i2c/x support
|
||||
Add devfs /dev/i2c/x support;
|
||||
Add thinkpad warning.
|
||||
Program tellerstats: new
|
||||
|
||||
2.5.5 (20010115)
|
||||
|
||||
+10
-1
@@ -9,6 +9,11 @@ Supported chips:
|
||||
Addresses scanned: ISA in PCI-space encoded address
|
||||
Datasheet: Publicly available at the Silicon Integrated Systems Corp. site.
|
||||
|
||||
Supports following revisions:
|
||||
Version PCI ID PCI Revision
|
||||
1 1039/0008 01
|
||||
2 1039/0008 C0
|
||||
|
||||
Author: Kyösti Mälkki <kmalkki@cc.hut.fi>
|
||||
|
||||
|
||||
@@ -27,7 +32,11 @@ For the I2C bus driver see i2c-sis5595.
|
||||
The SiS5595 implements zero or one temperature sensor, two FAN speed
|
||||
sensors, four or five voltage sensors, and alarms.
|
||||
|
||||
The temperature sensor (temp) and the fifth voltage sensor (in4) share a pin
|
||||
On the first version of the chip, there are four voltage
|
||||
sensors and one temperature sensor.
|
||||
|
||||
On the second version of the chip,
|
||||
the temperature sensor (temp) and the fifth voltage sensor (in4) share a pin
|
||||
which is configurable, but not through the driver. Sorry.
|
||||
The driver senses the configuration of the pin, which was hopefully
|
||||
set by the BIOS.
|
||||
|
||||
+32
-12
@@ -21,6 +21,13 @@
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
/*
|
||||
Supports following revisions:
|
||||
Version PCI ID PCI Revision
|
||||
1 1039/0008 01
|
||||
2 1039/0008 C0
|
||||
*/
|
||||
|
||||
#include <linux/version.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/malloc.h>
|
||||
@@ -67,6 +74,7 @@ SENSORS_INSMOD_1(sis5595);
|
||||
/* Length of ISA address segment */
|
||||
#define SIS5595_EXTENT 8
|
||||
/* PCI Config Registers */
|
||||
#define SIS5595_REVISION_REG 0x08
|
||||
#define SIS5595_BASE_REG 0x68
|
||||
#define SIS5595_PIN_REG 0x7A
|
||||
#define SIS5595_ENABLE_REG 0x7B
|
||||
@@ -83,12 +91,18 @@ SENSORS_INSMOD_1(sis5595);
|
||||
#define SIS5595_REG_FAN_MIN(nr) (0x3a + (nr))
|
||||
#define SIS5595_REG_FAN(nr) (0x27 + (nr))
|
||||
|
||||
/* TEMP pin is shared with IN4, configured in PCI register 0x7A. */
|
||||
/* The registers are the same as well. */
|
||||
/* OVER and HYST are really MAX and MIN. */
|
||||
#define SIS5595_REG_TEMP SIS5595_REG_IN(4)
|
||||
#define SIS5595_REG_TEMP_OVER SIS5595_REG_IN_MAX(4)
|
||||
#define SIS5595_REG_TEMP_HYST SIS5595_REG_IN_MIN(4)
|
||||
/* On the first version of the chip, the temp registers are separate.
|
||||
On the second version,
|
||||
TEMP pin is shared with IN4, configured in PCI register 0x7A.
|
||||
The registers are the same as well.
|
||||
OVER and HYST are really MAX and MIN. */
|
||||
|
||||
#define SIS5595_REG_TEMP (( data->revision) >= 0xc0) ? \
|
||||
SIS5595_REG_IN(4) : 0x27
|
||||
#define SIS5595_REG_TEMP_OVER (( data->revision) >= 0xc0) ? \
|
||||
SIS5595_REG_IN_MAX(4) : 0x39
|
||||
#define SIS5595_REG_TEMP_HYST (( data->revision) >= 0xc0) ? \
|
||||
SIS5595_REG_IN_MIN(4) : 0x3a
|
||||
|
||||
#define SIS5595_REG_CONFIG 0x40
|
||||
#define SIS5595_REG_ALARM1 0x41
|
||||
@@ -177,6 +191,7 @@ struct sis5595_data {
|
||||
char valid; /* !=0 if following fields are valid */
|
||||
unsigned long last_updated; /* In jiffies */
|
||||
char maxins; /* == 3 if temp enabled, otherwise == 4 */
|
||||
u8 revision; /* Reg. value */
|
||||
|
||||
u8 in[5]; /* Register value */
|
||||
u8 in_max[5]; /* Register value */
|
||||
@@ -357,13 +372,18 @@ int sis5595_detect(struct i2c_adapter *adapter, int address,
|
||||
/* Reserve the ISA region */
|
||||
request_region(address, SIS5595_EXTENT, type_name);
|
||||
|
||||
pci_read_config_byte(s_bridge, SIS5595_PIN_REG, &val);
|
||||
if(val & 0x80)
|
||||
/* 3 voltages, 1 temp */
|
||||
pci_read_config_byte(s_bridge, SIS5595_PIN_REG, &(data->revision));
|
||||
if(data->revision < 0xc0) {
|
||||
data->maxins = 3;
|
||||
else
|
||||
/* 4 voltages, no temps */
|
||||
data->maxins = 4;
|
||||
} else {
|
||||
pci_read_config_byte(s_bridge, SIS5595_PIN_REG, &val);
|
||||
if(val & 0x80)
|
||||
/* 3 voltages, 1 temp */
|
||||
data->maxins = 3;
|
||||
else
|
||||
/* 4 voltages, no temps */
|
||||
data->maxins = 4;
|
||||
}
|
||||
|
||||
/* Fill in the remaining client fields and put it into the global list */
|
||||
strcpy(new_client->name, client_name);
|
||||
|
||||
Reference in new issue
Block a user