[PATCH] lm83: Add LM82 support
Add LM82 temperature sensor support (similar to the LM83, but less featureful). Signed-off-by: Jordan Crouse <jordan.crouse@amd.com> Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
52ab3f3dc7
commit
43cb7ebee2
|
@ -7,6 +7,10 @@ Supported chips:
|
||||||
Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
|
Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
|
||||||
Datasheet: Publicly available at the National Semiconductor website
|
Datasheet: Publicly available at the National Semiconductor website
|
||||||
http://www.national.com/pf/LM/LM83.html
|
http://www.national.com/pf/LM/LM83.html
|
||||||
|
* National Semiconductor LM82
|
||||||
|
Addresses scanned: I2C 0x18 - 0x1a, 0x29 - 0x2b, 0x4c - 0x4e
|
||||||
|
Datasheet: Publicly available at the National Semiconductor website
|
||||||
|
http://www.national.com/pf/LM/LM82.html
|
||||||
|
|
||||||
|
|
||||||
Author: Jean Delvare <khali@linux-fr.org>
|
Author: Jean Delvare <khali@linux-fr.org>
|
||||||
|
@ -15,10 +19,11 @@ Description
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
The LM83 is a digital temperature sensor. It senses its own temperature as
|
The LM83 is a digital temperature sensor. It senses its own temperature as
|
||||||
well as the temperature of up to three external diodes. It is compatible
|
well as the temperature of up to three external diodes. The LM82 is
|
||||||
with many other devices such as the LM84 and all other ADM1021 clones.
|
a stripped down version of the LM83 that only supports one external diode.
|
||||||
The main difference between the LM83 and the LM84 in that the later can
|
Both are compatible with many other devices such as the LM84 and all
|
||||||
only sense the temperature of one external diode.
|
other ADM1021 clones. The main difference between the LM83 and the LM84
|
||||||
|
in that the later can only sense the temperature of one external diode.
|
||||||
|
|
||||||
Using the adm1021 driver for a LM83 should work, but only two temperatures
|
Using the adm1021 driver for a LM83 should work, but only two temperatures
|
||||||
will be reported instead of four.
|
will be reported instead of four.
|
||||||
|
@ -36,6 +41,9 @@ Unconfirmed motherboards:
|
||||||
Iwill MPX2
|
Iwill MPX2
|
||||||
Soltek SL-75DRV5
|
Soltek SL-75DRV5
|
||||||
|
|
||||||
|
The LM82 is confirmed to have been found on most AMD Geode reference
|
||||||
|
designs and test platforms.
|
||||||
|
|
||||||
The driver has been successfully tested by Magnus Forsström, who I'd
|
The driver has been successfully tested by Magnus Forsström, who I'd
|
||||||
like to thank here. More testers will be of course welcome.
|
like to thank here. More testers will be of course welcome.
|
||||||
|
|
||||||
|
|
|
@ -236,11 +236,11 @@ config SENSORS_LM80
|
||||||
will be called lm80.
|
will be called lm80.
|
||||||
|
|
||||||
config SENSORS_LM83
|
config SENSORS_LM83
|
||||||
tristate "National Semiconductor LM83"
|
tristate "National Semiconductor LM83 and compatibles"
|
||||||
depends on HWMON && I2C
|
depends on HWMON && I2C
|
||||||
help
|
help
|
||||||
If you say yes here you get support for National Semiconductor
|
If you say yes here you get support for National Semiconductor
|
||||||
LM83 sensor chips.
|
LM82 and LM83 sensor chips.
|
||||||
|
|
||||||
This driver can also be built as a module. If so, the module
|
This driver can also be built as a module. If so, the module
|
||||||
will be called lm83.
|
will be called lm83.
|
||||||
|
|
|
@ -12,6 +12,10 @@
|
||||||
* Since the datasheet omits to give the chip stepping code, I give it
|
* Since the datasheet omits to give the chip stepping code, I give it
|
||||||
* here: 0x03 (at register 0xff).
|
* here: 0x03 (at register 0xff).
|
||||||
*
|
*
|
||||||
|
* Also supports the LM82 temp sensor, which is basically a stripped down
|
||||||
|
* model of the LM83. Datasheet is here:
|
||||||
|
* http://www.national.com/pf/LM/LM82.html
|
||||||
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
@ -52,7 +56,7 @@ static unsigned short normal_i2c[] = { 0x18, 0x19, 0x1a,
|
||||||
* Insmod parameters
|
* Insmod parameters
|
||||||
*/
|
*/
|
||||||
|
|
||||||
I2C_CLIENT_INSMOD_1(lm83);
|
I2C_CLIENT_INSMOD_2(lm83, lm82);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The LM83 registers
|
* The LM83 registers
|
||||||
|
@ -283,6 +287,9 @@ static int lm83_detect(struct i2c_adapter *adapter, int address, int kind)
|
||||||
if (man_id == 0x01) { /* National Semiconductor */
|
if (man_id == 0x01) { /* National Semiconductor */
|
||||||
if (chip_id == 0x03) {
|
if (chip_id == 0x03) {
|
||||||
kind = lm83;
|
kind = lm83;
|
||||||
|
} else
|
||||||
|
if (chip_id == 0x01) {
|
||||||
|
kind = lm82;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -296,6 +303,9 @@ static int lm83_detect(struct i2c_adapter *adapter, int address, int kind)
|
||||||
|
|
||||||
if (kind == lm83) {
|
if (kind == lm83) {
|
||||||
name = "lm83";
|
name = "lm83";
|
||||||
|
} else
|
||||||
|
if (kind == lm82) {
|
||||||
|
name = "lm82";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We can fill in the remaining client fields */
|
/* We can fill in the remaining client fields */
|
||||||
|
@ -319,31 +329,45 @@ static int lm83_detect(struct i2c_adapter *adapter, int address, int kind)
|
||||||
goto exit_detach;
|
goto exit_detach;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The LM82 can only monitor one external diode which is
|
||||||
|
* at the same register as the LM83 temp3 entry - so we
|
||||||
|
* declare 1 and 3 common, and then 2 and 4 only for the LM83.
|
||||||
|
*/
|
||||||
|
|
||||||
device_create_file(&new_client->dev,
|
device_create_file(&new_client->dev,
|
||||||
&sensor_dev_attr_temp1_input.dev_attr);
|
&sensor_dev_attr_temp1_input.dev_attr);
|
||||||
device_create_file(&new_client->dev,
|
|
||||||
&sensor_dev_attr_temp2_input.dev_attr);
|
|
||||||
device_create_file(&new_client->dev,
|
device_create_file(&new_client->dev,
|
||||||
&sensor_dev_attr_temp3_input.dev_attr);
|
&sensor_dev_attr_temp3_input.dev_attr);
|
||||||
device_create_file(&new_client->dev,
|
|
||||||
&sensor_dev_attr_temp4_input.dev_attr);
|
|
||||||
device_create_file(&new_client->dev,
|
device_create_file(&new_client->dev,
|
||||||
&sensor_dev_attr_temp1_max.dev_attr);
|
&sensor_dev_attr_temp1_max.dev_attr);
|
||||||
device_create_file(&new_client->dev,
|
|
||||||
&sensor_dev_attr_temp2_max.dev_attr);
|
|
||||||
device_create_file(&new_client->dev,
|
device_create_file(&new_client->dev,
|
||||||
&sensor_dev_attr_temp3_max.dev_attr);
|
&sensor_dev_attr_temp3_max.dev_attr);
|
||||||
device_create_file(&new_client->dev,
|
|
||||||
&sensor_dev_attr_temp4_max.dev_attr);
|
|
||||||
device_create_file(&new_client->dev,
|
device_create_file(&new_client->dev,
|
||||||
&sensor_dev_attr_temp1_crit.dev_attr);
|
&sensor_dev_attr_temp1_crit.dev_attr);
|
||||||
|
device_create_file(&new_client->dev,
|
||||||
|
&sensor_dev_attr_temp3_crit.dev_attr);
|
||||||
|
|
||||||
|
device_create_file(&new_client->dev, &dev_attr_alarms);
|
||||||
|
|
||||||
|
if (kind == lm83) {
|
||||||
|
device_create_file(&new_client->dev,
|
||||||
|
&sensor_dev_attr_temp2_input.dev_attr);
|
||||||
|
device_create_file(&new_client->dev,
|
||||||
|
&sensor_dev_attr_temp4_input.dev_attr);
|
||||||
|
|
||||||
|
device_create_file(&new_client->dev,
|
||||||
|
&sensor_dev_attr_temp2_max.dev_attr);
|
||||||
|
device_create_file(&new_client->dev,
|
||||||
|
&sensor_dev_attr_temp4_max.dev_attr);
|
||||||
|
|
||||||
device_create_file(&new_client->dev,
|
device_create_file(&new_client->dev,
|
||||||
&sensor_dev_attr_temp2_crit.dev_attr);
|
&sensor_dev_attr_temp2_crit.dev_attr);
|
||||||
device_create_file(&new_client->dev,
|
|
||||||
&sensor_dev_attr_temp3_crit.dev_attr);
|
|
||||||
device_create_file(&new_client->dev,
|
device_create_file(&new_client->dev,
|
||||||
&sensor_dev_attr_temp4_crit.dev_attr);
|
&sensor_dev_attr_temp4_crit.dev_attr);
|
||||||
device_create_file(&new_client->dev, &dev_attr_alarms);
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue