/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright 2020-2021 NXP */ #ifndef _AMPHION_VPU_DEFS_H #define _AMPHION_VPU_DEFS_H enum MSG_TYPE { INIT_DONE = 1, PRC_BUF_OFFSET, BOOT_ADDRESS, COMMAND, EVENT, }; enum { VPU_IRQ_CODE_BOOT_DONE = 0x55, VPU_IRQ_CODE_SNAPSHOT_DONE = 0xa5, VPU_IRQ_CODE_SYNC = 0xaa, }; enum { VPU_CMD_ID_NOOP = 0x0, VPU_CMD_ID_CONFIGURE_CODEC, VPU_CMD_ID_START, VPU_CMD_ID_STOP, VPU_CMD_ID_ABORT, VPU_CMD_ID_RST_BUF, VPU_CMD_ID_SNAPSHOT, VPU_CMD_ID_FIRM_RESET, VPU_CMD_ID_UPDATE_PARAMETER, VPU_CMD_ID_FRAME_ENCODE, VPU_CMD_ID_SKIP, VPU_CMD_ID_PARSE_NEXT_SEQ, VPU_CMD_ID_PARSE_NEXT_I, VPU_CMD_ID_PARSE_NEXT_IP, VPU_CMD_ID_PARSE_NEXT_ANY, VPU_CMD_ID_DEC_PIC, VPU_CMD_ID_FS_ALLOC, VPU_CMD_ID_FS_RELEASE, VPU_CMD_ID_TIMESTAMP, VPU_CMD_ID_DEBUG }; enum { VPU_MSG_ID_NOOP = 0x100, VPU_MSG_ID_RESET_DONE, VPU_MSG_ID_START_DONE, VPU_MSG_ID_STOP_DONE, VPU_MSG_ID_ABORT_DONE, VPU_MSG_ID_BUF_RST, VPU_MSG_ID_MEM_REQUEST, VPU_MSG_ID_PARAM_UPD_DONE, VPU_MSG_ID_FRAME_INPUT_DONE, VPU_MSG_ID_ENC_DONE, VPU_MSG_ID_DEC_DONE, VPU_MSG_ID_FRAME_REQ, VPU_MSG_ID_FRAME_RELEASE, VPU_MSG_ID_SEQ_HDR_FOUND, VPU_MSG_ID_RES_CHANGE, VPU_MSG_ID_PIC_HDR_FOUND, VPU_MSG_ID_PIC_DECODED, VPU_MSG_ID_PIC_EOS, VPU_MSG_ID_FIFO_LOW, VPU_MSG_ID_FIFO_HIGH, VPU_MSG_ID_FIFO_EMPTY, VPU_MSG_ID_FIFO_FULL, VPU_MSG_ID_BS_ERROR, VPU_MSG_ID_UNSUPPORTED, VPU_MSG_ID_TIMESTAMP_INFO, VPU_MSG_ID_FIRMWARE_XCPT, VPU_MSG_ID_PIC_SKIPPED, VPU_MSG_ID_DBG_MSG, }; enum VPU_ENC_MEMORY_RESOURSE { MEM_RES_ENC, MEM_RES_REF, MEM_RES_ACT }; enum VPU_DEC_MEMORY_RESOURCE { MEM_RES_FRAME, MEM_RES_MBI, MEM_RES_DCP }; enum VPU_SCODE_TYPE { SCODE_PADDING_EOS = 1, SCODE_PADDING_BUFFLUSH = 2, SCODE_PADDING_ABORT = 3, SCODE_SEQUENCE = 0x31, SCODE_PICTURE = 0x32, SCODE_SLICE = 0x33 }; struct vpu_pkt_mem_req_data { u32 enc_frame_size; u32 enc_frame_num; u32 ref_frame_size; u32 ref_frame_num; u32 act_buf_size; u32 act_buf_num; }; struct vpu_enc_pic_info { u32 frame_id; u32 pic_type; u32 skipped_frame; u32 error_flag; u32 psnr; u32 frame_size; u32 wptr; u32 crc; s64 timestamp; }; struct vpu_dec_codec_info { u32 pixfmt; u32 num_ref_frms; u32 num_dpb_frms; u32 num_dfe_area; u32 color_primaries; u32 transfer_chars; u32 matrix_coeffs; u32 full_range; u32 vui_present; u32 progressive; u32 width; u32 height; u32 decoded_width; u32 decoded_height; struct v4l2_fract frame_rate; u32 dsp_asp_ratio; u32 level_idc; u32 bit_depth_luma; u32 bit_depth_chroma; u32 chroma_fmt; u32 mvc_num_views; u32 offset_x; u32 offset_y; u32 tag; u32 sizeimage[VIDEO_MAX_PLANES]; u32 bytesperline[VIDEO_MAX_PLANES]; u32 mbi_size; u32 dcp_size; u32 stride; }; struct vpu_dec_pic_info { u32 id; u32 luma; u32 start; u32 end; u32 pic_size; u32 stride; u32 skipped; s64 timestamp; u32 consumed_count; }; struct vpu_fs_info { u32 id; u32 type; u32 tag; u32 luma_addr; u32 luma_size; u32 chroma_addr; u32 chromau_size; u32 chromav_addr; u32 chromav_size; u32 bytesperline; u32 not_displayed; }; struct vpu_ts_info { s64 timestamp; u32 size; }; #define BITRATE_STEP (1024) #define BITRATE_MIN (16 * BITRATE_STEP) #define BITRATE_MAX (240 * 1024 * BITRATE_STEP) #define BITRATE_DEFAULT (2 * 1024 * BITRATE_STEP) #define BITRATE_DEFAULT_PEAK (BITRATE_DEFAULT * 2) #endif