mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 19:51:31 -04:00
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/evalenti/linux-soc-thermal into thermal-soc
This commit is contained in:
commit
467aebee87
13 changed files with 325 additions and 411 deletions
|
|
@ -245,7 +245,6 @@ static int bcm2835_thermal_probe(struct platform_device *pdev)
|
|||
*/
|
||||
err = tz->ops->get_trip_temp(tz, 0, &trip_temp);
|
||||
if (err < 0) {
|
||||
err = PTR_ERR(tz);
|
||||
dev_err(&pdev->dev,
|
||||
"Not able to read trip_temp: %d\n",
|
||||
err);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -397,8 +397,11 @@ static int hisi_thermal_suspend(struct device *dev)
|
|||
static int hisi_thermal_resume(struct device *dev)
|
||||
{
|
||||
struct hisi_thermal_data *data = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
clk_prepare_enable(data->clk);
|
||||
ret = clk_prepare_enable(data->clk);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
data->irq_enabled = true;
|
||||
hisi_thermal_enable_bind_irq_sensor(data);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/cpufreq.h>
|
||||
#include <linux/cpu_cooling.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/device.h>
|
||||
|
|
@ -88,6 +89,7 @@ static struct thermal_soc_data thermal_imx6sx_data = {
|
|||
};
|
||||
|
||||
struct imx_thermal_data {
|
||||
struct cpufreq_policy *policy;
|
||||
struct thermal_zone_device *tz;
|
||||
struct thermal_cooling_device *cdev;
|
||||
enum thermal_device_mode mode;
|
||||
|
|
@ -525,13 +527,18 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
|||
regmap_write(map, MISC0 + REG_SET, MISC0_REFTOP_SELBIASOFF);
|
||||
regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_POWER_DOWN);
|
||||
|
||||
data->cdev = cpufreq_cooling_register(cpu_present_mask);
|
||||
data->policy = cpufreq_cpu_get(0);
|
||||
if (!data->policy) {
|
||||
pr_debug("%s: CPUFreq policy not found\n", __func__);
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
|
||||
data->cdev = cpufreq_cooling_register(data->policy);
|
||||
if (IS_ERR(data->cdev)) {
|
||||
ret = PTR_ERR(data->cdev);
|
||||
if (ret != -EPROBE_DEFER)
|
||||
dev_err(&pdev->dev,
|
||||
"failed to register cpufreq cooling device: %d\n",
|
||||
ret);
|
||||
dev_err(&pdev->dev,
|
||||
"failed to register cpufreq cooling device: %d\n", ret);
|
||||
cpufreq_cpu_put(data->policy);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -542,6 +549,7 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
|||
dev_err(&pdev->dev,
|
||||
"failed to get thermal clk: %d\n", ret);
|
||||
cpufreq_cooling_unregister(data->cdev);
|
||||
cpufreq_cpu_put(data->policy);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -556,6 +564,7 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
|||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to enable thermal clk: %d\n", ret);
|
||||
cpufreq_cooling_unregister(data->cdev);
|
||||
cpufreq_cpu_put(data->policy);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -571,6 +580,7 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
|||
"failed to register thermal zone device %d\n", ret);
|
||||
clk_disable_unprepare(data->thermal_clk);
|
||||
cpufreq_cooling_unregister(data->cdev);
|
||||
cpufreq_cpu_put(data->policy);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -599,6 +609,7 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
|||
clk_disable_unprepare(data->thermal_clk);
|
||||
thermal_zone_device_unregister(data->tz);
|
||||
cpufreq_cooling_unregister(data->cdev);
|
||||
cpufreq_cpu_put(data->policy);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -620,6 +631,7 @@ static int imx_thermal_remove(struct platform_device *pdev)
|
|||
|
||||
thermal_zone_device_unregister(data->tz);
|
||||
cpufreq_cooling_unregister(data->cdev);
|
||||
cpufreq_cpu_put(data->policy);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -648,8 +660,11 @@ static int imx_thermal_resume(struct device *dev)
|
|||
{
|
||||
struct imx_thermal_data *data = dev_get_drvdata(dev);
|
||||
struct regmap *map = data->tempmon;
|
||||
int ret;
|
||||
|
||||
clk_prepare_enable(data->thermal_clk);
|
||||
ret = clk_prepare_enable(data->thermal_clk);
|
||||
if (ret)
|
||||
return ret;
|
||||
/* Enabled thermal sensor after resume */
|
||||
regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_POWER_DOWN);
|
||||
regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_MEASURE_TEMP);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/thermal.h>
|
||||
#include <linux/cpufreq.h>
|
||||
#include <linux/cpumask.h>
|
||||
#include <linux/cpu_cooling.h>
|
||||
#include <linux/of.h>
|
||||
|
|
@ -37,6 +38,7 @@
|
|||
|
||||
/* common data structures */
|
||||
struct ti_thermal_data {
|
||||
struct cpufreq_policy *policy;
|
||||
struct thermal_zone_device *ti_thermal;
|
||||
struct thermal_zone_device *pcb_tz;
|
||||
struct thermal_cooling_device *cool_dev;
|
||||
|
|
@ -247,15 +249,19 @@ int ti_thermal_register_cpu_cooling(struct ti_bandgap *bgp, int id)
|
|||
if (!data)
|
||||
return -EINVAL;
|
||||
|
||||
data->policy = cpufreq_cpu_get(0);
|
||||
if (!data->policy) {
|
||||
pr_debug("%s: CPUFreq policy not found\n", __func__);
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
|
||||
/* Register cooling device */
|
||||
data->cool_dev = cpufreq_cooling_register(cpu_present_mask);
|
||||
data->cool_dev = cpufreq_cooling_register(data->policy);
|
||||
if (IS_ERR(data->cool_dev)) {
|
||||
int ret = PTR_ERR(data->cool_dev);
|
||||
|
||||
if (ret != -EPROBE_DEFER)
|
||||
dev_err(bgp->dev,
|
||||
"Failed to register cpu cooling device %d\n",
|
||||
ret);
|
||||
dev_err(bgp->dev, "Failed to register cpu cooling device %d\n",
|
||||
ret);
|
||||
cpufreq_cpu_put(data->policy);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -270,8 +276,10 @@ int ti_thermal_unregister_cpu_cooling(struct ti_bandgap *bgp, int id)
|
|||
|
||||
data = ti_bandgap_get_sensor_data(bgp, id);
|
||||
|
||||
if (data)
|
||||
if (data) {
|
||||
cpufreq_cooling_unregister(data->cool_dev);
|
||||
cpufreq_cpu_put(data->policy);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue