|
@@ -58,6 +58,14 @@ static LIST_HEAD(thermal_hwmon_list);
|
|
|
|
|
|
static DEFINE_MUTEX(thermal_hwmon_list_lock);
|
|
static DEFINE_MUTEX(thermal_hwmon_list_lock);
|
|
|
|
|
|
|
|
+static ssize_t
|
|
|
|
+name_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|
|
|
+{
|
|
|
|
+ struct thermal_hwmon_device *hwmon = dev_get_drvdata(dev);
|
|
|
|
+ return sprintf(buf, "%s\n", hwmon->type);
|
|
|
|
+}
|
|
|
|
+static DEVICE_ATTR_RO(name);
|
|
|
|
+
|
|
static ssize_t
|
|
static ssize_t
|
|
temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|
temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
|
|
{
|
|
{
|
|
@@ -157,12 +165,15 @@ int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
|
|
|
|
|
|
INIT_LIST_HEAD(&hwmon->tz_list);
|
|
INIT_LIST_HEAD(&hwmon->tz_list);
|
|
strlcpy(hwmon->type, tz->type, THERMAL_NAME_LENGTH);
|
|
strlcpy(hwmon->type, tz->type, THERMAL_NAME_LENGTH);
|
|
- hwmon->device = hwmon_device_register_with_info(NULL, hwmon->type,
|
|
|
|
- hwmon, NULL, NULL);
|
|
|
|
|
|
+ hwmon->device = hwmon_device_register(NULL);
|
|
if (IS_ERR(hwmon->device)) {
|
|
if (IS_ERR(hwmon->device)) {
|
|
result = PTR_ERR(hwmon->device);
|
|
result = PTR_ERR(hwmon->device);
|
|
goto free_mem;
|
|
goto free_mem;
|
|
}
|
|
}
|
|
|
|
+ dev_set_drvdata(hwmon->device, hwmon);
|
|
|
|
+ result = device_create_file(hwmon->device, &dev_attr_name);
|
|
|
|
+ if (result)
|
|
|
|
+ goto free_mem;
|
|
|
|
|
|
register_sys_interface:
|
|
register_sys_interface:
|
|
temp = kzalloc(sizeof(*temp), GFP_KERNEL);
|
|
temp = kzalloc(sizeof(*temp), GFP_KERNEL);
|
|
@@ -211,8 +222,10 @@ int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
|
|
free_temp_mem:
|
|
free_temp_mem:
|
|
kfree(temp);
|
|
kfree(temp);
|
|
unregister_name:
|
|
unregister_name:
|
|
- if (new_hwmon_device)
|
|
|
|
|
|
+ if (new_hwmon_device) {
|
|
|
|
+ device_remove_file(hwmon->device, &dev_attr_name);
|
|
hwmon_device_unregister(hwmon->device);
|
|
hwmon_device_unregister(hwmon->device);
|
|
|
|
+ }
|
|
free_mem:
|
|
free_mem:
|
|
if (new_hwmon_device)
|
|
if (new_hwmon_device)
|
|
kfree(hwmon);
|
|
kfree(hwmon);
|
|
@@ -254,6 +267,7 @@ void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz)
|
|
list_del(&hwmon->node);
|
|
list_del(&hwmon->node);
|
|
mutex_unlock(&thermal_hwmon_list_lock);
|
|
mutex_unlock(&thermal_hwmon_list_lock);
|
|
|
|
|
|
|
|
+ device_remove_file(hwmon->device, &dev_attr_name);
|
|
hwmon_device_unregister(hwmon->device);
|
|
hwmon_device_unregister(hwmon->device);
|
|
kfree(hwmon);
|
|
kfree(hwmon);
|
|
}
|
|
}
|