|
@@ -197,17 +197,9 @@ static int exynos_tmu_initialize(struct platform_device *pdev)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static void exynos_tmu_control(struct platform_device *pdev, bool on)
|
|
|
+static u32 get_con_reg(struct exynos_tmu_data *data, u32 con)
|
|
|
{
|
|
|
- struct exynos_tmu_data *data = platform_get_drvdata(pdev);
|
|
|
struct exynos_tmu_platform_data *pdata = data->pdata;
|
|
|
- const struct exynos_tmu_registers *reg = pdata->registers;
|
|
|
- unsigned int con, interrupt_en;
|
|
|
-
|
|
|
- mutex_lock(&data->lock);
|
|
|
- clk_enable(data->clk);
|
|
|
-
|
|
|
- con = readl(data->base + reg->tmu_ctrl);
|
|
|
|
|
|
if (pdata->test_mux)
|
|
|
con |= (pdata->test_mux << EXYNOS4412_MUX_ADDR_SHIFT);
|
|
@@ -223,6 +215,21 @@ static void exynos_tmu_control(struct platform_device *pdev, bool on)
|
|
|
con |= (pdata->noise_cancel_mode << EXYNOS_TMU_TRIP_MODE_SHIFT);
|
|
|
}
|
|
|
|
|
|
+ return con;
|
|
|
+}
|
|
|
+
|
|
|
+static void exynos_tmu_control(struct platform_device *pdev, bool on)
|
|
|
+{
|
|
|
+ struct exynos_tmu_data *data = platform_get_drvdata(pdev);
|
|
|
+ struct exynos_tmu_platform_data *pdata = data->pdata;
|
|
|
+ const struct exynos_tmu_registers *reg = pdata->registers;
|
|
|
+ unsigned int con, interrupt_en;
|
|
|
+
|
|
|
+ mutex_lock(&data->lock);
|
|
|
+ clk_enable(data->clk);
|
|
|
+
|
|
|
+ con = get_con_reg(data, readl(data->base + reg->tmu_ctrl));
|
|
|
+
|
|
|
if (on) {
|
|
|
con |= (1 << EXYNOS_TMU_CORE_EN_SHIFT);
|
|
|
interrupt_en =
|