ACPI: processor: Split out thermal initialization from ACPI PSS
[linux-2.6-microblaze.git] / drivers / acpi / processor_driver.c
index 368a9ed..1278969 100644 (file)
@@ -139,75 +139,17 @@ static int acpi_soft_cpu_dead(unsigned int cpu)
 }
 
 #ifdef CONFIG_ACPI_CPU_FREQ_PSS
-static int acpi_pss_perf_init(struct acpi_processor *pr,
-               struct acpi_device *device)
+static void acpi_pss_perf_init(struct acpi_processor *pr)
 {
-       int result = 0;
-
        acpi_processor_ppc_has_changed(pr, 0);
 
        acpi_processor_get_throttling_info(pr);
 
        if (pr->flags.throttling)
                pr->flags.limit = 1;
-
-       pr->cdev = thermal_cooling_device_register("Processor", device,
-                                                  &processor_cooling_ops);
-       if (IS_ERR(pr->cdev)) {
-               result = PTR_ERR(pr->cdev);
-               return result;
-       }
-
-       dev_dbg(&device->dev, "registered as cooling_device%d\n",
-               pr->cdev->id);
-
-       result = sysfs_create_link(&device->dev.kobj,
-                                  &pr->cdev->device.kobj,
-                                  "thermal_cooling");
-       if (result) {
-               dev_err(&device->dev,
-                       "Failed to create sysfs link 'thermal_cooling'\n");
-               goto err_thermal_unregister;
-       }
-
-       result = sysfs_create_link(&pr->cdev->device.kobj,
-                                  &device->dev.kobj,
-                                  "device");
-       if (result) {
-               dev_err(&pr->cdev->device,
-                       "Failed to create sysfs link 'device'\n");
-               goto err_remove_sysfs_thermal;
-       }
-
-       return 0;
-
- err_remove_sysfs_thermal:
-       sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
- err_thermal_unregister:
-       thermal_cooling_device_unregister(pr->cdev);
-
-       return result;
-}
-
-static void acpi_pss_perf_exit(struct acpi_processor *pr,
-               struct acpi_device *device)
-{
-       if (pr->cdev) {
-               sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
-               sysfs_remove_link(&pr->cdev->device.kobj, "device");
-               thermal_cooling_device_unregister(pr->cdev);
-               pr->cdev = NULL;
-       }
 }
 #else
-static inline int acpi_pss_perf_init(struct acpi_processor *pr,
-               struct acpi_device *device)
-{
-       return 0;
-}
-
-static inline void acpi_pss_perf_exit(struct acpi_processor *pr,
-               struct acpi_device *device) {}
+static inline void acpi_pss_perf_init(struct acpi_processor *pr) {}
 #endif /* CONFIG_ACPI_CPU_FREQ_PSS */
 
 static int __acpi_processor_start(struct acpi_device *device)
@@ -229,7 +171,9 @@ static int __acpi_processor_start(struct acpi_device *device)
        if (!cpuidle_get_driver() || cpuidle_get_driver() == &acpi_idle_driver)
                acpi_processor_power_init(pr);
 
-       result = acpi_pss_perf_init(pr, device);
+       acpi_pss_perf_init(pr);
+
+       result = acpi_processor_thermal_init(pr, device);
        if (result)
                goto err_power_exit;
 
@@ -239,7 +183,7 @@ static int __acpi_processor_start(struct acpi_device *device)
                return 0;
 
        result = -ENODEV;
-       acpi_pss_perf_exit(pr, device);
+       acpi_processor_thermal_exit(pr, device);
 
 err_power_exit:
        acpi_processor_power_exit(pr);
@@ -277,10 +221,10 @@ static int acpi_processor_stop(struct device *dev)
                return 0;
        acpi_processor_power_exit(pr);
 
-       acpi_pss_perf_exit(pr, device);
-
        acpi_cppc_processor_exit(pr);
 
+       acpi_processor_thermal_exit(pr, device);
+
        return 0;
 }