void mali_control_timer_term(void) { if (NULL != mali_control_timer) { _mali_osk_timer_del(mali_control_timer); timer_running = MALI_FALSE; _mali_osk_timer_term(mali_control_timer); mali_control_timer = NULL; } }
void mali_gp_delete(struct mali_gp_core *core) { MALI_DEBUG_ASSERT_POINTER(core); _mali_osk_timer_term(core->timeout_timer); _mali_osk_irq_term(core->irq); mali_hw_core_delete(&core->hw_core); mali_global_gp_core = NULL; _mali_osk_free(core); }
void mali_pm_terminate(void) { mali_platform_deinit(); _mali_osk_irq_term(wq_irq); _mali_osk_timer_del(idle_timer); _mali_osk_timer_term(idle_timer); _mali_osk_lock_term(mali_pm_lock_execute_state_change); _mali_osk_lock_term(mali_pm_lock_set_next_state); _mali_osk_lock_term(mali_pm_lock_set_core_states); }
_mali_osk_errcode_t mali_pm_initialize(void) { mali_pm_lock_execute_state_change = _mali_osk_lock_init(_MALI_OSK_LOCKFLAG_ORDERED | _MALI_OSK_LOCKFLAG_ORDERED |_MALI_OSK_LOCKFLAG_NONINTERRUPTABLE, 0, _MALI_OSK_LOCK_ORDER_PM_EXECUTE); if (NULL != mali_pm_lock_execute_state_change ) { mali_pm_lock_set_next_state = _mali_osk_lock_init(_MALI_OSK_LOCKFLAG_ONELOCK| _MALI_OSK_LOCKFLAG_SPINLOCK_IRQ |_MALI_OSK_LOCKFLAG_NONINTERRUPTABLE, 0, _MALI_OSK_LOCK_ORDER_LAST); if (NULL != mali_pm_lock_set_next_state) { mali_pm_lock_set_core_states = _mali_osk_lock_init(_MALI_OSK_LOCKFLAG_ORDERED | _MALI_OSK_LOCKFLAG_NONINTERRUPTABLE, 0, _MALI_OSK_LOCK_ORDER_PM_CORE_STATE); if (NULL != mali_pm_lock_set_core_states) { idle_timer = _mali_osk_timer_init(); if (NULL != idle_timer) { wq_irq = _mali_osk_irq_init(_MALI_OSK_IRQ_NUMBER_PMM, mali_pm_upper_half, mali_pm_bottom_half, NULL, NULL, (void *)NULL, "Mali PM deferred work"); if (NULL != wq_irq) { if (_MALI_OSK_ERR_OK == mali_platform_init()) { #if MALI_PMM_RUNTIME_JOB_CONTROL_ON _mali_osk_pm_dev_enable(); mali_pm_powerup(); #endif return _MALI_OSK_ERR_OK; } _mali_osk_irq_term(wq_irq); } _mali_osk_timer_del(idle_timer); _mali_osk_timer_term(idle_timer); } _mali_osk_lock_term(mali_pm_lock_set_core_states); } _mali_osk_lock_term(mali_pm_lock_set_next_state); } _mali_osk_lock_term(mali_pm_lock_execute_state_change); } return _MALI_OSK_ERR_FAULT; }
void _mali_osk_pm_dev_disable(void) { #if MALI_LICENSE_IS_GPL if (mali_pm_wq) { flush_workqueue(mali_pm_wq); destroy_workqueue(mali_pm_wq); mali_pm_wq = NULL; } #else flush_scheduled_work(); #endif _mali_osk_atomic_term(&mali_pm_ref_count); _mali_osk_atomic_term(&mali_suspend_called); _mali_osk_timer_term(pm_timer); _mali_osk_mutex_term(pm_lock); }
void mali_pp_delete(struct mali_pp_core *core) { u32 i; MALI_DEBUG_ASSERT_POINTER(core); _mali_osk_timer_term(core->timeout_timer); _mali_osk_irq_term(core->irq); mali_hw_core_delete(&core->hw_core); /* Remove core from global list */ for (i = 0; i < mali_global_num_pp_cores; i++) { if (mali_global_pp_cores[i] == core) { mali_global_pp_cores[i] = NULL; mali_global_num_pp_cores--; break; } } _mali_osk_free(core); }
void power_test_end() { _mali_osk_timer_del( power_test_timer ); _mali_osk_timer_term( power_test_timer ); power_test_timer = NULL; }