|
@@ -762,9 +762,7 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
|
if (ret != -EPROBE_DEFER)
|
|
if (ret != -EPROBE_DEFER)
|
|
dev_err(&pdev->dev,
|
|
dev_err(&pdev->dev,
|
|
"failed to get thermal clk: %d\n", ret);
|
|
"failed to get thermal clk: %d\n", ret);
|
|
- cpufreq_cooling_unregister(data->cdev);
|
|
|
|
- cpufreq_cpu_put(data->policy);
|
|
|
|
- return ret;
|
|
|
|
|
|
+ goto cpufreq_put;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -777,9 +775,7 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
|
ret = clk_prepare_enable(data->thermal_clk);
|
|
ret = clk_prepare_enable(data->thermal_clk);
|
|
if (ret) {
|
|
if (ret) {
|
|
dev_err(&pdev->dev, "failed to enable thermal clk: %d\n", 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;
|
|
|
|
|
|
+ goto cpufreq_put;
|
|
}
|
|
}
|
|
|
|
|
|
data->tz = thermal_zone_device_register("imx_thermal_zone",
|
|
data->tz = thermal_zone_device_register("imx_thermal_zone",
|
|
@@ -792,10 +788,7 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
|
ret = PTR_ERR(data->tz);
|
|
ret = PTR_ERR(data->tz);
|
|
dev_err(&pdev->dev,
|
|
dev_err(&pdev->dev,
|
|
"failed to register thermal zone device %d\n", ret);
|
|
"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;
|
|
|
|
|
|
+ goto clk_disable;
|
|
}
|
|
}
|
|
|
|
|
|
dev_info(&pdev->dev, "%s CPU temperature grade - max:%dC"
|
|
dev_info(&pdev->dev, "%s CPU temperature grade - max:%dC"
|
|
@@ -827,14 +820,20 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
|
0, "imx_thermal", data);
|
|
0, "imx_thermal", data);
|
|
if (ret < 0) {
|
|
if (ret < 0) {
|
|
dev_err(&pdev->dev, "failed to request alarm irq: %d\n", ret);
|
|
dev_err(&pdev->dev, "failed to request alarm irq: %d\n", ret);
|
|
- clk_disable_unprepare(data->thermal_clk);
|
|
|
|
- thermal_zone_device_unregister(data->tz);
|
|
|
|
- cpufreq_cooling_unregister(data->cdev);
|
|
|
|
- cpufreq_cpu_put(data->policy);
|
|
|
|
- return ret;
|
|
|
|
|
|
+ goto thermal_zone_unregister;
|
|
}
|
|
}
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
|
+
|
|
|
|
+thermal_zone_unregister:
|
|
|
|
+ thermal_zone_device_unregister(data->tz);
|
|
|
|
+clk_disable:
|
|
|
|
+ clk_disable_unprepare(data->thermal_clk);
|
|
|
|
+cpufreq_put:
|
|
|
|
+ cpufreq_cooling_unregister(data->cdev);
|
|
|
|
+ cpufreq_cpu_put(data->policy);
|
|
|
|
+
|
|
|
|
+ return ret;
|
|
}
|
|
}
|
|
|
|
|
|
static int imx_thermal_remove(struct platform_device *pdev)
|
|
static int imx_thermal_remove(struct platform_device *pdev)
|