/*
|
* Copyright 2020 Rockchip Electronics Co. LTD
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
#ifndef __HAL_VDPU34X_VP9D_H__
|
#define __HAL_VDPU34X_VP9D_H__
|
|
#include "rk_type.h"
|
#include "vdpu34x_com.h"
|
|
|
typedef struct Vdpu34xRegVp9dParam_t {
|
struct SWREG64_VP9_SET {
|
RK_U32 cprheader_offset : 16;
|
RK_U32 reserve : 16;
|
} reg64;
|
|
struct SWREG65_CUR_POC {
|
RK_U32 cur_poc : 32;
|
} reg65;
|
|
RK_U32 reg66;
|
|
struct SWREG67_74_VP9_SEGID_GRP {
|
RK_U32 segid_abs_delta : 1;
|
RK_U32 segid_frame_qp_delta_en : 1;
|
RK_U32 segid_frame_qp_delta : 9;
|
RK_U32 segid_frame_loopfitler_value_en : 1;
|
RK_U32 segid_frame_loopfilter_value : 7;
|
RK_U32 segid_referinfo_en : 1;
|
RK_U32 segid_referinfo : 2;
|
RK_U32 segid_frame_skip_en : 1;
|
RK_U32 reserve : 9;
|
} reg67_74[8];
|
|
struct SWREG75_VP9_INFO_LASTFRAME {
|
RK_U32 mode_deltas_lastframe : 14;
|
RK_U32 vp9_segment_id_clear : 1;
|
RK_U32 vp9_segment_id_update : 1;
|
RK_U32 segmentation_enable_lstframe : 1;
|
RK_U32 last_show_frame : 1;
|
RK_U32 last_intra_only : 1;
|
RK_U32 last_widthheight_eqcur : 1;
|
RK_U32 color_space_lastkeyframe : 3;
|
RK_U32 reserve1 : 9;
|
} reg75;
|
|
struct SWREG76_VP9_CPRHEADER_CONFIG {
|
RK_U32 tx_mode : 3;
|
RK_U32 frame_reference_mode : 2;
|
RK_U32 reserve : 27;
|
} reg76;
|
|
struct SWREG77_VP9_INTERCMD_NUM {
|
RK_U32 intercmd_num : 24;
|
RK_U32 reserve : 8;
|
} reg77;
|
|
struct SWREG78_VP9_LASTTILE_SIZE {
|
RK_U32 lasttile_size : 24;
|
RK_U32 reserve : 8;
|
} reg78;
|
|
struct SWREG79_VP9_LASTF_Y_HOR_VIRSTRIDE {
|
RK_U32 lastfy_hor_virstride : 16;
|
RK_U32 reserve : 16;
|
} reg79;
|
|
struct SWREG80_VP9_LASTF_UV_HOR_VIRSTRIDE {
|
RK_U32 lastfuv_hor_virstride : 16;
|
RK_U32 reserve : 16;
|
} reg80;
|
|
struct SWREG81_VP9_GOLDENF_Y_HOR_VIRSTRIDE {
|
RK_U32 goldenfy_hor_virstride : 16;
|
RK_U32 reserve : 16;
|
} reg81;
|
|
struct SWREG82_VP9_GOLDENF_UV_HOR_VIRSTRIDE {
|
RK_U32 goldenfuv_hor_virstride : 16;
|
RK_U32 reserve : 16;
|
} reg82;
|
|
struct SWREG83_VP9_ALTREFF_Y_HOR_VIRSTRIDE {
|
RK_U32 altreffy_hor_virstride : 16;
|
RK_U32 reserve : 16;
|
} reg83;
|
|
struct SWREG84_VP9_ALTREFF_UV_HOR_VIRSTRIDE {
|
RK_U32 altreffuv_hor_virstride : 16;
|
RK_U32 reserve : 16;
|
} reg84;
|
|
struct SWREG85_VP9_LASTF_Y_VIRSTRIDE {
|
RK_U32 lastfy_virstride : 28;
|
RK_U32 reserve : 4;
|
} reg85;
|
|
struct SWREG86_VP9_GOLDEN_Y_VIRSTRIDE {
|
RK_U32 goldeny_virstride : 28;
|
RK_U32 reserve : 4;
|
} reg86;
|
|
struct SWREG87_VP9_ALTREF_Y_VIRSTRIDE {
|
RK_U32 altrefy_virstride : 28;
|
RK_U32 reserve : 4;
|
} reg87;
|
|
struct SWREG88_VP9_LREF_HOR_SCALE {
|
RK_U32 lref_hor_scale : 16;
|
RK_U32 reserve : 16;
|
} reg88;
|
|
struct SWREG89_VP9_LREF_VER_SCALE {
|
RK_U32 lref_ver_scale : 16;
|
RK_U32 reserve : 16;
|
} reg89;
|
|
struct SWREG90_VP9_GREF_HOR_SCALE {
|
RK_U32 gref_hor_scale : 16;
|
RK_U32 reserve : 16;
|
} reg90;
|
|
struct SWREG91_VP9_GREF_VER_SCALE {
|
RK_U32 gref_ver_scale : 16;
|
RK_U32 reserve : 16;
|
} reg91;
|
|
struct SWREG92_VP9_AREF_HOR_SCALE {
|
RK_U32 aref_hor_scale : 16;
|
RK_U32 reserve : 16;
|
} reg92;
|
|
struct SWREG93_VP9_AREF_VER_SCALE {
|
RK_U32 aref_ver_scale : 16;
|
RK_U32 reserve : 16;
|
} reg93;
|
|
struct SWREG94_VP9_REF_DELTAS_LASTFRAME {
|
RK_U32 ref_deltas_lastframe : 28;
|
RK_U32 reserve : 4;
|
} reg94;
|
|
struct SWREG95_LAST_POC {
|
RK_U32 last_poc : 32;
|
} reg95;
|
|
struct SWREG96_GOLDEN_POC {
|
RK_U32 golden_poc : 32;
|
} reg96;
|
|
struct SWREG97_ALTREF_POC {
|
RK_U32 altref_poc : 32;
|
} reg97;
|
|
struct SWREG98_COF_REF_POC {
|
RK_U32 col_ref_poc : 32;
|
} reg98;
|
|
struct SWREG99_PROB_REF_POC {
|
RK_U32 prob_ref_poc : 32;
|
} reg99;
|
|
struct SWREG100_SEGID_REF_POC {
|
RK_U32 segid_ref_poc : 32;
|
} reg100;
|
|
RK_U32 reg101_102_no_use[2];
|
|
struct SWREG103_VP9_PROB_EN {
|
RK_U32 reserve : 20;
|
RK_U32 prob_update_en : 1;
|
RK_U32 refresh_en : 1;
|
RK_U32 prob_save_en : 1;
|
RK_U32 intra_only_flag : 1;
|
|
RK_U32 txfmmode_rfsh_en : 1;
|
RK_U32 ref_mode_rfsh_en : 1;
|
RK_U32 single_ref_rfsh_en : 1;
|
RK_U32 comp_ref_rfsh_en : 1;
|
|
RK_U32 interp_filter_switch_en : 1;
|
RK_U32 allow_high_precision_mv : 1;
|
RK_U32 last_key_frame_flag : 1;
|
RK_U32 inter_coef_rfsh_flag : 1;
|
} reg103;
|
|
RK_U32 reg104_no_use;
|
|
struct SWREG105_VP9CNT_UPD_EN_AVS2_HEADLEN {
|
RK_U32 avs2_head_len : 4;
|
RK_U32 count_update_en : 1;
|
RK_U32 reserve : 27;
|
} reg105;
|
|
struct SWREG106_VP9_FRAME_WIDTH_LAST {
|
RK_U32 framewidth_last : 16;
|
RK_U32 reserve : 16;
|
} reg106;
|
|
struct SWREG107_VP9_FRAME_HEIGHT_LAST {
|
RK_U32 frameheight_last : 16;
|
RK_U32 reserve : 16;
|
} reg107;
|
|
struct SWREG108_VP9_FRAME_WIDTH_GOLDEN {
|
RK_U32 framewidth_golden : 16;
|
RK_U32 reserve : 16;
|
} reg108;
|
|
struct SWREG109_VP9_FRAME_HEIGHT_GOLDEN {
|
RK_U32 frameheight_golden : 16;
|
RK_U32 reserve : 16;
|
} reg109;
|
|
struct SWREG110_VP9_FRAME_WIDTH_ALTREF {
|
RK_U32 framewidth_alfter : 16;
|
RK_U32 reserve : 16;
|
} reg110;
|
|
struct SWREG111_VP9_FRAME_HEIGHT_ALTREF {
|
RK_U32 frameheight_alfter : 16;
|
RK_U32 reserve : 16;
|
} reg111;
|
|
struct SWREG112_ERROR_REF_INFO {
|
RK_U32 ref_error_field : 1;
|
RK_U32 ref_error_topfield : 1;
|
RK_U32 ref_error_topfield_used : 1;
|
RK_U32 ref_error_botfield_used : 1;
|
RK_U32 reserve : 28;
|
} reg112;
|
|
} Vdpu34xRegVp9dParam;
|
|
typedef struct Vdpu34xRegVp9dAddr_t {
|
|
RK_U32 reg160_delta_prob_base;
|
|
RK_U32 reg161_pps_base;
|
|
RK_U32 reg162_last_prob_base;
|
|
RK_U32 reg163_rps_base;
|
|
RK_U32 reg164_ref_last_base;
|
|
RK_U32 reg165_ref_golden_base;
|
|
RK_U32 reg166_ref_alfter_base;
|
|
RK_U32 reg167_count_prob_base;
|
|
RK_U32 reg168_segidlast_base;
|
|
RK_U32 reg169_segidcur_base;
|
|
RK_U32 reg170_ref_colmv_base;
|
|
RK_U32 reg171_intercmd_base;
|
|
RK_U32 reg172_update_prob_wr_base;
|
|
RK_U32 reg173_179_no_use[7];
|
|
RK_U32 reg180_scanlist_base;
|
|
RK_U32 reg181_196_ref_colmv_base[16];
|
|
RK_U32 reg197_cabactbl_base;
|
} Vdpu34xRegVp9dAddr;
|
|
typedef struct Vdpu34xVp9dRegSet_t {
|
Vdpu34xRegCommon common;
|
Vdpu34xRegVp9dParam vp9d_param;
|
Vdpu34xRegCommonAddr common_addr;
|
Vdpu34xRegVp9dAddr vp9d_addr;
|
Vdpu34xRegIrqStatus irq_status;
|
Vdpu34xRegStatistic statistic;
|
} Vdpu34xVp9dRegSet;
|
|
#endif /* __HAL_VDPU34X_VP9D_H__ */
|