1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2022 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __VDPU382_H265D_H__ 18*437bfbebSnyanmisaka #define __VDPU382_H265D_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "vdpu382_com.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka typedef struct Vdpu382RegH265d_t { 23*437bfbebSnyanmisaka struct SWREG64_H26X_SET { 24*437bfbebSnyanmisaka RK_U32 h26x_frame_orslice : 1; 25*437bfbebSnyanmisaka RK_U32 h26x_rps_mode : 1; 26*437bfbebSnyanmisaka RK_U32 h26x_stream_mode : 1; 27*437bfbebSnyanmisaka RK_U32 h26x_stream_lastpacket : 1; 28*437bfbebSnyanmisaka RK_U32 h264_firstslice_flag : 1; 29*437bfbebSnyanmisaka RK_U32 reserve : 27; 30*437bfbebSnyanmisaka } reg64; 31*437bfbebSnyanmisaka 32*437bfbebSnyanmisaka struct SWREG65_CUR_POC { 33*437bfbebSnyanmisaka RK_U32 cur_top_poc : 32; 34*437bfbebSnyanmisaka } reg65; 35*437bfbebSnyanmisaka 36*437bfbebSnyanmisaka struct SWREG66_H264_CUR_POC1 { 37*437bfbebSnyanmisaka RK_U32 cur_bot_poc : 32; 38*437bfbebSnyanmisaka } reg66; 39*437bfbebSnyanmisaka 40*437bfbebSnyanmisaka RK_U32 reg67_82_ref_poc[16]; 41*437bfbebSnyanmisaka 42*437bfbebSnyanmisaka 43*437bfbebSnyanmisaka struct SWREG83_98_H264_REF_POC { 44*437bfbebSnyanmisaka RK_U32 ref_poc : 32; 45*437bfbebSnyanmisaka } ref_poc_no_use[16]; 46*437bfbebSnyanmisaka 47*437bfbebSnyanmisaka /* struct SWREG99_HEVC_REF_VALID{ 48*437bfbebSnyanmisaka RK_U32 hevc_ref_valid : 15; 49*437bfbebSnyanmisaka RK_U32 reserve : 17; 50*437bfbebSnyanmisaka }hevc_ref_valid; */ 51*437bfbebSnyanmisaka 52*437bfbebSnyanmisaka struct SWREG99_HEVC_REF_VALID { 53*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_0 : 1; 54*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_1 : 1; 55*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_2 : 1; 56*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_3 : 1; 57*437bfbebSnyanmisaka RK_U32 reserve0 : 4; 58*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_4 : 1; 59*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_5 : 1; 60*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_6 : 1; 61*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_7 : 1; 62*437bfbebSnyanmisaka RK_U32 reserve1 : 4; 63*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_8 : 1; 64*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_9 : 1; 65*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_10 : 1; 66*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_11 : 1; 67*437bfbebSnyanmisaka RK_U32 reserve2 : 4; 68*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_12 : 1; 69*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_13 : 1; 70*437bfbebSnyanmisaka RK_U32 hevc_ref_valid_14 : 1; 71*437bfbebSnyanmisaka RK_U32 reserve3 : 5; 72*437bfbebSnyanmisaka } reg99; 73*437bfbebSnyanmisaka 74*437bfbebSnyanmisaka RK_U32 reg100_102_no_use[3]; 75*437bfbebSnyanmisaka 76*437bfbebSnyanmisaka struct SWREG103_HEVC_MVC0 { 77*437bfbebSnyanmisaka RK_U32 ref_pic_layer_same_with_cur : 16; 78*437bfbebSnyanmisaka RK_U32 reserve : 16; 79*437bfbebSnyanmisaka } reg103; 80*437bfbebSnyanmisaka 81*437bfbebSnyanmisaka struct SWREG104_HEVC_MVC1 { 82*437bfbebSnyanmisaka RK_U32 poc_lsb_not_present_flag : 1; 83*437bfbebSnyanmisaka RK_U32 num_direct_ref_layers : 6; 84*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 85*437bfbebSnyanmisaka 86*437bfbebSnyanmisaka RK_U32 num_reflayer_pics : 6; 87*437bfbebSnyanmisaka RK_U32 default_ref_layers_active_flag : 1; 88*437bfbebSnyanmisaka RK_U32 max_one_active_ref_layer_flag : 1; 89*437bfbebSnyanmisaka 90*437bfbebSnyanmisaka RK_U32 poc_reset_info_present_flag : 1; 91*437bfbebSnyanmisaka RK_U32 vps_poc_lsb_aligned_flag : 1; 92*437bfbebSnyanmisaka RK_U32 mvc_poc15_valid_flag : 1; 93*437bfbebSnyanmisaka RK_U32 reserve1 : 13; 94*437bfbebSnyanmisaka } reg104; 95*437bfbebSnyanmisaka 96*437bfbebSnyanmisaka struct SWREG105_111_NO_USE_REGS { 97*437bfbebSnyanmisaka RK_U32 no_use_regs[7]; 98*437bfbebSnyanmisaka } no_use_regs; 99*437bfbebSnyanmisaka 100*437bfbebSnyanmisaka struct SWREG112_ERROR_REF_INFO { 101*437bfbebSnyanmisaka RK_U32 avs2_ref_error_field : 1; 102*437bfbebSnyanmisaka RK_U32 avs2_ref_error_topfield : 1; 103*437bfbebSnyanmisaka RK_U32 ref_error_topfield_used : 1; 104*437bfbebSnyanmisaka RK_U32 ref_error_botfield_used : 1; 105*437bfbebSnyanmisaka RK_U32 reserve : 28; 106*437bfbebSnyanmisaka } reg112; 107*437bfbebSnyanmisaka 108*437bfbebSnyanmisaka } Vdpu382RegH265d; 109*437bfbebSnyanmisaka 110*437bfbebSnyanmisaka typedef struct Vdpu382RegH265dAddr_t { 111*437bfbebSnyanmisaka struct SWREG160_VP9_DELTA_PROB_BASE { 112*437bfbebSnyanmisaka RK_U32 vp9_delta_prob_base : 32; 113*437bfbebSnyanmisaka } reg160_no_use; 114*437bfbebSnyanmisaka 115*437bfbebSnyanmisaka RK_U32 reg161_pps_base; 116*437bfbebSnyanmisaka 117*437bfbebSnyanmisaka RK_U32 reg162_no_use; 118*437bfbebSnyanmisaka 119*437bfbebSnyanmisaka RK_U32 reg163_rps_base; 120*437bfbebSnyanmisaka 121*437bfbebSnyanmisaka RK_U32 reg164_179_ref_base[16]; 122*437bfbebSnyanmisaka 123*437bfbebSnyanmisaka RK_U32 reg180_scanlist_addr; 124*437bfbebSnyanmisaka 125*437bfbebSnyanmisaka RK_U32 reg181_196_colmv_base[16]; 126*437bfbebSnyanmisaka 127*437bfbebSnyanmisaka RK_U32 reg197_cabactbl_base; 128*437bfbebSnyanmisaka 129*437bfbebSnyanmisaka RK_U32 reg198_scale_down_luma_base; 130*437bfbebSnyanmisaka 131*437bfbebSnyanmisaka RK_U32 reg199_scale_down_chorme_base; 132*437bfbebSnyanmisaka } Vdpu382RegH265dAddr; 133*437bfbebSnyanmisaka 134*437bfbebSnyanmisaka typedef struct Vdpu382H265dHighPoc_t { 135*437bfbebSnyanmisaka /* SWREG200 */ 136*437bfbebSnyanmisaka struct SWREG200_REF0_7_POC_HIGHBIT { 137*437bfbebSnyanmisaka RK_U32 ref0_poc_highbit : 4; 138*437bfbebSnyanmisaka RK_U32 ref1_poc_highbit : 4; 139*437bfbebSnyanmisaka RK_U32 ref2_poc_highbit : 4; 140*437bfbebSnyanmisaka RK_U32 ref3_poc_highbit : 4; 141*437bfbebSnyanmisaka RK_U32 ref4_poc_highbit : 4; 142*437bfbebSnyanmisaka RK_U32 ref5_poc_highbit : 4; 143*437bfbebSnyanmisaka RK_U32 ref6_poc_highbit : 4; 144*437bfbebSnyanmisaka RK_U32 ref7_poc_highbit : 4; 145*437bfbebSnyanmisaka } reg200; 146*437bfbebSnyanmisaka struct SWREG201_REF8_15_POC_HIGHBIT { 147*437bfbebSnyanmisaka RK_U32 ref8_poc_highbit : 4; 148*437bfbebSnyanmisaka RK_U32 ref9_poc_highbit : 4; 149*437bfbebSnyanmisaka RK_U32 ref10_poc_highbit : 4; 150*437bfbebSnyanmisaka RK_U32 ref11_poc_highbit : 4; 151*437bfbebSnyanmisaka RK_U32 ref12_poc_highbit : 4; 152*437bfbebSnyanmisaka RK_U32 ref13_poc_highbit : 4; 153*437bfbebSnyanmisaka RK_U32 ref14_poc_highbit : 4; 154*437bfbebSnyanmisaka RK_U32 ref15_poc_highbit : 4; 155*437bfbebSnyanmisaka } reg201; 156*437bfbebSnyanmisaka struct SWREG200_REF16_23_POC_HIGHBIT { 157*437bfbebSnyanmisaka RK_U32 ref16_poc_highbit : 4; 158*437bfbebSnyanmisaka RK_U32 ref17_poc_highbit : 4; 159*437bfbebSnyanmisaka RK_U32 ref18_poc_highbit : 4; 160*437bfbebSnyanmisaka RK_U32 ref19_poc_highbit : 4; 161*437bfbebSnyanmisaka RK_U32 ref20_poc_highbit : 4; 162*437bfbebSnyanmisaka RK_U32 ref21_poc_highbit : 4; 163*437bfbebSnyanmisaka RK_U32 ref22_poc_highbit : 4; 164*437bfbebSnyanmisaka RK_U32 ref23_poc_highbit : 4; 165*437bfbebSnyanmisaka } reg202; 166*437bfbebSnyanmisaka struct SWREG200_REF24_31_POC_HIGHBIT { 167*437bfbebSnyanmisaka RK_U32 ref24_poc_highbit : 4; 168*437bfbebSnyanmisaka RK_U32 ref25_poc_highbit : 4; 169*437bfbebSnyanmisaka RK_U32 ref26_poc_highbit : 4; 170*437bfbebSnyanmisaka RK_U32 ref27_poc_highbit : 4; 171*437bfbebSnyanmisaka RK_U32 ref28_poc_highbit : 4; 172*437bfbebSnyanmisaka RK_U32 ref29_poc_highbit : 4; 173*437bfbebSnyanmisaka RK_U32 ref30_poc_highbit : 4; 174*437bfbebSnyanmisaka RK_U32 ref31_poc_highbit : 4; 175*437bfbebSnyanmisaka } reg203; 176*437bfbebSnyanmisaka struct SWREG200_CUR_POC_HIGHBIT { 177*437bfbebSnyanmisaka RK_U32 cur_poc_highbit : 4; 178*437bfbebSnyanmisaka RK_U32 reserver : 28; 179*437bfbebSnyanmisaka } reg204; 180*437bfbebSnyanmisaka 181*437bfbebSnyanmisaka struct SWREG205_DEBUG_INFO { 182*437bfbebSnyanmisaka RK_U32 force_softreset_valid : 1; 183*437bfbebSnyanmisaka RK_U32 force_mmureset_valid : 1; 184*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 185*437bfbebSnyanmisaka RK_U32 error_auto_rst_disable : 1; 186*437bfbebSnyanmisaka RK_U32 right_auto_rst_disable : 1; 187*437bfbebSnyanmisaka RK_U32 buf_empty_security_en : 1; 188*437bfbebSnyanmisaka RK_U32 coord_realtime_report_en : 1; 189*437bfbebSnyanmisaka 190*437bfbebSnyanmisaka RK_U32 fetchcmd_merge_dis : 1; 191*437bfbebSnyanmisaka RK_U32 dec_timeout_dis : 1; 192*437bfbebSnyanmisaka RK_U32 reg_cfg_wr_dis : 1; 193*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 194*437bfbebSnyanmisaka RK_U32 force_busidle_req : 1; 195*437bfbebSnyanmisaka RK_U32 mmu_force_busidle_req : 1; 196*437bfbebSnyanmisaka RK_U32 mmu_sel : 1; 197*437bfbebSnyanmisaka RK_U32 reserve2 : 17; 198*437bfbebSnyanmisaka 199*437bfbebSnyanmisaka } reg205; 200*437bfbebSnyanmisaka } Vdpu382H2645HighPoc_t; 201*437bfbebSnyanmisaka 202*437bfbebSnyanmisaka typedef struct Vdpu382H265dRegSet_t { 203*437bfbebSnyanmisaka Vdpu382RegCommon common; 204*437bfbebSnyanmisaka Vdpu382RegH265d h265d_param; 205*437bfbebSnyanmisaka Vdpu382RegCommonAddr common_addr; 206*437bfbebSnyanmisaka Vdpu382RegH265dAddr h265d_addr; 207*437bfbebSnyanmisaka Vdpu382H2645HighPoc_t highpoc; 208*437bfbebSnyanmisaka Vdpu382RegIrqStatus irq_status; 209*437bfbebSnyanmisaka Vdpu382RegStatistic statistic; 210*437bfbebSnyanmisaka } Vdpu382H265dRegSet; 211*437bfbebSnyanmisaka 212*437bfbebSnyanmisaka #endif /* __VDPU382_H265D_H__ */ 213