/* SPDX-License-Identifier: GPL-2.0 */ 
 | 
/* 
 | 
 * Copyright (c) 2016 MediaTek Inc. 
 | 
 * Author: PoChun Lin <pochun.lin@mediatek.com> 
 | 
 */ 
 | 
  
 | 
#ifndef _VENC_VPU_IF_H_ 
 | 
#define _VENC_VPU_IF_H_ 
 | 
  
 | 
#include "mtk_vcodec_fw.h" 
 | 
#include "venc_drv_if.h" 
 | 
  
 | 
/* 
 | 
 * struct venc_vpu_inst - encoder VPU driver instance 
 | 
 * @wq_hd: wait queue used for vpu cmd trigger then wait vpu interrupt done 
 | 
 * @signaled: flag used for checking vpu interrupt done 
 | 
 * @failure: flag to show vpu cmd succeeds or not 
 | 
 * @state: enum venc_ipi_msg_enc_state 
 | 
 * @bs_size: bitstream size for skip frame case usage 
 | 
 * @is_key_frm: key frame flag 
 | 
 * @inst_addr: VPU instance addr 
 | 
 * @vsi: driver structure allocated by VPU side and shared to AP side for 
 | 
 *     control and info share 
 | 
 * @id: the id of inter-processor interrupt 
 | 
 * @ctx: context for v4l2 layer integration 
 | 
 * @dev: device for v4l2 layer integration 
 | 
 */ 
 | 
struct venc_vpu_inst { 
 | 
    wait_queue_head_t wq_hd; 
 | 
    int signaled; 
 | 
    int failure; 
 | 
    int state; 
 | 
    int bs_size; 
 | 
    int is_key_frm; 
 | 
    unsigned int inst_addr; 
 | 
    void *vsi; 
 | 
    int id; 
 | 
    struct mtk_vcodec_ctx *ctx; 
 | 
}; 
 | 
  
 | 
int vpu_enc_init(struct venc_vpu_inst *vpu); 
 | 
int vpu_enc_set_param(struct venc_vpu_inst *vpu, 
 | 
              enum venc_set_param_type id, 
 | 
              struct venc_enc_param *param); 
 | 
int vpu_enc_encode(struct venc_vpu_inst *vpu, unsigned int bs_mode, 
 | 
           struct venc_frm_buf *frm_buf, 
 | 
           struct mtk_vcodec_mem *bs_buf, 
 | 
           unsigned int *bs_size, 
 | 
           struct venc_frame_info *frame_info); 
 | 
int vpu_enc_deinit(struct venc_vpu_inst *vpu); 
 | 
  
 | 
#endif 
 |