Commit ed4d50c4 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux

Pull thermal management fix from Zhang Rui:
 "A single revert from a recently introduced problem.

  Specifics:

  Commit 7611fb68 ("thermal: thermal_hwmon: Convert to
  hwmon_device_register_with_info()"), which was introduced in 4.10-rc5,
  uses new hwmon API. But this breaks some soc thermal driver because
  the new hwmon API has a strict rule for the hwmon device name. Revert
  the offending commit as a quick solution for 4.10"

* 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
  Revert "thermal: thermal_hwmon: Convert to hwmon_device_register_with_info()"
parents fd694aaa 3feb479c
...@@ -58,6 +58,14 @@ static LIST_HEAD(thermal_hwmon_list); ...@@ -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) ...@@ -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->device = hwmon_device_register(NULL);
hwmon, NULL, 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) ...@@ -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) ...@@ -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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment