From a90cb0ed3e287c16785f2da19ed122f40dc1a7ef Mon Sep 17 00:00:00 2001 From: chenzhen Date: Fri, 30 Dec 2016 19:56:52 +0800 Subject: [PATCH] Revert "Revert "MALI: midgard: RK: not to power off all the pm cores"" This reverts commit d94880b547779baaaa9e9b733c38881cad8aa685. Change-Id: Iac64d84ff5a7ee3e5666ed2829c17de413fc9bcd Signed-off-by: chenzhen --- .../backend/gpu/mali_kbase_pm_driver.c | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_driver.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_driver.c index 046ebcb7b508..03ba23d54365 100644 --- a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_driver.c +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_driver.c @@ -21,6 +21,9 @@ * Base kernel Power Management hardware control */ +// #define ENABLE_DEBUG_LOG +#include "../../platform/rk/custom_log.h" + #include #include #include @@ -71,6 +74,26 @@ enum kbasep_pm_action { ACTION_PWRACTIVE = (SHADER_PWRACTIVE_LO - SHADER_PRESENT_LO) }; +/*---------------------------------------------------------------------------*/ + +static bool is_action_of_powering_off_l2(enum kbase_pm_core_type core_type, + enum kbasep_pm_action active) +{ + return (KBASE_PM_CORE_L2 == core_type) && (ACTION_PWROFF == active); +} + +static bool is_action_of_powering_off_shader(enum kbase_pm_core_type core_type, + enum kbasep_pm_action active) +{ + return (KBASE_PM_CORE_SHADER == core_type) && (ACTION_PWROFF == active); +} + +static bool is_action_of_powering_off_tiler(enum kbase_pm_core_type core_type, + enum kbasep_pm_action active) +{ + return (KBASE_PM_CORE_TILER == core_type) && (ACTION_PWROFF == active); +} + static u64 kbase_pm_get_state( struct kbase_device *kbdev, enum kbase_pm_core_type core_type, @@ -153,6 +176,25 @@ static void kbase_pm_invoke(struct kbase_device *kbdev, lockdep_assert_held(&kbdev->pm.power_change_lock); + /*-------------------------------------------------------*/ + + if ( is_action_of_powering_off_l2(core_type, action) ) { + D("not to power off l2 actually."); + return; + } + if ( is_action_of_powering_off_shader(core_type, action) ) { + D("not to power off shader actually. cores_lo : 0x%x, hi : 0x%x.", + lo, + hi); + return; + } + if ( is_action_of_powering_off_tiler(core_type, action) ) { + D("not to power off tiler actually."); + return; + } + + /*-------------------------------------------------------*/ + reg = core_type_to_reg(core_type, action); KBASE_DEBUG_ASSERT(reg); -- 2.34.1