static int mali_cri_light_resume(size_t param) { int ret; struct device *device; struct mali_pmu_core *pmu; ret = 0; device = (struct device *)param; pmu = mali_pmu_get_global_pmu_core(); mali_pmu_power_up_all(pmu); if (NULL != device->driver && NULL != device->driver->pm && NULL != device->driver->pm->runtime_resume) { /* Need to notify Mali driver about this event */ ret = device->driver->pm->runtime_resume(device); } mali_pm_statue = 1; return ret; }
void mali_pm_os_resume(void) { struct mali_pmu_core *pmu = mali_pmu_get_global_pmu_core(); MALI_DEBUG_PRINT(3, ("Mali PM: OS resume\n")); mali_pm_exec_lock(); #if defined(DEBUG) mali_pm_state_lock(); /* Assert that things are as we left them in os_suspend(). */ MALI_DEBUG_ASSERT(0 == pd_mask_wanted); MALI_DEBUG_ASSERT(0 == pd_mask_current); MALI_DEBUG_ASSERT(0 == pmu_mask_current); MALI_DEBUG_ASSERT(MALI_TRUE == mali_pm_domain_all_unused()); mali_pm_state_unlock(); #endif if (MALI_TRUE == mali_pm_runtime_active) { /* Runtime PM was active, so reset PMU */ if (NULL != pmu) { mali_pmu_reset(pmu); pmu_mask_current = mali_pmu_get_mask(pmu); MALI_DEBUG_PRINT(3, ("Mali PM: OS resume 0x%x \n", pmu_mask_current)); } mali_pm_update_sync_internal(); } mali_pm_exec_unlock(); /* Start executing jobs again */ mali_executor_resume(); }
void mali_pm_runtime_resume(void) { struct mali_pmu_core *pmu = mali_pmu_get_global_pmu_core(); mali_bool do_reset = MALI_FALSE; MALI_DEBUG_PRINT(3, ("Mali PM: Runtime resume\n")); if (MALI_TRUE != mali_power_on) { do_reset = MALI_TRUE; } if (NULL != pmu) { mali_pmu_reset(pmu); } mali_power_on = MALI_TRUE; _mali_osk_write_mem_barrier(); if (do_reset) { mali_pm_reset_gpu(); mali_group_power_on(); } }