From 15a5ee10cc09d9926414a95fda4f5d844589954a Mon Sep 17 00:00:00 2001 From: Zhen Chen Date: Mon, 9 Nov 2020 22:51:25 +0800 Subject: [PATCH] Mali: utgard: actually use rk_context::is_powered Fix the following warning reported in https://redmine.rock-chips.com/issues/230655 : [ 76.900395] ------------[ cut here ]------------ [ 76.900404] aclk_gpu already disabled [ 76.900503] WARNING: CPU: 3 PID: 1674 at drivers/clk/clk.c:829 clk_core_disable+0x250/0x268 ... Change-Id: Iaf26ce07574b9909188cde99142a13e98a9a93de Signed-off-by: Zhen Chen --- drivers/gpu/arm/mali400/mali/platform/rk/rk.c | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/arm/mali400/mali/platform/rk/rk.c b/drivers/gpu/arm/mali400/mali/platform/rk/rk.c index 80eadf12a70f..9a012fdf8d35 100644 --- a/drivers/gpu/arm/mali400/mali/platform/rk/rk.c +++ b/drivers/gpu/arm/mali400/mali/platform/rk/rk.c @@ -416,18 +416,23 @@ static void rk_platform_disable_gpu_regulator(struct device *dev) static int rk_platform_power_on_gpu(struct device *dev) { + struct rk_context *platform = s_rk_context; int ret = 0; - ret = rk_platform_enable_clk_gpu(dev); - if (ret) { - E("fail to enable clk_gpu, ret : %d.", ret); - goto fail_to_enable_clk; - } + if (!(platform->is_powered)) { + ret = rk_platform_enable_clk_gpu(dev); + if (ret) { + E("fail to enable clk_gpu, ret : %d.", ret); + goto fail_to_enable_clk; + } - ret = rk_platform_enable_gpu_regulator(dev); - if (ret) { - E("fail to enable vdd_gpu, ret : %d.", ret); - goto fail_to_enable_regulator; + ret = rk_platform_enable_gpu_regulator(dev); + if (ret) { + E("fail to enable vdd_gpu, ret : %d.", ret); + goto fail_to_enable_regulator; + } + + platform->is_powered = true; } return 0; @@ -441,8 +446,14 @@ fail_to_enable_clk: static void rk_platform_power_off_gpu(struct device *dev) { - rk_platform_disable_clk_gpu(dev); - rk_platform_disable_gpu_regulator(dev); + struct rk_context *platform = s_rk_context; + + if (platform->is_powered) { + rk_platform_disable_clk_gpu(dev); + rk_platform_disable_gpu_regulator(dev); + + platform->is_powered = false; + } } int rk_platform_init_opp_table(struct device *dev)