1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2018 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_VDPU1_REG_H__ 18*437bfbebSnyanmisaka #define __HAL_M2VD_VDPU1_REG_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "rk_type.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka #define M2VD_VDPU1_REG_NUM (101) 23*437bfbebSnyanmisaka 24*437bfbebSnyanmisaka typedef struct { 25*437bfbebSnyanmisaka struct { 26*437bfbebSnyanmisaka RK_U32 build_version : 3; 27*437bfbebSnyanmisaka RK_U32 product_IDen : 1; 28*437bfbebSnyanmisaka RK_U32 minor_version : 8; 29*437bfbebSnyanmisaka RK_U32 major_version : 4; 30*437bfbebSnyanmisaka RK_U32 product_numer : 16; 31*437bfbebSnyanmisaka } sw00; 32*437bfbebSnyanmisaka 33*437bfbebSnyanmisaka struct { 34*437bfbebSnyanmisaka RK_U32 dec_e : 1; 35*437bfbebSnyanmisaka RK_U32 reserve0 : 3; 36*437bfbebSnyanmisaka RK_U32 dec_irq_dis : 1; 37*437bfbebSnyanmisaka RK_U32 reserve1 : 3; 38*437bfbebSnyanmisaka RK_U32 dec_irq : 1; 39*437bfbebSnyanmisaka RK_U32 reserve2 : 3; 40*437bfbebSnyanmisaka RK_U32 dec_rdy_int : 1; 41*437bfbebSnyanmisaka RK_U32 dec_bus_int : 1; 42*437bfbebSnyanmisaka RK_U32 dec_buffer_int : 1; 43*437bfbebSnyanmisaka RK_U32 dec_aso_int : 1; 44*437bfbebSnyanmisaka RK_U32 dec_error_int : 1; 45*437bfbebSnyanmisaka RK_U32 dec_slice_int : 1; 46*437bfbebSnyanmisaka RK_U32 dec_timeout : 1; 47*437bfbebSnyanmisaka RK_U32 reserve3 : 5; 48*437bfbebSnyanmisaka RK_U32 dec_pic_inf : 1; 49*437bfbebSnyanmisaka RK_U32 reserve4 : 7; 50*437bfbebSnyanmisaka } sw01; 51*437bfbebSnyanmisaka 52*437bfbebSnyanmisaka struct { 53*437bfbebSnyanmisaka RK_U32 dec_max_burst : 5; 54*437bfbebSnyanmisaka RK_U32 dec_scmd_dis : 1; 55*437bfbebSnyanmisaka RK_U32 dec_adv_pre_dis : 1; 56*437bfbebSnyanmisaka RK_U32 priority_mode : 1; //chang 57*437bfbebSnyanmisaka RK_U32 dec_out_endian : 1; 58*437bfbebSnyanmisaka RK_U32 dec_in_endian : 1; 59*437bfbebSnyanmisaka RK_U32 dec_clk_gate_e : 1; 60*437bfbebSnyanmisaka RK_U32 dec_latency : 6; 61*437bfbebSnyanmisaka RK_U32 dec_out_tiled_e : 1; 62*437bfbebSnyanmisaka RK_U32 dec_data_disc_e : 1; 63*437bfbebSnyanmisaka RK_U32 dec_outswap32_e : 1; 64*437bfbebSnyanmisaka RK_U32 dec_inswap32_e : 1; 65*437bfbebSnyanmisaka RK_U32 dec_strendian_e : 1; 66*437bfbebSnyanmisaka RK_U32 dec_strswap32_e : 1; 67*437bfbebSnyanmisaka RK_U32 dec_timeout_e : 1; 68*437bfbebSnyanmisaka RK_U32 dec_axi_rn_id : 8; 69*437bfbebSnyanmisaka } sw02; 70*437bfbebSnyanmisaka 71*437bfbebSnyanmisaka struct { 72*437bfbebSnyanmisaka RK_U32 dec_axi_wr_id : 8; 73*437bfbebSnyanmisaka RK_U32 dec_ahb_hlock_e : 1; 74*437bfbebSnyanmisaka RK_U32 picord_count_e : 1; 75*437bfbebSnyanmisaka RK_U32 seq_mbaff_e : 1; 76*437bfbebSnyanmisaka RK_U32 reftopfirst_e : 1; 77*437bfbebSnyanmisaka RK_U32 write_mvs_e : 1; 78*437bfbebSnyanmisaka RK_U32 pic_fixed_quant : 1; 79*437bfbebSnyanmisaka RK_U32 filtering_dis : 1; 80*437bfbebSnyanmisaka RK_U32 dec_out_dis : 1; 81*437bfbebSnyanmisaka RK_U32 ref_topfield_e : 1; 82*437bfbebSnyanmisaka RK_U32 sorenson_e : 1; 83*437bfbebSnyanmisaka RK_U32 fwd_interlace_e : 1; 84*437bfbebSnyanmisaka RK_U32 pic_topfield_e : 1; 85*437bfbebSnyanmisaka RK_U32 pic_inter_e : 1; 86*437bfbebSnyanmisaka RK_U32 pic_b_e : 1; 87*437bfbebSnyanmisaka RK_U32 pic_fieldmode_e : 1; 88*437bfbebSnyanmisaka RK_U32 pic_interlace_e : 1; 89*437bfbebSnyanmisaka RK_U32 pjpeg_e : 1; 90*437bfbebSnyanmisaka RK_U32 divx3_e : 1; 91*437bfbebSnyanmisaka RK_U32 skip_mode : 1; 92*437bfbebSnyanmisaka RK_U32 rlc_mode_e : 1; 93*437bfbebSnyanmisaka RK_U32 dec_mode : 4; 94*437bfbebSnyanmisaka } sw03; 95*437bfbebSnyanmisaka 96*437bfbebSnyanmisaka struct { 97*437bfbebSnyanmisaka RK_U32 ref_frames : 5; 98*437bfbebSnyanmisaka RK_U32 topfieldfirst_e : 1; 99*437bfbebSnyanmisaka RK_U32 alt_scan_e : 1; 100*437bfbebSnyanmisaka RK_U32 mb_height_off : 4; 101*437bfbebSnyanmisaka RK_U32 pic_mb_height_p : 8; 102*437bfbebSnyanmisaka RK_U32 mb_width_off : 4; 103*437bfbebSnyanmisaka RK_U32 pic_mb_width : 9; 104*437bfbebSnyanmisaka } sw04; 105*437bfbebSnyanmisaka 106*437bfbebSnyanmisaka struct { 107*437bfbebSnyanmisaka RK_U32 frame_pred_dct : 1; 108*437bfbebSnyanmisaka RK_U32 intra_vlc_tab : 1; 109*437bfbebSnyanmisaka RK_U32 intra_dc_prec : 2; 110*437bfbebSnyanmisaka RK_U32 con_mv_e : 1; 111*437bfbebSnyanmisaka RK_U32 reserve : 19; 112*437bfbebSnyanmisaka RK_U32 qscale_type : 1; 113*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 114*437bfbebSnyanmisaka RK_U32 stream_start_bit : 6; 115*437bfbebSnyanmisaka } sw05; 116*437bfbebSnyanmisaka 117*437bfbebSnyanmisaka struct { 118*437bfbebSnyanmisaka RK_U32 stream_len : 24; 119*437bfbebSnyanmisaka RK_U32 ch_8pix_ileav_e : 1; 120*437bfbebSnyanmisaka RK_U32 init_qp : 6; 121*437bfbebSnyanmisaka RK_U32 start_code_e : 1; 122*437bfbebSnyanmisaka } sw06; 123*437bfbebSnyanmisaka 124*437bfbebSnyanmisaka RK_U32 Reg07_11[5]; 125*437bfbebSnyanmisaka 126*437bfbebSnyanmisaka struct { 127*437bfbebSnyanmisaka RK_U32 rlc_vlc_base : 32; 128*437bfbebSnyanmisaka } sw12; 129*437bfbebSnyanmisaka 130*437bfbebSnyanmisaka struct { 131*437bfbebSnyanmisaka RK_U32 dec_out_base : 32; 132*437bfbebSnyanmisaka } sw13; 133*437bfbebSnyanmisaka 134*437bfbebSnyanmisaka struct { 135*437bfbebSnyanmisaka RK_U32 refer0_base : 32; 136*437bfbebSnyanmisaka } sw14; 137*437bfbebSnyanmisaka 138*437bfbebSnyanmisaka struct { 139*437bfbebSnyanmisaka RK_U32 refer1_base : 32; 140*437bfbebSnyanmisaka } sw15; 141*437bfbebSnyanmisaka 142*437bfbebSnyanmisaka struct { 143*437bfbebSnyanmisaka RK_U32 refer2_base : 32; 144*437bfbebSnyanmisaka } sw16; 145*437bfbebSnyanmisaka 146*437bfbebSnyanmisaka struct { 147*437bfbebSnyanmisaka RK_U32 refer3_base : 32; 148*437bfbebSnyanmisaka } sw17; 149*437bfbebSnyanmisaka 150*437bfbebSnyanmisaka struct { 151*437bfbebSnyanmisaka RK_U32 reserve : 1; 152*437bfbebSnyanmisaka RK_U32 mv_accuracy_bwd : 1; 153*437bfbebSnyanmisaka RK_U32 mv_accuracy_fwd : 1; 154*437bfbebSnyanmisaka RK_U32 fcode_bwd_ver : 4; 155*437bfbebSnyanmisaka RK_U32 fcode_bwd_hor : 4; 156*437bfbebSnyanmisaka RK_U32 fcode_fwd_ver : 4; 157*437bfbebSnyanmisaka RK_U32 fcode_fwd_hor : 4; 158*437bfbebSnyanmisaka RK_U32 alt_scan_flag_e : 1; 159*437bfbebSnyanmisaka RK_U32 reserve1 : 12; 160*437bfbebSnyanmisaka } sw18; 161*437bfbebSnyanmisaka 162*437bfbebSnyanmisaka RK_U32 sw19_39[21]; 163*437bfbebSnyanmisaka 164*437bfbebSnyanmisaka struct { 165*437bfbebSnyanmisaka RK_U32 qtable_base : 32; 166*437bfbebSnyanmisaka } sw40; 167*437bfbebSnyanmisaka 168*437bfbebSnyanmisaka struct { 169*437bfbebSnyanmisaka RK_U32 dir_mv_base : 32; 170*437bfbebSnyanmisaka } sw41; 171*437bfbebSnyanmisaka 172*437bfbebSnyanmisaka RK_U32 sw42_47[6]; 173*437bfbebSnyanmisaka 174*437bfbebSnyanmisaka struct { 175*437bfbebSnyanmisaka RK_U32 reserve : 15; 176*437bfbebSnyanmisaka RK_U32 startmb_y : 8; 177*437bfbebSnyanmisaka RK_U32 startmb_x : 9; 178*437bfbebSnyanmisaka } sw48; 179*437bfbebSnyanmisaka 180*437bfbebSnyanmisaka RK_U32 sw49_50[2]; 181*437bfbebSnyanmisaka 182*437bfbebSnyanmisaka struct { 183*437bfbebSnyanmisaka RK_U32 refbu_y_offset : 9; 184*437bfbebSnyanmisaka RK_U32 reserve0 : 3; 185*437bfbebSnyanmisaka RK_U32 refbu_fparmod_e : 1; 186*437bfbebSnyanmisaka RK_U32 refbu_eval_e : 1; 187*437bfbebSnyanmisaka RK_U32 refbu_picid : 5; 188*437bfbebSnyanmisaka RK_U32 refbu_thr : 12; 189*437bfbebSnyanmisaka RK_U32 refbu_e : 1; 190*437bfbebSnyanmisaka } sw51; 191*437bfbebSnyanmisaka 192*437bfbebSnyanmisaka struct { 193*437bfbebSnyanmisaka RK_U32 refbu_intra_sum : 16; 194*437bfbebSnyanmisaka RK_U32 refbu_hit_sum : 16; 195*437bfbebSnyanmisaka } sw52; 196*437bfbebSnyanmisaka 197*437bfbebSnyanmisaka RK_U32 sw53_54[2]; 198*437bfbebSnyanmisaka 199*437bfbebSnyanmisaka struct { 200*437bfbebSnyanmisaka RK_U32 apf_threshold : 14; 201*437bfbebSnyanmisaka RK_U32 refbu2_picid : 5; 202*437bfbebSnyanmisaka RK_U32 refbu2_thr : 12; 203*437bfbebSnyanmisaka RK_U32 refbu2_buf_e : 1; 204*437bfbebSnyanmisaka } sw55; 205*437bfbebSnyanmisaka 206*437bfbebSnyanmisaka RK_U32 sw56_100[45]; 207*437bfbebSnyanmisaka 208*437bfbebSnyanmisaka } M2vdVdpu1Reg_t; 209*437bfbebSnyanmisaka 210*437bfbebSnyanmisaka #endif // __HAL_M2VD_VDPU1_REG_H__ 211