lkml.org 
[lkml]   [2010]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 064/123] hwmon: (tmp421) Restore missing inputs
    2.6.33-stable review patch.  If anyone has any objections, please let me know.

    -----------------

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

    commit 8d59582a867470a3e0c3eced4a01625ae8dc546b upstream.

    An off-by-one error caused some inputs to not be created by the driver
    when they should. TMP421 gets only one input instead of two, TMP422
    gets two instead of three, etc. Fix the bug by listing explicitly the
    number of inputs each device has.

    Signed-off-by: Jean Delvare <khali@linux-fr.org>
    Tested-by: Andre Prendel <andre.prendel@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/hwmon/tmp421.c | 14 +++++++-------
    1 file changed, 7 insertions(+), 7 deletions(-)

    --- a/drivers/hwmon/tmp421.c
    +++ b/drivers/hwmon/tmp421.c
    @@ -61,9 +61,9 @@ static const u8 TMP421_TEMP_LSB[4] = {
    #define TMP423_DEVICE_ID 0x23

    static const struct i2c_device_id tmp421_id[] = {
    - { "tmp421", tmp421 },
    - { "tmp422", tmp422 },
    - { "tmp423", tmp423 },
    + { "tmp421", 2 },
    + { "tmp422", 3 },
    + { "tmp423", 4 },
    { }
    };
    MODULE_DEVICE_TABLE(i2c, tmp421_id);
    @@ -73,7 +73,7 @@ struct tmp421_data {
    struct mutex update_lock;
    char valid;
    unsigned long last_updated;
    - int kind;
    + int channels;
    u8 config;
    s16 temp[4];
    };
    @@ -109,7 +109,7 @@ static struct tmp421_data *tmp421_update
    data->config = i2c_smbus_read_byte_data(client,
    TMP421_CONFIG_REG_1);

    - for (i = 0; i <= data->kind; i++) {
    + for (i = 0; i < data->channels; i++) {
    data->temp[i] = i2c_smbus_read_byte_data(client,
    TMP421_TEMP_MSB[i]) << 8;
    data->temp[i] |= i2c_smbus_read_byte_data(client,
    @@ -168,7 +168,7 @@ static mode_t tmp421_is_visible(struct k
    devattr = container_of(a, struct device_attribute, attr);
    index = to_sensor_dev_attr(devattr)->index;

    - if (data->kind > index)
    + if (index < data->channels)
    return a->mode;

    return 0;
    @@ -273,7 +273,7 @@ static int tmp421_probe(struct i2c_clien

    i2c_set_clientdata(client, data);
    mutex_init(&data->update_lock);
    - data->kind = id->driver_data;
    + data->channels = id->driver_data;

    err = tmp421_init_client(client);
    if (err)



    \
     
     \ /
      Last update: 2010-03-13 02:25    [W:4.030 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site