/* SPDX-License-Identifier: GPL-2.0 */ 
 | 
/* 
 | 
 * Copyright (c) 2016 MediaTek Inc. 
 | 
 * Author: PC Chen <pc.chen@mediatek.com> 
 | 
 */ 
 | 
  
 | 
#ifndef _VDEC_IPI_MSG_H_ 
 | 
#define _VDEC_IPI_MSG_H_ 
 | 
  
 | 
/** 
 | 
 * enum vdec_ipi_msgid - message id between AP and VPU 
 | 
 * @AP_IPIMSG_XXX    : AP to VPU cmd message id 
 | 
 * @VPU_IPIMSG_XXX_ACK    : VPU ack AP cmd message id 
 | 
 */ 
 | 
enum vdec_ipi_msgid { 
 | 
    AP_IPIMSG_DEC_INIT = 0xA000, 
 | 
    AP_IPIMSG_DEC_START = 0xA001, 
 | 
    AP_IPIMSG_DEC_END = 0xA002, 
 | 
    AP_IPIMSG_DEC_DEINIT = 0xA003, 
 | 
    AP_IPIMSG_DEC_RESET = 0xA004, 
 | 
  
 | 
    VPU_IPIMSG_DEC_INIT_ACK = 0xB000, 
 | 
    VPU_IPIMSG_DEC_START_ACK = 0xB001, 
 | 
    VPU_IPIMSG_DEC_END_ACK = 0xB002, 
 | 
    VPU_IPIMSG_DEC_DEINIT_ACK = 0xB003, 
 | 
    VPU_IPIMSG_DEC_RESET_ACK = 0xB004, 
 | 
}; 
 | 
  
 | 
/** 
 | 
 * struct vdec_ap_ipi_cmd - generic AP to VPU ipi command format 
 | 
 * @msg_id    : vdec_ipi_msgid 
 | 
 * @vpu_inst_addr    : VPU decoder instance address 
 | 
 */ 
 | 
struct vdec_ap_ipi_cmd { 
 | 
    uint32_t msg_id; 
 | 
    uint32_t vpu_inst_addr; 
 | 
}; 
 | 
  
 | 
/** 
 | 
 * struct vdec_vpu_ipi_ack - generic VPU to AP ipi command format 
 | 
 * @msg_id    : vdec_ipi_msgid 
 | 
 * @status    : VPU exeuction result 
 | 
 * @ap_inst_addr    : AP video decoder instance address 
 | 
 */ 
 | 
struct vdec_vpu_ipi_ack { 
 | 
    uint32_t msg_id; 
 | 
    int32_t status; 
 | 
    uint64_t ap_inst_addr; 
 | 
}; 
 | 
  
 | 
/** 
 | 
 * struct vdec_ap_ipi_init - for AP_IPIMSG_DEC_INIT 
 | 
 * @msg_id    : AP_IPIMSG_DEC_INIT 
 | 
 * @reserved    : Reserved field 
 | 
 * @ap_inst_addr    : AP video decoder instance address 
 | 
 */ 
 | 
struct vdec_ap_ipi_init { 
 | 
    uint32_t msg_id; 
 | 
    uint32_t reserved; 
 | 
    uint64_t ap_inst_addr; 
 | 
}; 
 | 
  
 | 
/** 
 | 
 * struct vdec_ap_ipi_dec_start - for AP_IPIMSG_DEC_START 
 | 
 * @msg_id    : AP_IPIMSG_DEC_START 
 | 
 * @vpu_inst_addr    : VPU decoder instance address 
 | 
 * @data    : Header info 
 | 
 *    H264 decoder [0]:buf_sz [1]:nal_start 
 | 
 *    VP8 decoder  [0]:width/height 
 | 
 *    VP9 decoder  [0]:profile, [1][2] width/height 
 | 
 * @reserved    : Reserved field 
 | 
 */ 
 | 
struct vdec_ap_ipi_dec_start { 
 | 
    uint32_t msg_id; 
 | 
    uint32_t vpu_inst_addr; 
 | 
    uint32_t data[3]; 
 | 
    uint32_t reserved; 
 | 
}; 
 | 
  
 | 
/** 
 | 
 * struct vdec_vpu_ipi_init_ack - for VPU_IPIMSG_DEC_INIT_ACK 
 | 
 * @msg_id    : VPU_IPIMSG_DEC_INIT_ACK 
 | 
 * @status    : VPU exeuction result 
 | 
 * @ap_inst_addr    : AP vcodec_vpu_inst instance address 
 | 
 * @vpu_inst_addr    : VPU decoder instance address 
 | 
 */ 
 | 
struct vdec_vpu_ipi_init_ack { 
 | 
    uint32_t msg_id; 
 | 
    int32_t status; 
 | 
    uint64_t ap_inst_addr; 
 | 
    uint32_t vpu_inst_addr; 
 | 
}; 
 | 
  
 | 
#endif 
 |