Lines Matching full:core

13 #include "core.h"
50 int hfi_core_init(struct venus_core *core) in hfi_core_init() argument
54 mutex_lock(&core->lock); in hfi_core_init()
56 if (core->state >= CORE_INIT) in hfi_core_init()
59 reinit_completion(&core->done); in hfi_core_init()
61 ret = core->ops->core_init(core); in hfi_core_init()
65 ret = wait_for_completion_timeout(&core->done, TIMEOUT); in hfi_core_init()
73 if (core->error != HFI_ERR_NONE) { in hfi_core_init()
78 core->state = CORE_INIT; in hfi_core_init()
80 mutex_unlock(&core->lock); in hfi_core_init()
84 int hfi_core_deinit(struct venus_core *core, bool blocking) in hfi_core_deinit() argument
88 mutex_lock(&core->lock); in hfi_core_deinit()
90 if (core->state == CORE_UNINIT) in hfi_core_deinit()
93 empty = list_empty(&core->instances); in hfi_core_deinit()
101 mutex_unlock(&core->lock); in hfi_core_deinit()
102 wait_var_event(&core->insts_count, in hfi_core_deinit()
103 !atomic_read(&core->insts_count)); in hfi_core_deinit()
104 mutex_lock(&core->lock); in hfi_core_deinit()
107 if (!core->ops) in hfi_core_deinit()
110 ret = core->ops->core_deinit(core); in hfi_core_deinit()
113 core->state = CORE_UNINIT; in hfi_core_deinit()
116 mutex_unlock(&core->lock); in hfi_core_deinit()
120 int hfi_core_suspend(struct venus_core *core) in hfi_core_suspend() argument
122 if (core->state != CORE_INIT) in hfi_core_suspend()
125 return core->ops->suspend(core); in hfi_core_suspend()
128 int hfi_core_resume(struct venus_core *core, bool force) in hfi_core_resume() argument
130 if (!force && core->state != CORE_INIT) in hfi_core_resume()
133 return core->ops->resume(core); in hfi_core_resume()
136 int hfi_core_trigger_ssr(struct venus_core *core, u32 type) in hfi_core_trigger_ssr() argument
138 return core->ops->core_trigger_ssr(core, type); in hfi_core_trigger_ssr()
157 struct venus_core *core = inst->core; in hfi_session_create() local
168 mutex_lock(&core->lock); in hfi_session_create()
170 if (test_bit(0, &inst->core->sys_error)) { in hfi_session_create()
175 max = atomic_add_unless(&core->insts_count, 1, in hfi_session_create()
176 core->max_sessions_supported); in hfi_session_create()
180 list_add_tail(&inst->list, &core->instances); in hfi_session_create()
185 mutex_unlock(&core->lock); in hfi_session_create()
193 struct venus_core *core = inst->core; in hfi_session_init() local
194 const struct hfi_ops *ops = core->ops; in hfi_session_init()
198 * If core shutdown is in progress or if we are in system in hfi_session_init()
202 mutex_lock(&core->lock); in hfi_session_init()
203 if (!core->ops || test_bit(0, &inst->core->sys_error)) { in hfi_session_init()
204 mutex_unlock(&core->lock); in hfi_session_init()
207 mutex_unlock(&core->lock); in hfi_session_init()
231 struct venus_core *core = inst->core; in hfi_session_destroy() local
233 mutex_lock(&core->lock); in hfi_session_destroy()
235 if (atomic_dec_and_test(&core->insts_count)) in hfi_session_destroy()
236 wake_up_var(&core->insts_count); in hfi_session_destroy()
237 mutex_unlock(&core->lock); in hfi_session_destroy()
243 const struct hfi_ops *ops = inst->core->ops; in hfi_session_deinit()
252 if (test_bit(0, &inst->core->sys_error)) in hfi_session_deinit()
274 const struct hfi_ops *ops = inst->core->ops; in hfi_session_start()
277 if (test_bit(0, &inst->core->sys_error)) in hfi_session_start()
301 const struct hfi_ops *ops = inst->core->ops; in hfi_session_stop()
304 if (test_bit(0, &inst->core->sys_error)) in hfi_session_stop()
328 struct venus_core *core = inst->core; in hfi_session_continue() local
330 if (test_bit(0, &inst->core->sys_error)) in hfi_session_continue()
333 if (core->res->hfi_version == HFI_VERSION_1XX) in hfi_session_continue()
336 return core->ops->session_continue(inst); in hfi_session_continue()
342 const struct hfi_ops *ops = inst->core->ops; in hfi_session_abort()
345 if (test_bit(0, &inst->core->sys_error)) in hfi_session_abort()
364 const struct hfi_ops *ops = inst->core->ops; in hfi_session_load_res()
367 if (test_bit(0, &inst->core->sys_error)) in hfi_session_load_res()
390 const struct hfi_ops *ops = inst->core->ops; in hfi_session_unload_res()
393 if (test_bit(0, &inst->core->sys_error)) in hfi_session_unload_res()
417 const struct hfi_ops *ops = inst->core->ops; in hfi_session_flush()
420 if (test_bit(0, &inst->core->sys_error)) in hfi_session_flush()
441 const struct hfi_ops *ops = inst->core->ops; in hfi_session_set_buffers()
443 if (test_bit(0, &inst->core->sys_error)) in hfi_session_set_buffers()
452 const struct hfi_ops *ops = inst->core->ops; in hfi_session_unset_buffers()
455 if (test_bit(0, &inst->core->sys_error)) in hfi_session_unset_buffers()
477 const struct hfi_ops *ops = inst->core->ops; in hfi_session_get_property()
480 if (test_bit(0, &inst->core->sys_error)) in hfi_session_get_property()
504 const struct hfi_ops *ops = inst->core->ops; in hfi_session_set_property()
506 if (test_bit(0, &inst->core->sys_error)) in hfi_session_set_property()
518 const struct hfi_ops *ops = inst->core->ops; in hfi_session_process_buf()
520 if (test_bit(0, &inst->core->sys_error)) in hfi_session_process_buf()
535 struct venus_core *core = dev_id; in hfi_isr_thread() local
537 return core->ops->isr_thread(core); in hfi_isr_thread()
542 struct venus_core *core = dev; in hfi_isr() local
544 return core->ops->isr(core); in hfi_isr()
547 int hfi_create(struct venus_core *core, const struct hfi_core_ops *ops) in hfi_create() argument
552 atomic_set(&core->insts_count, 0); in hfi_create()
553 core->core_ops = ops; in hfi_create()
554 core->state = CORE_UNINIT; in hfi_create()
555 init_completion(&core->done); in hfi_create()
556 pkt_set_version(core->res->hfi_version); in hfi_create()
558 return venus_hfi_create(core); in hfi_create()
561 void hfi_destroy(struct venus_core *core) in hfi_destroy() argument
563 venus_hfi_destroy(core); in hfi_destroy()
566 void hfi_reinit(struct venus_core *core) in hfi_reinit() argument
568 venus_hfi_queues_reinit(core); in hfi_reinit()