thermal: exynos: add get_emul_con_reg() helper
Factor out code for preparing EMUL_CON register value from exynos_tmu_set_emulation() into get_emul_con_reg(). This is a preparation for introducing per-SoC type tmu_set_emulation method. There should be no functional changes caused by this patch. Cc: Amit Daniel Kachhap <amit.daniel@samsung.com> Cc: Lukasz Majewski <l.majewski@samsung.com> Cc: Eduardo Valentin <edubezval@gmail.com> Cc: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Tested-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
This commit is contained in:
parent
b79985ca74
commit
154013ea5f
|
@ -438,6 +438,28 @@ static int exynos_tmu_read(struct exynos_tmu_data *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_THERMAL_EMULATION
|
#ifdef CONFIG_THERMAL_EMULATION
|
||||||
|
static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val,
|
||||||
|
unsigned long temp)
|
||||||
|
{
|
||||||
|
struct exynos_tmu_platform_data *pdata = data->pdata;
|
||||||
|
|
||||||
|
if (temp) {
|
||||||
|
temp /= MCELSIUS;
|
||||||
|
|
||||||
|
if (TMU_SUPPORTS(pdata, EMUL_TIME)) {
|
||||||
|
val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT);
|
||||||
|
val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT);
|
||||||
|
}
|
||||||
|
val &= ~(EXYNOS_EMUL_DATA_MASK << EXYNOS_EMUL_DATA_SHIFT);
|
||||||
|
val |= (temp_to_code(data, temp) << EXYNOS_EMUL_DATA_SHIFT) |
|
||||||
|
EXYNOS_EMUL_ENABLE;
|
||||||
|
} else {
|
||||||
|
val &= ~EXYNOS_EMUL_ENABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp)
|
static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp)
|
||||||
{
|
{
|
||||||
struct exynos_tmu_data *data = drv_data;
|
struct exynos_tmu_data *data = drv_data;
|
||||||
|
@ -456,21 +478,7 @@ static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp)
|
||||||
clk_enable(data->clk);
|
clk_enable(data->clk);
|
||||||
|
|
||||||
val = readl(data->base + reg->emul_con);
|
val = readl(data->base + reg->emul_con);
|
||||||
|
val = get_emul_con_reg(data, val, temp);
|
||||||
if (temp) {
|
|
||||||
temp /= MCELSIUS;
|
|
||||||
|
|
||||||
if (TMU_SUPPORTS(pdata, EMUL_TIME)) {
|
|
||||||
val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT);
|
|
||||||
val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT);
|
|
||||||
}
|
|
||||||
val &= ~(EXYNOS_EMUL_DATA_MASK << EXYNOS_EMUL_DATA_SHIFT);
|
|
||||||
val |= (temp_to_code(data, temp) << EXYNOS_EMUL_DATA_SHIFT) |
|
|
||||||
EXYNOS_EMUL_ENABLE;
|
|
||||||
} else {
|
|
||||||
val &= ~EXYNOS_EMUL_ENABLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
writel(val, data->base + reg->emul_con);
|
writel(val, data->base + reg->emul_con);
|
||||||
|
|
||||||
clk_disable(data->clk);
|
clk_disable(data->clk);
|
||||||
|
|
Loading…
Reference in New Issue