提交 dbe73c8f 编写于 作者: J Jean Delvare

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: NJean Delvare <khali@linux-fr.org>
Acked-by: NAndre Prendel <andre.prendel@gmx.de>
上级 8f2fa77c
...@@ -488,46 +488,43 @@ static void tmp401_init_client(struct i2c_client *client) ...@@ -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,
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:
kind = tmp401;
break;
case TMP411_DEVICE_ID:
kind = tmp411;
break;
default:
return -ENODEV;
}
reg = i2c_smbus_read_byte_data(client, TMP401_CONFIG_READ); reg = i2c_smbus_read_byte_data(client, TMP401_DEVICE_ID_REG);
if (reg & 0x1b)
return -ENODEV;
reg = i2c_smbus_read_byte_data(client, switch (reg) {
TMP401_CONVERSION_RATE_READ); case TMP401_DEVICE_ID:
/* Datasheet says: 0x1-0x6 */ kind = tmp401;
if (reg > 15) break;
return -ENODEV; case TMP411_DEVICE_ID:
kind = tmp411;
break;
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;
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) ...@@ -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,
TMP421_MANUFACTURER_ID_REG); reg = i2c_smbus_read_byte_data(client, TMP421_DEVICE_ID_REG);
if (reg != TMP421_MANUFACTURER_ID) switch (reg) {
return -ENODEV; case TMP421_DEVICE_ID:
kind = tmp421;
reg = i2c_smbus_read_byte_data(client, break;
TMP421_DEVICE_ID_REG); case TMP422_DEVICE_ID:
switch (reg) { kind = tmp422;
case TMP421_DEVICE_ID: break;
kind = tmp421; case TMP423_DEVICE_ID:
break; kind = tmp423;
case TMP422_DEVICE_ID: break;
kind = tmp422; default:
break; return -ENODEV;
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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册