diff options
Diffstat (limited to 'drivers/hwmon/dme1737.c')
| -rw-r--r-- | drivers/hwmon/dme1737.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/drivers/hwmon/dme1737.c b/drivers/hwmon/dme1737.c index 4ae3fff13f44..bea0a344fab5 100644 --- a/drivers/hwmon/dme1737.c +++ b/drivers/hwmon/dme1737.c | |||
| @@ -247,8 +247,8 @@ struct dme1737_data { | |||
| 247 | u8 pwm_acz[3]; | 247 | u8 pwm_acz[3]; |
| 248 | u8 pwm_freq[6]; | 248 | u8 pwm_freq[6]; |
| 249 | u8 pwm_rr[2]; | 249 | u8 pwm_rr[2]; |
| 250 | u8 zone_low[3]; | 250 | s8 zone_low[3]; |
| 251 | u8 zone_abs[3]; | 251 | s8 zone_abs[3]; |
| 252 | u8 zone_hyst[2]; | 252 | u8 zone_hyst[2]; |
| 253 | u32 alarms; | 253 | u32 alarms; |
| 254 | }; | 254 | }; |
| @@ -277,7 +277,7 @@ static inline int IN_FROM_REG(int reg, int nominal, int res) | |||
| 277 | return (reg * nominal + (3 << (res - 3))) / (3 << (res - 2)); | 277 | return (reg * nominal + (3 << (res - 3))) / (3 << (res - 2)); |
| 278 | } | 278 | } |
| 279 | 279 | ||
| 280 | static inline int IN_TO_REG(int val, int nominal) | 280 | static inline int IN_TO_REG(long val, int nominal) |
| 281 | { | 281 | { |
| 282 | return clamp_val((val * 192 + nominal / 2) / nominal, 0, 255); | 282 | return clamp_val((val * 192 + nominal / 2) / nominal, 0, 255); |
| 283 | } | 283 | } |
| @@ -293,7 +293,7 @@ static inline int TEMP_FROM_REG(int reg, int res) | |||
| 293 | return (reg * 1000) >> (res - 8); | 293 | return (reg * 1000) >> (res - 8); |
| 294 | } | 294 | } |
| 295 | 295 | ||
| 296 | static inline int TEMP_TO_REG(int val) | 296 | static inline int TEMP_TO_REG(long val) |
| 297 | { | 297 | { |
| 298 | return clamp_val((val < 0 ? val - 500 : val + 500) / 1000, -128, 127); | 298 | return clamp_val((val < 0 ? val - 500 : val + 500) / 1000, -128, 127); |
| 299 | } | 299 | } |
| @@ -308,7 +308,7 @@ static inline int TEMP_RANGE_FROM_REG(int reg) | |||
| 308 | return TEMP_RANGE[(reg >> 4) & 0x0f]; | 308 | return TEMP_RANGE[(reg >> 4) & 0x0f]; |
| 309 | } | 309 | } |
| 310 | 310 | ||
| 311 | static int TEMP_RANGE_TO_REG(int val, int reg) | 311 | static int TEMP_RANGE_TO_REG(long val, int reg) |
| 312 | { | 312 | { |
| 313 | int i; | 313 | int i; |
| 314 | 314 | ||
| @@ -331,7 +331,7 @@ static inline int TEMP_HYST_FROM_REG(int reg, int ix) | |||
| 331 | return (((ix == 1) ? reg : reg >> 4) & 0x0f) * 1000; | 331 | return (((ix == 1) ? reg : reg >> 4) & 0x0f) * 1000; |
| 332 | } | 332 | } |
| 333 | 333 | ||
| 334 | static inline int TEMP_HYST_TO_REG(int val, int ix, int reg) | 334 | static inline int TEMP_HYST_TO_REG(long val, int ix, int reg) |
| 335 | { | 335 | { |
| 336 | int hyst = clamp_val((val + 500) / 1000, 0, 15); | 336 | int hyst = clamp_val((val + 500) / 1000, 0, 15); |
| 337 | 337 | ||
| @@ -347,7 +347,7 @@ static inline int FAN_FROM_REG(int reg, int tpc) | |||
| 347 | return (reg == 0 || reg == 0xffff) ? 0 : 90000 * 60 / reg; | 347 | return (reg == 0 || reg == 0xffff) ? 0 : 90000 * 60 / reg; |
| 348 | } | 348 | } |
| 349 | 349 | ||
| 350 | static inline int FAN_TO_REG(int val, int tpc) | 350 | static inline int FAN_TO_REG(long val, int tpc) |
| 351 | { | 351 | { |
| 352 | if (tpc) { | 352 | if (tpc) { |
| 353 | return clamp_val(val / tpc, 0, 0xffff); | 353 | return clamp_val(val / tpc, 0, 0xffff); |
| @@ -379,7 +379,7 @@ static inline int FAN_TYPE_FROM_REG(int reg) | |||
| 379 | return (edge > 0) ? 1 << (edge - 1) : 0; | 379 | return (edge > 0) ? 1 << (edge - 1) : 0; |
| 380 | } | 380 | } |
| 381 | 381 | ||
| 382 | static inline int FAN_TYPE_TO_REG(int val, int reg) | 382 | static inline int FAN_TYPE_TO_REG(long val, int reg) |
| 383 | { | 383 | { |
| 384 | int edge = (val == 4) ? 3 : val; | 384 | int edge = (val == 4) ? 3 : val; |
| 385 | 385 | ||
| @@ -402,7 +402,7 @@ static int FAN_MAX_FROM_REG(int reg) | |||
| 402 | return 1000 + i * 500; | 402 | return 1000 + i * 500; |
| 403 | } | 403 | } |
| 404 | 404 | ||
| 405 | static int FAN_MAX_TO_REG(int val) | 405 | static int FAN_MAX_TO_REG(long val) |
| 406 | { | 406 | { |
| 407 | int i; | 407 | int i; |
| 408 | 408 | ||
| @@ -460,7 +460,7 @@ static inline int PWM_ACZ_FROM_REG(int reg) | |||
| 460 | return acz[(reg >> 5) & 0x07]; | 460 | return acz[(reg >> 5) & 0x07]; |
| 461 | } | 461 | } |
| 462 | 462 | ||
| 463 | static inline int PWM_ACZ_TO_REG(int val, int reg) | 463 | static inline int PWM_ACZ_TO_REG(long val, int reg) |
| 464 | { | 464 | { |
| 465 | int acz = (val == 4) ? 2 : val - 1; | 465 | int acz = (val == 4) ? 2 : val - 1; |
| 466 | 466 | ||
| @@ -476,7 +476,7 @@ static inline int PWM_FREQ_FROM_REG(int reg) | |||
| 476 | return PWM_FREQ[reg & 0x0f]; | 476 | return PWM_FREQ[reg & 0x0f]; |
| 477 | } | 477 | } |
| 478 | 478 | ||
| 479 | static int PWM_FREQ_TO_REG(int val, int reg) | 479 | static int PWM_FREQ_TO_REG(long val, int reg) |
| 480 | { | 480 | { |
| 481 | int i; | 481 | int i; |
| 482 | 482 | ||
| @@ -510,7 +510,7 @@ static inline int PWM_RR_FROM_REG(int reg, int ix) | |||
| 510 | return (rr & 0x08) ? PWM_RR[rr & 0x07] : 0; | 510 | return (rr & 0x08) ? PWM_RR[rr & 0x07] : 0; |
| 511 | } | 511 | } |
| 512 | 512 | ||
| 513 | static int PWM_RR_TO_REG(int val, int ix, int reg) | 513 | static int PWM_RR_TO_REG(long val, int ix, int reg) |
| 514 | { | 514 | { |
| 515 | int i; | 515 | int i; |
| 516 | 516 | ||
| @@ -528,7 +528,7 @@ static inline int PWM_RR_EN_FROM_REG(int reg, int ix) | |||
| 528 | return PWM_RR_FROM_REG(reg, ix) ? 1 : 0; | 528 | return PWM_RR_FROM_REG(reg, ix) ? 1 : 0; |
| 529 | } | 529 | } |
| 530 | 530 | ||
| 531 | static inline int PWM_RR_EN_TO_REG(int val, int ix, int reg) | 531 | static inline int PWM_RR_EN_TO_REG(long val, int ix, int reg) |
| 532 | { | 532 | { |
| 533 | int en = (ix == 1) ? 0x80 : 0x08; | 533 | int en = (ix == 1) ? 0x80 : 0x08; |
| 534 | 534 | ||
| @@ -1481,13 +1481,16 @@ static ssize_t set_vrm(struct device *dev, struct device_attribute *attr, | |||
| 1481 | const char *buf, size_t count) | 1481 | const char *buf, size_t count) |
| 1482 | { | 1482 | { |
| 1483 | struct dme1737_data *data = dev_get_drvdata(dev); | 1483 | struct dme1737_data *data = dev_get_drvdata(dev); |
| 1484 | long val; | 1484 | unsigned long val; |
| 1485 | int err; | 1485 | int err; |
| 1486 | 1486 | ||
| 1487 | err = kstrtol(buf, 10, &val); | 1487 | err = kstrtoul(buf, 10, &val); |
| 1488 | if (err) | 1488 | if (err) |
| 1489 | return err; | 1489 | return err; |
| 1490 | 1490 | ||
| 1491 | if (val > 255) | ||
| 1492 | return -EINVAL; | ||
| 1493 | |||
| 1491 | data->vrm = val; | 1494 | data->vrm = val; |
| 1492 | return count; | 1495 | return count; |
| 1493 | } | 1496 | } |
