vpu_v4l2.h (2029B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Copyright 2020-2021 NXP 4 */ 5 6#ifndef _AMPHION_VPU_V4L2_H 7#define _AMPHION_VPU_V4L2_H 8 9#include <linux/videodev2.h> 10 11void vpu_inst_lock(struct vpu_inst *inst); 12void vpu_inst_unlock(struct vpu_inst *inst); 13void vpu_set_buffer_state(struct vb2_v4l2_buffer *vbuf, unsigned int state); 14unsigned int vpu_get_buffer_state(struct vb2_v4l2_buffer *vbuf); 15 16int vpu_v4l2_open(struct file *file, struct vpu_inst *inst); 17int vpu_v4l2_close(struct file *file); 18 19const struct vpu_format *vpu_try_fmt_common(struct vpu_inst *inst, struct v4l2_format *f); 20int vpu_process_output_buffer(struct vpu_inst *inst); 21int vpu_process_capture_buffer(struct vpu_inst *inst); 22struct vb2_v4l2_buffer *vpu_next_src_buf(struct vpu_inst *inst); 23void vpu_skip_frame(struct vpu_inst *inst, int count); 24struct vb2_v4l2_buffer *vpu_find_buf_by_sequence(struct vpu_inst *inst, u32 type, u32 sequence); 25struct vb2_v4l2_buffer *vpu_find_buf_by_idx(struct vpu_inst *inst, u32 type, u32 idx); 26void vpu_v4l2_set_error(struct vpu_inst *inst); 27int vpu_notify_eos(struct vpu_inst *inst); 28int vpu_notify_source_change(struct vpu_inst *inst); 29int vpu_set_last_buffer_dequeued(struct vpu_inst *inst); 30void vpu_vb2_buffers_return(struct vpu_inst *inst, unsigned int type, enum vb2_buffer_state state); 31int vpu_get_num_buffers(struct vpu_inst *inst, u32 type); 32bool vpu_is_source_empty(struct vpu_inst *inst); 33 34dma_addr_t vpu_get_vb_phy_addr(struct vb2_buffer *vb, u32 plane_no); 35unsigned int vpu_get_vb_length(struct vb2_buffer *vb, u32 plane_no); 36static inline struct vpu_format *vpu_get_format(struct vpu_inst *inst, u32 type) 37{ 38 if (V4L2_TYPE_IS_OUTPUT(type)) 39 return &inst->out_format; 40 else 41 return &inst->cap_format; 42} 43 44static inline char *vpu_type_name(u32 type) 45{ 46 return V4L2_TYPE_IS_OUTPUT(type) ? "output" : "capture"; 47} 48 49static inline int vpu_vb_is_codecconfig(struct vb2_v4l2_buffer *vbuf) 50{ 51#ifdef V4L2_BUF_FLAG_CODECCONFIG 52 return (vbuf->flags & V4L2_BUF_FLAG_CODECCONFIG) ? 1 : 0; 53#else 54 return 0; 55#endif 56} 57 58#endif