1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2015 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_AVSD_REG_H__ 18*437bfbebSnyanmisaka #define __HAL_AVSD_REG_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "mpp_debug.h" 21*437bfbebSnyanmisaka #include "mpp_device.h" 22*437bfbebSnyanmisaka 23*437bfbebSnyanmisaka #include "parser_api.h" 24*437bfbebSnyanmisaka #include "hal_avsd_api.h" 25*437bfbebSnyanmisaka #include "avsd_syntax.h" 26*437bfbebSnyanmisaka 27*437bfbebSnyanmisaka #define AVSD_REGISTERS 60 28*437bfbebSnyanmisaka 29*437bfbebSnyanmisaka typedef struct { 30*437bfbebSnyanmisaka RK_U32 sw00; 31*437bfbebSnyanmisaka struct { 32*437bfbebSnyanmisaka RK_U32 dec_e : 1; 33*437bfbebSnyanmisaka RK_U32 reserve0 : 3; 34*437bfbebSnyanmisaka RK_U32 dec_irq_dis : 1; 35*437bfbebSnyanmisaka RK_U32 dec_abort_e : 1; 36*437bfbebSnyanmisaka RK_U32 reserve1 : 2; 37*437bfbebSnyanmisaka RK_U32 dec_irq : 1; 38*437bfbebSnyanmisaka RK_U32 reserve2 : 2; 39*437bfbebSnyanmisaka RK_U32 dec_abort_int : 1; 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 reserve3 : 1; 44*437bfbebSnyanmisaka RK_U32 dec_error_int : 1; 45*437bfbebSnyanmisaka RK_U32 reserve4 : 1; 46*437bfbebSnyanmisaka RK_U32 dec_timeout : 1; 47*437bfbebSnyanmisaka RK_U32 reserve5 : 5; 48*437bfbebSnyanmisaka RK_U32 dec_pic_inf : 1; 49*437bfbebSnyanmisaka RK_U32 reserve6 : 7; 50*437bfbebSnyanmisaka } sw01; 51*437bfbebSnyanmisaka struct { 52*437bfbebSnyanmisaka RK_U32 dec_max_burst : 5; 53*437bfbebSnyanmisaka RK_U32 dec_scmd_dis : 1; 54*437bfbebSnyanmisaka RK_U32 dec_adv_pre_dis : 1; 55*437bfbebSnyanmisaka RK_U32 tiled_mode_lsb : 1; 56*437bfbebSnyanmisaka RK_U32 dec_out_endian : 1; 57*437bfbebSnyanmisaka RK_U32 dec_in_endian : 1; 58*437bfbebSnyanmisaka RK_U32 dec_clk_gate_e : 1; 59*437bfbebSnyanmisaka RK_U32 dec_latency : 6; 60*437bfbebSnyanmisaka RK_U32 dec_out_tiled_e : 1; 61*437bfbebSnyanmisaka RK_U32 dec_data_disc_e : 1; 62*437bfbebSnyanmisaka RK_U32 dec_outswap32_e : 1; 63*437bfbebSnyanmisaka RK_U32 dec_inswap32_e : 1; 64*437bfbebSnyanmisaka RK_U32 dec_strendian_e : 1; 65*437bfbebSnyanmisaka RK_U32 dec_strswap32_e : 1; 66*437bfbebSnyanmisaka RK_U32 dec_timeout_e : 1; 67*437bfbebSnyanmisaka RK_U32 dec_axi_rd_id : 8; 68*437bfbebSnyanmisaka } sw02; 69*437bfbebSnyanmisaka struct { 70*437bfbebSnyanmisaka RK_U32 dec_axi_wr_id : 8; 71*437bfbebSnyanmisaka RK_U32 dec_ahb_hlock_e : 1; 72*437bfbebSnyanmisaka RK_U32 picord_count_e : 1; 73*437bfbebSnyanmisaka RK_U32 reserve0 : 1; 74*437bfbebSnyanmisaka RK_U32 reftopfirst_e : 1; 75*437bfbebSnyanmisaka RK_U32 write_mvs_e : 1; 76*437bfbebSnyanmisaka RK_U32 pic_fixed_quant : 1; 77*437bfbebSnyanmisaka RK_U32 filtering_dis : 1; 78*437bfbebSnyanmisaka RK_U32 dec_out_dis : 1; 79*437bfbebSnyanmisaka RK_U32 ref_topfield_e : 1; 80*437bfbebSnyanmisaka RK_U32 reserve1 : 1; 81*437bfbebSnyanmisaka RK_U32 fwd_interlace_e : 1; 82*437bfbebSnyanmisaka RK_U32 pic_topfiled_e : 1; 83*437bfbebSnyanmisaka RK_U32 pic_inter_e : 1; 84*437bfbebSnyanmisaka RK_U32 pic_b_e : 1; 85*437bfbebSnyanmisaka RK_U32 pic_fieldmode_e : 1; 86*437bfbebSnyanmisaka RK_U32 pic_interlace_e : 1; 87*437bfbebSnyanmisaka RK_U32 reserve2 : 2; 88*437bfbebSnyanmisaka RK_U32 skip_mode : 1; 89*437bfbebSnyanmisaka RK_U32 rlc_mode_e : 1; 90*437bfbebSnyanmisaka RK_U32 dec_mode : 4; 91*437bfbebSnyanmisaka } sw03; 92*437bfbebSnyanmisaka struct { 93*437bfbebSnyanmisaka RK_U32 pic_refer_flag : 1; 94*437bfbebSnyanmisaka RK_U32 reverse0 : 10; 95*437bfbebSnyanmisaka RK_U32 pic_mb_height_p : 8; 96*437bfbebSnyanmisaka RK_U32 mb_width_off : 4; 97*437bfbebSnyanmisaka RK_U32 pic_mb_width : 9; 98*437bfbebSnyanmisaka } sw04; 99*437bfbebSnyanmisaka struct { 100*437bfbebSnyanmisaka RK_U32 beta_offset : 5; 101*437bfbebSnyanmisaka RK_U32 alpha_offset : 5; 102*437bfbebSnyanmisaka RK_U32 reserve1 : 16; 103*437bfbebSnyanmisaka RK_U32 strm_start_bit : 6; 104*437bfbebSnyanmisaka } sw05; 105*437bfbebSnyanmisaka struct { 106*437bfbebSnyanmisaka RK_U32 stream_len : 24; 107*437bfbebSnyanmisaka RK_U32 stream_len_ext : 1; 108*437bfbebSnyanmisaka RK_U32 init_qp : 6; 109*437bfbebSnyanmisaka RK_U32 start_code_e : 1; 110*437bfbebSnyanmisaka } sw06; 111*437bfbebSnyanmisaka struct { 112*437bfbebSnyanmisaka RK_U32 reserve0 : 25; 113*437bfbebSnyanmisaka RK_U32 avs_h_ext : 1; 114*437bfbebSnyanmisaka RK_U32 reserve1 : 6; 115*437bfbebSnyanmisaka } sw07; 116*437bfbebSnyanmisaka RK_U32 sw08; 117*437bfbebSnyanmisaka RK_U32 sw09; 118*437bfbebSnyanmisaka RK_U32 sw10; 119*437bfbebSnyanmisaka RK_U32 sw11; 120*437bfbebSnyanmisaka struct { 121*437bfbebSnyanmisaka RK_U32 rlc_vlc_base; 122*437bfbebSnyanmisaka } sw12; 123*437bfbebSnyanmisaka struct { 124*437bfbebSnyanmisaka RK_U32 dec_out_base; 125*437bfbebSnyanmisaka } sw13; 126*437bfbebSnyanmisaka union { 127*437bfbebSnyanmisaka RK_U32 refer0_base; 128*437bfbebSnyanmisaka struct { 129*437bfbebSnyanmisaka RK_U32 refer0_topc_e : 1; 130*437bfbebSnyanmisaka RK_U32 refer0_field_e : 1; 131*437bfbebSnyanmisaka }; 132*437bfbebSnyanmisaka } sw14; 133*437bfbebSnyanmisaka union { 134*437bfbebSnyanmisaka RK_U32 refer1_base; 135*437bfbebSnyanmisaka struct { 136*437bfbebSnyanmisaka RK_U32 refer1_topc_e : 1; 137*437bfbebSnyanmisaka RK_U32 refer1_field_e : 1; 138*437bfbebSnyanmisaka }; 139*437bfbebSnyanmisaka } sw15; 140*437bfbebSnyanmisaka union { 141*437bfbebSnyanmisaka RK_U32 refer2_base; 142*437bfbebSnyanmisaka struct { 143*437bfbebSnyanmisaka RK_U32 refer2_topc_e : 1; 144*437bfbebSnyanmisaka RK_U32 refer2_field_e : 1; 145*437bfbebSnyanmisaka }; 146*437bfbebSnyanmisaka } sw16; 147*437bfbebSnyanmisaka union { 148*437bfbebSnyanmisaka RK_U32 refer3_base; 149*437bfbebSnyanmisaka struct { 150*437bfbebSnyanmisaka RK_U32 refer3_topc_e : 1; 151*437bfbebSnyanmisaka RK_U32 refer3_field_e : 1; 152*437bfbebSnyanmisaka }; 153*437bfbebSnyanmisaka } sw17; 154*437bfbebSnyanmisaka struct { 155*437bfbebSnyanmisaka RK_U32 prev_anc_type : 1; 156*437bfbebSnyanmisaka RK_U32 reverse0 : 31; 157*437bfbebSnyanmisaka } sw18; 158*437bfbebSnyanmisaka RK_U32 sw19_27[9]; 159*437bfbebSnyanmisaka struct { 160*437bfbebSnyanmisaka RK_U32 ref_invd_cur_0 : 16; 161*437bfbebSnyanmisaka RK_U32 ref_invd_cur_1 : 16; 162*437bfbebSnyanmisaka } sw28; 163*437bfbebSnyanmisaka struct { 164*437bfbebSnyanmisaka RK_U32 ref_invd_cur_2 : 16; 165*437bfbebSnyanmisaka RK_U32 ref_invd_cur_3 : 16; 166*437bfbebSnyanmisaka } sw29; 167*437bfbebSnyanmisaka struct { 168*437bfbebSnyanmisaka RK_U32 ref_dist_cur_0 : 16; 169*437bfbebSnyanmisaka RK_U32 ref_dist_cur_1 : 16; 170*437bfbebSnyanmisaka } sw30; 171*437bfbebSnyanmisaka struct { 172*437bfbebSnyanmisaka RK_U32 ref_dist_cur_2 : 16; 173*437bfbebSnyanmisaka RK_U32 ref_dist_cur_3 : 16; 174*437bfbebSnyanmisaka } sw31; 175*437bfbebSnyanmisaka struct { 176*437bfbebSnyanmisaka RK_U32 ref_invd_col_0 : 16; 177*437bfbebSnyanmisaka RK_U32 ref_invd_col_1 : 16; 178*437bfbebSnyanmisaka } sw32; 179*437bfbebSnyanmisaka struct { 180*437bfbebSnyanmisaka RK_U32 ref_invd_col_2 : 16; 181*437bfbebSnyanmisaka RK_U32 ref_invd_col_3 : 16; 182*437bfbebSnyanmisaka } sw33; 183*437bfbebSnyanmisaka struct { 184*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 185*437bfbebSnyanmisaka RK_U32 pred_bc_tap_1_1 : 10; 186*437bfbebSnyanmisaka RK_U32 pred_bc_tap_1_0 : 10; 187*437bfbebSnyanmisaka RK_U32 pred_bc_tap_0_3 : 10; 188*437bfbebSnyanmisaka } sw34; 189*437bfbebSnyanmisaka struct { 190*437bfbebSnyanmisaka RK_U32 reserve0 : 12; 191*437bfbebSnyanmisaka RK_U32 pred_bc_tap_1_3 : 10; 192*437bfbebSnyanmisaka RK_U32 pred_bc_tap_1_2 : 10; 193*437bfbebSnyanmisaka } sw35; 194*437bfbebSnyanmisaka RK_U32 sw36_40[5]; 195*437bfbebSnyanmisaka struct { 196*437bfbebSnyanmisaka RK_U32 dir_mv_base : 32; 197*437bfbebSnyanmisaka } sw41; 198*437bfbebSnyanmisaka struct { 199*437bfbebSnyanmisaka RK_U32 ref_delta_cur_3 : 3; 200*437bfbebSnyanmisaka RK_U32 ref_delta_cur_2 : 3; 201*437bfbebSnyanmisaka RK_U32 ref_delta_cur_1 : 3; 202*437bfbebSnyanmisaka RK_U32 ref_delta_cur_0 : 3; 203*437bfbebSnyanmisaka RK_U32 ref_delta_col_3 : 3; 204*437bfbebSnyanmisaka RK_U32 ref_delta_col_2 : 3; 205*437bfbebSnyanmisaka RK_U32 ref_delta_col_1 : 3; 206*437bfbebSnyanmisaka RK_U32 ref_delta_col_0 : 3; 207*437bfbebSnyanmisaka RK_U32 weight_qp_1 : 8; 208*437bfbebSnyanmisaka } sw42; 209*437bfbebSnyanmisaka struct { 210*437bfbebSnyanmisaka RK_U32 weight_qp_5 : 8; 211*437bfbebSnyanmisaka RK_U32 weight_qp_4 : 8; 212*437bfbebSnyanmisaka RK_U32 weight_qp_3 : 8; 213*437bfbebSnyanmisaka RK_U32 weight_qp_2 : 8; 214*437bfbebSnyanmisaka } sw43; 215*437bfbebSnyanmisaka struct { 216*437bfbebSnyanmisaka RK_U32 weight_qp_0 : 8; 217*437bfbebSnyanmisaka RK_U32 qp_delta_cr : 6; 218*437bfbebSnyanmisaka RK_U32 qp_delta_cb : 6; 219*437bfbebSnyanmisaka RK_U32 pb_field_enhance_e : 1; 220*437bfbebSnyanmisaka RK_U32 no_fwd_ref_e : 1; 221*437bfbebSnyanmisaka RK_U32 avs_aec_e : 1; 222*437bfbebSnyanmisaka RK_U32 weight_qp_model : 2; 223*437bfbebSnyanmisaka RK_U32 weight_qp_e : 1; 224*437bfbebSnyanmisaka RK_U32 dec_avsp_ena : 1; 225*437bfbebSnyanmisaka RK_U32 reserve0 : 5; 226*437bfbebSnyanmisaka } sw44; 227*437bfbebSnyanmisaka struct { 228*437bfbebSnyanmisaka RK_U32 dir_mv_base2 : 32; 229*437bfbebSnyanmisaka } sw45; 230*437bfbebSnyanmisaka RK_U32 sw46; 231*437bfbebSnyanmisaka RK_U32 sw47; 232*437bfbebSnyanmisaka struct { 233*437bfbebSnyanmisaka RK_U32 reserve0 : 14; 234*437bfbebSnyanmisaka RK_U32 startmb_y : 9; 235*437bfbebSnyanmisaka RK_U32 startmb_x : 9; 236*437bfbebSnyanmisaka } sw48; 237*437bfbebSnyanmisaka struct { 238*437bfbebSnyanmisaka RK_U32 reserve0 : 2; 239*437bfbebSnyanmisaka RK_U32 pred_bc_tap_0_2 : 10; 240*437bfbebSnyanmisaka RK_U32 pred_bc_tap_0_1 : 10; 241*437bfbebSnyanmisaka RK_U32 pred_bc_tap_0_0 : 10; 242*437bfbebSnyanmisaka } sw49; 243*437bfbebSnyanmisaka RK_U32 sw50; 244*437bfbebSnyanmisaka struct { 245*437bfbebSnyanmisaka RK_U32 refbu_y_offset : 9; 246*437bfbebSnyanmisaka RK_U32 reserve0 : 3; 247*437bfbebSnyanmisaka RK_U32 refbu_fparmod_e : 1; 248*437bfbebSnyanmisaka RK_U32 refbu_eval_e : 1; 249*437bfbebSnyanmisaka RK_U32 refbu_picid : 5; 250*437bfbebSnyanmisaka RK_U32 refbu_thr : 12; 251*437bfbebSnyanmisaka RK_U32 refbu_e : 1; 252*437bfbebSnyanmisaka } sw51; 253*437bfbebSnyanmisaka struct { 254*437bfbebSnyanmisaka RK_U32 refbu_intra_sum : 16; 255*437bfbebSnyanmisaka RK_U32 refbu_hit_sum : 16; 256*437bfbebSnyanmisaka } sw52; 257*437bfbebSnyanmisaka struct { 258*437bfbebSnyanmisaka RK_U32 refbu_y_mv_sum : 22; 259*437bfbebSnyanmisaka RK_U32 reserve0 : 10; 260*437bfbebSnyanmisaka } sw53; 261*437bfbebSnyanmisaka RK_U32 sw54; 262*437bfbebSnyanmisaka struct { 263*437bfbebSnyanmisaka RK_U32 apf_threshold : 14; 264*437bfbebSnyanmisaka RK_U32 refbu2_picid : 5; 265*437bfbebSnyanmisaka RK_U32 refbu2_thr : 12; 266*437bfbebSnyanmisaka RK_U32 refbu2_buf_e : 1; 267*437bfbebSnyanmisaka } sw55; 268*437bfbebSnyanmisaka 269*437bfbebSnyanmisaka struct { 270*437bfbebSnyanmisaka RK_U32 refbu_bot_sum : 16; 271*437bfbebSnyanmisaka RK_U32 refbu_top_sum : 16; 272*437bfbebSnyanmisaka } sw56; 273*437bfbebSnyanmisaka RK_U32 sw57; 274*437bfbebSnyanmisaka struct { 275*437bfbebSnyanmisaka RK_U32 reserve0 : 31; 276*437bfbebSnyanmisaka RK_U32 serv_merge_dis : 1; 277*437bfbebSnyanmisaka } sw58; 278*437bfbebSnyanmisaka RK_U32 sw59; 279*437bfbebSnyanmisaka } AvsdPlusRegs_t; 280*437bfbebSnyanmisaka 281*437bfbebSnyanmisaka #endif /*__HAL_AVSD_PLUS_REG_H__*/ 282