diff options
-rw-r--r-- | drivers/thermal/samsung/exynos_tmu.c | 10 | ||||
-rw-r--r-- | drivers/thermal/samsung/exynos_tmu_data.h | 3 |
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 |