On Sat, Feb 11, 2017 at 10:14:56PM +0200, Krzysztof Kozlowski wrote:
> 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
> exynso4412 with one change - the samsung,tmu_min_efuse_value.
> 
> Signed-off-by: Krzysztof Kozlowski <k...@kernel.org>

Acked-by: Eduardo Valentin <edubez...@gmail.com>

> 
> ---
> 
> Testing on other Exynos542x boards is much appreciated. Especially I
> wonder what efuse values are there.
> ---
>  arch/arm/boot/dts/exynos5420-tmu-sensor-conf.dtsi | 25 
> +++++++++++++++++++++++
>  arch/arm/boot/dts/exynos5420.dtsi                 | 10 ++++-----
>  2 files changed, 30 insertions(+), 5 deletions(-)
>  create mode 100644 arch/arm/boot/dts/exynos5420-tmu-sensor-conf.dtsi
> 
> diff --git a/arch/arm/boot/dts/exynos5420-tmu-sensor-conf.dtsi 
> b/arch/arm/boot/dts/exynos5420-tmu-sensor-conf.dtsi
> new file mode 100644
> index 000000000000..c8771c660550
> --- /dev/null
> +++ b/arch/arm/boot/dts/exynos5420-tmu-sensor-conf.dtsi
> @@ -0,0 +1,25 @@
> +/*
> + * Device tree sources for Exynos5420 TMU sensor configuration
> + *
> + * Copyright (c) 2014 Lukasz Majewski <l.majew...@samsung.com>
> + * Copyright (c) 2017 Krzysztof Kozlowski <k...@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>;
> diff --git a/arch/arm/boot/dts/exynos5420.dtsi 
> b/arch/arm/boot/dts/exynos5420.dtsi
> index 7dc9dc82afd8..83b3899d228d 100644
> --- a/arch/arm/boot/dts/exynos5420.dtsi
> +++ b/arch/arm/boot/dts/exynos5420.dtsi
> @@ -699,7 +699,7 @@
>                       interrupts = <0 65 IRQ_TYPE_LEVEL_HIGH>;
>                       clocks = <&clock CLK_TMU>;
>                       clock-names = "tmu_apbif";
> -                     #include "exynos4412-tmu-sensor-conf.dtsi"
> +                     #include "exynos5420-tmu-sensor-conf.dtsi"
>               };
>  
>               tmu_cpu1: tmu@10064000 {
> @@ -708,7 +708,7 @@
>                       interrupts = <0 183 IRQ_TYPE_LEVEL_HIGH>;
>                       clocks = <&clock CLK_TMU>;
>                       clock-names = "tmu_apbif";
> -                     #include "exynos4412-tmu-sensor-conf.dtsi"
> +                     #include "exynos5420-tmu-sensor-conf.dtsi"
>               };
>  
>               tmu_cpu2: tmu@10068000 {
> @@ -717,7 +717,7 @@
>                       interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>;
>                       clocks = <&clock CLK_TMU>, <&clock CLK_TMU>;
>                       clock-names = "tmu_apbif", "tmu_triminfo_apbif";
> -                     #include "exynos4412-tmu-sensor-conf.dtsi"
> +                     #include "exynos5420-tmu-sensor-conf.dtsi"
>               };
>  
>               tmu_cpu3: tmu@1006c000 {
> @@ -726,7 +726,7 @@
>                       interrupts = <0 185 IRQ_TYPE_LEVEL_HIGH>;
>                       clocks = <&clock CLK_TMU>, <&clock CLK_TMU_GPU>;
>                       clock-names = "tmu_apbif", "tmu_triminfo_apbif";
> -                     #include "exynos4412-tmu-sensor-conf.dtsi"
> +                     #include "exynos5420-tmu-sensor-conf.dtsi"
>               };
>  
>               tmu_gpu: tmu@100a0000 {
> @@ -735,7 +735,7 @@
>                       interrupts = <0 215 IRQ_TYPE_LEVEL_HIGH>;
>                       clocks = <&clock CLK_TMU_GPU>, <&clock CLK_TMU>;
>                       clock-names = "tmu_apbif", "tmu_triminfo_apbif";
> -                     #include "exynos4412-tmu-sensor-conf.dtsi"
> +                     #include "exynos5420-tmu-sensor-conf.dtsi"
>               };
>  
>               sysmmu_g2dr: sysmmu@0x10A60000 {
> -- 
> 2.9.3
> 

Reply via email to