lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 370/496] hwmon: (nct6775) Fix writing pwmX_mode
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Guenter Roeck <linux@roeck-us.net>

    [ Upstream commit 415eb2a1aaa4881cf85bd86c683356fdd8094a23 ]

    pwmX_mode is defined in the ABI as 0=DC mode, 1=pwm mode. The chip
    register bit is set to 1 for DC mode. This got mixed up, and writing
    1 into pwmX_mode resulted in DC mode enabled. Fix it up by using
    the ABI definition throughout the driver for consistency.

    Fixes: 77eb5b3703d99 ("hwmon: (nct6775) Add support for pwm, pwm_mode, ... ")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/hwmon/nct6775.c | 10 +++++-----
    1 file changed, 5 insertions(+), 5 deletions(-)

    --- a/drivers/hwmon/nct6775.c
    +++ b/drivers/hwmon/nct6775.c
    @@ -1469,7 +1469,7 @@ static void nct6775_update_pwm(struct de
    duty_is_dc = data->REG_PWM_MODE[i] &&
    (nct6775_read_value(data, data->REG_PWM_MODE[i])
    & data->PWM_MODE_MASK[i]);
    - data->pwm_mode[i] = duty_is_dc;
    + data->pwm_mode[i] = !duty_is_dc;

    fanmodecfg = nct6775_read_value(data, data->REG_FAN_MODE[i]);
    for (j = 0; j < ARRAY_SIZE(data->REG_PWM); j++) {
    @@ -2350,7 +2350,7 @@ show_pwm_mode(struct device *dev, struct
    struct nct6775_data *data = nct6775_update_device(dev);
    struct sensor_device_attribute *sattr = to_sensor_dev_attr(attr);

    - return sprintf(buf, "%d\n", !data->pwm_mode[sattr->index]);
    + return sprintf(buf, "%d\n", data->pwm_mode[sattr->index]);
    }

    static ssize_t
    @@ -2371,9 +2371,9 @@ store_pwm_mode(struct device *dev, struc
    if (val > 1)
    return -EINVAL;

    - /* Setting DC mode is not supported for all chips/channels */
    + /* Setting DC mode (0) is not supported for all chips/channels */
    if (data->REG_PWM_MODE[nr] == 0) {
    - if (val)
    + if (!val)
    return -EINVAL;
    return count;
    }
    @@ -2382,7 +2382,7 @@ store_pwm_mode(struct device *dev, struc
    data->pwm_mode[nr] = val;
    reg = nct6775_read_value(data, data->REG_PWM_MODE[nr]);
    reg &= ~data->PWM_MODE_MASK[nr];
    - if (val)
    + if (!val)
    reg |= data->PWM_MODE_MASK[nr];
    nct6775_write_value(data, data->REG_PWM_MODE[nr], reg);
    mutex_unlock(&data->update_lock);

    \
     
     \ /
      Last update: 2018-05-28 14:43    [W:2.257 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site