Ejemplo n.º 1
0
void deinit_mali_dvfs_status(void)
{
	if (mali_dvfs_wq)
		destroy_workqueue(mali_dvfs_wq);

	_mali_osk_atomic_term(&bottomlock_status);

	mali_dvfs_wq = NULL;
}
void deinit_mali_dvfs_status(void)
{
#if MALI_GPU_BOTTOM_LOCK
	_mali_osk_atomic_term(&bottomlock_status);
#endif

	if (mali_dvfs_wq)
		destroy_workqueue(mali_dvfs_wq);
	mali_dvfs_wq = NULL;
}
Ejemplo n.º 3
0
void MTK_mali_osk_pm_dev_disable(void)
{
    if (mtk_mali_pm_wq)
    {
        flush_workqueue(mtk_mali_pm_wq);
        destroy_workqueue(mtk_mali_pm_wq);
        mtk_mali_pm_wq = NULL;
    }
    
    if (mtk_mali_pm_wq2)
    {
        flush_workqueue(mtk_mali_pm_wq2);
        destroy_workqueue(mtk_mali_pm_wq2);
        mtk_mali_pm_wq2 = NULL;
    }

	_mali_osk_atomic_term(&mtk_mali_pm_ref_count);
	_mali_osk_atomic_term(&mtk_mali_suspend_called);
	_mali_osk_mutex_term(mtk_pm_lock);
}
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);

    if (NULL != pm_timer)
    {
	    _mali_osk_timer_term(pm_timer);
	    pm_timer = NULL;
    }

	_mali_osk_mutex_term(pm_lock);
}
Ejemplo n.º 5
0
_mali_osk_errcode_t mali_platform_deinit()
{
	deinit_mali_clock();
#if MALI_VOLTAGE_LOCK
	_mali_osk_atomic_term(&voltage_lock_status);
#endif
#if MALI_DVFS_ENABLED
	deinit_mali_dvfs_status();
	if (clk_register_map )
	{
		_mali_osk_mem_unmapioregion(CLK_DIV_STAT_G3D, 0x20, clk_register_map);
		clk_register_map=0;
	}
#endif
	MALI_SUCCESS;
}
Ejemplo n.º 6
0
_mali_osk_errcode_t mali_pegasus_platform_deinit()
{
	deinit_mali_pegasus_clock();

#ifdef CONFIG_EXYNOS_TMU_TC
	_mali_osk_atomic_term(&voltage_lock_status);
#endif

#if MALI_DVFS_ENABLED
	deinit_mali_pegasus_dvfs_status();
	if (clk_pegasus_register_map ) {
		_mali_osk_mem_unmapioregion(CLK_DIV_STAT_G3D, 0x20, clk_pegasus_register_map);
		clk_pegasus_register_map=0;
	}
#endif

	MALI_SUCCESS;
}
Ejemplo n.º 7
0
void malipmm_kernel_subsystem_terminate( mali_kernel_subsystem_identifier id )
{
	/* Check this is the right system */
	MALI_DEBUG_ASSERT( id == mali_subsystem_pmm_id );
	MALI_DEBUG_ASSERT_POINTER(pmm_state);

	if( pmm_state )
	{
#if PMM_OS_TEST
		power_test_end();
#endif
		/* Get the lock so we can shutdown */
		MALI_PMM_LOCK(pmm_state);
#if MALI_STATE_TRACKING
		pmm_state->mali_pmm_lock_acquired = 1;
#endif /* MALI_STATE_TRACKING */
		pmm_state->status = MALI_PMM_STATUS_OFF;
#if MALI_STATE_TRACKING
		pmm_state->mali_pmm_lock_acquired = 0;
#endif /* MALI_STATE_TRACKING */
		MALI_PMM_UNLOCK(pmm_state);
		_mali_osk_pmm_ospmm_cleanup();
		pmm_policy_term(pmm_state);
		_mali_osk_irq_term( pmm_state->irq );
		_mali_osk_notification_queue_term( pmm_state->queue );
		_mali_osk_notification_queue_term( pmm_state->iqueue );
		if (pmm_state->cores_registered) malipmm_powerdown(pmm_state->cores_registered,MALI_POWER_MODE_LIGHT_SLEEP);
#if USING_MALI_PMU
		if( pmm_state->pmu_initialized )
		{
			_mali_osk_resource_type_t t = PMU;
			mali_pmm_pmu_deinit(&t);
		}
#endif /* USING_MALI_PMU */

		_mali_osk_atomic_term( &(pmm_state->messages_queued) );
		MALI_PMM_LOCK_TERM(pmm_state);
		_mali_osk_free(pmm_state);
		pmm_state = NULL; 
	}

	MALIPMM_DEBUG_PRINT( ("PMM: subsystem terminated\n") );
}
Ejemplo n.º 8
0
void mali_soft_job_destroy(struct mali_soft_job *job)
{
	MALI_DEBUG_ASSERT_POINTER(job);
	MALI_DEBUG_ASSERT_POINTER(job->system);

	MALI_DEBUG_PRINT(4, ("Mali Soft Job: destroying soft job %u (0x%08X)\n", job->id, job));

	if (NULL != job) {
		if (0 < _mali_osk_atomic_dec_return(&job->refcount)) return;

		_mali_osk_atomic_term(&job->refcount);

		if (NULL != job->activated_notification) {
			_mali_osk_notification_delete(job->activated_notification);
			job->activated_notification = NULL;
		}

		mali_soft_job_system_free_job(job->system, job);
	}
}
void _mali_osk_pm_dev_disable(void)
{
	_mali_osk_atomic_term(&mali_pm_ref_count);
}
Ejemplo n.º 10
0
void mali_scheduler_terminate(void)
{
	_mali_osk_atomic_term(&mali_job_autonumber);
}
Ejemplo n.º 11
0
void mali_pp_job_terminate(void)
{
	_mali_osk_atomic_term(&pp_counter_per_sub_job_count);
}
/**
 * Free fence waiter tracker.
 *
 * @param wait Fence wait tracker to free.
 */
static void mali_timeline_fence_wait_tracker_free(struct mali_timeline_fence_wait_tracker *wait)
{
	MALI_DEBUG_ASSERT_POINTER(wait);
	_mali_osk_atomic_term(&wait->refcount);
	_mali_osk_free(wait);
}