[lm-sensors] [PATCH] hwmon: (tmp401/tmp421) Clean up detect functions
Andre Prendel
andre.prendel at gmx.de
Tue Oct 6 22:27:09 CEST 2009
On Tue, Oct 06, 2009 at 08:09:19PM +0200, Jean Delvare wrote:
> As kind is now hard-coded to -1, there is room for code clean-ups.
>
> Signed-off-by: Jean Delvare <khali at linux-fr.org>
> Cc: Andre Prendel <andre.prendel at gmx.de>
Acked-by: Andre Prendel <andre.prendel at gmx.de>
Out of curiosity, could you please point me to the commit changing
this in i2c-core?
Thanks,
Andre
> ---
> drivers/hwmon/tmp401.c | 57 ++++++++++++++++++++++--------------------------
> drivers/hwmon/tmp421.c | 43 ++++++++++++++++--------------------
> 2 files changed, 47 insertions(+), 53 deletions(-)
>
> --- linux-2.6.32-rc3.orig/drivers/hwmon/tmp401.c 2009-10-06 10:33:15.000000000 +0200
> +++ linux-2.6.32-rc3/drivers/hwmon/tmp401.c 2009-10-06 16:53:13.000000000 +0200
> @@ -488,46 +488,43 @@ static void tmp401_init_client(struct i2
> 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)
> {
> + enum chips kind;
> struct i2c_adapter *adapter = client->adapter;
> + u8 reg;
>
> if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
> return -ENODEV;
>
> /* Detect and identify the chip */
> - if (kind <= 0) {
> - u8 reg;
> + 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);
>
> - 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);
> - 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;
> + 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);
> + 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);
>
> return 0;
> --- linux-2.6.32-rc3.orig/drivers/hwmon/tmp421.c 2009-10-06 10:33:15.000000000 +0200
> +++ linux-2.6.32-rc3/drivers/hwmon/tmp421.c 2009-10-06 16:53:13.000000000 +0200
> @@ -223,39 +223,36 @@ static int tmp421_init_client(struct i2c
> 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)
> {
> + enum chips kind;
> struct i2c_adapter *adapter = client->adapter;
> const char *names[] = { "TMP421", "TMP422", "TMP423" };
> + u8 reg;
>
> if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
> return -ENODEV;
>
> - if (kind <= 0) {
> - u8 reg;
> -
> - reg = i2c_smbus_read_byte_data(client,
> - TMP421_MANUFACTURER_ID_REG);
> - if (reg != TMP421_MANUFACTURER_ID)
> - return -ENODEV;
> + reg = i2c_smbus_read_byte_data(client, TMP421_MANUFACTURER_ID_REG);
> + if (reg != TMP421_MANUFACTURER_ID)
> + return -ENODEV;
>
> - reg = i2c_smbus_read_byte_data(client,
> - TMP421_DEVICE_ID_REG);
> - switch (reg) {
> - case TMP421_DEVICE_ID:
> - kind = tmp421;
> - break;
> - case TMP422_DEVICE_ID:
> - kind = tmp422;
> - break;
> - case TMP423_DEVICE_ID:
> - kind = tmp423;
> - break;
> - default:
> - return -ENODEV;
> - }
> + reg = i2c_smbus_read_byte_data(client, TMP421_DEVICE_ID_REG);
> + switch (reg) {
> + case TMP421_DEVICE_ID:
> + kind = tmp421;
> + break;
> + case TMP422_DEVICE_ID:
> + kind = tmp422;
> + break;
> + case TMP423_DEVICE_ID:
> + kind = tmp423;
> + break;
> + default:
> + return -ENODEV;
> }
> +
> strlcpy(info->type, tmp421_id[kind - 1].name, I2C_NAME_SIZE);
> dev_info(&adapter->dev, "Detected TI %s chip at 0x%02x\n",
> names[kind - 1], client->addr);
>
>
> --
> Jean Delvare
>
> _______________________________________________
> lm-sensors mailing list
> lm-sensors at lm-sensors.org
> http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
More information about the lm-sensors
mailing list