[8895] thermal: samsung: Change AVG_CON setting
authorSoomin Kim <sm8326.kim@samsung.com>
Thu, 28 Jul 2016 06:33:05 +0000 (15:33 +0900)
committerChungwoo Park <cww.park@samsung.com>
Mon, 21 May 2018 08:13:13 +0000 (17:13 +0900)
If thermal sensor is TEM1002X, AVG_CON register is
used. If 2X, 4X mode is used, EN_DEM bit sholud be
set to 1. In case of the other mode, this bit isn't
set. This setting is only needed for TEM1002X. Other
sensors like TEM1455X, TEM1456X isn't needed.

Change-Id: I5fe47bdb4f67474c594770214a3dca3a830cf3f6
Signed-off-by: Soomin Kim <sm8326.kim@samsung.com>
drivers/thermal/samsung/exynos_tmu.c

index 1f83df6ae62c9858471de51e49db8225277d0aa6..576a299595fddf582263c5ea50283faeddbb427d 100644 (file)
@@ -603,10 +603,13 @@ static void exynos8895_tmu_control(struct platform_device *pdev, bool on)
        con = get_con_reg(data, readl(data->base + EXYNOS_TMU_REG_CONTROL));
        avg_con = readl(data->base + EXYNOS_TMU_REG_AVG_CON);
 
-       if(avg_sel)
+       if (avg_sel) {
                avg_con |= ((avg_con & EXYNOS_TMU_AVG_MODE_MASK) | EXYNOS_TMU_AVG_MODE_DEFAULT);
-       else
+               avg_con &= ~(EXYNOS_TMU_DEM_ENABLE << EXYNOS_TMU_DEM_SHIFT);
+       } else {
                avg_con |= ((avg_con & EXYNOS_TMU_AVG_MODE_MASK) | EXYNOS_TMU_AVG_MODE_4);
+               avg_con |= EXYNOS_TMU_DEM_ENABLE << EXYNOS_TMU_DEM_SHIFT;
+       }
 
        /* Set MUX_ADDR SFR according to sensor_type */
        switch (data->pdata->sensor_type) {
@@ -663,7 +666,11 @@ static void exynos8895_tmu_control(struct platform_device *pdev, bool on)
                }
        }
        writel(con, data->base + EXYNOS_TMU_REG_CONTROL);
-       writel(avg_con, data->base + EXYNOS_TMU_REG_AVG_CON);
+
+       /* Only TEM1002X sensor needs AVG_CON setting */
+       if (data->pdata->sensor_type == TEM1002X)
+               writel(avg_con, data->base + EXYNOS_TMU_REG_AVG_CON);
+
 }
 static int exynos_get_temp(void *p, int *temp)
 {