diff options
-rw-r--r-- | drivers/thermal/cpu_cooling.c | 5 | ||||
-rw-r--r-- | drivers/thermal/db8500_cpufreq_cooling.c | 5 | ||||
-rw-r--r-- | drivers/thermal/imx_thermal.c | 5 | ||||
-rw-r--r-- | drivers/thermal/samsung/exynos_thermal_common.c | 8 | ||||
-rw-r--r-- | drivers/thermal/samsung/exynos_tmu.c | 5 | ||||
-rw-r--r-- | drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 6 |
6 files changed, 14 insertions, 20 deletions
diff --git a/drivers/thermal/cpu_cooling.c b/drivers/thermal/cpu_cooling.c index ad09e51ffae4..f98a763af2f5 100644 --- a/drivers/thermal/cpu_cooling.c +++ b/drivers/thermal/cpu_cooling.c | |||
@@ -443,6 +443,11 @@ __cpufreq_cooling_register(struct device_node *np, | |||
443 | int ret = 0, i; | 443 | int ret = 0, i; |
444 | struct cpufreq_policy policy; | 444 | struct cpufreq_policy policy; |
445 | 445 | ||
446 | if (!cpufreq_frequency_get_table(cpumask_first(clip_cpus))) { | ||
447 | pr_debug("%s: CPUFreq table not found\n", __func__); | ||
448 | return ERR_PTR(-EPROBE_DEFER); | ||
449 | } | ||
450 | |||
446 | /* Verify that all the clip cpus have same freq_min, freq_max limit */ | 451 | /* Verify that all the clip cpus have same freq_min, freq_max limit */ |
447 | for_each_cpu(i, clip_cpus) { | 452 | for_each_cpu(i, clip_cpus) { |
448 | /* continue if cpufreq policy not found and not return error */ | 453 | /* continue if cpufreq policy not found and not return error */ |
diff --git a/drivers/thermal/db8500_cpufreq_cooling.c b/drivers/thermal/db8500_cpufreq_cooling.c index 786d19263ab0..1ac7ec651c3f 100644 --- a/drivers/thermal/db8500_cpufreq_cooling.c +++ b/drivers/thermal/db8500_cpufreq_cooling.c | |||
@@ -18,7 +18,6 @@ | |||
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/cpu_cooling.h> | 20 | #include <linux/cpu_cooling.h> |
21 | #include <linux/cpufreq.h> | ||
22 | #include <linux/err.h> | 21 | #include <linux/err.h> |
23 | #include <linux/module.h> | 22 | #include <linux/module.h> |
24 | #include <linux/of.h> | 23 | #include <linux/of.h> |
@@ -30,10 +29,6 @@ static int db8500_cpufreq_cooling_probe(struct platform_device *pdev) | |||
30 | struct thermal_cooling_device *cdev; | 29 | struct thermal_cooling_device *cdev; |
31 | struct cpumask mask_val; | 30 | struct cpumask mask_val; |
32 | 31 | ||
33 | /* make sure cpufreq driver has been initialized */ | ||
34 | if (!cpufreq_frequency_get_table(0)) | ||
35 | return -EPROBE_DEFER; | ||
36 | |||
37 | cpumask_set_cpu(0, &mask_val); | 32 | cpumask_set_cpu(0, &mask_val); |
38 | cdev = cpufreq_cooling_register(&mask_val); | 33 | cdev = cpufreq_cooling_register(&mask_val); |
39 | 34 | ||
diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c index 5a1f1070b702..16405b4848f1 100644 --- a/drivers/thermal/imx_thermal.c +++ b/drivers/thermal/imx_thermal.c | |||
@@ -9,7 +9,6 @@ | |||
9 | 9 | ||
10 | #include <linux/clk.h> | 10 | #include <linux/clk.h> |
11 | #include <linux/cpu_cooling.h> | 11 | #include <linux/cpu_cooling.h> |
12 | #include <linux/cpufreq.h> | ||
13 | #include <linux/delay.h> | 12 | #include <linux/delay.h> |
14 | #include <linux/device.h> | 13 | #include <linux/device.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
@@ -459,10 +458,6 @@ static int imx_thermal_probe(struct platform_device *pdev) | |||
459 | int measure_freq; | 458 | int measure_freq; |
460 | int ret; | 459 | int ret; |
461 | 460 | ||
462 | if (!cpufreq_get_current_driver()) { | ||
463 | dev_dbg(&pdev->dev, "no cpufreq driver!"); | ||
464 | return -EPROBE_DEFER; | ||
465 | } | ||
466 | data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); | 461 | data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); |
467 | if (!data) | 462 | if (!data) |
468 | return -ENOMEM; | 463 | return -ENOMEM; |
diff --git a/drivers/thermal/samsung/exynos_thermal_common.c b/drivers/thermal/samsung/exynos_thermal_common.c index b6be572704a4..50a1f17c6221 100644 --- a/drivers/thermal/samsung/exynos_thermal_common.c +++ b/drivers/thermal/samsung/exynos_thermal_common.c | |||
@@ -371,9 +371,11 @@ int exynos_register_thermal(struct thermal_sensor_conf *sensor_conf) | |||
371 | th_zone->cool_dev[th_zone->cool_dev_size] = | 371 | th_zone->cool_dev[th_zone->cool_dev_size] = |
372 | cpufreq_cooling_register(&mask_val); | 372 | cpufreq_cooling_register(&mask_val); |
373 | if (IS_ERR(th_zone->cool_dev[th_zone->cool_dev_size])) { | 373 | if (IS_ERR(th_zone->cool_dev[th_zone->cool_dev_size])) { |
374 | dev_err(sensor_conf->dev, | 374 | ret = PTR_ERR(th_zone->cool_dev[th_zone->cool_dev_size]); |
375 | "Failed to register cpufreq cooling device\n"); | 375 | if (ret != -EPROBE_DEFER) |
376 | ret = -EINVAL; | 376 | dev_err(sensor_conf->dev, |
377 | "Failed to register cpufreq cooling device: %d\n", | ||
378 | ret); | ||
377 | goto err_unregister; | 379 | goto err_unregister; |
378 | } | 380 | } |
379 | th_zone->cool_dev_size++; | 381 | th_zone->cool_dev_size++; |
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index 49c09243fd38..2afca9bf40d5 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c | |||
@@ -683,7 +683,10 @@ static int exynos_tmu_probe(struct platform_device *pdev) | |||
683 | /* Register the sensor with thermal management interface */ | 683 | /* Register the sensor with thermal management interface */ |
684 | ret = exynos_register_thermal(sensor_conf); | 684 | ret = exynos_register_thermal(sensor_conf); |
685 | if (ret) { | 685 | if (ret) { |
686 | dev_err(&pdev->dev, "Failed to register thermal interface\n"); | 686 | if (ret != -EPROBE_DEFER) |
687 | dev_err(&pdev->dev, | ||
688 | "Failed to register thermal interface: %d\n", | ||
689 | ret); | ||
687 | goto err_clk; | 690 | goto err_clk; |
688 | } | 691 | } |
689 | data->reg_conf = sensor_conf; | 692 | data->reg_conf = sensor_conf; |
diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c index 9eec26dc0448..5f07d7e3a198 100644 --- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c +++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/kernel.h> | 28 | #include <linux/kernel.h> |
29 | #include <linux/workqueue.h> | 29 | #include <linux/workqueue.h> |
30 | #include <linux/thermal.h> | 30 | #include <linux/thermal.h> |
31 | #include <linux/cpufreq.h> | ||
32 | #include <linux/cpumask.h> | 31 | #include <linux/cpumask.h> |
33 | #include <linux/cpu_cooling.h> | 32 | #include <linux/cpu_cooling.h> |
34 | #include <linux/of.h> | 33 | #include <linux/of.h> |
@@ -403,11 +402,6 @@ int ti_thermal_register_cpu_cooling(struct ti_bandgap *bgp, int id) | |||
403 | if (!data) | 402 | if (!data) |
404 | return -EINVAL; | 403 | return -EINVAL; |
405 | 404 | ||
406 | if (!cpufreq_get_current_driver()) { | ||
407 | dev_dbg(bgp->dev, "no cpufreq driver yet\n"); | ||
408 | return -EPROBE_DEFER; | ||
409 | } | ||
410 | |||
411 | /* Register cooling device */ | 405 | /* Register cooling device */ |
412 | data->cool_dev = cpufreq_cooling_register(cpu_present_mask); | 406 | data->cool_dev = cpufreq_cooling_register(cpu_present_mask); |
413 | if (IS_ERR(data->cool_dev)) { | 407 | if (IS_ERR(data->cool_dev)) { |