Lines Matching refs:inst

15 static int iris_check_core_mbpf(struct iris_inst *inst)  in iris_check_core_mbpf()  argument
17 struct iris_core *core = inst->core; in iris_check_core_mbpf()
32 static int iris_check_inst_mbpf(struct iris_inst *inst) in iris_check_inst_mbpf() argument
37 caps = inst->core->iris_platform_data->inst_caps; in iris_check_inst_mbpf()
39 mbpf = iris_get_mbpf(inst); in iris_check_inst_mbpf()
46 static int iris_check_resolution_supported(struct iris_inst *inst) in iris_check_resolution_supported() argument
51 caps = inst->core->iris_platform_data->inst_caps; in iris_check_resolution_supported()
52 width = inst->fmt_src->fmt.pix_mp.width; in iris_check_resolution_supported()
53 height = inst->fmt_src->fmt.pix_mp.height; in iris_check_resolution_supported()
67 static int iris_check_session_supported(struct iris_inst *inst) in iris_check_session_supported() argument
69 struct iris_core *core = inst->core; in iris_check_session_supported()
75 if (instance == inst) in iris_check_session_supported()
84 ret = iris_check_core_mbpf(inst); in iris_check_session_supported()
88 ret = iris_check_inst_mbpf(inst); in iris_check_session_supported()
92 ret = iris_check_resolution_supported(inst); in iris_check_session_supported()
98 dev_err(inst->core->dev, "current session not supported(%d)\n", ret); in iris_check_session_supported()
117 struct iris_inst *inst; in iris_vb2_queue_setup() local
122 inst = vb2_get_drv_priv(q); in iris_vb2_queue_setup()
124 mutex_lock(&inst->lock); in iris_vb2_queue_setup()
125 if (inst->state == IRIS_INST_ERROR) { in iris_vb2_queue_setup()
130 core = inst->core; in iris_vb2_queue_setup()
131 f = V4L2_TYPE_IS_OUTPUT(q->type) ? inst->fmt_src : inst->fmt_dst; in iris_vb2_queue_setup()
140 ret = iris_check_session_supported(inst); in iris_vb2_queue_setup()
144 if (!inst->once_per_session_set) { in iris_vb2_queue_setup()
145 inst->once_per_session_set = true; in iris_vb2_queue_setup()
147 ret = core->hfi_ops->session_open(inst); in iris_vb2_queue_setup()
154 ret = iris_inst_change_state(inst, IRIS_INST_INIT); in iris_vb2_queue_setup()
163 mutex_unlock(&inst->lock); in iris_vb2_queue_setup()
171 struct iris_inst *inst; in iris_vb2_start_streaming() local
174 inst = vb2_get_drv_priv(q); in iris_vb2_start_streaming()
176 if (V4L2_TYPE_IS_CAPTURE(q->type) && inst->state == IRIS_INST_INIT) in iris_vb2_start_streaming()
179 mutex_lock(&inst->lock); in iris_vb2_start_streaming()
180 if (inst->state == IRIS_INST_ERROR) { in iris_vb2_start_streaming()
191 iris_scale_power(inst); in iris_vb2_start_streaming()
193 ret = iris_check_session_supported(inst); in iris_vb2_start_streaming()
198 ret = iris_vdec_streamon_input(inst); in iris_vb2_start_streaming()
200 ret = iris_vdec_streamon_output(inst); in iris_vb2_start_streaming()
206 ret = iris_queue_deferred_buffers(inst, buf_type); in iris_vb2_start_streaming()
210 mutex_unlock(&inst->lock); in iris_vb2_start_streaming()
215 iris_helper_buffers_done(inst, q->type, VB2_BUF_STATE_QUEUED); in iris_vb2_start_streaming()
216 iris_inst_change_state(inst, IRIS_INST_ERROR); in iris_vb2_start_streaming()
217 mutex_unlock(&inst->lock); in iris_vb2_start_streaming()
224 struct iris_inst *inst; in iris_vb2_stop_streaming() local
227 inst = vb2_get_drv_priv(q); in iris_vb2_stop_streaming()
229 if (V4L2_TYPE_IS_CAPTURE(q->type) && inst->state == IRIS_INST_INIT) in iris_vb2_stop_streaming()
232 mutex_lock(&inst->lock); in iris_vb2_stop_streaming()
238 ret = iris_vdec_session_streamoff(inst, q->type); in iris_vb2_stop_streaming()
243 iris_helper_buffers_done(inst, q->type, VB2_BUF_STATE_ERROR); in iris_vb2_stop_streaming()
245 iris_inst_change_state(inst, IRIS_INST_ERROR); in iris_vb2_stop_streaming()
247 mutex_unlock(&inst->lock); in iris_vb2_stop_streaming()
252 struct iris_inst *inst = vb2_get_drv_priv(vb->vb2_queue); in iris_vb2_buf_prepare() local
262 if (!(inst->sub_state & IRIS_INST_SUB_DRC)) { in iris_vb2_buf_prepare()
264 vb2_plane_size(vb, 0) < iris_get_buffer_size(inst, BUF_OUTPUT)) in iris_vb2_buf_prepare()
267 vb2_plane_size(vb, 0) < iris_get_buffer_size(inst, BUF_INPUT)) in iris_vb2_buf_prepare()
287 struct iris_inst *inst; in iris_vb2_buf_queue() local
290 inst = vb2_get_drv_priv(vb2->vb2_queue); in iris_vb2_buf_queue()
292 mutex_lock(&inst->lock); in iris_vb2_buf_queue()
293 if (inst->state == IRIS_INST_ERROR) { in iris_vb2_buf_queue()
301 m2m_ctx = inst->m2m_ctx; in iris_vb2_buf_queue()
308 if (!inst->last_buffer_dequeued && V4L2_TYPE_IS_CAPTURE(vb2->vb2_queue->type)) { in iris_vb2_buf_queue()
309 if ((inst->sub_state & IRIS_INST_SUB_DRC && in iris_vb2_buf_queue()
310 inst->sub_state & IRIS_INST_SUB_DRC_LAST) || in iris_vb2_buf_queue()
311 (inst->sub_state & IRIS_INST_SUB_DRAIN && in iris_vb2_buf_queue()
312 inst->sub_state & IRIS_INST_SUB_DRAIN_LAST)) { in iris_vb2_buf_queue()
314 vbuf->sequence = inst->sequence_cap++; in iris_vb2_buf_queue()
319 v4l2_event_queue_fh(&inst->fh, &eos); in iris_vb2_buf_queue()
322 inst->last_buffer_dequeued = true; in iris_vb2_buf_queue()
329 ret = iris_vdec_qbuf(inst, vbuf); in iris_vb2_buf_queue()
333 iris_inst_change_state(inst, IRIS_INST_ERROR); in iris_vb2_buf_queue()
336 mutex_unlock(&inst->lock); in iris_vb2_buf_queue()