Lines Matching refs:sess

235 static u32 esparser_vififo_get_free_space(struct amvdec_session *sess)  in esparser_vififo_get_free_space()  argument
238 struct amvdec_ops *vdec_ops = sess->fmt_out->vdec_ops; in esparser_vififo_get_free_space()
239 struct amvdec_core *core = sess->core; in esparser_vififo_get_free_space()
241 vififo_usage = vdec_ops->vififo_level(sess); in esparser_vififo_get_free_space()
245 if (vififo_usage > sess->vififo_size) { in esparser_vififo_get_free_space()
246 dev_warn(sess->core->dev, in esparser_vififo_get_free_space()
248 vififo_usage, sess->vififo_size); in esparser_vififo_get_free_space()
252 return sess->vififo_size - vififo_usage; in esparser_vififo_get_free_space()
275 static u32 esparser_get_offset(struct amvdec_session *sess) in esparser_get_offset() argument
277 struct amvdec_core *core = sess->core; in esparser_get_offset()
279 sess->vififo_paddr; in esparser_get_offset()
281 if (offset < sess->last_offset) in esparser_get_offset()
282 sess->wrap_count++; in esparser_get_offset()
284 sess->last_offset = offset; in esparser_get_offset()
285 offset += (sess->wrap_count * sess->vififo_size); in esparser_get_offset()
291 esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf) in esparser_queue() argument
295 struct amvdec_core *core = sess->core; in esparser_queue()
296 struct amvdec_codec_ops *codec_ops = sess->fmt_out->codec_ops; in esparser_queue()
311 if (sess->fmt_out->pixfmt == V4L2_PIX_FMT_VP9) { in esparser_queue()
313 num_dst_bufs = codec_ops->num_pending_bufs(sess); in esparser_queue()
315 num_dst_bufs += v4l2_m2m_num_dst_bufs_ready(sess->m2m_ctx); in esparser_queue()
318 if (esparser_vififo_get_free_space(sess) < payload_size || in esparser_queue()
319 atomic_read(&sess->esparser_queued_bufs) >= num_dst_bufs) in esparser_queue()
321 } else if (esparser_vififo_get_free_space(sess) < payload_size) { in esparser_queue()
325 v4l2_m2m_src_buf_remove_by_buf(sess->m2m_ctx, vbuf); in esparser_queue()
327 offset = esparser_get_offset(sess); in esparser_queue()
329 ret = amvdec_add_ts(sess, vb->timestamp, vbuf->timecode, offset, vbuf->flags); in esparser_queue()
340 vbuf->sequence = sess->sequence_out++; in esparser_queue()
342 if (sess->fmt_out->pixfmt == V4L2_PIX_FMT_VP9) { in esparser_queue()
347 amvdec_remove_ts(sess, vb->timestamp); in esparser_queue()
359 amvdec_remove_ts(sess, vb->timestamp); in esparser_queue()
366 atomic_inc(&sess->esparser_queued_bufs); in esparser_queue()
375 struct amvdec_session *sess = in esparser_queue_all_src() local
378 mutex_lock(&sess->lock); in esparser_queue_all_src()
379 v4l2_m2m_for_each_src_buf_safe(sess->m2m_ctx, buf, n) { in esparser_queue_all_src()
380 if (sess->should_stop) in esparser_queue_all_src()
383 if (esparser_queue(sess, &buf->vb) < 0) in esparser_queue_all_src()
386 mutex_unlock(&sess->lock); in esparser_queue_all_src()
389 int esparser_power_up(struct amvdec_session *sess) in esparser_power_up() argument
391 struct amvdec_core *core = sess->core; in esparser_power_up()
392 struct amvdec_ops *vdec_ops = sess->fmt_out->vdec_ops; in esparser_power_up()
416 amvdec_write_parser(core, PARSER_VIDEO_START_PTR, sess->vififo_paddr); in esparser_power_up()
418 sess->vififo_paddr + sess->vififo_size - 8); in esparser_power_up()
423 vdec_ops->conf_esparser(sess); in esparser_power_up()