_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_powerup(void) { MALI_DEBUG_PRINT(3, ("Mali PM: Setting GPU power mode to MALI_POWER_MODE_ON\n")); mali_platform_power_mode_change(MALI_POWER_MODE_ON); #if MALI_PMM_RUNTIME_JOB_CONTROL_ON /* Aquire our reference */ MALI_DEBUG_PRINT(4, ("Mali PM: Getting device PM reference (=> requesting MALI_POWER_MODE_ON)\n")); _mali_osk_pm_dev_activate(); #endif mali_group_power_on(); }