1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2017 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 __HAL_M4V_VDPU1_REG_TBL_H__ 18*437bfbebSnyanmisaka #define __HAL_M4V_VDPU1_REG_TBL_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "rk_type.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka /* Number registers for the decoder */ 23*437bfbebSnyanmisaka #define DEC_VDPU1_REGISTERS (101) 24*437bfbebSnyanmisaka 25*437bfbebSnyanmisaka typedef struct { 26*437bfbebSnyanmisaka RK_U32 SwReg00; 27*437bfbebSnyanmisaka 28*437bfbebSnyanmisaka struct { 29*437bfbebSnyanmisaka RK_U32 sw_dec_en : 1; 30*437bfbebSnyanmisaka RK_U32 reserve0 : 3; 31*437bfbebSnyanmisaka RK_U32 sw_dec_irq_dis : 1; 32*437bfbebSnyanmisaka RK_U32 reserve1 : 3; 33*437bfbebSnyanmisaka RK_U32 sw_dec_irq : 1; 34*437bfbebSnyanmisaka RK_U32 reserve2 : 3; 35*437bfbebSnyanmisaka RK_U32 sw_dec_rdy_int : 1; 36*437bfbebSnyanmisaka RK_U32 sw_dec_bus_int : 1; 37*437bfbebSnyanmisaka RK_U32 sw_dec_buffer_int : 1; 38*437bfbebSnyanmisaka RK_U32 sw_dec_aso_int : 1; 39*437bfbebSnyanmisaka RK_U32 sw_dec_error_int : 1; 40*437bfbebSnyanmisaka RK_U32 sw_dec_slice_int : 1; 41*437bfbebSnyanmisaka RK_U32 sw_dec_timeout : 1; 42*437bfbebSnyanmisaka RK_U32 reserve3 : 5; 43*437bfbebSnyanmisaka RK_U32 sw_dec_pic_inf : 1; 44*437bfbebSnyanmisaka RK_U32 reserve4 : 7; 45*437bfbebSnyanmisaka } SwReg01; 46*437bfbebSnyanmisaka 47*437bfbebSnyanmisaka struct { 48*437bfbebSnyanmisaka RK_U32 sw_dec_max_burst : 5; 49*437bfbebSnyanmisaka RK_U32 sw_dec_scmd_dis : 1; 50*437bfbebSnyanmisaka RK_U32 sw_dec_adv_pre_dis : 1; 51*437bfbebSnyanmisaka RK_U32 sw_tiled_mode_lsb : 1; 52*437bfbebSnyanmisaka RK_U32 sw_dec_out_endian : 1; 53*437bfbebSnyanmisaka RK_U32 sw_dec_in_endian : 1; 54*437bfbebSnyanmisaka RK_U32 sw_dec_clk_gate_e : 1; 55*437bfbebSnyanmisaka RK_U32 sw_dec_latency : 6; 56*437bfbebSnyanmisaka RK_U32 sw_tiled_mode_msb : 1; 57*437bfbebSnyanmisaka RK_U32 sw_dec_data_disc_e : 1; 58*437bfbebSnyanmisaka RK_U32 sw_dec_outswap32_e : 1; 59*437bfbebSnyanmisaka RK_U32 sw_dec_inswap32_e : 1; 60*437bfbebSnyanmisaka RK_U32 sw_dec_strendian_e : 1; 61*437bfbebSnyanmisaka RK_U32 sw_dec_strswap32_e : 1; 62*437bfbebSnyanmisaka RK_U32 sw_dec_timeout_e : 1; 63*437bfbebSnyanmisaka RK_U32 sw_dec_axi_rd_id : 8; 64*437bfbebSnyanmisaka } SwReg02; 65*437bfbebSnyanmisaka 66*437bfbebSnyanmisaka struct { 67*437bfbebSnyanmisaka RK_U32 sw_dec_axi_wr_id : 8; 68*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 69*437bfbebSnyanmisaka RK_U32 sw_picord_count_e : 1; 70*437bfbebSnyanmisaka RK_U32 sw_seq_mbaff_e : 1; 71*437bfbebSnyanmisaka RK_U32 sw_reftopfirst_e : 1; 72*437bfbebSnyanmisaka RK_U32 sw_write_mvs_e : 1; 73*437bfbebSnyanmisaka RK_U32 sw_pic_fixed_quant : 1; 74*437bfbebSnyanmisaka RK_U32 sw_filtering_dis : 1; 75*437bfbebSnyanmisaka RK_U32 sw_dec_out_dis : 1; 76*437bfbebSnyanmisaka RK_U32 sw_ref_topfield_e : 1; 77*437bfbebSnyanmisaka RK_U32 sw_sorenson_e : 1; 78*437bfbebSnyanmisaka RK_U32 sw_fwd_interlace_e : 1; 79*437bfbebSnyanmisaka RK_U32 sw_pic_topfield_e : 1; 80*437bfbebSnyanmisaka RK_U32 sw_pic_inter_e : 1; 81*437bfbebSnyanmisaka RK_U32 sw_pic_b_e : 1; 82*437bfbebSnyanmisaka RK_U32 sw_pic_fieldmode_e : 1; 83*437bfbebSnyanmisaka RK_U32 sw_pic_interlace_e : 1; 84*437bfbebSnyanmisaka RK_U32 sw_pjpeg_e : 1; 85*437bfbebSnyanmisaka RK_U32 sw_divx3_e : 1; 86*437bfbebSnyanmisaka RK_U32 sw_skip_mode : 1; 87*437bfbebSnyanmisaka RK_U32 sw_rlc_mode_e : 1; 88*437bfbebSnyanmisaka RK_U32 sw_dec_mode : 4; 89*437bfbebSnyanmisaka } SwReg03; 90*437bfbebSnyanmisaka 91*437bfbebSnyanmisaka struct { 92*437bfbebSnyanmisaka RK_U32 sw_reserve0 : 5; 93*437bfbebSnyanmisaka RK_U32 sw_topfieldfirst_e : 1; 94*437bfbebSnyanmisaka RK_U32 sw_alt_scan_e : 1; 95*437bfbebSnyanmisaka RK_U32 sw_mb_height_off : 4; 96*437bfbebSnyanmisaka RK_U32 sw_pic_mb_hight_p : 8; 97*437bfbebSnyanmisaka RK_U32 sw_mb_width_off : 4; 98*437bfbebSnyanmisaka RK_U32 sw_pic_mb_width : 9; 99*437bfbebSnyanmisaka } SwReg04; 100*437bfbebSnyanmisaka 101*437bfbebSnyanmisaka struct { 102*437bfbebSnyanmisaka RK_U32 sw_vop_time_incr : 16; 103*437bfbebSnyanmisaka RK_U32 sw_intradc_vlc_thr : 3; 104*437bfbebSnyanmisaka RK_U32 sw_ch_qp_offset : 5; 105*437bfbebSnyanmisaka RK_U32 sw_type1_quant_e : 1; 106*437bfbebSnyanmisaka RK_U32 sw_sync_markers_e : 1; 107*437bfbebSnyanmisaka RK_U32 sw_strm_start_bit : 6; 108*437bfbebSnyanmisaka } SwReg05; 109*437bfbebSnyanmisaka 110*437bfbebSnyanmisaka struct { 111*437bfbebSnyanmisaka RK_U32 sw_stream_len : 24; 112*437bfbebSnyanmisaka RK_U32 sw_ch_8pix_ileav_e : 1; 113*437bfbebSnyanmisaka RK_U32 sw_init_qp : 6; 114*437bfbebSnyanmisaka RK_U32 sw_start_code_e : 1; 115*437bfbebSnyanmisaka } SwReg06; 116*437bfbebSnyanmisaka 117*437bfbebSnyanmisaka struct { 118*437bfbebSnyanmisaka RK_U32 sw_framenum : 16; 119*437bfbebSnyanmisaka RK_U32 sw_framenum_len : 5; 120*437bfbebSnyanmisaka RK_U32 reserve0 : 5; 121*437bfbebSnyanmisaka RK_U32 sw_weight_bipr_idc : 2; 122*437bfbebSnyanmisaka RK_U32 sw_weight_pred_e : 1; 123*437bfbebSnyanmisaka RK_U32 sw_dir_8x8_infer_e : 1; 124*437bfbebSnyanmisaka RK_U32 sw_blackwhite_e : 1; 125*437bfbebSnyanmisaka RK_U32 sw_cabac_e : 1; 126*437bfbebSnyanmisaka } SwReg07; 127*437bfbebSnyanmisaka 128*437bfbebSnyanmisaka struct { 129*437bfbebSnyanmisaka RK_U32 sw_idr_pic_id : 16; 130*437bfbebSnyanmisaka RK_U32 sw_idr_pic_e : 1; 131*437bfbebSnyanmisaka RK_U32 sw_refpic_mk_len : 11; 132*437bfbebSnyanmisaka RK_U32 sw_8x8trans_flag_e : 1; 133*437bfbebSnyanmisaka RK_U32 sw_rdpic_cnt_pres : 1; 134*437bfbebSnyanmisaka RK_U32 sw_filt_ctrl_pres : 1; 135*437bfbebSnyanmisaka RK_U32 sw_const_intra_e : 1; 136*437bfbebSnyanmisaka } SwReg08; 137*437bfbebSnyanmisaka 138*437bfbebSnyanmisaka struct { 139*437bfbebSnyanmisaka RK_U32 sw_poc_length : 8; 140*437bfbebSnyanmisaka RK_U32 reserve0 : 6; 141*437bfbebSnyanmisaka RK_U32 sw_refidx0_active : 5; 142*437bfbebSnyanmisaka RK_U32 sw_refidx1_active : 5; 143*437bfbebSnyanmisaka RK_U32 sw_pps_id : 8; 144*437bfbebSnyanmisaka } SwReg09; 145*437bfbebSnyanmisaka 146*437bfbebSnyanmisaka struct { 147*437bfbebSnyanmisaka RK_U32 sw_diff_mv_base : 32; 148*437bfbebSnyanmisaka } SwReg10; 149*437bfbebSnyanmisaka 150*437bfbebSnyanmisaka RK_U32 SwReg11; 151*437bfbebSnyanmisaka 152*437bfbebSnyanmisaka struct { 153*437bfbebSnyanmisaka RK_U32 sw_rlc_vlc_base : 32; 154*437bfbebSnyanmisaka } SwReg12; 155*437bfbebSnyanmisaka 156*437bfbebSnyanmisaka struct { 157*437bfbebSnyanmisaka RK_U32 dec_out_st_adr : 32; 158*437bfbebSnyanmisaka } SwReg13; 159*437bfbebSnyanmisaka 160*437bfbebSnyanmisaka /* MPP passes fd of reference frame to kernel 161*437bfbebSnyanmisaka * with the whole register rather than higher 30-bit. 162*437bfbebSnyanmisaka * At the same time, the lower 2-bit will be assigned 163*437bfbebSnyanmisaka * by kernel. 164*437bfbebSnyanmisaka * */ 165*437bfbebSnyanmisaka struct { 166*437bfbebSnyanmisaka //RK_U32 sw_refer0_topc_e : 1; 167*437bfbebSnyanmisaka //RK_U32 sw_refer0_field_e : 1; 168*437bfbebSnyanmisaka RK_U32 sw_refer0_base : 32; 169*437bfbebSnyanmisaka } SwReg14; 170*437bfbebSnyanmisaka 171*437bfbebSnyanmisaka struct { 172*437bfbebSnyanmisaka //RK_U32 sw_refer1_topc_e : 1; 173*437bfbebSnyanmisaka //RK_U32 sw_refer1_field_e : 1; 174*437bfbebSnyanmisaka RK_U32 sw_refer1_base : 32; 175*437bfbebSnyanmisaka } SwReg15; 176*437bfbebSnyanmisaka 177*437bfbebSnyanmisaka struct { 178*437bfbebSnyanmisaka //RK_U32 sw_refer2_topc_e : 1; 179*437bfbebSnyanmisaka //RK_U32 sw_refer2_field_e : 1; 180*437bfbebSnyanmisaka RK_U32 sw_refer2_base : 32; 181*437bfbebSnyanmisaka } SwReg16; 182*437bfbebSnyanmisaka 183*437bfbebSnyanmisaka struct { 184*437bfbebSnyanmisaka //RK_U32 sw_refer3_topc_e : 1; 185*437bfbebSnyanmisaka //RK_U32 sw_refer3_field_e : 1; 186*437bfbebSnyanmisaka RK_U32 sw_refer3_base : 32; 187*437bfbebSnyanmisaka } SwReg17; 188*437bfbebSnyanmisaka 189*437bfbebSnyanmisaka struct { 190*437bfbebSnyanmisaka RK_U32 sw_prev_anc_type : 1; 191*437bfbebSnyanmisaka RK_U32 sw_mpeg4_vc1_rc : 1; 192*437bfbebSnyanmisaka RK_U32 sw_mv_accuracy_fwd : 1; 193*437bfbebSnyanmisaka RK_U32 sw_fcode_bwd_ver : 4; 194*437bfbebSnyanmisaka RK_U32 sw_fcode_bwd_hor : 4; 195*437bfbebSnyanmisaka RK_U32 sw_fcode_fwd_ver : 4; 196*437bfbebSnyanmisaka RK_U32 sw_fcode_fwd_hor : 4; 197*437bfbebSnyanmisaka RK_U32 sw_alt_scan_flag_e : 1; 198*437bfbebSnyanmisaka RK_U32 reserve0 : 12; 199*437bfbebSnyanmisaka } SwReg18; 200*437bfbebSnyanmisaka 201*437bfbebSnyanmisaka struct { 202*437bfbebSnyanmisaka //RK_U32 sw_refer5_topc_e : 1; 203*437bfbebSnyanmisaka //RK_U32 sw_refer5_field_e : 1; 204*437bfbebSnyanmisaka RK_U32 sw_refer5_base : 32; 205*437bfbebSnyanmisaka } SwReg19; 206*437bfbebSnyanmisaka 207*437bfbebSnyanmisaka struct { 208*437bfbebSnyanmisaka //RK_U32 sw_refer6_topc_e : 1; 209*437bfbebSnyanmisaka //RK_U32 sw_refer6_field_e : 1; 210*437bfbebSnyanmisaka RK_U32 sw_refer6_base : 32; 211*437bfbebSnyanmisaka } SwReg20; 212*437bfbebSnyanmisaka 213*437bfbebSnyanmisaka struct { 214*437bfbebSnyanmisaka //RK_U32 sw_refer7_topc_e : 1; 215*437bfbebSnyanmisaka //RK_U32 sw_refer7_field_e : 1; 216*437bfbebSnyanmisaka RK_U32 sw_refer7_base : 32; 217*437bfbebSnyanmisaka } SwReg21; 218*437bfbebSnyanmisaka 219*437bfbebSnyanmisaka 220*437bfbebSnyanmisaka RK_U32 SwReg22_33[12]; 221*437bfbebSnyanmisaka 222*437bfbebSnyanmisaka struct { 223*437bfbebSnyanmisaka RK_U32 reserve : 2; 224*437bfbebSnyanmisaka RK_U32 sw_pred_bc_tap_1_1 : 10; 225*437bfbebSnyanmisaka RK_U32 sw_pred_bc_tap_1_0 : 10; 226*437bfbebSnyanmisaka RK_U32 sw_pred_bc_tap_0_3 : 10; 227*437bfbebSnyanmisaka } SwReg34; 228*437bfbebSnyanmisaka 229*437bfbebSnyanmisaka RK_U32 SwReg35_39[5]; 230*437bfbebSnyanmisaka 231*437bfbebSnyanmisaka struct { 232*437bfbebSnyanmisaka RK_U32 sw_qtable_base : 32; 233*437bfbebSnyanmisaka } SwReg40; 234*437bfbebSnyanmisaka 235*437bfbebSnyanmisaka struct { 236*437bfbebSnyanmisaka RK_U32 sw_dir_mv_base : 32; 237*437bfbebSnyanmisaka } SwReg41; 238*437bfbebSnyanmisaka 239*437bfbebSnyanmisaka RK_U32 SwReg42_47[6]; 240*437bfbebSnyanmisaka 241*437bfbebSnyanmisaka struct { 242*437bfbebSnyanmisaka RK_U32 reserve0 : 15; 243*437bfbebSnyanmisaka RK_U32 sw_startmb_y : 8; 244*437bfbebSnyanmisaka RK_U32 sw_startmb_x : 9; 245*437bfbebSnyanmisaka } SwReg48; 246*437bfbebSnyanmisaka 247*437bfbebSnyanmisaka struct { 248*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 249*437bfbebSnyanmisaka RK_U32 sw_pred_bc_tap_0_2 : 10; 250*437bfbebSnyanmisaka RK_U32 sw_pred_bc_tap_0_1 : 10; 251*437bfbebSnyanmisaka RK_U32 sw_pred_bc_tap_0_0 : 10; 252*437bfbebSnyanmisaka } SwReg49; 253*437bfbebSnyanmisaka 254*437bfbebSnyanmisaka RK_U32 SwReg50; 255*437bfbebSnyanmisaka 256*437bfbebSnyanmisaka struct { 257*437bfbebSnyanmisaka RK_U32 sw_refbu_y_offset : 9; 258*437bfbebSnyanmisaka RK_U32 reserve0 : 3; 259*437bfbebSnyanmisaka RK_U32 sw_refbu_fparmod_e : 1; 260*437bfbebSnyanmisaka RK_U32 sw_refbu_eval_e : 1; 261*437bfbebSnyanmisaka RK_U32 sw_refbu_picid : 5; 262*437bfbebSnyanmisaka RK_U32 sw_refbu_thr : 12; 263*437bfbebSnyanmisaka RK_U32 sw_refbu_e : 1; 264*437bfbebSnyanmisaka } SwReg51; 265*437bfbebSnyanmisaka 266*437bfbebSnyanmisaka RK_U32 SwReg52_54[3]; 267*437bfbebSnyanmisaka 268*437bfbebSnyanmisaka struct { 269*437bfbebSnyanmisaka RK_U32 sw_apf_threshold : 14; 270*437bfbebSnyanmisaka RK_U32 reserve0 : 18; 271*437bfbebSnyanmisaka } SwReg55; 272*437bfbebSnyanmisaka 273*437bfbebSnyanmisaka RK_U32 SwReg56_100[45]; 274*437bfbebSnyanmisaka } M4vdVdpu1Regs_t; 275*437bfbebSnyanmisaka 276*437bfbebSnyanmisaka #endif /*__HAL_M4V_VDPU1_REG_TBL_H__*/ 277