forked from luck/tmp_suning_uos_patched
Merge branch 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux
Pull thermal fixes from Zhang Rui: - Fix cpu_cooling to have separate thermal_cooling_device_ops structures for cpus with and without power model, to avoid NULL dereference in cpufreq_state2power. From Brendan Jackman. - Fix a possible NULL dereference in imx_thermal driver. From Corentin LABBE. - Another two trivial fixes, one typo fix and one deleting module owner. From Caesar Wang and Markus Elfring. * 'for-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux: thermal: imx: fix a possible NULL dereference thermal: trivial: fix the typo Thermal-INT3406: Delete owner assignment thermal: cpu_cooling: Fix NULL dereference in cpufreq_state2power
This commit is contained in:
commit
61c04572de
@ -62,7 +62,7 @@ For more examples of cooling devices, refer to the example sections below.
|
||||
Required properties:
|
||||
- #cooling-cells: Used to provide cooling device specific information
|
||||
Type: unsigned while referring to it. Must be at least 2, in order
|
||||
Size: one cell to specify minimum and maximum cooling state used
|
||||
Size: one cell to specify minimum and maximum cooling state used
|
||||
in the reference. The first cell is the minimum
|
||||
cooling state requested and the second cell is
|
||||
the maximum cooling state requested in the reference.
|
||||
@ -119,7 +119,7 @@ Required properties:
|
||||
Optional property:
|
||||
- contribution: The cooling contribution to the thermal zone of the
|
||||
Type: unsigned referred cooling device at the referred trip point.
|
||||
Size: one cell The contribution is a ratio of the sum
|
||||
Size: one cell The contribution is a ratio of the sum
|
||||
of all cooling contributions within a thermal zone.
|
||||
|
||||
Note: Using the THERMAL_NO_LIMIT (-1UL) constant in the cooling-device phandle
|
||||
@ -145,7 +145,7 @@ Required properties:
|
||||
Size: one cell
|
||||
|
||||
- thermal-sensors: A list of thermal sensor phandles and sensor specifier
|
||||
Type: list of used while monitoring the thermal zone.
|
||||
Type: list of used while monitoring the thermal zone.
|
||||
phandles + sensor
|
||||
specifier
|
||||
|
||||
@ -473,7 +473,7 @@ thermal-zones {
|
||||
<&adc>; /* pcb north */
|
||||
|
||||
/* hotspot = 100 * bandgap - 120 * adc + 484 */
|
||||
coefficients = <100 -120 484>;
|
||||
coefficients = <100 -120 484>;
|
||||
|
||||
trips {
|
||||
...
|
||||
@ -502,7 +502,7 @@ from the ADC sensor. The binding would be then:
|
||||
thermal-sensors = <&adc>;
|
||||
|
||||
/* hotspot = 1 * adc + 6000 */
|
||||
coefficients = <1 6000>;
|
||||
coefficients = <1 6000>;
|
||||
|
||||
(d) - Board thermal
|
||||
|
||||
|
@ -740,12 +740,22 @@ static int cpufreq_power2state(struct thermal_cooling_device *cdev,
|
||||
}
|
||||
|
||||
/* Bind cpufreq callbacks to thermal cooling device ops */
|
||||
|
||||
static struct thermal_cooling_device_ops cpufreq_cooling_ops = {
|
||||
.get_max_state = cpufreq_get_max_state,
|
||||
.get_cur_state = cpufreq_get_cur_state,
|
||||
.set_cur_state = cpufreq_set_cur_state,
|
||||
};
|
||||
|
||||
static struct thermal_cooling_device_ops cpufreq_power_cooling_ops = {
|
||||
.get_max_state = cpufreq_get_max_state,
|
||||
.get_cur_state = cpufreq_get_cur_state,
|
||||
.set_cur_state = cpufreq_set_cur_state,
|
||||
.get_requested_power = cpufreq_get_requested_power,
|
||||
.state2power = cpufreq_state2power,
|
||||
.power2state = cpufreq_power2state,
|
||||
};
|
||||
|
||||
/* Notifier for cpufreq policy change */
|
||||
static struct notifier_block thermal_cpufreq_notifier_block = {
|
||||
.notifier_call = cpufreq_thermal_notifier,
|
||||
@ -795,6 +805,7 @@ __cpufreq_cooling_register(struct device_node *np,
|
||||
struct cpumask temp_mask;
|
||||
unsigned int freq, i, num_cpus;
|
||||
int ret;
|
||||
struct thermal_cooling_device_ops *cooling_ops;
|
||||
|
||||
cpumask_and(&temp_mask, clip_cpus, cpu_online_mask);
|
||||
policy = cpufreq_cpu_get(cpumask_first(&temp_mask));
|
||||
@ -850,10 +861,6 @@ __cpufreq_cooling_register(struct device_node *np,
|
||||
cpumask_copy(&cpufreq_dev->allowed_cpus, clip_cpus);
|
||||
|
||||
if (capacitance) {
|
||||
cpufreq_cooling_ops.get_requested_power =
|
||||
cpufreq_get_requested_power;
|
||||
cpufreq_cooling_ops.state2power = cpufreq_state2power;
|
||||
cpufreq_cooling_ops.power2state = cpufreq_power2state;
|
||||
cpufreq_dev->plat_get_static_power = plat_static_func;
|
||||
|
||||
ret = build_dyn_power_table(cpufreq_dev, capacitance);
|
||||
@ -861,6 +868,10 @@ __cpufreq_cooling_register(struct device_node *np,
|
||||
cool_dev = ERR_PTR(ret);
|
||||
goto free_table;
|
||||
}
|
||||
|
||||
cooling_ops = &cpufreq_power_cooling_ops;
|
||||
} else {
|
||||
cooling_ops = &cpufreq_cooling_ops;
|
||||
}
|
||||
|
||||
ret = get_idr(&cpufreq_idr, &cpufreq_dev->id);
|
||||
@ -885,7 +896,7 @@ __cpufreq_cooling_register(struct device_node *np,
|
||||
cpufreq_dev->id);
|
||||
|
||||
cool_dev = thermal_of_cooling_device_register(np, dev_name, cpufreq_dev,
|
||||
&cpufreq_cooling_ops);
|
||||
cooling_ops);
|
||||
if (IS_ERR(cool_dev))
|
||||
goto remove_idr;
|
||||
|
||||
|
@ -471,8 +471,6 @@ MODULE_DEVICE_TABLE(of, of_imx_thermal_match);
|
||||
|
||||
static int imx_thermal_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct of_device_id *of_id =
|
||||
of_match_device(of_imx_thermal_match, &pdev->dev);
|
||||
struct imx_thermal_data *data;
|
||||
struct regmap *map;
|
||||
int measure_freq;
|
||||
@ -490,7 +488,7 @@ static int imx_thermal_probe(struct platform_device *pdev)
|
||||
}
|
||||
data->tempmon = map;
|
||||
|
||||
data->socdata = of_id->data;
|
||||
data->socdata = of_device_get_match_data(&pdev->dev);
|
||||
|
||||
/* make sure the IRQ flag is clear before enabling irq on i.MX6SX */
|
||||
if (data->socdata->version == TEMPMON_IMX6SX) {
|
||||
|
@ -225,7 +225,6 @@ static struct platform_driver int3406_thermal_driver = {
|
||||
.remove = int3406_thermal_remove,
|
||||
.driver = {
|
||||
.name = "int3406 thermal",
|
||||
.owner = THIS_MODULE,
|
||||
.acpi_match_table = int3406_thermal_match,
|
||||
},
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user