Lines Matching refs:inst

24 static void iris_v4l2_fh_init(struct iris_inst *inst)  in iris_v4l2_fh_init()  argument
26 v4l2_fh_init(&inst->fh, inst->core->vdev_dec); in iris_v4l2_fh_init()
27 inst->fh.ctrl_handler = &inst->ctrl_handler; in iris_v4l2_fh_init()
28 v4l2_fh_add(&inst->fh); in iris_v4l2_fh_init()
31 static void iris_v4l2_fh_deinit(struct iris_inst *inst) in iris_v4l2_fh_deinit() argument
33 v4l2_fh_del(&inst->fh); in iris_v4l2_fh_deinit()
34 inst->fh.ctrl_handler = NULL; in iris_v4l2_fh_deinit()
35 v4l2_fh_exit(&inst->fh); in iris_v4l2_fh_deinit()
38 static void iris_add_session(struct iris_inst *inst) in iris_add_session() argument
40 struct iris_core *core = inst->core; in iris_add_session()
50 list_add_tail(&inst->list, &core->instances); in iris_add_session()
55 static void iris_remove_session(struct iris_inst *inst) in iris_remove_session() argument
57 struct iris_core *core = inst->core; in iris_remove_session()
62 if (iter->session_id == inst->session_id) { in iris_remove_session()
81 struct iris_inst *inst = priv; in iris_m2m_job_abort() local
82 struct v4l2_m2m_ctx *m2m_ctx = inst->m2m_ctx; in iris_m2m_job_abort()
84 v4l2_m2m_job_finish(inst->m2m_dev, m2m_ctx); in iris_m2m_job_abort()
95 struct iris_inst *inst = priv; in iris_m2m_queue_init() local
101 src_vq->ops = inst->core->iris_vb2_ops; in iris_m2m_queue_init()
103 src_vq->drv_priv = inst; in iris_m2m_queue_init()
106 src_vq->dev = inst->core->dev; in iris_m2m_queue_init()
107 src_vq->lock = &inst->ctx_q_lock; in iris_m2m_queue_init()
115 dst_vq->ops = inst->core->iris_vb2_ops; in iris_m2m_queue_init()
117 dst_vq->drv_priv = inst; in iris_m2m_queue_init()
120 dst_vq->dev = inst->core->dev; in iris_m2m_queue_init()
121 dst_vq->lock = &inst->ctx_q_lock; in iris_m2m_queue_init()
129 struct iris_inst *inst; in iris_open() local
145 inst = core->iris_platform_data->get_instance(); in iris_open()
146 if (!inst) in iris_open()
149 inst->core = core; in iris_open()
150 inst->session_id = hash32_ptr(inst); in iris_open()
151 inst->state = IRIS_INST_DEINIT; in iris_open()
153 mutex_init(&inst->lock); in iris_open()
154 mutex_init(&inst->ctx_q_lock); in iris_open()
156 INIT_LIST_HEAD(&inst->buffers[BUF_BIN].list); in iris_open()
157 INIT_LIST_HEAD(&inst->buffers[BUF_ARP].list); in iris_open()
158 INIT_LIST_HEAD(&inst->buffers[BUF_COMV].list); in iris_open()
159 INIT_LIST_HEAD(&inst->buffers[BUF_NON_COMV].list); in iris_open()
160 INIT_LIST_HEAD(&inst->buffers[BUF_LINE].list); in iris_open()
161 INIT_LIST_HEAD(&inst->buffers[BUF_DPB].list); in iris_open()
162 INIT_LIST_HEAD(&inst->buffers[BUF_PERSIST].list); in iris_open()
163 INIT_LIST_HEAD(&inst->buffers[BUF_SCRATCH_1].list); in iris_open()
164 init_completion(&inst->completion); in iris_open()
165 init_completion(&inst->flush_completion); in iris_open()
167 iris_v4l2_fh_init(inst); in iris_open()
169 inst->m2m_dev = v4l2_m2m_init(&iris_m2m_ops); in iris_open()
170 if (IS_ERR_OR_NULL(inst->m2m_dev)) { in iris_open()
175 inst->m2m_ctx = v4l2_m2m_ctx_init(inst->m2m_dev, inst, iris_m2m_queue_init); in iris_open()
176 if (IS_ERR_OR_NULL(inst->m2m_ctx)) { in iris_open()
181 ret = iris_vdec_inst_init(inst); in iris_open()
185 iris_add_session(inst); in iris_open()
187 inst->fh.m2m_ctx = inst->m2m_ctx; in iris_open()
188 filp->private_data = &inst->fh; in iris_open()
193 v4l2_m2m_ctx_release(inst->m2m_ctx); in iris_open()
195 v4l2_m2m_release(inst->m2m_dev); in iris_open()
197 iris_v4l2_fh_deinit(inst); in iris_open()
198 mutex_destroy(&inst->ctx_q_lock); in iris_open()
199 mutex_destroy(&inst->lock); in iris_open()
200 kfree(inst); in iris_open()
205 static void iris_session_close(struct iris_inst *inst) in iris_session_close() argument
207 const struct iris_hfi_command_ops *hfi_ops = inst->core->hfi_ops; in iris_session_close()
211 if (inst->state == IRIS_INST_DEINIT) in iris_session_close()
214 reinit_completion(&inst->completion); in iris_session_close()
216 ret = hfi_ops->session_close(inst); in iris_session_close()
221 iris_wait_for_session_response(inst, false); in iris_session_close()
224 static void iris_check_num_queued_internal_buffers(struct iris_inst *inst, u32 plane) in iris_check_num_queued_internal_buffers() argument
226 const struct iris_platform_data *platform_data = inst->core->iris_platform_data; in iris_check_num_queued_internal_buffers()
242 buffers = &inst->buffers[internal_buf_type[i]]; in iris_check_num_queued_internal_buffers()
246 dev_err(inst->core->dev, "%d buffer of type %d not released", in iris_check_num_queued_internal_buffers()
253 struct iris_inst *inst = iris_get_inst(filp, NULL); in iris_close() local
255 v4l2_ctrl_handler_free(&inst->ctrl_handler); in iris_close()
256 v4l2_m2m_ctx_release(inst->m2m_ctx); in iris_close()
257 v4l2_m2m_release(inst->m2m_dev); in iris_close()
258 mutex_lock(&inst->lock); in iris_close()
259 iris_vdec_inst_deinit(inst); in iris_close()
260 iris_session_close(inst); in iris_close()
261 iris_inst_change_state(inst, IRIS_INST_DEINIT); in iris_close()
262 iris_v4l2_fh_deinit(inst); in iris_close()
263 iris_destroy_all_internal_buffers(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); in iris_close()
264 iris_destroy_all_internal_buffers(inst, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE); in iris_close()
265 iris_check_num_queued_internal_buffers(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); in iris_close()
266 iris_check_num_queued_internal_buffers(inst, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE); in iris_close()
267 iris_remove_session(inst); in iris_close()
268 mutex_unlock(&inst->lock); in iris_close()
269 mutex_destroy(&inst->ctx_q_lock); in iris_close()
270 mutex_destroy(&inst->lock); in iris_close()
271 kfree(inst); in iris_close()
279 struct iris_inst *inst = iris_get_inst(filp, NULL); in iris_enum_fmt() local
281 return iris_vdec_enum_fmt(inst, f); in iris_enum_fmt()
286 struct iris_inst *inst = iris_get_inst(filp, NULL); in iris_try_fmt_vid_mplane() local
289 mutex_lock(&inst->lock); in iris_try_fmt_vid_mplane()
290 ret = iris_vdec_try_fmt(inst, f); in iris_try_fmt_vid_mplane()
291 mutex_unlock(&inst->lock); in iris_try_fmt_vid_mplane()
298 struct iris_inst *inst = iris_get_inst(filp, NULL); in iris_s_fmt_vid_mplane() local
301 mutex_lock(&inst->lock); in iris_s_fmt_vid_mplane()
302 ret = iris_vdec_s_fmt(inst, f); in iris_s_fmt_vid_mplane()
303 mutex_unlock(&inst->lock); in iris_s_fmt_vid_mplane()
310 struct iris_inst *inst = iris_get_inst(filp, NULL); in iris_g_fmt_vid_mplane() local
313 mutex_lock(&inst->lock); in iris_g_fmt_vid_mplane()
315 *f = *inst->fmt_src; in iris_g_fmt_vid_mplane()
317 *f = *inst->fmt_dst; in iris_g_fmt_vid_mplane()
321 mutex_unlock(&inst->lock); in iris_g_fmt_vid_mplane()
329 struct iris_inst *inst = iris_get_inst(filp, NULL); in iris_enum_framesizes() local
339 caps = inst->core->iris_platform_data->inst_caps; in iris_enum_framesizes()
362 struct iris_inst *inst = iris_get_inst(filp, NULL); in iris_g_selection() local
375 s->r.left = inst->crop.left; in iris_g_selection()
376 s->r.top = inst->crop.top; in iris_g_selection()
377 s->r.width = inst->crop.width; in iris_g_selection()
378 s->r.height = inst->crop.height; in iris_g_selection()
389 struct iris_inst *inst = container_of(fh, struct iris_inst, fh); in iris_subscribe_event() local
391 return iris_vdec_subscribe_event(inst, sub); in iris_subscribe_event()
397 struct iris_inst *inst = iris_get_inst(filp, NULL); in iris_dec_cmd() local
400 mutex_lock(&inst->lock); in iris_dec_cmd()
406 if (inst->state == IRIS_INST_DEINIT) in iris_dec_cmd()
409 if (!iris_allow_cmd(inst, dec->cmd)) { in iris_dec_cmd()
415 ret = iris_vdec_start_cmd(inst); in iris_dec_cmd()
417 ret = iris_vdec_stop_cmd(inst); in iris_dec_cmd()
422 mutex_unlock(&inst->lock); in iris_dec_cmd()