* Base kernel Power Management hardware control
*/
+// #define ENABLE_DEBUG_LOG
+#include "../../platform/rk/custom_log.h"
+
#include <mali_kbase.h>
#include <mali_kbase_config_defaults.h>
#include <mali_midg_regmap.h>
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,
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);