mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
hwmon: (tmp401/tmp421) Clean up detect functions
As kind is now hard-coded to -1, there is room for code clean-ups. Signed-off-by: Jean Delvare <khali@linux-fr.org> Acked-by: Andre Prendel <andre.prendel@gmx.de>
This commit is contained in:
parent
8f2fa77c53
commit
dbe73c8f45
2 changed files with 46 additions and 52 deletions
|
@ -488,46 +488,43 @@ static void tmp401_init_client(struct i2c_client *client)
|
||||||
i2c_smbus_write_byte_data(client, TMP401_CONFIG_WRITE, config);
|
i2c_smbus_write_byte_data(client, TMP401_CONFIG_WRITE, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tmp401_detect(struct i2c_client *client, int kind,
|
static int tmp401_detect(struct i2c_client *client, int _kind,
|
||||||
struct i2c_board_info *info)
|
struct i2c_board_info *info)
|
||||||
{
|
{
|
||||||
|
enum chips kind;
|
||||||
struct i2c_adapter *adapter = client->adapter;
|
struct i2c_adapter *adapter = client->adapter;
|
||||||
|
u8 reg;
|
||||||
|
|
||||||
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
|
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
/* Detect and identify the chip */
|
/* Detect and identify the chip */
|
||||||
if (kind <= 0) {
|
reg = i2c_smbus_read_byte_data(client, TMP401_MANUFACTURER_ID_REG);
|
||||||
u8 reg;
|
if (reg != TMP401_MANUFACTURER_ID)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
reg = i2c_smbus_read_byte_data(client,
|
reg = i2c_smbus_read_byte_data(client, TMP401_DEVICE_ID_REG);
|
||||||
TMP401_MANUFACTURER_ID_REG);
|
|
||||||
if (reg != TMP401_MANUFACTURER_ID)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
reg = i2c_smbus_read_byte_data(client, TMP401_DEVICE_ID_REG);
|
switch (reg) {
|
||||||
|
case TMP401_DEVICE_ID:
|
||||||
switch (reg) {
|
kind = tmp401;
|
||||||
case TMP401_DEVICE_ID:
|
break;
|
||||||
kind = tmp401;
|
case TMP411_DEVICE_ID:
|
||||||
break;
|
kind = tmp411;
|
||||||
case TMP411_DEVICE_ID:
|
break;
|
||||||
kind = tmp411;
|
default:
|
||||||
break;
|
return -ENODEV;
|
||||||
default:
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
reg = i2c_smbus_read_byte_data(client, TMP401_CONFIG_READ);
|
|
||||||
if (reg & 0x1b)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
reg = i2c_smbus_read_byte_data(client,
|
|
||||||
TMP401_CONVERSION_RATE_READ);
|
|
||||||
/* Datasheet says: 0x1-0x6 */
|
|
||||||
if (reg > 15)
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reg = i2c_smbus_read_byte_data(client, TMP401_CONFIG_READ);
|
||||||
|
if (reg & 0x1b)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
reg = i2c_smbus_read_byte_data(client, TMP401_CONVERSION_RATE_READ);
|
||||||
|
/* Datasheet says: 0x1-0x6 */
|
||||||
|
if (reg > 15)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
strlcpy(info->type, tmp401_id[kind - 1].name, I2C_NAME_SIZE);
|
strlcpy(info->type, tmp401_id[kind - 1].name, I2C_NAME_SIZE);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -223,39 +223,36 @@ static int tmp421_init_client(struct i2c_client *client)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tmp421_detect(struct i2c_client *client, int kind,
|
static int tmp421_detect(struct i2c_client *client, int _kind,
|
||||||
struct i2c_board_info *info)
|
struct i2c_board_info *info)
|
||||||
{
|
{
|
||||||
|
enum chips kind;
|
||||||
struct i2c_adapter *adapter = client->adapter;
|
struct i2c_adapter *adapter = client->adapter;
|
||||||
const char *names[] = { "TMP421", "TMP422", "TMP423" };
|
const char *names[] = { "TMP421", "TMP422", "TMP423" };
|
||||||
|
u8 reg;
|
||||||
|
|
||||||
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
|
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
if (kind <= 0) {
|
reg = i2c_smbus_read_byte_data(client, TMP421_MANUFACTURER_ID_REG);
|
||||||
u8 reg;
|
if (reg != TMP421_MANUFACTURER_ID)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
reg = i2c_smbus_read_byte_data(client,
|
reg = i2c_smbus_read_byte_data(client, TMP421_DEVICE_ID_REG);
|
||||||
TMP421_MANUFACTURER_ID_REG);
|
switch (reg) {
|
||||||
if (reg != TMP421_MANUFACTURER_ID)
|
case TMP421_DEVICE_ID:
|
||||||
return -ENODEV;
|
kind = tmp421;
|
||||||
|
break;
|
||||||
reg = i2c_smbus_read_byte_data(client,
|
case TMP422_DEVICE_ID:
|
||||||
TMP421_DEVICE_ID_REG);
|
kind = tmp422;
|
||||||
switch (reg) {
|
break;
|
||||||
case TMP421_DEVICE_ID:
|
case TMP423_DEVICE_ID:
|
||||||
kind = tmp421;
|
kind = tmp423;
|
||||||
break;
|
break;
|
||||||
case TMP422_DEVICE_ID:
|
default:
|
||||||
kind = tmp422;
|
return -ENODEV;
|
||||||
break;
|
|
||||||
case TMP423_DEVICE_ID:
|
|
||||||
kind = tmp423;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
strlcpy(info->type, tmp421_id[kind - 1].name, I2C_NAME_SIZE);
|
strlcpy(info->type, tmp421_id[kind - 1].name, I2C_NAME_SIZE);
|
||||||
dev_info(&adapter->dev, "Detected TI %s chip at 0x%02x\n",
|
dev_info(&adapter->dev, "Detected TI %s chip at 0x%02x\n",
|
||||||
names[kind - 1], client->addr);
|
names[kind - 1], client->addr);
|
||||||
|
|
Loading…
Reference in a new issue