mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-11-06 15:51:34 +00:00
(mds) Add support for LM84 (ADM1021 clone) to adm1021.c and sensors-detect.
git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@602 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
1 parent
52ede0a657
commit
129e08cc94
5 files changed
+34
-3
No files matched your search
@@ -35,7 +35,7 @@ At least the following SMBus adapters are supported:
|
||||
Apple Hydra (used on some PPC machines)
|
||||
|
||||
At least the following hardware sensor chips are supported:
|
||||
National Semicoductor LM75, LM78, LM78-J, LM79. LM80, and LM81
|
||||
National Semicoductor LM75, LM78, LM78-J, LM79. LM80, LM81, and LM84
|
||||
Winbond W83781D, W83782D, W83783S, and W83627HF
|
||||
Genesys Logic GL518SM (several revisions)
|
||||
Analog Devices ADM1021, ADM1022, and ADM9240
|
||||
|
||||
@@ -37,6 +37,7 @@ Driver Chips #temp #vin #fanin pwm/dac i2c ISA
|
||||
---------------------------------------------------------------------
|
||||
adm1021
|
||||
adm1021 2 - - - yes no
|
||||
lm84 2 - - - yes no
|
||||
max1617 2 - - - yes no
|
||||
max1617a 2 - - - yes no
|
||||
thmc10 2 - - - yes no
|
||||
@@ -120,6 +121,7 @@ Many SMBus chips have a company ID at location 0x3E or 0xFE.
|
||||
Here is a partial list.
|
||||
This may help identify a chip after doing a 'i2cdump [bus] [address] b'.
|
||||
|
||||
0x00 National
|
||||
0x01 National
|
||||
0x23 AMD
|
||||
0x41 AMD
|
||||
|
||||
@@ -42,7 +42,7 @@ static unsigned int normal_isa[] = {SENSORS_ISA_END};
|
||||
static unsigned int normal_isa_range[] = {SENSORS_ISA_END};
|
||||
|
||||
/* Insmod parameters */
|
||||
SENSORS_INSMOD_4(adm1021,max1617,max1617a,thmc10);
|
||||
SENSORS_INSMOD_5(adm1021,max1617,max1617a,thmc10,lm84);
|
||||
|
||||
/* adm1021 constants specified below */
|
||||
|
||||
@@ -248,6 +248,8 @@ static int adm1021_detect(struct i2c_adapter *adapter, int address,
|
||||
kind = adm1021;
|
||||
else if (i == 0x49)
|
||||
kind = thmc10;
|
||||
else if (i == 0x00)
|
||||
kind = lm84;
|
||||
else if ((i== 0x4d) &&
|
||||
(adm1021_read_value(new_client,ADM1021_REG_DEV_ID) == 0x01))
|
||||
kind = max1617a;
|
||||
|
||||
@@ -280,6 +280,25 @@ struct sensors_address_data {
|
||||
{NULL}}; \
|
||||
SENSORS_INSMOD
|
||||
|
||||
#define SENSORS_INSMOD_5(chip1,chip2,chip3,chip4,chip5) \
|
||||
enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 }; \
|
||||
SENSORS_MODULE_PARM(force, \
|
||||
"List of adapter,address pairs to boldly assume " \
|
||||
"to be present"); \
|
||||
SENSORS_MODULE_PARM_FORCE(chip1); \
|
||||
SENSORS_MODULE_PARM_FORCE(chip2); \
|
||||
SENSORS_MODULE_PARM_FORCE(chip3); \
|
||||
SENSORS_MODULE_PARM_FORCE(chip4); \
|
||||
SENSORS_MODULE_PARM_FORCE(chip5); \
|
||||
static struct sensors_force_data forces[] = {{force,any_chip}, \
|
||||
{force_ ## chip1,chip1}, \
|
||||
{force_ ## chip2,chip2}, \
|
||||
{force_ ## chip3,chip3}, \
|
||||
{force_ ## chip4,chip4}, \
|
||||
{force_ ## chip5,chip5}, \
|
||||
{NULL}}; \
|
||||
SENSORS_INSMOD
|
||||
|
||||
typedef int sensors_found_addr_proc (struct i2c_adapter *adapter,
|
||||
int addr, unsigned short flags,
|
||||
int kind);
|
||||
|
||||
@@ -290,6 +290,12 @@ use subs qw(lm78_detect lm78_isa_detect lm78_alias_detect lm75_detect
|
||||
i2c_addrs => [0x18..0x1a,0x29..0x2b,0x4c..0x4e],
|
||||
i2c_detect => sub { adm1021_detect 3, @_ },
|
||||
},
|
||||
{
|
||||
name => "National Semiconductor LM84"
|
||||
driver => "adm1021",
|
||||
i2c_addrs => [0x18..0x1a,0x29..0x2b,0x4c..0x4e],
|
||||
i2c_detect => sub { adm1021_detect 4, @_ },
|
||||
},
|
||||
{
|
||||
name => "Analog Devices ADM1022",
|
||||
driver => "thmc50",
|
||||
@@ -1419,7 +1425,8 @@ sub adm1022_detect
|
||||
return (8);
|
||||
}
|
||||
|
||||
# $_[0]: Chip to detect (0 = ADM1021, 1 = MAX1617, 2 = MAX1617A, 3 = THMC10)
|
||||
# $_[0]: Chip to detect
|
||||
# (0 = ADM1021, 1 = MAX1617, 2 = MAX1617A, 3 = THMC10, 4 = LM84)
|
||||
# $_[1]: A reference to the file descriptor to access this chip.
|
||||
# We may assume an i2c_set_slave_addr was already done.
|
||||
# $_[2]: Address
|
||||
@@ -1435,6 +1442,7 @@ sub adm1021_detect
|
||||
my ($chip, $file,$addr) = @_;
|
||||
return if $chip == 0 and i2c_smbus_read_byte_data($file,0xfe) != 0x41;
|
||||
return if $chip == 3 and i2c_smbus_read_byte_data($file,0xfe) != 0x49;
|
||||
return if $chip == 4 and i2c_smbus_read_byte_data($file,0xfe) != 0x00;
|
||||
return if $chip == 2 and i2c_smbus_read_byte_data($file,0xfe) != 0x4d and
|
||||
i2c_smbus_read_byte_data($file,0xff) != 0x01;
|
||||
# The remaining things are flaky at best. Perhaps something can be done
|
||||
|
||||
Reference in new issue
Block a user