Skip to content

Commit 00b10ec

Browse files
committed
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
2 parents 1e73fde + dc91ad8 commit 00b10ec

File tree

4 files changed

+17
-17
lines changed

4 files changed

+17
-17
lines changed

drivers/hwmon/ads1015.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ static int ads1015_probe(struct i2c_client *client,
271271
continue;
272272
err = device_create_file(&client->dev, &ads1015_in[k].dev_attr);
273273
if (err)
274-
goto exit_free;
274+
goto exit_remove;
275275
}
276276

277277
data->hwmon_dev = hwmon_device_register(&client->dev);
@@ -285,7 +285,6 @@ static int ads1015_probe(struct i2c_client *client,
285285
exit_remove:
286286
for (k = 0; k < ADS1015_CHANNELS; ++k)
287287
device_remove_file(&client->dev, &ads1015_in[k].dev_attr);
288-
exit_free:
289288
kfree(data);
290289
exit:
291290
return err;

drivers/hwmon/f75375s.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,6 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
340340
fanmode |= (1 << F75387_FAN_MANU_MODE(nr));
341341
fanmode |= (1 << F75387_FAN_DUTY_MODE(nr));
342342
data->pwm[nr] = 255;
343-
f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
344-
data->pwm[nr]);
345343
break;
346344
case 1: /* PWM */
347345
fanmode |= (1 << F75387_FAN_MANU_MODE(nr));
@@ -361,8 +359,6 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
361359
case 0: /* full speed */
362360
fanmode |= (3 << FAN_CTRL_MODE(nr));
363361
data->pwm[nr] = 255;
364-
f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
365-
data->pwm[nr]);
366362
break;
367363
case 1: /* PWM */
368364
fanmode |= (3 << FAN_CTRL_MODE(nr));
@@ -377,6 +373,9 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
377373

378374
f75375_write8(client, F75375_REG_FAN_TIMER, fanmode);
379375
data->pwm_enable[nr] = val;
376+
if (val == 0)
377+
f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
378+
data->pwm[nr]);
380379
return 0;
381380
}
382381

drivers/hwmon/max6639.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ static unsigned short normal_i2c[] = { 0x2c, 0x2e, 0x2f, I2C_CLIENT_END };
7272

7373
static const int rpm_ranges[] = { 2000, 4000, 8000, 16000 };
7474

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))
7777
#define TEMP_LIMIT_TO_REG(val) SENSORS_LIMIT((val) / 1000, 0, 255)
7878

7979
/*
@@ -333,7 +333,7 @@ static ssize_t show_fan_input(struct device *dev,
333333
return PTR_ERR(data);
334334

335335
return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[attr->index],
336-
data->ppr, data->rpm_range));
336+
data->rpm_range));
337337
}
338338

339339
static ssize_t show_alarm(struct device *dev,
@@ -429,9 +429,9 @@ static int max6639_init_client(struct i2c_client *client)
429429
struct max6639_data *data = i2c_get_clientdata(client);
430430
struct max6639_platform_data *max6639_info =
431431
client->dev.platform_data;
432-
int i = 0;
432+
int i;
433433
int rpm_range = 1; /* default: 4000 RPM */
434-
int err = 0;
434+
int err;
435435

436436
/* Reset chip to default values, see below for GCONFIG setup */
437437
err = i2c_smbus_write_byte_data(client, MAX6639_REG_GCONFIG,
@@ -446,18 +446,20 @@ static int max6639_init_client(struct i2c_client *client)
446446
else
447447
data->ppr = 2;
448448
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;
454449

455450
if (max6639_info)
456451
rpm_range = rpm_range_to_reg(max6639_info->rpm_range);
457452
data->rpm_range = rpm_range;
458453

459454
for (i = 0; i < 2; i++) {
460455

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;
462+
461463
/* Fans config PWM, RPM */
462464
err = i2c_smbus_write_byte_data(client,
463465
MAX6639_REG_FAN_CONFIG1(i),

drivers/hwmon/pmbus/max34440.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ static int max34440_write_word_data(struct i2c_client *client, int page,
8282
case PMBUS_VIRT_RESET_TEMP_HISTORY:
8383
ret = pmbus_write_word_data(client, page,
8484
MAX34440_MFR_TEMPERATURE_PEAK,
85-
0xffff);
85+
0x8000);
8686
break;
8787
default:
8888
ret = -ENODATA;

0 commit comments

Comments
 (0)