1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2020 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 __VDPU34X_H264D_H__ 18*437bfbebSnyanmisaka #define __VDPU34X_H264D_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "vdpu34x_com.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka /* base: OFFSET_CODEC_PARAMS_REGS */ 23*437bfbebSnyanmisaka typedef struct Vdpu34xRegH264dParam_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 } Vdpu34xRegH264dParam; 163*437bfbebSnyanmisaka 164*437bfbebSnyanmisaka /* base: OFFSET_CODEC_ADDR_REGS */ 165*437bfbebSnyanmisaka typedef struct Vdpu34xRegH264dAddr_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 } Vdpu34xRegH264dAddr; 190*437bfbebSnyanmisaka 191*437bfbebSnyanmisaka typedef struct Vdpu34xH264dHighPoc_t { 192*437bfbebSnyanmisaka /* SWREG200 */ 193*437bfbebSnyanmisaka struct SWREG200_REF0_7_POC_HIGHBIT { 194*437bfbebSnyanmisaka RK_U32 ref0_poc_highbit : 4; 195*437bfbebSnyanmisaka RK_U32 ref1_poc_highbit : 4; 196*437bfbebSnyanmisaka RK_U32 ref2_poc_highbit : 4; 197*437bfbebSnyanmisaka RK_U32 ref3_poc_highbit : 4; 198*437bfbebSnyanmisaka RK_U32 ref4_poc_highbit : 4; 199*437bfbebSnyanmisaka RK_U32 ref5_poc_highbit : 4; 200*437bfbebSnyanmisaka RK_U32 ref6_poc_highbit : 4; 201*437bfbebSnyanmisaka RK_U32 ref7_poc_highbit : 4; 202*437bfbebSnyanmisaka } reg200; 203*437bfbebSnyanmisaka struct SWREG201_REF8_15_POC_HIGHBIT { 204*437bfbebSnyanmisaka RK_U32 ref8_poc_highbit : 4; 205*437bfbebSnyanmisaka RK_U32 ref9_poc_highbit : 4; 206*437bfbebSnyanmisaka RK_U32 ref10_poc_highbit : 4; 207*437bfbebSnyanmisaka RK_U32 ref11_poc_highbit : 4; 208*437bfbebSnyanmisaka RK_U32 ref12_poc_highbit : 4; 209*437bfbebSnyanmisaka RK_U32 ref13_poc_highbit : 4; 210*437bfbebSnyanmisaka RK_U32 ref14_poc_highbit : 4; 211*437bfbebSnyanmisaka RK_U32 ref15_poc_highbit : 4; 212*437bfbebSnyanmisaka } reg201; 213*437bfbebSnyanmisaka struct SWREG200_REF16_23_POC_HIGHBIT { 214*437bfbebSnyanmisaka RK_U32 ref16_poc_highbit : 4; 215*437bfbebSnyanmisaka RK_U32 ref17_poc_highbit : 4; 216*437bfbebSnyanmisaka RK_U32 ref18_poc_highbit : 4; 217*437bfbebSnyanmisaka RK_U32 ref19_poc_highbit : 4; 218*437bfbebSnyanmisaka RK_U32 ref20_poc_highbit : 4; 219*437bfbebSnyanmisaka RK_U32 ref21_poc_highbit : 4; 220*437bfbebSnyanmisaka RK_U32 ref22_poc_highbit : 4; 221*437bfbebSnyanmisaka RK_U32 ref23_poc_highbit : 4; 222*437bfbebSnyanmisaka } reg202; 223*437bfbebSnyanmisaka struct SWREG200_REF24_31_POC_HIGHBIT { 224*437bfbebSnyanmisaka RK_U32 ref24_poc_highbit : 4; 225*437bfbebSnyanmisaka RK_U32 ref25_poc_highbit : 4; 226*437bfbebSnyanmisaka RK_U32 ref26_poc_highbit : 4; 227*437bfbebSnyanmisaka RK_U32 ref27_poc_highbit : 4; 228*437bfbebSnyanmisaka RK_U32 ref28_poc_highbit : 4; 229*437bfbebSnyanmisaka RK_U32 ref29_poc_highbit : 4; 230*437bfbebSnyanmisaka RK_U32 ref30_poc_highbit : 4; 231*437bfbebSnyanmisaka RK_U32 ref31_poc_highbit : 4; 232*437bfbebSnyanmisaka } reg203; 233*437bfbebSnyanmisaka struct SWREG200_CUR_POC_HIGHBIT { 234*437bfbebSnyanmisaka RK_U32 cur_poc_highbit : 4; 235*437bfbebSnyanmisaka RK_U32 reserver : 28; 236*437bfbebSnyanmisaka } reg204; 237*437bfbebSnyanmisaka } Vdpu34xH264dHighPoc_t; 238*437bfbebSnyanmisaka 239*437bfbebSnyanmisaka typedef struct Vdpu34xH264dRegSet_t { 240*437bfbebSnyanmisaka Vdpu34xRegCommon common; 241*437bfbebSnyanmisaka Vdpu34xRegH264dParam h264d_param; 242*437bfbebSnyanmisaka Vdpu34xRegCommonAddr common_addr; 243*437bfbebSnyanmisaka Vdpu34xRegH264dAddr h264d_addr; 244*437bfbebSnyanmisaka Vdpu34xH264dHighPoc_t h264d_highpoc; 245*437bfbebSnyanmisaka Vdpu34xRegIrqStatus irq_status; 246*437bfbebSnyanmisaka Vdpu34xRegStatistic statistic; 247*437bfbebSnyanmisaka } Vdpu34xH264dRegSet; 248*437bfbebSnyanmisaka 249*437bfbebSnyanmisaka #endif /* __VDPU34X_H264D_H__ */ 250