diff options
author | Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> | 2014-11-13 10:01:17 -0500 |
---|---|---|
committer | Eduardo Valentin <edubezval@gmail.com> | 2014-11-20 09:54:05 -0500 |
commit | 154013ea5fc9de969f6808b4bbb7e986e396f1f1 (patch) | |
tree | bc547772e4351aec9155dcf8f35ed9e590067239 | |
parent | b79985ca74b25926cb2d88b60805092c5456bf43 (diff) |
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>
-rw-r--r-- | drivers/thermal/samsung/exynos_tmu.c | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index b209593d78dc..1b622ce0ee79 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c | |||
@@ -438,6 +438,28 @@ static int exynos_tmu_read(struct exynos_tmu_data *data) | |||
438 | } | 438 | } |
439 | 439 | ||
440 | #ifdef CONFIG_THERMAL_EMULATION | 440 | #ifdef CONFIG_THERMAL_EMULATION |
441 | static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val, | ||
442 | unsigned long temp) | ||
443 | { | ||
444 | struct exynos_tmu_platform_data *pdata = data->pdata; | ||
445 | |||
446 | if (temp) { | ||
447 | temp /= MCELSIUS; | ||
448 | |||
449 | if (TMU_SUPPORTS(pdata, EMUL_TIME)) { | ||
450 | val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT); | ||
451 | val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT); | ||
452 | } | ||
453 | val &= ~(EXYNOS_EMUL_DATA_MASK << EXYNOS_EMUL_DATA_SHIFT); | ||
454 | val |= (temp_to_code(data, temp) << EXYNOS_EMUL_DATA_SHIFT) | | ||
455 | EXYNOS_EMUL_ENABLE; | ||
456 | } else { | ||
457 | val &= ~EXYNOS_EMUL_ENABLE; | ||
458 | } | ||
459 | |||
460 | return val; | ||
461 | } | ||
462 | |||
441 | static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp) | 463 | static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp) |
442 | { | 464 | { |
443 | struct exynos_tmu_data *data = drv_data; | 465 | struct exynos_tmu_data *data = drv_data; |
@@ -456,21 +478,7 @@ static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp) | |||
456 | clk_enable(data->clk); | 478 | clk_enable(data->clk); |
457 | 479 | ||
458 | val = readl(data->base + reg->emul_con); | 480 | val = readl(data->base + reg->emul_con); |
459 | 481 | val = get_emul_con_reg(data, val, temp); | |
460 | if (temp) { | ||
461 | temp /= MCELSIUS; | ||
462 | |||
463 | if (TMU_SUPPORTS(pdata, EMUL_TIME)) { | ||
464 | val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT); | ||
465 | val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT); | ||
466 | } | ||
467 | val &= ~(EXYNOS_EMUL_DATA_MASK << EXYNOS_EMUL_DATA_SHIFT); | ||
468 | val |= (temp_to_code(data, temp) << EXYNOS_EMUL_DATA_SHIFT) | | ||
469 | EXYNOS_EMUL_ENABLE; | ||
470 | } else { | ||
471 | val &= ~EXYNOS_EMUL_ENABLE; | ||
472 | } | ||
473 | |||
474 | writel(val, data->base + reg->emul_con); | 482 | writel(val, data->base + reg->emul_con); |
475 | 483 | ||
476 | clk_disable(data->clk); | 484 | clk_disable(data->clk); |