Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging

Couple of minor driver fixes.

* tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
hwmon: (max34440) Fix resetting temperature history
hwmon: (f75375s) Fix register write order when setting fans to full speed
hwmon: (ads1015) Fix file leak in probe function
hwmon: (max6639) Fix PPR register initialization to set both channels
hwmon: (max6639) Fix FAN_FROM_REG calculation

Changed files
+17 -17
drivers
+1 -2
drivers/hwmon/ads1015.c
··· 271 271 continue; 272 272 err = device_create_file(&client->dev, &ads1015_in[k].dev_attr); 273 273 if (err) 274 - goto exit_free; 274 + goto exit_remove; 275 275 } 276 276 277 277 data->hwmon_dev = hwmon_device_register(&client->dev); ··· 285 285 exit_remove: 286 286 for (k = 0; k < ADS1015_CHANNELS; ++k) 287 287 device_remove_file(&client->dev, &ads1015_in[k].dev_attr); 288 - exit_free: 289 288 kfree(data); 290 289 exit: 291 290 return err;
+3 -4
drivers/hwmon/f75375s.c
··· 340 340 fanmode |= (1 << F75387_FAN_MANU_MODE(nr)); 341 341 fanmode |= (1 << F75387_FAN_DUTY_MODE(nr)); 342 342 data->pwm[nr] = 255; 343 - f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr), 344 - data->pwm[nr]); 345 343 break; 346 344 case 1: /* PWM */ 347 345 fanmode |= (1 << F75387_FAN_MANU_MODE(nr)); ··· 359 361 case 0: /* full speed */ 360 362 fanmode |= (3 << FAN_CTRL_MODE(nr)); 361 363 data->pwm[nr] = 255; 362 - f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr), 363 - data->pwm[nr]); 364 364 break; 365 365 case 1: /* PWM */ 366 366 fanmode |= (3 << FAN_CTRL_MODE(nr)); ··· 373 377 374 378 f75375_write8(client, F75375_REG_FAN_TIMER, fanmode); 375 379 data->pwm_enable[nr] = val; 380 + if (val == 0) 381 + f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr), 382 + data->pwm[nr]); 376 383 return 0; 377 384 } 378 385
+12 -10
drivers/hwmon/max6639.c
··· 72 72 73 73 static const int rpm_ranges[] = { 2000, 4000, 8000, 16000 }; 74 74 75 - #define FAN_FROM_REG(val, div, rpm_range) ((val) == 0 ? -1 : \ 76 - (val) == 255 ? 0 : (rpm_ranges[rpm_range] * 30) / ((div + 1) * (val))) 75 + #define FAN_FROM_REG(val, rpm_range) ((val) == 0 || (val) == 255 ? \ 76 + 0 : (rpm_ranges[rpm_range] * 30) / (val)) 77 77 #define TEMP_LIMIT_TO_REG(val) SENSORS_LIMIT((val) / 1000, 0, 255) 78 78 79 79 /* ··· 333 333 return PTR_ERR(data); 334 334 335 335 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[attr->index], 336 - data->ppr, data->rpm_range)); 336 + data->rpm_range)); 337 337 } 338 338 339 339 static ssize_t show_alarm(struct device *dev, ··· 429 429 struct max6639_data *data = i2c_get_clientdata(client); 430 430 struct max6639_platform_data *max6639_info = 431 431 client->dev.platform_data; 432 - int i = 0; 432 + int i; 433 433 int rpm_range = 1; /* default: 4000 RPM */ 434 - int err = 0; 434 + int err; 435 435 436 436 /* Reset chip to default values, see below for GCONFIG setup */ 437 437 err = i2c_smbus_write_byte_data(client, MAX6639_REG_GCONFIG, ··· 446 446 else 447 447 data->ppr = 2; 448 448 data->ppr -= 1; 449 - err = i2c_smbus_write_byte_data(client, 450 - MAX6639_REG_FAN_PPR(i), 451 - data->ppr << 5); 452 - if (err) 453 - goto exit; 454 449 455 450 if (max6639_info) 456 451 rpm_range = rpm_range_to_reg(max6639_info->rpm_range); 457 452 data->rpm_range = rpm_range; 458 453 459 454 for (i = 0; i < 2; i++) { 455 + 456 + /* Set Fan pulse per revolution */ 457 + err = i2c_smbus_write_byte_data(client, 458 + MAX6639_REG_FAN_PPR(i), 459 + data->ppr << 6); 460 + if (err) 461 + goto exit; 460 462 461 463 /* Fans config PWM, RPM */ 462 464 err = i2c_smbus_write_byte_data(client,
+1 -1
drivers/hwmon/pmbus/max34440.c
··· 82 82 case PMBUS_VIRT_RESET_TEMP_HISTORY: 83 83 ret = pmbus_write_word_data(client, page, 84 84 MAX34440_MFR_TEMPERATURE_PEAK, 85 - 0xffff); 85 + 0x8000); 86 86 break; 87 87 default: 88 88 ret = -ENODATA;