Commit 01dea34e authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Kleber Sacilotto de Souza

ARM: dts: exynos: Do not ignore real-world fuse values for thermal zone 0 on Exynos5420

BugLink: https://bugs.launchpad.net/bugs/1822271

commit 28928a3c upstream.

In Odroid XU3 Lite board, the temperature levels reported for thermal
zone 0 were weird. In warm room:
	/sys/class/thermal/thermal_zone0/temp:32000
	/sys/class/thermal/thermal_zone1/temp:51000
	/sys/class/thermal/thermal_zone2/temp:55000
	/sys/class/thermal/thermal_zone3/temp:54000
	/sys/class/thermal/thermal_zone4/temp:51000

Sometimes after booting the value was even equal to ambient temperature
which is highly unlikely to be a real temperature of sensor in SoC.

The thermal sensor's calibration (trimming) is based on fused values.
In case of the board above, the fused values are: 35, 52, 43, 58 and 43
(corresponding to each TMU device).  However driver defined a minimum value
for fused data as 40 and for smaller values it was using a hard-coded 55
instead.  This lead to mapping data from sensor to wrong temperatures
for thermal zone 0.

Various vendor 3.10 trees (Hardkernel's based on Samsung LSI, Artik 10)
do not impose any limits on fused values.  Since we do not have any
knowledge about these limits, use 0 as a minimum accepted fused value.
This should essentially allow accepting any reasonable fused value thus
behaving like vendor driver.

The exynos5420-tmu-sensor-conf.dtsi is copied directly from existing
exynos4412 with one change - the samsung,tmu_min_efuse_value.
Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Acked-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Acked-by: default avatarEduardo Valentin <edubezval@gmail.com>
Reviewed-by: default avatarJavier Martinez Canillas <javier@osg.samsung.com>
Tested-by: default avatarJavier Martinez Canillas <javier@osg.samsung.com>
Reviewed-by: default avatarAnand Moon <linux.amoon@gmail.com>
Tested-by: default avatarAnand Moon <linux.amoon@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarStefan Bader <stefan.bader@canonical.com>
Acked-by: default avatarJuerg Haefliger <juerg.haefliger@canonical.com>
Signed-off-by: default avatarKleber Sacilotto de Souza <kleber.souza@canonical.com>
parent 58d9bd9a
/*
* Device tree sources for Exynos5420 TMU sensor configuration
*
* Copyright (c) 2014 Lukasz Majewski <l.majewski@samsung.com>
* Copyright (c) 2017 Krzysztof Kozlowski <krzk@kernel.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*/
#include <dt-bindings/thermal/thermal_exynos.h>
#thermal-sensor-cells = <0>;
samsung,tmu_gain = <8>;
samsung,tmu_reference_voltage = <16>;
samsung,tmu_noise_cancel_mode = <4>;
samsung,tmu_efuse_value = <55>;
samsung,tmu_min_efuse_value = <0>;
samsung,tmu_max_efuse_value = <100>;
samsung,tmu_first_point_trim = <25>;
samsung,tmu_second_point_trim = <85>;
samsung,tmu_default_temp_offset = <50>;
samsung,tmu_cal_type = <TYPE_ONE_POINT_TRIMMING>;
...@@ -777,7 +777,7 @@ tmu_cpu0: tmu@10060000 { ...@@ -777,7 +777,7 @@ tmu_cpu0: tmu@10060000 {
interrupts = <0 65 0>; interrupts = <0 65 0>;
clocks = <&clock CLK_TMU>; clocks = <&clock CLK_TMU>;
clock-names = "tmu_apbif"; clock-names = "tmu_apbif";
#include "exynos4412-tmu-sensor-conf.dtsi" #include "exynos5420-tmu-sensor-conf.dtsi"
}; };
tmu_cpu1: tmu@10064000 { tmu_cpu1: tmu@10064000 {
...@@ -786,7 +786,7 @@ tmu_cpu1: tmu@10064000 { ...@@ -786,7 +786,7 @@ tmu_cpu1: tmu@10064000 {
interrupts = <0 183 0>; interrupts = <0 183 0>;
clocks = <&clock CLK_TMU>; clocks = <&clock CLK_TMU>;
clock-names = "tmu_apbif"; clock-names = "tmu_apbif";
#include "exynos4412-tmu-sensor-conf.dtsi" #include "exynos5420-tmu-sensor-conf.dtsi"
}; };
tmu_cpu2: tmu@10068000 { tmu_cpu2: tmu@10068000 {
...@@ -795,7 +795,7 @@ tmu_cpu2: tmu@10068000 { ...@@ -795,7 +795,7 @@ tmu_cpu2: tmu@10068000 {
interrupts = <0 184 0>; interrupts = <0 184 0>;
clocks = <&clock CLK_TMU>, <&clock CLK_TMU>; clocks = <&clock CLK_TMU>, <&clock CLK_TMU>;
clock-names = "tmu_apbif", "tmu_triminfo_apbif"; clock-names = "tmu_apbif", "tmu_triminfo_apbif";
#include "exynos4412-tmu-sensor-conf.dtsi" #include "exynos5420-tmu-sensor-conf.dtsi"
}; };
tmu_cpu3: tmu@1006c000 { tmu_cpu3: tmu@1006c000 {
...@@ -804,7 +804,7 @@ tmu_cpu3: tmu@1006c000 { ...@@ -804,7 +804,7 @@ tmu_cpu3: tmu@1006c000 {
interrupts = <0 185 0>; interrupts = <0 185 0>;
clocks = <&clock CLK_TMU>, <&clock CLK_TMU_GPU>; clocks = <&clock CLK_TMU>, <&clock CLK_TMU_GPU>;
clock-names = "tmu_apbif", "tmu_triminfo_apbif"; clock-names = "tmu_apbif", "tmu_triminfo_apbif";
#include "exynos4412-tmu-sensor-conf.dtsi" #include "exynos5420-tmu-sensor-conf.dtsi"
}; };
tmu_gpu: tmu@100a0000 { tmu_gpu: tmu@100a0000 {
...@@ -813,7 +813,7 @@ tmu_gpu: tmu@100a0000 { ...@@ -813,7 +813,7 @@ tmu_gpu: tmu@100a0000 {
interrupts = <0 215 0>; interrupts = <0 215 0>;
clocks = <&clock CLK_TMU_GPU>, <&clock CLK_TMU>; clocks = <&clock CLK_TMU_GPU>, <&clock CLK_TMU>;
clock-names = "tmu_apbif", "tmu_triminfo_apbif"; clock-names = "tmu_apbif", "tmu_triminfo_apbif";
#include "exynos4412-tmu-sensor-conf.dtsi" #include "exynos5420-tmu-sensor-conf.dtsi"
}; };
thermal-zones { thermal-zones {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment