mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 06:43:09 +00:00
hwmon fixes for v6.3-rc4
- it87: Fix voltage scaling for chips with 10.9mV ADCs - xgene: Fix ioremap and memremap leak - peci/cputemp: Fix miscalculated DTS temperature for SKX - hwmon core: fix potential sensor registration failure with thermal subsystem if of_node is missing -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEiHPvMQj9QTOCiqgVyx8mb86fmYEFAmQe/joACgkQyx8mb86f mYERrw//XGsaxRAD9lMkOT7mlEO/7673mPyBu7LsZ2wCpi2vrFh40QlbIDwo6m/j AMttc8twG5ueo5/Ve7eB7DvIS/YzctvsNZqp0bflFgtT1VWpqnhDMyVPG9D/8NKf me2RO9Pliv5wMw/Ie/58WnPkJnBqTZA5q2ecFpHWs4MCUf4Y8COympqitS6YeRD2 G0AxsZq+T7vxrGKnyLQEfe1qqqI7nOMl/it74Te2pus+Dpa7OlxQas4EUotG8B0H FuCWHu6M+Nmmq016i5CpmZEpZp6S4+qrE/D573KkwVQp7vZm7eNBJ+/eeGOez/cS swpGCzj2Va2YNXNz2yl/+a8EJeFiR1LmN5d5LurxEzKCFl1c8qIMvS4Q6N0zbBWW Fkq4cJyDhq5a3nISWdqkBZwlor0kq8vajYyQ2XhXimebI+X4H9EzyCjWQYpSPOgQ 9u7pQ5pL6FAoPv7ZUlhr/577kQNIuuckoVY144gywOQCiMBCxkr1ZJutMpTEapuW vtAZ8HV8R8zQL9wsUNDpsJZ83x1q5XkY6iulrEe0LmyNdN2DlAjxSCPE6unWq498 F8SEj7yJvuQBfpGVMOnzLdovTcVbO85W904sjCULR5ssVjByRvkwn90yzJbrs+3P Lv0UlZoTSMx7uALR5hbe7S2uv61S/fpZoE8QHEHd4OicyPPooEQ= =ljbs -----END PGP SIGNATURE----- Merge tag 'hwmon-for-v6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging Pull hwmon fixes from Guenter Roeck: - it87: Fix voltage scaling for chips with 10.9mV ADCs - xgene: Fix ioremap and memremap leak - peci/cputemp: Fix miscalculated DTS temperature for SKX - hwmon core: fix potential sensor registration failure with thermal subsystem if of_node is missing * tag 'hwmon-for-v6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: hwmon (it87): Fix voltage scaling for chips with 10.9mV ADCs hwmon: (xgene) Fix ioremap and memremap leak hwmon: fix potential sensor registration fail if of_node is missing hwmon: (peci/cputemp) Fix miscalculated DTS for SKX
This commit is contained in:
commit
4bdec23f97
@ -757,6 +757,7 @@ __hwmon_device_register(struct device *dev, const char *name, void *drvdata,
|
||||
struct hwmon_device *hwdev;
|
||||
const char *label;
|
||||
struct device *hdev;
|
||||
struct device *tdev = dev;
|
||||
int i, err, id;
|
||||
|
||||
/* Complain about invalid characters in hwmon name attribute */
|
||||
@ -826,7 +827,9 @@ __hwmon_device_register(struct device *dev, const char *name, void *drvdata,
|
||||
hwdev->name = name;
|
||||
hdev->class = &hwmon_class;
|
||||
hdev->parent = dev;
|
||||
hdev->of_node = dev ? dev->of_node : NULL;
|
||||
while (tdev && !tdev->of_node)
|
||||
tdev = tdev->parent;
|
||||
hdev->of_node = tdev ? tdev->of_node : NULL;
|
||||
hwdev->chip = chip;
|
||||
dev_set_drvdata(hdev, drvdata);
|
||||
dev_set_name(hdev, HWMON_ID_FORMAT, id);
|
||||
@ -838,7 +841,7 @@ __hwmon_device_register(struct device *dev, const char *name, void *drvdata,
|
||||
|
||||
INIT_LIST_HEAD(&hwdev->tzdata);
|
||||
|
||||
if (dev && dev->of_node && chip && chip->ops->read &&
|
||||
if (hdev->of_node && chip && chip->ops->read &&
|
||||
chip->info[0]->type == hwmon_chip &&
|
||||
(chip->info[0]->config[0] & HWMON_C_REGISTER_TZ)) {
|
||||
err = hwmon_thermal_register_sensors(hdev);
|
||||
|
@ -515,6 +515,8 @@ static const struct it87_devices it87_devices[] = {
|
||||
#define has_six_temp(data) ((data)->features & FEAT_SIX_TEMP)
|
||||
#define has_vin3_5v(data) ((data)->features & FEAT_VIN3_5V)
|
||||
#define has_conf_noexit(data) ((data)->features & FEAT_CONF_NOEXIT)
|
||||
#define has_scaling(data) ((data)->features & (FEAT_12MV_ADC | \
|
||||
FEAT_10_9MV_ADC))
|
||||
|
||||
struct it87_sio_data {
|
||||
int sioaddr;
|
||||
@ -3134,7 +3136,7 @@ static int it87_probe(struct platform_device *pdev)
|
||||
"Detected broken BIOS defaults, disabling PWM interface\n");
|
||||
|
||||
/* Starting with IT8721F, we handle scaling of internal voltages */
|
||||
if (has_12mv_adc(data)) {
|
||||
if (has_scaling(data)) {
|
||||
if (sio_data->internal & BIT(0))
|
||||
data->in_scaled |= BIT(3); /* in3 is AVCC */
|
||||
if (sio_data->internal & BIT(1))
|
||||
|
@ -537,6 +537,12 @@ static const struct cpu_info cpu_hsx = {
|
||||
.thermal_margin_to_millidegree = &dts_eight_dot_eight_to_millidegree,
|
||||
};
|
||||
|
||||
static const struct cpu_info cpu_skx = {
|
||||
.reg = &resolved_cores_reg_hsx,
|
||||
.min_peci_revision = 0x33,
|
||||
.thermal_margin_to_millidegree = &dts_ten_dot_six_to_millidegree,
|
||||
};
|
||||
|
||||
static const struct cpu_info cpu_icx = {
|
||||
.reg = &resolved_cores_reg_icx,
|
||||
.min_peci_revision = 0x40,
|
||||
@ -558,7 +564,7 @@ static const struct auxiliary_device_id peci_cputemp_ids[] = {
|
||||
},
|
||||
{
|
||||
.name = "peci_cpu.cputemp.skx",
|
||||
.driver_data = (kernel_ulong_t)&cpu_hsx,
|
||||
.driver_data = (kernel_ulong_t)&cpu_skx,
|
||||
},
|
||||
{
|
||||
.name = "peci_cpu.cputemp.icx",
|
||||
|
@ -698,14 +698,14 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
|
||||
ctx->comm_base_addr = pcc_chan->shmem_base_addr;
|
||||
if (ctx->comm_base_addr) {
|
||||
if (version == XGENE_HWMON_V2)
|
||||
ctx->pcc_comm_addr = (void __force *)ioremap(
|
||||
ctx->comm_base_addr,
|
||||
pcc_chan->shmem_size);
|
||||
ctx->pcc_comm_addr = (void __force *)devm_ioremap(&pdev->dev,
|
||||
ctx->comm_base_addr,
|
||||
pcc_chan->shmem_size);
|
||||
else
|
||||
ctx->pcc_comm_addr = memremap(
|
||||
ctx->comm_base_addr,
|
||||
pcc_chan->shmem_size,
|
||||
MEMREMAP_WB);
|
||||
ctx->pcc_comm_addr = devm_memremap(&pdev->dev,
|
||||
ctx->comm_base_addr,
|
||||
pcc_chan->shmem_size,
|
||||
MEMREMAP_WB);
|
||||
} else {
|
||||
dev_err(&pdev->dev, "Failed to get PCC comm region\n");
|
||||
rc = -ENODEV;
|
||||
|
Loading…
x
Reference in New Issue
Block a user