_mali_osk_errcode_t g3d_power_domain_control(int bpower_on) { if (bpower_on) { #if MALI_PMM_RUNTIME_JOB_CONTROL_ON MALI_DEBUG_PRINT(3,("_mali_osk_pmm_dev_activate \n")); _mali_osk_pm_dev_activate(); #else //MALI_PMM_RUNTIME_JOB_CONTROL_ON void __iomem *status; u32 timeout; __raw_writel(S5P_INT_LOCAL_PWR_EN, S5P_PMU_G3D_CONF); status = S5P_PMU_G3D_CONF + 0x4; timeout = 10; while ((__raw_readl(status) & S5P_INT_LOCAL_PWR_EN) != S5P_INT_LOCAL_PWR_EN) { if (timeout == 0) { MALI_PRINTF(("Power domain enable failed.\n")); return -ETIMEDOUT; } timeout--; _mali_osk_time_ubusydelay(100); } MALI_PRINTF(("MALI Power domain enabled")); #endif //MALI_PMM_RUNTIME_JOB_CONTROL_ON } else { #if MALI_PMM_RUNTIME_JOB_CONTROL_ON MALI_DEBUG_PRINT( 4,("_mali_osk_pmm_dev_idle\n")); _mali_osk_pm_dev_idle(); #else //MALI_PMM_RUNTIME_JOB_CONTROL_ON void __iomem *status; u32 timeout; __raw_writel(0, S5P_PMU_G3D_CONF); status = S5P_PMU_G3D_CONF + 0x4; /* Wait max 1ms */ timeout = 10; while (__raw_readl(status) & S5P_INT_LOCAL_PWR_EN) { if (timeout == 0) { MALI_PRINTF(("Power domain disable failed.\n" )); return -ETIMEDOUT; } timeout--; _mali_osk_time_ubusydelay( 100); } MALI_PRINTF(("MALI Power domain disabled")); #endif //MALI_PMM_RUNTIME_JOB_CONTROL_ON } MALI_SUCCESS; }
static void mali_pm_powerdown(mali_power_mode power_mode, enum mali_pm_level old_level) { if ( (MALI_PM_LEVEL_1_ON == old_level) || (MALI_PM_LEVEL_2_STANDBY == old_level) ) { mali_group_power_off(); } mali_platform_power_mode_change(power_mode); #if MALI_PMM_RUNTIME_JOB_CONTROL_ON _mali_osk_pm_dev_idle(); if (MALI_POWER_MODE_DEEP_SLEEP == power_mode) { mali_platform_power_mode_change(power_mode); } #endif }