static mali_bool deinit_mali_clock(void) { if (mali_clock == 0 && mali_clock_pd == 0) return MALI_TRUE; disable_mali_clocks(mali_clock); disable_mali_clocks(mali_clock_pd); clk_put(mali_clock); clk_put(mali_clock_pd); mali_clock = 0; mali_clock_pd = 0; return MALI_TRUE; }
_mali_osk_errcode_t mali_platform_powerdown(u32 cores) { MALI_DEBUG_PRINT(3,("power down is called in mali_platform_powerdown state %x core %x \n", gpu_power_state, cores)); if (gpu_power_state != 0) // power down after state is 0 { gpu_power_state = gpu_power_state & (~cores); if (gpu_power_state == 0) { MALI_DEBUG_PRINT( 3,("disable clock\n")); disable_mali_clocks(); g3d_power_domain_control(0); } } else { MALI_PRINT(("mali_platform_powerdown gpu_power_state == 0 and cores %x \n", cores)); } bPoweroff=1; MALI_SUCCESS; }
_mali_osk_errcode_t mali_platform_power_mode_change(struct device *dev, mali_power_mode power_mode) { switch (power_mode) { case MALI_POWER_MODE_ON: MALI_DEBUG_PRINT(3, ("Mali platform: Got MALI_POWER_MODE_ON event, %s\n", nPowermode ? "powering on" : "already on")); if (nPowermode == MALI_POWER_MODE_LIGHT_SLEEP || nPowermode == MALI_POWER_MODE_DEEP_SLEEP) { MALI_DEBUG_PRINT(4, ("enable clock\n")); enable_mali_clocks(dev); nPowermode = power_mode; } break; case MALI_POWER_MODE_DEEP_SLEEP: case MALI_POWER_MODE_LIGHT_SLEEP: MALI_DEBUG_PRINT(3, ("Mali platform: Got %s event, %s\n", power_mode == MALI_POWER_MODE_LIGHT_SLEEP ? "MALI_POWER_MODE_LIGHT_SLEEP" : "MALI_POWER_MODE_DEEP_SLEEP", nPowermode ? "already off" : "powering off")); if (nPowermode == MALI_POWER_MODE_ON) { disable_mali_clocks(); nPowermode = power_mode; } break; } MALI_SUCCESS; }
_mali_osk_errcode_t mali_platform_power_mode_change(struct device *dev, mali_power_mode power_mode) { switch (power_mode) { case MALI_POWER_MODE_ON: MALI_DEBUG_PRINT(3, ("Mali platform: Got MALI_POWER_MODE_ON event, %s\n", nPowermode ? "powering on" : "already on")); if (nPowermode == MALI_POWER_MODE_LIGHT_SLEEP || nPowermode == MALI_POWER_MODE_DEEP_SLEEP) { #if !defined(CONFIG_PM_RUNTIME) g3d_power_domain_control(1); #endif MALI_DEBUG_PRINT(4, ("enable clock\n")); enable_mali_clocks(dev); if (nPowermode == MALI_POWER_MODE_DEEP_SLEEP) { #ifdef CONFIG_MALI_DVFS mali_devfreq = NULL; if (!mali_devfreq_add(dev)) MALI_PRINTF(("failed to mali_devfreq_add()\n")); #endif } #if defined(CONFIG_MALI400_PROFILING) _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE | MALI_PROFILING_EVENT_CHANNEL_GPU | MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE, mali_gpu_clk, mali_gpu_vol/1000, 0, 0, 0); #endif nPowermode = power_mode; } break; case MALI_POWER_MODE_DEEP_SLEEP: #ifdef CONFIG_MALI_DVFS mali_devfreq_remove(); #endif case MALI_POWER_MODE_LIGHT_SLEEP: MALI_DEBUG_PRINT(3, ("Mali platform: Got %s event, %s\n", power_mode == MALI_POWER_MODE_LIGHT_SLEEP ? "MALI_POWER_MODE_LIGHT_SLEEP" : "MALI_POWER_MODE_DEEP_SLEEP", nPowermode ? "already off" : "powering off")); if (nPowermode == MALI_POWER_MODE_ON) { disable_mali_clocks(); #if defined(CONFIG_MALI400_PROFILING) _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE | MALI_PROFILING_EVENT_CHANNEL_GPU | MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE, 0, 0, 0, 0, 0); #endif #if !defined(CONFIG_PM_RUNTIME) g3d_power_domain_control(0); #endif nPowermode = power_mode; } break; } MALI_SUCCESS; }
_mali_osk_errcode_t mali_platform_power_mode_change(mali_power_mode power_mode) { switch (power_mode) { case MALI_POWER_MODE_ON: MALI_DEBUG_PRINT(1, ("Mali platform: Got MALI_POWER_MODE_ON event, %s\n", bPoweroff ? "powering on" : "already on")); if (bPoweroff == 1) { /** If run time power management is used, donot call this function */ #ifndef CONFIG_PM_RUNTIME g3d_power_domain_control(1); #endif MALI_DEBUG_PRINT(4,("enable clock \n")); enable_mali_clocks(); #if MALI_INTERNAL_TIMELINE_PROFILING_ENABLED _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE| MALI_PROFILING_EVENT_CHANNEL_GPU|MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE, mali_gpu_clk, mali_gpu_vol/1000, 0, 0, 0); #endif //MALI_PRINTF(("Mali Platform powered up")); gpu_power_state=1; bPoweroff=0; } break; case MALI_POWER_MODE_LIGHT_SLEEP: case MALI_POWER_MODE_DEEP_SLEEP: MALI_DEBUG_PRINT(1, ("Mali platform: Got %s event, %s\n", power_mode == MALI_POWER_MODE_LIGHT_SLEEP ? "MALI_POWER_MODE_LIGHT_SLEEP" : "MALI_POWER_MODE_DEEP_SLEEP", bPoweroff ? "already off" : "powering off")); if (bPoweroff == 0) { disable_mali_clocks(); #if MALI_INTERNAL_TIMELINE_PROFILING_ENABLED _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE| MALI_PROFILING_EVENT_CHANNEL_GPU|MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE, 0, 0, 0, 0, 0); #endif #ifndef CONFIG_PM_RUNTIME g3d_power_domain_control(0); #endif //MALI_PRINTF(("Mali Platform powered down")); gpu_power_state=0; bPoweroff=1; } break; } MALI_SUCCESS; }
_mali_osk_errcode_t mali_platform_powerdown(u32 cores) { MALI_DEBUG_PRINT(3,("power down is called in mali_platform_powerdown state %x core %x \n", gpu_power_state, cores)); /* power down after state is 0 */ if (gpu_power_state != 0) { gpu_power_state = gpu_power_state & (~cores); if (gpu_power_state == 0) { MALI_DEBUG_PRINT( 3,("disable clock\n")); disable_mali_clocks(); } } else { MALI_PRINT(("mali_platform_powerdown gpu_power_state == 0 and cores %x \n", cores)); } MALI_SUCCESS; }