Merge tag 'hwmon-for-v5.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
Pull hwmon fixes from Guenter Roeck: - Fix crash in w83627ehf driver seen with W83627DHG-P - Fix lockdep splat in acpi_power_meter driver - Fix xdpe12284 documentation Sphinx warnings * tag 'hwmon-for-v5.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: hwmon: (w83627ehf) Fix crash seen with W83627DHG-P hwmon: (acpi_power_meter) Fix lockdep splat Documentation/hwmon: fix xdpe12284 Sphinx warnings
This commit is contained in:
@@ -24,6 +24,7 @@ This driver implements support for Infineon Multi-phase XDPE122 family
|
||||
dual loop voltage regulators.
|
||||
The family includes XDPE12284 and XDPE12254 devices.
|
||||
The devices from this family complaint with:
|
||||
|
||||
- Intel VR13 and VR13HC rev 1.3, IMVP8 rev 1.2 and IMPVP9 rev 1.3 DC-DC
|
||||
converter specification.
|
||||
- Intel SVID rev 1.9. protocol.
|
||||
|
||||
@@ -355,7 +355,9 @@ static ssize_t show_str(struct device *dev,
|
||||
struct acpi_device *acpi_dev = to_acpi_device(dev);
|
||||
struct acpi_power_meter_resource *resource = acpi_dev->driver_data;
|
||||
acpi_string val;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&resource->lock);
|
||||
switch (attr->index) {
|
||||
case 0:
|
||||
val = resource->model_number;
|
||||
@@ -372,8 +374,9 @@ static ssize_t show_str(struct device *dev,
|
||||
val = "";
|
||||
break;
|
||||
}
|
||||
|
||||
return sprintf(buf, "%s\n", val);
|
||||
ret = sprintf(buf, "%s\n", val);
|
||||
mutex_unlock(&resource->lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t show_val(struct device *dev,
|
||||
@@ -817,11 +820,12 @@ static void acpi_power_meter_notify(struct acpi_device *device, u32 event)
|
||||
|
||||
resource = acpi_driver_data(device);
|
||||
|
||||
mutex_lock(&resource->lock);
|
||||
switch (event) {
|
||||
case METER_NOTIFY_CONFIG:
|
||||
mutex_lock(&resource->lock);
|
||||
free_capabilities(resource);
|
||||
res = read_capabilities(resource);
|
||||
mutex_unlock(&resource->lock);
|
||||
if (res)
|
||||
break;
|
||||
|
||||
@@ -830,15 +834,12 @@ static void acpi_power_meter_notify(struct acpi_device *device, u32 event)
|
||||
break;
|
||||
case METER_NOTIFY_TRIP:
|
||||
sysfs_notify(&device->dev.kobj, NULL, POWER_AVERAGE_NAME);
|
||||
update_meter(resource);
|
||||
break;
|
||||
case METER_NOTIFY_CAP:
|
||||
sysfs_notify(&device->dev.kobj, NULL, POWER_CAP_NAME);
|
||||
update_cap(resource);
|
||||
break;
|
||||
case METER_NOTIFY_INTERVAL:
|
||||
sysfs_notify(&device->dev.kobj, NULL, POWER_AVG_INTERVAL_NAME);
|
||||
update_avg_interval(resource);
|
||||
break;
|
||||
case METER_NOTIFY_CAPPING:
|
||||
sysfs_notify(&device->dev.kobj, NULL, POWER_ALARM_NAME);
|
||||
@@ -848,7 +849,6 @@ static void acpi_power_meter_notify(struct acpi_device *device, u32 event)
|
||||
WARN(1, "Unexpected event %d\n", event);
|
||||
break;
|
||||
}
|
||||
mutex_unlock(&resource->lock);
|
||||
|
||||
acpi_bus_generate_netlink_event(ACPI_POWER_METER_CLASS,
|
||||
dev_name(&device->dev), event, 0);
|
||||
@@ -912,8 +912,8 @@ static int acpi_power_meter_remove(struct acpi_device *device)
|
||||
resource = acpi_driver_data(device);
|
||||
hwmon_device_unregister(resource->hwmon_dev);
|
||||
|
||||
free_capabilities(resource);
|
||||
remove_attrs(resource);
|
||||
free_capabilities(resource);
|
||||
|
||||
kfree(resource);
|
||||
return 0;
|
||||
|
||||
@@ -1346,8 +1346,13 @@ w83627ehf_is_visible(const void *drvdata, enum hwmon_sensor_types type,
|
||||
/* channel 0.., name 1.. */
|
||||
if (!(data->have_temp & (1 << channel)))
|
||||
return 0;
|
||||
if (attr == hwmon_temp_input || attr == hwmon_temp_label)
|
||||
if (attr == hwmon_temp_input)
|
||||
return 0444;
|
||||
if (attr == hwmon_temp_label) {
|
||||
if (data->temp_label)
|
||||
return 0444;
|
||||
return 0;
|
||||
}
|
||||
if (channel == 2 && data->temp3_val_only)
|
||||
return 0;
|
||||
if (attr == hwmon_temp_max) {
|
||||
|
||||
Reference in New Issue
Block a user