summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/thermal/samsung/exynos_tmu.c10
-rw-r--r--drivers/thermal/samsung/exynos_tmu_data.h3
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
index b43afda8acd..fa6631a999b 100644
--- a/drivers/thermal/samsung/exynos_tmu.c
+++ b/drivers/thermal/samsung/exynos_tmu.c
@@ -322,6 +322,16 @@ static void exynos_tmu_control(struct platform_device *pdev, bool on)
con |= pdata->reference_voltage << reg->buf_vref_sel_shift;
}
+ /*
+ * In Exynos 4x12 and 5250,
+ * MUX bits should be set to 0x6 for normal operation.
+ * For ohters, it can be ignored.
+ */
+ if (pdata->type == SOC_ARCH_EXYNOS) {
+ con &= ~(EXYNOS_TMU_MUX_ADDR_MASK << EXYNOS_TMU_MUX_ADDR_SHIFT);
+ con |= EXYNOS_TMU_MUX_ADDR_DEFAULT << EXYNOS_TMU_MUX_ADDR_SHIFT;
+ }
+
if (pdata->gain) {
con &= ~(reg->buf_slope_sel_mask << reg->buf_slope_sel_shift);
con |= (pdata->gain << reg->buf_slope_sel_shift);
diff --git a/drivers/thermal/samsung/exynos_tmu_data.h b/drivers/thermal/samsung/exynos_tmu_data.h
index dc7feb51099..2144eaf5419 100644
--- a/drivers/thermal/samsung/exynos_tmu_data.h
+++ b/drivers/thermal/samsung/exynos_tmu_data.h
@@ -35,6 +35,9 @@
#define EXYNOS_TMU_TEMP_MASK 0xff
#define EXYNOS_TMU_REF_VOLTAGE_SHIFT 24
#define EXYNOS_TMU_REF_VOLTAGE_MASK 0x1f
+#define EXYNOS_TMU_MUX_ADDR_DEFAULT 0x6
+#define EXYNOS_TMU_MUX_ADDR_MASK 0x7
+#define EXYNOS_TMU_MUX_ADDR_SHIFT 20
#define EXYNOS_TMU_BUF_SLOPE_SEL_MASK 0xf
#define EXYNOS_TMU_BUF_SLOPE_SEL_SHIFT 8
#define EXYNOS_TMU_CORE_EN_SHIFT 0