1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * 3*437bfbebSnyanmisaka * Copyright 2015 Rockchip Electronics Co. LTD 4*437bfbebSnyanmisaka * 5*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 6*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 7*437bfbebSnyanmisaka * You may obtain a copy of the License at 8*437bfbebSnyanmisaka * 9*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 10*437bfbebSnyanmisaka * 11*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 12*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 13*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 15*437bfbebSnyanmisaka * limitations under the License. 16*437bfbebSnyanmisaka */ 17*437bfbebSnyanmisaka 18*437bfbebSnyanmisaka 19*437bfbebSnyanmisaka #ifndef __HAL_H264D_RKV_REG_H__ 20*437bfbebSnyanmisaka #define __HAL_H264D_RKV_REG_H__ 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka #include "mpp_hal.h" 23*437bfbebSnyanmisaka 24*437bfbebSnyanmisaka typedef struct h264d_rkv_regs_t { 25*437bfbebSnyanmisaka struct { 26*437bfbebSnyanmisaka RK_U32 minor_ver : 8; 27*437bfbebSnyanmisaka RK_U32 level : 1; 28*437bfbebSnyanmisaka RK_U32 dec_support : 3; 29*437bfbebSnyanmisaka RK_U32 profile : 1; 30*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 31*437bfbebSnyanmisaka RK_U32 codec_flag : 1; 32*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 33*437bfbebSnyanmisaka RK_U32 prod_num : 16; 34*437bfbebSnyanmisaka } sw00; 35*437bfbebSnyanmisaka struct { 36*437bfbebSnyanmisaka RK_U32 dec_e : 1;//0 37*437bfbebSnyanmisaka RK_U32 dec_clkgate_e : 1; // 1 38*437bfbebSnyanmisaka RK_U32 reserve0 : 1;// 2 39*437bfbebSnyanmisaka RK_U32 timeout_mode : 1; // 3 40*437bfbebSnyanmisaka RK_U32 dec_irq_dis : 1;//4 // 4 41*437bfbebSnyanmisaka RK_U32 dec_timeout_e : 1; //5 42*437bfbebSnyanmisaka RK_U32 buf_empty_en : 1; // 6 43*437bfbebSnyanmisaka RK_U32 stmerror_waitdecfifo_empty : 1; // 7 44*437bfbebSnyanmisaka RK_U32 dec_irq : 1; // 8 45*437bfbebSnyanmisaka RK_U32 dec_irq_raw : 1; // 9 46*437bfbebSnyanmisaka RK_U32 reserve2 : 2; 47*437bfbebSnyanmisaka RK_U32 dec_rdy_sta : 1; //12 48*437bfbebSnyanmisaka RK_U32 dec_bus_sta : 1; //13 49*437bfbebSnyanmisaka RK_U32 dec_error_sta : 1; // 14 50*437bfbebSnyanmisaka RK_U32 dec_timeout_sta : 1; //15 51*437bfbebSnyanmisaka RK_U32 dec_empty_sta : 1; // 16 52*437bfbebSnyanmisaka RK_U32 colmv_ref_error_sta : 1; // 17 53*437bfbebSnyanmisaka RK_U32 cabu_end_sta : 1; // 18 54*437bfbebSnyanmisaka RK_U32 h264orvp9_error_mode : 1; //19 55*437bfbebSnyanmisaka RK_U32 softrst_en_p : 1; //20 56*437bfbebSnyanmisaka RK_U32 force_softreset_valid : 1; //21 57*437bfbebSnyanmisaka RK_U32 softreset_rdy : 1; // 22 58*437bfbebSnyanmisaka RK_U32 reserve1 : 9; 59*437bfbebSnyanmisaka } sw01; 60*437bfbebSnyanmisaka struct { 61*437bfbebSnyanmisaka RK_U32 in_endian : 1; 62*437bfbebSnyanmisaka RK_U32 in_swap32_e : 1; 63*437bfbebSnyanmisaka RK_U32 in_swap64_e : 1; 64*437bfbebSnyanmisaka RK_U32 str_endian : 1; 65*437bfbebSnyanmisaka RK_U32 str_swap32_e : 1; 66*437bfbebSnyanmisaka RK_U32 str_swap64_e : 1; 67*437bfbebSnyanmisaka RK_U32 out_endian : 1; 68*437bfbebSnyanmisaka RK_U32 out_swap32_e : 1; 69*437bfbebSnyanmisaka RK_U32 out_cbcr_swap : 1; 70*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 71*437bfbebSnyanmisaka RK_U32 rlc_mode_direct_write : 1; 72*437bfbebSnyanmisaka RK_U32 rlc_mode : 1; 73*437bfbebSnyanmisaka RK_U32 strm_start_bit : 7; 74*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 75*437bfbebSnyanmisaka RK_U32 dec_mode : 2; 76*437bfbebSnyanmisaka RK_U32 reserve2 : 2; 77*437bfbebSnyanmisaka RK_U32 rps_mode : 1; 78*437bfbebSnyanmisaka RK_U32 stream_mode : 1; 79*437bfbebSnyanmisaka RK_U32 stream_lastpacket : 1; 80*437bfbebSnyanmisaka RK_U32 firstslice_flag : 1; 81*437bfbebSnyanmisaka RK_U32 frame_orslice : 1; 82*437bfbebSnyanmisaka RK_U32 buspr_slot_disable : 1; 83*437bfbebSnyanmisaka RK_U32 reverse3 : 2; 84*437bfbebSnyanmisaka } sw02; 85*437bfbebSnyanmisaka struct { 86*437bfbebSnyanmisaka RK_U32 y_hor_virstride : 9; 87*437bfbebSnyanmisaka RK_U32 reserve : 2; 88*437bfbebSnyanmisaka RK_U32 slice_num_highbit : 1; 89*437bfbebSnyanmisaka RK_U32 uv_hor_virstride : 9; 90*437bfbebSnyanmisaka RK_U32 slice_num_lowbits : 11; 91*437bfbebSnyanmisaka } sw03; 92*437bfbebSnyanmisaka struct { 93*437bfbebSnyanmisaka RK_U32 strm_rlc_base : 32; 94*437bfbebSnyanmisaka } sw04; 95*437bfbebSnyanmisaka struct { 96*437bfbebSnyanmisaka RK_U32 stream_len : 27; 97*437bfbebSnyanmisaka RK_U32 reverse0 : 5; 98*437bfbebSnyanmisaka } sw05; 99*437bfbebSnyanmisaka struct { 100*437bfbebSnyanmisaka RK_U32 cabactbl_base : 32; 101*437bfbebSnyanmisaka } sw06; 102*437bfbebSnyanmisaka struct { 103*437bfbebSnyanmisaka RK_U32 decout_base : 32; 104*437bfbebSnyanmisaka } sw07; 105*437bfbebSnyanmisaka struct { 106*437bfbebSnyanmisaka RK_U32 y_virstride : 20; 107*437bfbebSnyanmisaka RK_U32 reverse0 : 12; 108*437bfbebSnyanmisaka } sw08; 109*437bfbebSnyanmisaka struct { 110*437bfbebSnyanmisaka RK_U32 yuv_virstride : 21; 111*437bfbebSnyanmisaka RK_U32 reverse0 : 11; 112*437bfbebSnyanmisaka } sw09; 113*437bfbebSnyanmisaka struct { 114*437bfbebSnyanmisaka /* bit0: ref0_14_field 115*437bfbebSnyanmisaka * bit1: ref0_14_topfield_used 116*437bfbebSnyanmisaka * bit2: ref0_14_botfield_used 117*437bfbebSnyanmisaka * bit3: ref0_14_colmv_use_flag 118*437bfbebSnyanmisaka */ 119*437bfbebSnyanmisaka RK_U32 ref0_14_base; /* bit4-bit31 */ 120*437bfbebSnyanmisaka } sw10_24[15]; 121*437bfbebSnyanmisaka struct { 122*437bfbebSnyanmisaka RK_U32 ref0_14_poc : 32; 123*437bfbebSnyanmisaka } sw25_39[15]; 124*437bfbebSnyanmisaka struct { 125*437bfbebSnyanmisaka RK_U32 cur_poc : 32; 126*437bfbebSnyanmisaka } sw40; 127*437bfbebSnyanmisaka struct { 128*437bfbebSnyanmisaka RK_U32 rlcwrite_base; 129*437bfbebSnyanmisaka } sw41; 130*437bfbebSnyanmisaka struct { 131*437bfbebSnyanmisaka RK_U32 pps_base; 132*437bfbebSnyanmisaka } sw42; 133*437bfbebSnyanmisaka struct { 134*437bfbebSnyanmisaka RK_U32 rps_base; 135*437bfbebSnyanmisaka } sw43; 136*437bfbebSnyanmisaka struct { 137*437bfbebSnyanmisaka RK_U32 strmd_error_e : 28; 138*437bfbebSnyanmisaka RK_U32 reserve : 4; 139*437bfbebSnyanmisaka } sw44; 140*437bfbebSnyanmisaka struct { 141*437bfbebSnyanmisaka RK_U32 strmd_error_status : 28; 142*437bfbebSnyanmisaka RK_U32 colmv_error_ref_picidx : 4; 143*437bfbebSnyanmisaka } sw45; 144*437bfbebSnyanmisaka struct { 145*437bfbebSnyanmisaka RK_U32 strmd_error_ctu_xoffset : 8; 146*437bfbebSnyanmisaka RK_U32 strmd_error_ctu_yoffset : 8; 147*437bfbebSnyanmisaka RK_U32 streamfifo_space2full : 7; 148*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 149*437bfbebSnyanmisaka RK_U32 vp9_error_ctu0_en : 1; 150*437bfbebSnyanmisaka RK_U32 reverse1 : 7; 151*437bfbebSnyanmisaka } sw46; 152*437bfbebSnyanmisaka struct { 153*437bfbebSnyanmisaka RK_U32 saowr_xoffet : 9; 154*437bfbebSnyanmisaka RK_U32 reserve0 : 7; 155*437bfbebSnyanmisaka RK_U32 saowr_yoffset : 10; 156*437bfbebSnyanmisaka RK_U32 reverse1 : 6; 157*437bfbebSnyanmisaka } sw47; 158*437bfbebSnyanmisaka struct { 159*437bfbebSnyanmisaka /* bit0: ref15_field 160*437bfbebSnyanmisaka * bit1: ref15_topfield_used 161*437bfbebSnyanmisaka * bit2: ref15_botfield_used 162*437bfbebSnyanmisaka * bit3: ref15_colmv_use_flag 163*437bfbebSnyanmisaka */ 164*437bfbebSnyanmisaka RK_U32 ref15_base; /* bit4-bit31 */ 165*437bfbebSnyanmisaka } sw48; 166*437bfbebSnyanmisaka struct { 167*437bfbebSnyanmisaka RK_U32 ref15_29_poc : 32; 168*437bfbebSnyanmisaka } sw49_63[15]; 169*437bfbebSnyanmisaka struct { 170*437bfbebSnyanmisaka RK_U32 performance_cycle : 32; 171*437bfbebSnyanmisaka } sw64; 172*437bfbebSnyanmisaka struct { 173*437bfbebSnyanmisaka RK_U32 axi_ddr_rdata : 32; 174*437bfbebSnyanmisaka } sw65; 175*437bfbebSnyanmisaka struct { 176*437bfbebSnyanmisaka RK_U32 axi_ddr_rdata : 32; 177*437bfbebSnyanmisaka } sw66; 178*437bfbebSnyanmisaka struct { 179*437bfbebSnyanmisaka RK_U32 busifd_resetn : 1; 180*437bfbebSnyanmisaka RK_U32 cabac_resetn : 1; 181*437bfbebSnyanmisaka RK_U32 dec_ctrl_resetn : 1; 182*437bfbebSnyanmisaka RK_U32 transd_resetn : 1; 183*437bfbebSnyanmisaka RK_U32 intra_resetn : 1; 184*437bfbebSnyanmisaka RK_U32 inter_resetn : 1; 185*437bfbebSnyanmisaka RK_U32 recon_resetn : 1; 186*437bfbebSnyanmisaka RK_U32 filer_resetn : 1; 187*437bfbebSnyanmisaka RK_U32 reverse0 : 24; 188*437bfbebSnyanmisaka } sw67; 189*437bfbebSnyanmisaka struct { 190*437bfbebSnyanmisaka RK_U32 perf_cnt0_sel : 6; 191*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 192*437bfbebSnyanmisaka RK_U32 perf_cnt1_sel : 6; 193*437bfbebSnyanmisaka RK_U32 reserve1 : 2; 194*437bfbebSnyanmisaka RK_U32 perf_cnt2_sel : 6; 195*437bfbebSnyanmisaka RK_U32 reverse1 : 10; 196*437bfbebSnyanmisaka } sw68; 197*437bfbebSnyanmisaka struct { 198*437bfbebSnyanmisaka RK_U32 perf_cnt0 : 32; 199*437bfbebSnyanmisaka } sw69; 200*437bfbebSnyanmisaka struct { 201*437bfbebSnyanmisaka RK_U32 perf_cnt1 : 32; 202*437bfbebSnyanmisaka } sw70; 203*437bfbebSnyanmisaka struct { 204*437bfbebSnyanmisaka RK_U32 perf_cnt2 : 32; 205*437bfbebSnyanmisaka } sw71; 206*437bfbebSnyanmisaka struct { 207*437bfbebSnyanmisaka RK_U32 ref30_poc; 208*437bfbebSnyanmisaka } sw72; 209*437bfbebSnyanmisaka struct { 210*437bfbebSnyanmisaka RK_U32 ref31_poc; 211*437bfbebSnyanmisaka } sw73; 212*437bfbebSnyanmisaka struct { 213*437bfbebSnyanmisaka RK_U32 cur_poc1 : 32; 214*437bfbebSnyanmisaka } sw74; 215*437bfbebSnyanmisaka struct { 216*437bfbebSnyanmisaka RK_U32 errorinfo_base : 32; 217*437bfbebSnyanmisaka } sw75; 218*437bfbebSnyanmisaka struct { 219*437bfbebSnyanmisaka RK_U32 slicedec_num : 14; 220*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 221*437bfbebSnyanmisaka RK_U32 strmd_detect_error_flag : 1; 222*437bfbebSnyanmisaka RK_U32 error_packet_num : 14; 223*437bfbebSnyanmisaka RK_U32 reverse1 : 2; 224*437bfbebSnyanmisaka } sw76; 225*437bfbebSnyanmisaka struct { 226*437bfbebSnyanmisaka RK_U32 error_en_highbits : 30; 227*437bfbebSnyanmisaka RK_U32 reserve : 2; 228*437bfbebSnyanmisaka } sw77; 229*437bfbebSnyanmisaka RK_U32 reverse[2]; 230*437bfbebSnyanmisaka } H264dRkvRegs_t; 231*437bfbebSnyanmisaka 232*437bfbebSnyanmisaka 233*437bfbebSnyanmisaka #ifdef __cplusplus 234*437bfbebSnyanmisaka extern "C" { 235*437bfbebSnyanmisaka #endif 236*437bfbebSnyanmisaka 237*437bfbebSnyanmisaka extern const MppHalApi hal_h264d_rkvdpu; 238*437bfbebSnyanmisaka 239*437bfbebSnyanmisaka #ifdef __cplusplus 240*437bfbebSnyanmisaka } 241*437bfbebSnyanmisaka #endif 242*437bfbebSnyanmisaka 243*437bfbebSnyanmisaka #endif /* __HAL_H264D_RKV_REG_H__ */ 244