1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2016 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_M2VD_VDPU2_REG_H__ 18*437bfbebSnyanmisaka #define __HAL_M2VD_VDPU2_REG_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "rk_type.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka extern RK_U32 m2vh_debug; 23*437bfbebSnyanmisaka 24*437bfbebSnyanmisaka #define M2VD_VDPU2_REG_NUM 159 25*437bfbebSnyanmisaka 26*437bfbebSnyanmisaka typedef struct M2vdVdpu2Reg_t { 27*437bfbebSnyanmisaka RK_U32 ppReg[50]; 28*437bfbebSnyanmisaka 29*437bfbebSnyanmisaka struct { 30*437bfbebSnyanmisaka RK_U32 dec_out_tiled_e : 1; 31*437bfbebSnyanmisaka RK_U32 dec_latency : 6; 32*437bfbebSnyanmisaka RK_U32 pic_fixed_quant : 1; 33*437bfbebSnyanmisaka RK_U32 filtering_dis : 1; 34*437bfbebSnyanmisaka RK_U32 skip_mode : 1; 35*437bfbebSnyanmisaka RK_U32 dec_scmd_dis : 1; 36*437bfbebSnyanmisaka RK_U32 dec_adv_pre_dis : 1; 37*437bfbebSnyanmisaka RK_U32 priority_mode : 1; //chang 38*437bfbebSnyanmisaka RK_U32 refbu2_thr : 12; 39*437bfbebSnyanmisaka RK_U32 refbu2_picid : 5; 40*437bfbebSnyanmisaka RK_U32 reserve1 : 2; 41*437bfbebSnyanmisaka } sw50; 42*437bfbebSnyanmisaka 43*437bfbebSnyanmisaka struct { 44*437bfbebSnyanmisaka RK_U32 stream_len : 24; 45*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 46*437bfbebSnyanmisaka RK_U32 init_qp : 6; 47*437bfbebSnyanmisaka RK_U32 reserve2 : 1; 48*437bfbebSnyanmisaka } sw51; 49*437bfbebSnyanmisaka 50*437bfbebSnyanmisaka struct { 51*437bfbebSnyanmisaka RK_U32 startmb_y : 8; 52*437bfbebSnyanmisaka RK_U32 startmb_x : 9; 53*437bfbebSnyanmisaka RK_U32 apf_threshold : 14; 54*437bfbebSnyanmisaka RK_U32 reserve : 1; 55*437bfbebSnyanmisaka } sw52; 56*437bfbebSnyanmisaka 57*437bfbebSnyanmisaka struct { 58*437bfbebSnyanmisaka RK_U32 sw_dec_mode; 59*437bfbebSnyanmisaka } sw53; 60*437bfbebSnyanmisaka 61*437bfbebSnyanmisaka struct { 62*437bfbebSnyanmisaka RK_U32 dec_in_endian : 1; 63*437bfbebSnyanmisaka RK_U32 dec_out_endian : 1; 64*437bfbebSnyanmisaka RK_U32 dec_inswap32_e : 1; 65*437bfbebSnyanmisaka RK_U32 dec_outswap32_e : 1; 66*437bfbebSnyanmisaka RK_U32 dec_strswap32_e : 1; 67*437bfbebSnyanmisaka RK_U32 dec_strendian_e : 1; 68*437bfbebSnyanmisaka RK_U32 reserve3 : 26; 69*437bfbebSnyanmisaka } sw54; 70*437bfbebSnyanmisaka 71*437bfbebSnyanmisaka struct { 72*437bfbebSnyanmisaka RK_U32 dec_irq : 1; 73*437bfbebSnyanmisaka RK_U32 dec_irq_dis : 1; 74*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 75*437bfbebSnyanmisaka RK_U32 dec_rdy_int : 1; 76*437bfbebSnyanmisaka RK_U32 dec_bus_int : 1; 77*437bfbebSnyanmisaka RK_U32 dec_buffer_int : 1; 78*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 79*437bfbebSnyanmisaka RK_U32 dec_aso_int : 1; 80*437bfbebSnyanmisaka RK_U32 dec_slice_int : 1; 81*437bfbebSnyanmisaka RK_U32 dec_pic_inf : 1; 82*437bfbebSnyanmisaka RK_U32 reserve2 : 1; 83*437bfbebSnyanmisaka RK_U32 dec_error_int : 1; 84*437bfbebSnyanmisaka RK_U32 dec_timeout : 1; 85*437bfbebSnyanmisaka RK_U32 reserve3 : 18; 86*437bfbebSnyanmisaka } sw55; 87*437bfbebSnyanmisaka 88*437bfbebSnyanmisaka struct { 89*437bfbebSnyanmisaka RK_U32 dec_axi_rn_id : 8; 90*437bfbebSnyanmisaka RK_U32 dec_axi_wr_id : 8; 91*437bfbebSnyanmisaka RK_U32 dec_max_burst : 5; 92*437bfbebSnyanmisaka RK_U32 resever : 1; 93*437bfbebSnyanmisaka RK_U32 dec_data_disc_e : 1; 94*437bfbebSnyanmisaka RK_U32 resever1 : 9; 95*437bfbebSnyanmisaka } sw56; 96*437bfbebSnyanmisaka 97*437bfbebSnyanmisaka struct { 98*437bfbebSnyanmisaka RK_U32 dec_e : 1; 99*437bfbebSnyanmisaka RK_U32 refbu2_buf_e : 1; 100*437bfbebSnyanmisaka RK_U32 dec_out_dis : 1; 101*437bfbebSnyanmisaka RK_U32 resever : 1; 102*437bfbebSnyanmisaka RK_U32 dec_clk_gate_e : 1; 103*437bfbebSnyanmisaka RK_U32 dec_timeout_e : 1; 104*437bfbebSnyanmisaka RK_U32 picord_count_e : 1; 105*437bfbebSnyanmisaka RK_U32 seq_mbaff_e : 1; 106*437bfbebSnyanmisaka RK_U32 reftopfirst_e : 1; 107*437bfbebSnyanmisaka RK_U32 ref_topfield_e : 1; 108*437bfbebSnyanmisaka RK_U32 write_mvs_e : 1; 109*437bfbebSnyanmisaka RK_U32 sorenson_e : 1; 110*437bfbebSnyanmisaka RK_U32 fwd_interlace_e : 1; 111*437bfbebSnyanmisaka RK_U32 pic_topfield_e : 1; 112*437bfbebSnyanmisaka RK_U32 pic_inter_e : 1; 113*437bfbebSnyanmisaka RK_U32 pic_b_e : 1; 114*437bfbebSnyanmisaka RK_U32 pic_fieldmode_e : 1; 115*437bfbebSnyanmisaka RK_U32 pic_interlace_e : 1; 116*437bfbebSnyanmisaka RK_U32 pjpeg_e : 1; 117*437bfbebSnyanmisaka RK_U32 divx3_e : 1; 118*437bfbebSnyanmisaka RK_U32 rlc_mode_e : 1; 119*437bfbebSnyanmisaka RK_U32 ch_8pix_ileav_e : 1; 120*437bfbebSnyanmisaka RK_U32 start_code_e : 1; 121*437bfbebSnyanmisaka RK_U32 resever1 : 8; 122*437bfbebSnyanmisaka RK_U32 dec_ahb_hlock_e : 1; 123*437bfbebSnyanmisaka 124*437bfbebSnyanmisaka } sw57; 125*437bfbebSnyanmisaka 126*437bfbebSnyanmisaka RK_U32 reserve0[3]; 127*437bfbebSnyanmisaka 128*437bfbebSnyanmisaka struct { 129*437bfbebSnyanmisaka RK_U32 slice_table; 130*437bfbebSnyanmisaka } sw61; 131*437bfbebSnyanmisaka 132*437bfbebSnyanmisaka struct { 133*437bfbebSnyanmisaka RK_U32 directmv_reg; 134*437bfbebSnyanmisaka } sw62; 135*437bfbebSnyanmisaka 136*437bfbebSnyanmisaka struct { 137*437bfbebSnyanmisaka RK_U32 cur_pic_base; 138*437bfbebSnyanmisaka } sw63; 139*437bfbebSnyanmisaka 140*437bfbebSnyanmisaka struct { 141*437bfbebSnyanmisaka RK_U32 VLC_base; 142*437bfbebSnyanmisaka } sw64; 143*437bfbebSnyanmisaka 144*437bfbebSnyanmisaka RK_U32 reserve1[55]; 145*437bfbebSnyanmisaka 146*437bfbebSnyanmisaka struct { 147*437bfbebSnyanmisaka RK_U32 ref_frames : 5; 148*437bfbebSnyanmisaka RK_U32 topfieldfirst_e : 1; 149*437bfbebSnyanmisaka RK_U32 alt_scan_e : 1; 150*437bfbebSnyanmisaka RK_U32 mb_height_off : 4; 151*437bfbebSnyanmisaka RK_U32 pic_mb_height_p : 8; 152*437bfbebSnyanmisaka RK_U32 mb_width_off : 4; 153*437bfbebSnyanmisaka RK_U32 pic_mb_width : 9; 154*437bfbebSnyanmisaka } sw120; 155*437bfbebSnyanmisaka 156*437bfbebSnyanmisaka RK_U32 reserve2; 157*437bfbebSnyanmisaka 158*437bfbebSnyanmisaka struct { 159*437bfbebSnyanmisaka RK_U32 frame_pred_dct : 1; 160*437bfbebSnyanmisaka RK_U32 intra_vlc_tab : 1; 161*437bfbebSnyanmisaka RK_U32 intra_dc_prec : 2; 162*437bfbebSnyanmisaka RK_U32 con_mv_e : 1; 163*437bfbebSnyanmisaka RK_U32 reserve : 19; 164*437bfbebSnyanmisaka RK_U32 qscale_type : 1; 165*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 166*437bfbebSnyanmisaka RK_U32 stream_start_bit : 6; 167*437bfbebSnyanmisaka } sw122; 168*437bfbebSnyanmisaka 169*437bfbebSnyanmisaka RK_U32 reserve3[8]; 170*437bfbebSnyanmisaka 171*437bfbebSnyanmisaka struct { 172*437bfbebSnyanmisaka RK_U32 ref0; 173*437bfbebSnyanmisaka } sw131; 174*437bfbebSnyanmisaka 175*437bfbebSnyanmisaka RK_U32 reserve4[2]; 176*437bfbebSnyanmisaka 177*437bfbebSnyanmisaka struct { 178*437bfbebSnyanmisaka RK_U32 ref2; 179*437bfbebSnyanmisaka } sw134; 180*437bfbebSnyanmisaka 181*437bfbebSnyanmisaka struct { 182*437bfbebSnyanmisaka RK_U32 ref3; 183*437bfbebSnyanmisaka } sw135; 184*437bfbebSnyanmisaka 185*437bfbebSnyanmisaka struct { 186*437bfbebSnyanmisaka RK_U32 reserve : 1; 187*437bfbebSnyanmisaka RK_U32 mv_accuracy_bwd : 1; 188*437bfbebSnyanmisaka RK_U32 mv_accuracy_fwd : 1; 189*437bfbebSnyanmisaka RK_U32 fcode_bwd_ver : 4; 190*437bfbebSnyanmisaka RK_U32 fcode_bwd_hor : 4; 191*437bfbebSnyanmisaka RK_U32 fcode_fwd_ver : 4; 192*437bfbebSnyanmisaka RK_U32 fcode_fwd_hor : 4; 193*437bfbebSnyanmisaka RK_U32 alt_scan_flag_e : 1; 194*437bfbebSnyanmisaka RK_U32 reserve1 : 12; 195*437bfbebSnyanmisaka } sw136; 196*437bfbebSnyanmisaka 197*437bfbebSnyanmisaka RK_U32 reserve5[11]; 198*437bfbebSnyanmisaka 199*437bfbebSnyanmisaka struct { 200*437bfbebSnyanmisaka RK_U32 ref1; 201*437bfbebSnyanmisaka 202*437bfbebSnyanmisaka } sw148; 203*437bfbebSnyanmisaka 204*437bfbebSnyanmisaka RK_U32 reserve6[10]; 205*437bfbebSnyanmisaka 206*437bfbebSnyanmisaka } M2vdVdpu2Reg; 207*437bfbebSnyanmisaka 208*437bfbebSnyanmisaka #endif 209