void kbase_backend_late_term(struct kbase_device *kbdev) { kbase_job_slot_halt(kbdev); kbase_job_slot_term(kbdev); kbase_backend_timer_term(kbdev); kbase_hwaccess_pm_halt(kbdev); }
int kbase_backend_late_init(struct kbase_device *kbdev) { int err; err = kbase_backend_timer_init(kbdev); if (err) goto fail_timer; /* MALI_SEC_INTEGRATION - timer_init, powerup switching location for sec_hwcnt */ err = kbase_hwaccess_pm_powerup(kbdev, PM_HW_ISSUES_DETECT); if (err) return err; /* Currently disabled on the prototype */ #ifdef CONFIG_MALI_DEBUG #ifndef CONFIG_MALI_NO_MALI if (kbasep_common_test_interrupt_handlers(kbdev) != 0) { dev_err(kbdev->dev, "Interrupt assigment check failed.\n"); err = -EINVAL; goto fail_interrupt_test; } #endif /* !CONFIG_MALI_NO_MALI */ #endif /* CONFIG_MALI_DEBUG */ err = kbase_job_slot_init(kbdev); if (err) goto fail_job_slot; init_waitqueue_head(&kbdev->hwaccess.backend.reset_wait); return 0; fail_job_slot: /* Currently disabled on the prototype */ #ifdef CONFIG_MALI_DEBUG #ifndef CONFIG_MALI_NO_MALI fail_interrupt_test: #endif /* !CONFIG_MALI_NO_MALI */ #endif /* CONFIG_MALI_DEBUG */ kbase_backend_timer_term(kbdev); fail_timer: kbase_hwaccess_pm_halt(kbdev); return err; }
void kbase_pm_halt(struct kbase_device *kbdev) { kbase_hwaccess_pm_halt(kbdev); }