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_H264D_H__ 18*437bfbebSnyanmisaka #define __VDPU382_H264D_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "vdpu382_com.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka /* base: OFFSET_CODEC_PARAMS_REGS */ 23*437bfbebSnyanmisaka typedef struct Vdpu382RegH264dParam_t { 24*437bfbebSnyanmisaka struct SWREG64_H26X_SET { 25*437bfbebSnyanmisaka RK_U32 h26x_frame_orslice : 1; 26*437bfbebSnyanmisaka RK_U32 h26x_rps_mode : 1; 27*437bfbebSnyanmisaka RK_U32 h26x_stream_mode : 1; 28*437bfbebSnyanmisaka RK_U32 h26x_stream_lastpacket : 1; 29*437bfbebSnyanmisaka RK_U32 h264_firstslice_flag : 1; 30*437bfbebSnyanmisaka RK_U32 reserve : 27; 31*437bfbebSnyanmisaka } reg64; 32*437bfbebSnyanmisaka 33*437bfbebSnyanmisaka struct SWREG65_CUR_POC { 34*437bfbebSnyanmisaka RK_U32 cur_top_poc : 32; 35*437bfbebSnyanmisaka } reg65; 36*437bfbebSnyanmisaka 37*437bfbebSnyanmisaka struct SWREG66_H264_CUR_POC1 { 38*437bfbebSnyanmisaka RK_U32 cur_bot_poc : 32; 39*437bfbebSnyanmisaka } reg66; 40*437bfbebSnyanmisaka 41*437bfbebSnyanmisaka RK_U32 reg67_98_ref_poc[32]; 42*437bfbebSnyanmisaka 43*437bfbebSnyanmisaka struct SWREG99_H264_REG0_3_INFO { 44*437bfbebSnyanmisaka 45*437bfbebSnyanmisaka RK_U32 ref0_field : 1; 46*437bfbebSnyanmisaka RK_U32 ref0_topfield_used : 1; 47*437bfbebSnyanmisaka RK_U32 ref0_botfield_used : 1; 48*437bfbebSnyanmisaka RK_U32 ref0_colmv_use_flag : 1; 49*437bfbebSnyanmisaka RK_U32 ref0_reserve : 4; 50*437bfbebSnyanmisaka 51*437bfbebSnyanmisaka RK_U32 ref1_field : 1; 52*437bfbebSnyanmisaka RK_U32 ref1_topfield_used : 1; 53*437bfbebSnyanmisaka RK_U32 ref1_botfield_used : 1; 54*437bfbebSnyanmisaka RK_U32 ref1_colmv_use_flag : 1; 55*437bfbebSnyanmisaka RK_U32 ref1_reserve : 4; 56*437bfbebSnyanmisaka 57*437bfbebSnyanmisaka RK_U32 ref2_field : 1; 58*437bfbebSnyanmisaka RK_U32 ref2_topfield_used : 1; 59*437bfbebSnyanmisaka RK_U32 ref2_botfield_used : 1; 60*437bfbebSnyanmisaka RK_U32 ref2_colmv_use_flag : 1; 61*437bfbebSnyanmisaka RK_U32 ref2_reserve : 4; 62*437bfbebSnyanmisaka 63*437bfbebSnyanmisaka RK_U32 ref3_field : 1; 64*437bfbebSnyanmisaka RK_U32 ref3_topfield_used : 1; 65*437bfbebSnyanmisaka RK_U32 ref3_botfield_used : 1; 66*437bfbebSnyanmisaka RK_U32 ref3_colmv_use_flag : 1; 67*437bfbebSnyanmisaka RK_U32 ref3_reserve : 4; 68*437bfbebSnyanmisaka } reg99; 69*437bfbebSnyanmisaka 70*437bfbebSnyanmisaka struct SWREG100_H264_REG4_7_INFO { 71*437bfbebSnyanmisaka 72*437bfbebSnyanmisaka RK_U32 ref4_field : 1; 73*437bfbebSnyanmisaka RK_U32 ref4_topfield_used : 1; 74*437bfbebSnyanmisaka RK_U32 ref4_botfield_used : 1; 75*437bfbebSnyanmisaka RK_U32 ref4_colmv_use_flag : 1; 76*437bfbebSnyanmisaka RK_U32 ref4_reserve : 4; 77*437bfbebSnyanmisaka 78*437bfbebSnyanmisaka RK_U32 ref5_field : 1; 79*437bfbebSnyanmisaka RK_U32 ref5_topfield_used : 1; 80*437bfbebSnyanmisaka RK_U32 ref5_botfield_used : 1; 81*437bfbebSnyanmisaka RK_U32 ref5_colmv_use_flag : 1; 82*437bfbebSnyanmisaka RK_U32 ref5_reserve : 4; 83*437bfbebSnyanmisaka 84*437bfbebSnyanmisaka RK_U32 ref6_field : 1; 85*437bfbebSnyanmisaka RK_U32 ref6_topfield_used : 1; 86*437bfbebSnyanmisaka RK_U32 ref6_botfield_used : 1; 87*437bfbebSnyanmisaka RK_U32 ref6_colmv_use_flag : 1; 88*437bfbebSnyanmisaka RK_U32 ref6_reserve : 4; 89*437bfbebSnyanmisaka 90*437bfbebSnyanmisaka RK_U32 ref7_field : 1; 91*437bfbebSnyanmisaka RK_U32 ref7_topfield_used : 1; 92*437bfbebSnyanmisaka RK_U32 ref7_botfield_used : 1; 93*437bfbebSnyanmisaka RK_U32 ref7_colmv_use_flag : 1; 94*437bfbebSnyanmisaka RK_U32 ref7_reserve : 4; 95*437bfbebSnyanmisaka } reg100; 96*437bfbebSnyanmisaka 97*437bfbebSnyanmisaka struct SWREG101_H264_REG8_11_INFO { 98*437bfbebSnyanmisaka 99*437bfbebSnyanmisaka RK_U32 ref8_field : 1; 100*437bfbebSnyanmisaka RK_U32 ref8_topfield_used : 1; 101*437bfbebSnyanmisaka RK_U32 ref8_botfield_used : 1; 102*437bfbebSnyanmisaka RK_U32 ref8_colmv_use_flag : 1; 103*437bfbebSnyanmisaka RK_U32 ref8_reserve : 4; 104*437bfbebSnyanmisaka 105*437bfbebSnyanmisaka RK_U32 ref9_field : 1; 106*437bfbebSnyanmisaka RK_U32 ref9_topfield_used : 1; 107*437bfbebSnyanmisaka RK_U32 ref9_botfield_used : 1; 108*437bfbebSnyanmisaka RK_U32 ref9_colmv_use_flag : 1; 109*437bfbebSnyanmisaka RK_U32 ref9_reserve : 4; 110*437bfbebSnyanmisaka 111*437bfbebSnyanmisaka RK_U32 ref10_field : 1; 112*437bfbebSnyanmisaka RK_U32 ref10_topfield_used : 1; 113*437bfbebSnyanmisaka RK_U32 ref10_botfield_used : 1; 114*437bfbebSnyanmisaka RK_U32 ref10_colmv_use_flag : 1; 115*437bfbebSnyanmisaka RK_U32 ref10_reserve : 4; 116*437bfbebSnyanmisaka 117*437bfbebSnyanmisaka RK_U32 ref11_field : 1; 118*437bfbebSnyanmisaka RK_U32 ref11_topfield_used : 1; 119*437bfbebSnyanmisaka RK_U32 ref11_botfield_used : 1; 120*437bfbebSnyanmisaka RK_U32 ref11_colmv_use_flag : 1; 121*437bfbebSnyanmisaka RK_U32 ref11_reserve : 4; 122*437bfbebSnyanmisaka } reg101; 123*437bfbebSnyanmisaka 124*437bfbebSnyanmisaka struct SWREG102_H264_REG12_15_INFO { 125*437bfbebSnyanmisaka 126*437bfbebSnyanmisaka RK_U32 ref12_field : 1; 127*437bfbebSnyanmisaka RK_U32 ref12_topfield_used : 1; 128*437bfbebSnyanmisaka RK_U32 ref12_botfield_used : 1; 129*437bfbebSnyanmisaka RK_U32 ref12_colmv_use_flag : 1; 130*437bfbebSnyanmisaka RK_U32 ref12_reserve : 4; 131*437bfbebSnyanmisaka 132*437bfbebSnyanmisaka RK_U32 ref13_field : 1; 133*437bfbebSnyanmisaka RK_U32 ref13_topfield_used : 1; 134*437bfbebSnyanmisaka RK_U32 ref13_botfield_used : 1; 135*437bfbebSnyanmisaka RK_U32 ref13_colmv_use_flag : 1; 136*437bfbebSnyanmisaka RK_U32 ref13_reserve : 4; 137*437bfbebSnyanmisaka 138*437bfbebSnyanmisaka RK_U32 ref14_field : 1; 139*437bfbebSnyanmisaka RK_U32 ref14_topfield_used : 1; 140*437bfbebSnyanmisaka RK_U32 ref14_botfield_used : 1; 141*437bfbebSnyanmisaka RK_U32 ref14_colmv_use_flag : 1; 142*437bfbebSnyanmisaka RK_U32 ref14_reserve : 4; 143*437bfbebSnyanmisaka 144*437bfbebSnyanmisaka RK_U32 ref15_field : 1; 145*437bfbebSnyanmisaka RK_U32 ref15_topfield_used : 1; 146*437bfbebSnyanmisaka RK_U32 ref15_botfield_used : 1; 147*437bfbebSnyanmisaka RK_U32 ref15_colmv_use_flag : 1; 148*437bfbebSnyanmisaka RK_U32 ref15_reserve : 4; 149*437bfbebSnyanmisaka } reg102; 150*437bfbebSnyanmisaka 151*437bfbebSnyanmisaka struct SWREG103_111_NO_USE_REGS { 152*437bfbebSnyanmisaka RK_U32 reserve; 153*437bfbebSnyanmisaka } no_use_regs[9]; 154*437bfbebSnyanmisaka 155*437bfbebSnyanmisaka struct SWREG112_ERROR_REF_INFO { 156*437bfbebSnyanmisaka RK_U32 avs2_ref_error_field : 1; 157*437bfbebSnyanmisaka RK_U32 avs2_ref_error_topfield : 1; 158*437bfbebSnyanmisaka RK_U32 ref_error_topfield_used : 1; 159*437bfbebSnyanmisaka RK_U32 ref_error_botfield_used : 1; 160*437bfbebSnyanmisaka RK_U32 reserve : 28; 161*437bfbebSnyanmisaka } reg112; 162*437bfbebSnyanmisaka } Vdpu382RegH264dParam; 163*437bfbebSnyanmisaka 164*437bfbebSnyanmisaka /* base: OFFSET_CODEC_ADDR_REGS */ 165*437bfbebSnyanmisaka typedef struct Vdpu382RegH264dAddr_t { 166*437bfbebSnyanmisaka /* SWREG160 */ 167*437bfbebSnyanmisaka RK_U32 reg160_no_use; 168*437bfbebSnyanmisaka 169*437bfbebSnyanmisaka /* SWREG161 */ 170*437bfbebSnyanmisaka RK_U32 pps_base; 171*437bfbebSnyanmisaka 172*437bfbebSnyanmisaka /* SWREG162 */ 173*437bfbebSnyanmisaka RK_U32 reg162_no_use; 174*437bfbebSnyanmisaka 175*437bfbebSnyanmisaka /* SWREG163 */ 176*437bfbebSnyanmisaka RK_U32 rps_base; 177*437bfbebSnyanmisaka 178*437bfbebSnyanmisaka /* SWREG164~179 */ 179*437bfbebSnyanmisaka RK_U32 ref_base[16]; 180*437bfbebSnyanmisaka 181*437bfbebSnyanmisaka /* SWREG180 */ 182*437bfbebSnyanmisaka RK_U32 scanlist_addr; 183*437bfbebSnyanmisaka 184*437bfbebSnyanmisaka /* SWREG181~196 */ 185*437bfbebSnyanmisaka RK_U32 colmv_base[16]; 186*437bfbebSnyanmisaka 187*437bfbebSnyanmisaka /* SWREG197 */ 188*437bfbebSnyanmisaka RK_U32 cabactbl_base; 189*437bfbebSnyanmisaka 190*437bfbebSnyanmisaka /* SWREG198*/ 191*437bfbebSnyanmisaka RK_U32 reg198_scale_down_luma_base; 192*437bfbebSnyanmisaka 193*437bfbebSnyanmisaka /* SWREG199*/ 194*437bfbebSnyanmisaka RK_U32 reg199_scale_down_chorme_base; 195*437bfbebSnyanmisaka 196*437bfbebSnyanmisaka } Vdpu382RegH264dAddr; 197*437bfbebSnyanmisaka 198*437bfbebSnyanmisaka typedef struct Vdpu382H264dHighPoc_t { 199*437bfbebSnyanmisaka /* SWREG200 */ 200*437bfbebSnyanmisaka struct SWREG200_REF0_7_POC_HIGHBIT { 201*437bfbebSnyanmisaka RK_U32 ref0_poc_highbit : 4; 202*437bfbebSnyanmisaka RK_U32 ref1_poc_highbit : 4; 203*437bfbebSnyanmisaka RK_U32 ref2_poc_highbit : 4; 204*437bfbebSnyanmisaka RK_U32 ref3_poc_highbit : 4; 205*437bfbebSnyanmisaka RK_U32 ref4_poc_highbit : 4; 206*437bfbebSnyanmisaka RK_U32 ref5_poc_highbit : 4; 207*437bfbebSnyanmisaka RK_U32 ref6_poc_highbit : 4; 208*437bfbebSnyanmisaka RK_U32 ref7_poc_highbit : 4; 209*437bfbebSnyanmisaka } reg200; 210*437bfbebSnyanmisaka struct SWREG201_REF8_15_POC_HIGHBIT { 211*437bfbebSnyanmisaka RK_U32 ref8_poc_highbit : 4; 212*437bfbebSnyanmisaka RK_U32 ref9_poc_highbit : 4; 213*437bfbebSnyanmisaka RK_U32 ref10_poc_highbit : 4; 214*437bfbebSnyanmisaka RK_U32 ref11_poc_highbit : 4; 215*437bfbebSnyanmisaka RK_U32 ref12_poc_highbit : 4; 216*437bfbebSnyanmisaka RK_U32 ref13_poc_highbit : 4; 217*437bfbebSnyanmisaka RK_U32 ref14_poc_highbit : 4; 218*437bfbebSnyanmisaka RK_U32 ref15_poc_highbit : 4; 219*437bfbebSnyanmisaka } reg201; 220*437bfbebSnyanmisaka struct SWREG200_REF16_23_POC_HIGHBIT { 221*437bfbebSnyanmisaka RK_U32 ref16_poc_highbit : 4; 222*437bfbebSnyanmisaka RK_U32 ref17_poc_highbit : 4; 223*437bfbebSnyanmisaka RK_U32 ref18_poc_highbit : 4; 224*437bfbebSnyanmisaka RK_U32 ref19_poc_highbit : 4; 225*437bfbebSnyanmisaka RK_U32 ref20_poc_highbit : 4; 226*437bfbebSnyanmisaka RK_U32 ref21_poc_highbit : 4; 227*437bfbebSnyanmisaka RK_U32 ref22_poc_highbit : 4; 228*437bfbebSnyanmisaka RK_U32 ref23_poc_highbit : 4; 229*437bfbebSnyanmisaka } reg202; 230*437bfbebSnyanmisaka struct SWREG200_REF24_31_POC_HIGHBIT { 231*437bfbebSnyanmisaka RK_U32 ref24_poc_highbit : 4; 232*437bfbebSnyanmisaka RK_U32 ref25_poc_highbit : 4; 233*437bfbebSnyanmisaka RK_U32 ref26_poc_highbit : 4; 234*437bfbebSnyanmisaka RK_U32 ref27_poc_highbit : 4; 235*437bfbebSnyanmisaka RK_U32 ref28_poc_highbit : 4; 236*437bfbebSnyanmisaka RK_U32 ref29_poc_highbit : 4; 237*437bfbebSnyanmisaka RK_U32 ref30_poc_highbit : 4; 238*437bfbebSnyanmisaka RK_U32 ref31_poc_highbit : 4; 239*437bfbebSnyanmisaka } reg203; 240*437bfbebSnyanmisaka struct SWREG200_CUR_POC_HIGHBIT { 241*437bfbebSnyanmisaka RK_U32 cur_poc_highbit : 4; 242*437bfbebSnyanmisaka RK_U32 reserver : 28; 243*437bfbebSnyanmisaka } reg204; 244*437bfbebSnyanmisaka 245*437bfbebSnyanmisaka struct SWREG205_DEBUG_INFO { 246*437bfbebSnyanmisaka RK_U32 force_softreset_valid : 1; 247*437bfbebSnyanmisaka RK_U32 force_mmureset_valid : 1; 248*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 249*437bfbebSnyanmisaka RK_U32 error_auto_rst_disable : 1; 250*437bfbebSnyanmisaka RK_U32 right_auto_rst_disable : 1; 251*437bfbebSnyanmisaka RK_U32 buf_empty_security_en : 1; 252*437bfbebSnyanmisaka RK_U32 coord_realtime_report_en : 1; 253*437bfbebSnyanmisaka 254*437bfbebSnyanmisaka RK_U32 fetchcmd_merge_dis : 1; 255*437bfbebSnyanmisaka RK_U32 dec_timeout_dis : 1; 256*437bfbebSnyanmisaka RK_U32 reg_cfg_wr_dis : 1; 257*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 258*437bfbebSnyanmisaka RK_U32 force_busidle_req : 1; 259*437bfbebSnyanmisaka RK_U32 mmu_force_busidle_req : 1; 260*437bfbebSnyanmisaka RK_U32 mmu_sel : 1; 261*437bfbebSnyanmisaka RK_U32 reserve2 : 17; 262*437bfbebSnyanmisaka 263*437bfbebSnyanmisaka } reg205; 264*437bfbebSnyanmisaka } Vdpu382H264dHighPoc_t; 265*437bfbebSnyanmisaka 266*437bfbebSnyanmisaka typedef struct Vdpu382H264dRegSet_t { 267*437bfbebSnyanmisaka Vdpu382RegCommon common; 268*437bfbebSnyanmisaka Vdpu382RegH264dParam h264d_param; 269*437bfbebSnyanmisaka Vdpu382RegCommonAddr common_addr; 270*437bfbebSnyanmisaka Vdpu382RegH264dAddr h264d_addr; 271*437bfbebSnyanmisaka Vdpu382H264dHighPoc_t h264d_highpoc; 272*437bfbebSnyanmisaka Vdpu382RegIrqStatus irq_status; 273*437bfbebSnyanmisaka Vdpu382RegStatistic statistic; 274*437bfbebSnyanmisaka } Vdpu382H264dRegSet; 275*437bfbebSnyanmisaka 276*437bfbebSnyanmisaka #endif /* __VDPU382_H264D_H__ */ 277