Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

Pull hwmon fixes from Guenter Roeck:

- Fix temperature sensor for PRIME X670E-PRO WIFI

- occ: Add missing newline, and fix potential division by zero

- pmbus:
- Fix device ID comparison and printing in tps53676_identify()
- Add missing MODULE_IMPORT_NS("PMBUS") for ltc4286
- Check return value of page-select write in pxe1610 probe
- Fix array access with zero-length block tps53679 read

* tag 'hwmon-for-v7.0-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
hwmon: (asus-ec-sensors) Fix T_Sensor for PRIME X670E-PRO WIFI
hwmon: (occ) Fix missing newline in occ_show_extended()
hwmon: (occ) Fix division by zero in occ_show_power_1()
hwmon: (tps53679) Fix device ID comparison and printing in tps53676_identify()
hwmon: (ltc4286) Add missing MODULE_IMPORT_NS("PMBUS")
hwmon: (pxe1610) Check return value of page-select write in probe
hwmon: (tps53679) Fix array access with zero-length block read

+25 -17
+6 -1
drivers/hwmon/asus-ec-sensors.c
··· 111 111 ec_sensor_temp_mb, 112 112 /* "T_Sensor" temperature sensor reading [℃] */ 113 113 ec_sensor_temp_t_sensor, 114 + /* like ec_sensor_temp_t_sensor, but at an alternate address [℃] */ 115 + ec_sensor_temp_t_sensor_alt1, 114 116 /* VRM temperature [℃] */ 115 117 ec_sensor_temp_vrm, 116 118 /* VRM east (right) temperature [℃] */ ··· 162 160 #define SENSOR_TEMP_CPU_PACKAGE BIT(ec_sensor_temp_cpu_package) 163 161 #define SENSOR_TEMP_MB BIT(ec_sensor_temp_mb) 164 162 #define SENSOR_TEMP_T_SENSOR BIT(ec_sensor_temp_t_sensor) 163 + #define SENSOR_TEMP_T_SENSOR_ALT1 BIT(ec_sensor_temp_t_sensor_alt1) 165 164 #define SENSOR_TEMP_VRM BIT(ec_sensor_temp_vrm) 166 165 #define SENSOR_TEMP_VRME BIT(ec_sensor_temp_vrme) 167 166 #define SENSOR_TEMP_VRMW BIT(ec_sensor_temp_vrmw) ··· 282 279 EC_SENSOR("VRM", hwmon_temp, 1, 0x00, 0x33), 283 280 [ec_sensor_temp_t_sensor] = 284 281 EC_SENSOR("T_Sensor", hwmon_temp, 1, 0x00, 0x36), 282 + [ec_sensor_temp_t_sensor_alt1] = 283 + EC_SENSOR("T_Sensor", hwmon_temp, 1, 0x00, 0x37), 285 284 [ec_sensor_fan_cpu_opt] = 286 285 EC_SENSOR("CPU_Opt", hwmon_fan, 2, 0x00, 0xb0), 287 286 [ec_sensor_temp_water_in] = ··· 524 519 static const struct ec_board_info board_info_prime_x670e_pro_wifi = { 525 520 .sensors = SENSOR_TEMP_CPU | SENSOR_TEMP_CPU_PACKAGE | 526 521 SENSOR_TEMP_MB | SENSOR_TEMP_VRM | 527 - SENSOR_TEMP_T_SENSOR | SENSOR_FAN_CPU_OPT, 522 + SENSOR_TEMP_T_SENSOR_ALT1 | SENSOR_FAN_CPU_OPT, 528 523 .mutex_path = ACPI_GLOBAL_LOCK_PSEUDO_PATH, 529 524 .family = family_amd_600_series, 530 525 };
+9 -10
drivers/hwmon/occ/common.c
··· 420 420 return sysfs_emit(buf, "%u\n", val); 421 421 } 422 422 423 + static u64 occ_get_powr_avg(u64 accum, u32 samples) 424 + { 425 + return (samples == 0) ? 0 : 426 + mul_u64_u32_div(accum, 1000000UL, samples); 427 + } 428 + 423 429 static ssize_t occ_show_power_1(struct device *dev, 424 430 struct device_attribute *attr, char *buf) 425 431 { ··· 447 441 val = get_unaligned_be16(&power->sensor_id); 448 442 break; 449 443 case 1: 450 - val = get_unaligned_be32(&power->accumulator) / 451 - get_unaligned_be32(&power->update_tag); 452 - val *= 1000000ULL; 444 + val = occ_get_powr_avg(get_unaligned_be32(&power->accumulator), 445 + get_unaligned_be32(&power->update_tag)); 453 446 break; 454 447 case 2: 455 448 val = (u64)get_unaligned_be32(&power->update_tag) * ··· 462 457 } 463 458 464 459 return sysfs_emit(buf, "%llu\n", val); 465 - } 466 - 467 - static u64 occ_get_powr_avg(u64 accum, u32 samples) 468 - { 469 - return (samples == 0) ? 0 : 470 - mul_u64_u32_div(accum, 1000000UL, samples); 471 460 } 472 461 473 462 static ssize_t occ_show_power_2(struct device *dev, ··· 724 725 switch (sattr->nr) { 725 726 case 0: 726 727 if (extn->flags & EXTN_FLAG_SENSOR_ID) { 727 - rc = sysfs_emit(buf, "%u", 728 + rc = sysfs_emit(buf, "%u\n", 728 729 get_unaligned_be32(&extn->sensor_id)); 729 730 } else { 730 731 rc = sysfs_emit(buf, "%4phN\n", extn->name);
+1
drivers/hwmon/pmbus/ltc4286.c
··· 173 173 MODULE_AUTHOR("Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>"); 174 174 MODULE_DESCRIPTION("PMBUS driver for LTC4286 and compatibles"); 175 175 MODULE_LICENSE("GPL"); 176 + MODULE_IMPORT_NS("PMBUS");
+4 -1
drivers/hwmon/pmbus/pxe1610.c
··· 104 104 * By default this device doesn't boot to page 0, so set page 0 105 105 * to access all pmbus registers. 106 106 */ 107 - i2c_smbus_write_byte_data(client, PMBUS_PAGE, 0); 107 + ret = i2c_smbus_write_byte_data(client, PMBUS_PAGE, 0); 108 + if (ret < 0) 109 + return dev_err_probe(&client->dev, ret, 110 + "Failed to set page 0\n"); 108 111 109 112 /* Read Manufacturer id */ 110 113 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, buf);
+5 -5
drivers/hwmon/pmbus/tps53679.c
··· 103 103 } 104 104 105 105 ret = i2c_smbus_read_block_data(client, PMBUS_IC_DEVICE_ID, buf); 106 - if (ret < 0) 107 - return ret; 106 + if (ret <= 0) 107 + return ret < 0 ? ret : -EIO; 108 108 109 - /* Adjust length if null terminator if present */ 109 + /* Adjust length if null terminator is present */ 110 110 buf_len = (buf[ret - 1] != '\x00' ? ret : ret - 1); 111 111 112 112 id_len = strlen(id); ··· 175 175 ret = i2c_smbus_read_block_data(client, PMBUS_IC_DEVICE_ID, buf); 176 176 if (ret < 0) 177 177 return ret; 178 - if (strncmp("TI\x53\x67\x60", buf, 5)) { 179 - dev_err(&client->dev, "Unexpected device ID: %s\n", buf); 178 + if (ret != 6 || memcmp(buf, "TI\x53\x67\x60\x00", 6)) { 179 + dev_err(&client->dev, "Unexpected device ID: %*ph\n", ret, buf); 180 180 return -ENODEV; 181 181 } 182 182