mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-11-13 17:00:15 +00:00
(mds) add lm81 support to the adm9240 driver.
git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@532 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
1 parent
d34707ac02
commit
5f77505190
7 files changed
+132
-23
No files matched your search
+5
-1
@@ -23,7 +23,11 @@ problems.
|
||||
* Kyösti Mälkki <kmalkki@cc.hut.fi>
|
||||
Author of the i2c-via and sis5595 drivers.
|
||||
* Mark D. Studebaker <mds@eng.paradyne.com>
|
||||
Author of the i2c-ali15x3 driver, as well as other drivers.
|
||||
Author of the i2c-ali15x3 bus driver and the i2c-i810 bus driver.
|
||||
Added w83782d, w83783s, and w83627hf support to the w83781d driver.
|
||||
Added max1617 support to the adm1021 driver.
|
||||
Added lm81 support to the adm9240 driver.
|
||||
Author of the decode-xeon.pl xeon EEPROM decoder.
|
||||
* Geert Uytterhoeven <geert@linux-m68k.org>
|
||||
Author of the i2c-hydra driver.
|
||||
* Adrian Baugh <adrian.baugh@keble.ox.ac.uk>
|
||||
|
||||
@@ -23,12 +23,12 @@ and module bit-mb is renamed i2c-via. You have been warned.
|
||||
|
||||
At least the following SMBus adapters are supported:
|
||||
Intel PIIX4 (used in most Intel chipsets)
|
||||
Intel ICH (used Intel 810 chipsets for Celeron processors)
|
||||
Intel ICH (used in Intel 810 chipsets for Celeron processors)
|
||||
Acer Labs M1541 and M1543C (used in the Aladdin IV, V and Pro 2 chipsets)
|
||||
VIA Technologies 82C586B (used in most VIA chipsets)
|
||||
|
||||
At least the following hardware sensor chips are supported:
|
||||
National Semicoductor LM75, LM78, LM78-J, LM79 and LM80
|
||||
National Semicoductor LM75, LM78, LM78-J, LM79. LM80, and LM81
|
||||
Winbond W83781D, W83782D, W83783S, and W83627HF
|
||||
Genesys Logic GL518SM (several revisions)
|
||||
Analog Devices ADM1021 and ADM9240
|
||||
@@ -42,6 +42,7 @@ At least the following hardware sensor chips are supported:
|
||||
We also support some miscellaneous chips:
|
||||
Linear Technologies LTC1710
|
||||
Dimms with EEPROMs
|
||||
Intel Xeon processor embedded EEPROMs
|
||||
|
||||
We could use some testers of hardware. If you own a specific monitoring
|
||||
chip or I2C bus, and are willing to help us out, please contact us - even
|
||||
|
||||
+13
-6
@@ -4,13 +4,17 @@ This is a summary of the sensor and non-sensor chips supported
|
||||
by this package. It summarizes the features of each supported chip.
|
||||
|
||||
For further information on a particular chip, see the documentation
|
||||
in this directory.
|
||||
in this directory. Data sheets are generally available on the
|
||||
manufacturer's web site.
|
||||
|
||||
To determine what chips you have on your system,
|
||||
To determine what chips you have in your system,
|
||||
run prog/detect/sensors-detect.
|
||||
|
||||
If your sensor chip is not detected or supported by this package,
|
||||
please send mail to lm78@stimpy.netroedge.com.
|
||||
|
||||
|
||||
---------------------------------------------------------------------
|
||||
---------------------------------------------------------------------
|
||||
|
||||
SENSOR CHIPS
|
||||
-------------
|
||||
@@ -26,8 +30,9 @@ adm1021
|
||||
xeon 1 - - - yes no
|
||||
|
||||
adm9240
|
||||
adm9240 1 6 5 1 dac yes no
|
||||
ds1780 1 6 5 1 dac yes no
|
||||
adm9240 1 6 2 1 dac yes no
|
||||
ds1780 1 6 2 1 dac yes no
|
||||
lm81 1 6 2 1 dac yes no
|
||||
|
||||
gl518sm
|
||||
gl518sm (r00) 1 1/4 2 - yes no
|
||||
@@ -48,7 +53,9 @@ lm80
|
||||
lm80 1 7 2 - yes no
|
||||
|
||||
maxilife
|
||||
maxilife 5 4 3 - yes no
|
||||
maxilife-as 5 4 3 - yes no
|
||||
maxilife-co 5 4 3 - yes no
|
||||
maxilife-cg 5 4 3 - yes no
|
||||
|
||||
sis5595
|
||||
sis5595 1 7 3 - no yes
|
||||
|
||||
+81
-5
@@ -12,6 +12,10 @@ Supported chips:
|
||||
Prefix `ds1780'
|
||||
Addresses scanned: I2C 0x2c - 0x2f (inclusive)
|
||||
Datasheet: Publicly available at the Dallas Semiconductor website
|
||||
* National Semiconductor LM81
|
||||
Prefix `lm81'
|
||||
Addresses scanned: I2C 0x2c - 0x2f (inclusive)
|
||||
Datasheet: Publicly available at the National Semiconductor website
|
||||
|
||||
|
||||
Author: Frodo Looijaard <frodol@dds.nl> and Philip Edelbrock
|
||||
@@ -29,6 +33,9 @@ Module Parameters
|
||||
* force_ds1780: short array (min = 1, max = 48)
|
||||
List of adapter,address pairs which are unquestionably assumed to contain
|
||||
a `ds1780' chip
|
||||
* force_lm81: short array (min = 1, max = 48)
|
||||
List of adapter,address pairs which are unquestionably assumed to contain
|
||||
a `lm81' chip
|
||||
* ignore: short array (min = 1, max = 48)
|
||||
List of adapter,address pairs not to scan
|
||||
* ignore_range: short array (min = 1, max = 48)
|
||||
@@ -42,12 +49,13 @@ Module Parameters
|
||||
Description
|
||||
-----------
|
||||
|
||||
This driver implements support for the Analog Devices ADM9240 and
|
||||
Dallas Semiconductor DS1780 chips. These chips appear to be completely
|
||||
This driver implements support for the Analog Devices ADM9240,
|
||||
Dallas Semiconductor DS1780, and National Semiconductor LM81 chips.
|
||||
These chips appear to be completely
|
||||
identical, except for the manufacturer IDs encoded in two registers, and
|
||||
the speed with which they update their sensor readings.
|
||||
|
||||
The ADM9240 and DS1780 implement six voltage sensors, a temperature sensor,
|
||||
The chips implement six voltage sensors, a temperature sensor,
|
||||
two FAN rotation speed sensors, VID lines and some miscellaneous stuff.
|
||||
|
||||
Temperatures are measured in degrees Celcius. An alarm is triggered whenever
|
||||
@@ -92,8 +100,9 @@ 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.
|
||||
|
||||
Thes ADM9240 only updates its values every 0.5 seconds; the DS1760 one
|
||||
every 2 seconds; reading them more often will do no harm, but will return
|
||||
Thes ADM9240 only updates its values every 0.5 seconds; the DS1780 one
|
||||
every 2 seconds; and the LM81 every 0.4 seconds.
|
||||
Reading them more often will do no harm, but will return
|
||||
'old' values. (NB: theoretically, this could be done much faster for the
|
||||
ADM9240, but there is no real reason to do so, and this way the SMBus use
|
||||
is kept within reasonable limits)
|
||||
@@ -234,6 +243,73 @@ Chip `ds1780'
|
||||
analog_out SENSORS_DS1780_ANALOG_OUT analog_out:1
|
||||
|
||||
|
||||
Chip `lm81'
|
||||
LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE
|
||||
2.5V NONE NONE R 2
|
||||
Vccp1 NONE NONE R 2
|
||||
3.3V NONE NONE R 2
|
||||
5V NONE NONE R 2
|
||||
12V NONE NONE R 2
|
||||
Vccp2 NONE NONE R 2
|
||||
2.5V_min 2.5V 2.5V RW 2
|
||||
Vccp1_min Vccp1 Vccp1 RW 2
|
||||
3.3V_min 3.3V 3.3V RW 2
|
||||
5V_min 5V 5V RW 2
|
||||
12V_min 12V 12V RW 2
|
||||
Vccp2_min Vccp2 Vccp2 RW 2
|
||||
2.5V_max 2.5V 2.5V RW 2
|
||||
Vccp1_max Vccp1 Vccp1 RW 2
|
||||
3.3V_max 3.3V 3.3V RW 2
|
||||
5V_max 5V 5V RW 2
|
||||
12V_max 12V 12V RW 2
|
||||
Vccp2_max Vccp2 Vccp2 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
|
||||
vid NONE NONE R 2
|
||||
fan1_div fan1 NONE RW 0
|
||||
fan2_div fan2 NONE RW 0
|
||||
alarms NONE NONE R 0
|
||||
analog_out NONE NONE RW 0
|
||||
|
||||
LABEL FEATURE SYMBOL SYSCTL FILE:NR
|
||||
2.5V SENSORS_ADM9240_IN0 2.5V:3
|
||||
Vccp1 SENSORS_ADM9240_IN1 Vccp1:3
|
||||
3.3V SENSORS_ADM9240_IN2 3.3V:3
|
||||
5V SENSORS_ADM9240_IN3 5V:3
|
||||
12V SENSORS_ADM9240_IN4 12V:3
|
||||
Vccp2 SENSORS_ADM9240_IN5 Vccp2:3
|
||||
2.5V_min SENSORS_ADM9240_IN0_MIN 2.5V:1
|
||||
Vccp1_min SENSORS_ADM9240_IN1_MIN Vccp1:1
|
||||
3.3V_min SENSORS_ADM9240_IN2_MIN 3.3V:1
|
||||
5V_min SENSORS_ADM9240_IN3_MIN 5V:1
|
||||
12V_min SENSORS_ADM9240_IN4_MIN 12V:1
|
||||
Vccp2_min SENSORS_ADM9240_IN5_MIN Vccp2:1
|
||||
2.5V_max SENSORS_ADM9240_IN0_MAX 2.5V:2
|
||||
Vccp1_max SENSORS_ADM9240_IN1_MAX Vccp1:2
|
||||
3.3V_max SENSORS_ADM9240_IN2_MAX 3.3V:2
|
||||
5V_max SENSORS_ADM9240_IN3_MAX 5V:2
|
||||
12V_max SENSORS_ADM9240_IN4_MAX 12V:2
|
||||
Vccp2_max SENSORS_ADM9240_IN5_MAX Vccp2:2
|
||||
fan1 SENSORS_ADM9240_FAN1 fan1:2
|
||||
fan2 SENSORS_ADM9240_FAN2 fan2:2
|
||||
fan1_min SENSORS_ADM9240_FAN1_MIN fan1:1
|
||||
fan2_min SENSORS_ADM9240_FAN2_MIN fan2:1
|
||||
temp SENSORS_ADM9240_TEMP temp:3
|
||||
temp_hyst SENSORS_ADM9240_TEMP_HYST temp:2
|
||||
temp_over SENSORS_ADM9240_TEMP_OVER temp:1
|
||||
vid SENSORS_ADM9240_VID vid:1
|
||||
fan1_div SENSORS_ADM9240_FAN1_DIV fan_div:1
|
||||
fan2_div SENSORS_ADM9240_FAN2_DIV fan_div:2
|
||||
alarms SENSORS_ADM9240_ALARMS alarms:1
|
||||
analog_out SENSORS_ADM9240_ANALOG_OUT analog_out:1
|
||||
|
||||
|
||||
|
||||
|
||||
Old Documentation
|
||||
-----------------
|
||||
|
||||
+13
-1
@@ -19,6 +19,8 @@
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
/* Supports ADM9240, DS1780, and LM81. See doc/chips/adm9240 for details */
|
||||
|
||||
/*
|
||||
A couple notes about the ADM9240:
|
||||
|
||||
@@ -74,7 +76,7 @@ static unsigned int normal_isa[] = {SENSORS_ISA_END};
|
||||
static unsigned int normal_isa_range[] = {SENSORS_ISA_END};
|
||||
|
||||
/* Insmod parameters */
|
||||
SENSORS_INSMOD_2(adm9240,ds1780);
|
||||
SENSORS_INSMOD_3(adm9240,ds1780,lm81);
|
||||
|
||||
/* Many ADM9240 constants specified below */
|
||||
|
||||
@@ -96,6 +98,7 @@ SENSORS_INSMOD_2(adm9240,ds1780);
|
||||
#define ADM9240_REG_FAN1 0x28
|
||||
#define ADM9240_REG_FAN2 0x29
|
||||
#define ADM9240_REG_COMPANY_ID 0x3E /* 0x23 for ADM9240; 0xDA for DS1780 */
|
||||
/* 0x01 for LM81 */
|
||||
#define ADM9240_REG_DIE_REV 0x3F
|
||||
/* These are read/write */
|
||||
#define ADM9240_REG_2_5V_HIGH 0x2B
|
||||
@@ -110,6 +113,8 @@ SENSORS_INSMOD_2(adm9240,ds1780);
|
||||
#define ADM9240_REG_12V_LOW 0x34
|
||||
#define ADM9240_REG_VCCP2_HIGH 0x35
|
||||
#define ADM9240_REG_VCCP2_LOW 0x36
|
||||
#define ADM9240_REG_TCRIT_LIMIT 0x37 /* LM81 only - not supported */
|
||||
#define ADM9240_REG_LOW_LIMIT 0x38 /* LM81 only - not supported */
|
||||
#define ADM9240_REG_TOS 0x39
|
||||
#define ADM9240_REG_THYST 0x3A
|
||||
#define ADM9240_REG_FAN1_MIN 0x3B
|
||||
@@ -127,6 +132,8 @@ SENSORS_INSMOD_2(adm9240,ds1780);
|
||||
#define ADM9240_REG_I2C_ADDR 0x48
|
||||
#define ADM9240_REG_VID4 0x49
|
||||
#define ADM9240_REG_TEMP_CONFIG 0x4B
|
||||
#define ADM9240_REG_EXTMODE1 0x4C /* LM81 only - not supported */
|
||||
#define ADM9240_REG_EXTMODE2 0x4D /* LM81 only - not supported */
|
||||
|
||||
/* Conversions. Rounding and limit checking is only done on the TO_REG
|
||||
variants. Note that you should be a bit careful with which arguments
|
||||
@@ -390,6 +397,8 @@ static int adm9240_detect(struct i2c_adapter *adapter, int address, int kind)
|
||||
kind = adm9240;
|
||||
else if (i == 0xda)
|
||||
kind = ds1780;
|
||||
else if (i == 0x01)
|
||||
kind = lm81;
|
||||
else {
|
||||
if (kind == 0)
|
||||
printk("adm9240.o: Ignoring 'force' parameter for unknown chip at "
|
||||
@@ -404,6 +413,9 @@ static int adm9240_detect(struct i2c_adapter *adapter, int address, int kind)
|
||||
} else if (kind == ds1780) {
|
||||
type_name = "ds1780";
|
||||
client_name = "DS1780 chip";
|
||||
} else if (kind == lm81) {
|
||||
type_name = "lm81";
|
||||
client_name = "LM81 chip";
|
||||
} else {
|
||||
#ifdef DEBUG
|
||||
printk("adm9240.o: Internal error: unknown kind (%d)?!?",kind);
|
||||
|
||||
@@ -150,7 +150,7 @@ use subs qw(lm78_detect lm78_isa_detect lm78_alias_detect lm75_detect
|
||||
# I2C bus number, and the I2C address.
|
||||
@chip_ids = (
|
||||
{
|
||||
name => "National Semiconductors LM78",
|
||||
name => "National Semiconductor LM78",
|
||||
driver => "lm78",
|
||||
i2c_addrs => [0x00..0x7f],
|
||||
i2c_driver_addrs => [0x20..0x2f],
|
||||
@@ -160,7 +160,7 @@ use subs qw(lm78_detect lm78_isa_detect lm78_alias_detect lm75_detect
|
||||
alias_detect => sub { lm78_alias_detect 0, @_ },
|
||||
} ,
|
||||
{
|
||||
name => "National Semiconductors LM78-J",
|
||||
name => "National Semiconductor LM78-J",
|
||||
driver => "lm78",
|
||||
i2c_addrs => [0x00..0x7f],
|
||||
i2c_driver_addrs => [0x20..0x2f],
|
||||
@@ -170,7 +170,7 @@ use subs qw(lm78_detect lm78_isa_detect lm78_alias_detect lm75_detect
|
||||
alias_detect => sub { lm78_alias_detect 1, @_ },
|
||||
} ,
|
||||
{
|
||||
name => "National Semiconductors LM79",
|
||||
name => "National Semiconductor LM79",
|
||||
driver => "lm78",
|
||||
i2c_addrs => [0x00..0x7f],
|
||||
i2c_driver_addrs => [0x20..0x2f],
|
||||
@@ -180,13 +180,13 @@ use subs qw(lm78_detect lm78_isa_detect lm78_alias_detect lm75_detect
|
||||
alias_detect => sub { lm78_alias_detect 2, @_ },
|
||||
} ,
|
||||
{
|
||||
name => "National Semiconductors LM75",
|
||||
name => "National Semiconductor LM75",
|
||||
driver => "lm75",
|
||||
i2c_addrs => [0x48..0x4f],
|
||||
i2c_detect => sub { lm75_detect @_},
|
||||
} ,
|
||||
{
|
||||
name => "National Semiconductors LM80",
|
||||
name => "National Semiconductor LM80",
|
||||
driver => "lm80",
|
||||
i2c_addrs => [0x28..0x2f],
|
||||
i2c_detect => sub { lm80_detect @_} ,
|
||||
@@ -258,6 +258,12 @@ use subs qw(lm78_detect lm78_isa_detect lm78_alias_detect lm75_detect
|
||||
i2c_addrs => [0x2c..0x2f],
|
||||
i2c_detect => sub { adm9240_detect 1, @_ }
|
||||
},
|
||||
{
|
||||
name => "National Semiconductor LM81",
|
||||
driver => "adm9240",
|
||||
i2c_addrs => [0x2c..0x2f],
|
||||
i2c_detect => sub { adm9240_detect 2, @_ }
|
||||
},
|
||||
{
|
||||
name => "Analog Devices ADM1021",
|
||||
driver => "adm1021",
|
||||
@@ -1346,7 +1352,7 @@ sub gl520sm_detect
|
||||
return (5);
|
||||
}
|
||||
|
||||
# $_[0]: Chip to detect (0 = ADM9240, 1 = DS1780)
|
||||
# $_[0]: Chip to detect (0 = ADM9240, 1 = DS1780, 2 = LM81)
|
||||
# $_[1]: A reference to the file descriptor to access this chip.
|
||||
# We may assume an i2c_set_slave_addr was already done.
|
||||
# $_[2]: Address
|
||||
@@ -1362,7 +1368,8 @@ sub adm9240_detect
|
||||
my ($chip, $file,$addr) = @_;
|
||||
$reg = i2c_smbus_read_byte_data($file,0x3e);
|
||||
return unless ($chip == 0 and $reg == 0x23) or
|
||||
($chip == 1 and $reg == 0xda);
|
||||
($chip == 1 and $reg == 0xda) or
|
||||
($chip == 2 and $reg == 0x01);
|
||||
return unless (i2c_smbus_read_byte_data($file,0x40) & 0x80) == 0x00;
|
||||
return unless i2c_smbus_read_byte_data($file,0x48) == $addr;
|
||||
|
||||
|
||||
+3
-1
@@ -252,7 +252,9 @@ void do_a_print(sensors_chip_name name)
|
||||
else if (!strcmp(name.prefix,"adm1021") || !strcmp(name.prefix,"max1617") ||
|
||||
!strcmp(name.prefix,"max1617a"))
|
||||
print_adm1021(&name);
|
||||
else if (!strcmp(name.prefix,"adm9240") || !strcmp(name.prefix,"ds1780"))
|
||||
else if (!strcmp(name.prefix,"adm9240") ||
|
||||
!strcmp(name.prefix,"ds1780") ||
|
||||
!strcmp(name.prefix,"lm81"))
|
||||
print_adm9240(&name);
|
||||
else if (!strcmp(name.prefix,"lm78") || !strcmp(name.prefix,"lm78-j") ||
|
||||
!strcmp(name.prefix,"lm79") || !strcmp(name.prefix,"sis5595"))
|
||||
|
||||
Reference in new issue
Block a user