Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 199036
b: refs/heads/master
c: 10f2ed3
h: refs/heads/master
v: v3
  • Loading branch information
Matthew Garrett authored and Jean Delvare committed May 27, 2010
1 parent 81060e4 commit 652e12d
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 70dd6beac02f43a5099fcf5fddf68cfee0cbf479
refs/heads/master: 10f2ed31aae11040dfd64cee10c47db79b4b4647
7 changes: 7 additions & 0 deletions trunk/Documentation/hwmon/lm63
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ Supported chips:
Addresses scanned: I2C 0x4c
Datasheet: Publicly available at the National Semiconductor website
http://www.national.com/pf/LM/LM63.html
* National Semiconductor LM64
Prefix: 'lm64'
Addresses scanned: I2C 0x18 and 0x4e
Datasheet: Publicly available at the National Semiconductor website
http://www.national.com/pf/LM/LM64.html

Author: Jean Delvare <khali@linux-fr.org>

Expand Down Expand Up @@ -55,3 +60,5 @@ The lm63 driver will not update its values more frequently than every
second; reading them more often will do no harm, but will return 'old'
values.

The LM64 is effectively an LM63 with GPIO lines. The driver does not
support these GPIO lines at present.
11 changes: 6 additions & 5 deletions trunk/drivers/hwmon/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -447,13 +447,14 @@ config SENSORS_IT87
will be called it87.

config SENSORS_LM63
tristate "National Semiconductor LM63"
tristate "National Semiconductor LM63 and LM64"
depends on I2C
help
If you say yes here you get support for the National Semiconductor
LM63 remote diode digital temperature sensor with integrated fan
control. Such chips are found on the Tyan S4882 (Thunder K8QS Pro)
motherboard, among others.
If you say yes here you get support for the National
Semiconductor LM63 and LM64 remote diode digital temperature
sensors with integrated fan control. Such chips are found
on the Tyan S4882 (Thunder K8QS Pro) motherboard, among
others.

This driver can also be built as a module. If so, the module
will be called lm63.
Expand Down
16 changes: 12 additions & 4 deletions trunk/drivers/hwmon/lm63.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
* Address is fully defined internally and cannot be changed.
*/

static const unsigned short normal_i2c[] = { 0x4c, I2C_CLIENT_END };
static const unsigned short normal_i2c[] = { 0x18, 0x4c, 0x4e, I2C_CLIENT_END };

/*
* The LM63 registers
Expand Down Expand Up @@ -131,12 +131,15 @@ static struct lm63_data *lm63_update_device(struct device *dev);
static int lm63_detect(struct i2c_client *client, struct i2c_board_info *info);
static void lm63_init_client(struct i2c_client *client);

enum chips { lm63, lm64 };

/*
* Driver data (common to all clients)
*/

static const struct i2c_device_id lm63_id[] = {
{ "lm63", 0 },
{ "lm63", lm63 },
{ "lm64", lm64 },
{ }
};
MODULE_DEVICE_TABLE(i2c, lm63_id);
Expand Down Expand Up @@ -422,6 +425,7 @@ static int lm63_detect(struct i2c_client *new_client,
struct i2c_adapter *adapter = new_client->adapter;
u8 man_id, chip_id, reg_config1, reg_config2;
u8 reg_alert_status, reg_alert_mask;
int address = new_client->addr;

if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
return -ENODEV;
Expand All @@ -439,7 +443,6 @@ static int lm63_detect(struct i2c_client *new_client,
LM63_REG_ALERT_MASK);

if (man_id != 0x01 /* National Semiconductor */
|| chip_id != 0x41 /* LM63 */
|| (reg_config1 & 0x18) != 0x00
|| (reg_config2 & 0xF8) != 0x00
|| (reg_alert_status & 0x20) != 0x00
Expand All @@ -450,7 +453,12 @@ static int lm63_detect(struct i2c_client *new_client,
return -ENODEV;
}

strlcpy(info->type, "lm63", I2C_NAME_SIZE);
if (chip_id == 0x41 && address == 0x4c)
strlcpy(info->type, "lm63", I2C_NAME_SIZE);
else if (chip_id == 0x51 && (address == 0x18 || address == 0x4e))
strlcpy(info->type, "lm64", I2C_NAME_SIZE);
else
return -ENODEV;

return 0;
}
Expand Down

0 comments on commit 652e12d

Please sign in to comment.