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 * @file hal_h265d_reg.h 20*437bfbebSnyanmisaka * @brief 21*437bfbebSnyanmisaka * @author csy(csy@rock-chips.com) 22*437bfbebSnyanmisaka 23*437bfbebSnyanmisaka * @version 1.0.0 24*437bfbebSnyanmisaka * @history 25*437bfbebSnyanmisaka * 2015.7.15 : Create 26*437bfbebSnyanmisaka */ 27*437bfbebSnyanmisaka 28*437bfbebSnyanmisaka #ifndef __HAL_H265D_REG_H__ 29*437bfbebSnyanmisaka #define __HAL_H265D_REG_H__ 30*437bfbebSnyanmisaka 31*437bfbebSnyanmisaka #include "rk_type.h" 32*437bfbebSnyanmisaka 33*437bfbebSnyanmisaka #define HEVC_DECODER_REG_NUM (48) 34*437bfbebSnyanmisaka #define RKVDEC_REG_PERF_CYCLE_INDEX (64) 35*437bfbebSnyanmisaka 36*437bfbebSnyanmisaka #define RKVDEC_HEVC_REGISTERS (68) 37*437bfbebSnyanmisaka #define RKVDEC_V1_REGISTERS (78) 38*437bfbebSnyanmisaka #define V345_HEVC_REGISTERS (108) 39*437bfbebSnyanmisaka 40*437bfbebSnyanmisaka typedef struct RKV_HEVC_REG_END { 41*437bfbebSnyanmisaka RK_U32 performance_cycle; //65 42*437bfbebSnyanmisaka RK_U32 axi_ddr_rdata; 43*437bfbebSnyanmisaka RK_U32 axi_ddr_wdata; 44*437bfbebSnyanmisaka RK_U32 fpgadebug_reset; 45*437bfbebSnyanmisaka RK_U32 reserve[9]; 46*437bfbebSnyanmisaka RK_U32 extern_error_en; 47*437bfbebSnyanmisaka } rkv_reg_end; 48*437bfbebSnyanmisaka 49*437bfbebSnyanmisaka typedef struct V345_HEVC_REG_END { 50*437bfbebSnyanmisaka struct hevc_mvc0 { 51*437bfbebSnyanmisaka RK_U32 refp_layer_same_with_cur : 16 ; 52*437bfbebSnyanmisaka RK_U32 reserve : 16 ; 53*437bfbebSnyanmisaka } reg064_mvc0; 54*437bfbebSnyanmisaka RK_U32 reserve[55]; 55*437bfbebSnyanmisaka } v345_reg_end; 56*437bfbebSnyanmisaka 57*437bfbebSnyanmisaka typedef struct { 58*437bfbebSnyanmisaka struct swreg_id { 59*437bfbebSnyanmisaka RK_U32 minor_ver : 8 ; 60*437bfbebSnyanmisaka RK_U32 major_ver : 8 ; 61*437bfbebSnyanmisaka RK_U32 prod_num : 16 ; 62*437bfbebSnyanmisaka } sw_id; 63*437bfbebSnyanmisaka 64*437bfbebSnyanmisaka struct swreg_int { 65*437bfbebSnyanmisaka RK_U32 sw_dec_e : 1 ; 66*437bfbebSnyanmisaka RK_U32 sw_dec_clkgate_e : 1 ; 67*437bfbebSnyanmisaka RK_U32 reserve0 : 2 ; 68*437bfbebSnyanmisaka RK_U32 sw_dec_irq_dis : 1 ; 69*437bfbebSnyanmisaka RK_U32 sw_dec_timeout_e : 1 ; 70*437bfbebSnyanmisaka RK_U32 sw_buf_empty_en : 1 ; 71*437bfbebSnyanmisaka RK_U32 reserve1 : 1 ; 72*437bfbebSnyanmisaka RK_U32 sw_dec_irq : 1 ; 73*437bfbebSnyanmisaka RK_U32 sw_dec_irq_raw : 1 ; 74*437bfbebSnyanmisaka RK_U32 reserve2 : 2 ; 75*437bfbebSnyanmisaka RK_U32 sw_dec_rdy_sta : 1 ; 76*437bfbebSnyanmisaka RK_U32 sw_dec_bus_sta : 1 ; 77*437bfbebSnyanmisaka RK_U32 sw_dec_error_sta : 1 ; 78*437bfbebSnyanmisaka RK_U32 sw_dec_timeout_sta : 1 ; 79*437bfbebSnyanmisaka RK_U32 sw_dec_empty_sta : 1 ; 80*437bfbebSnyanmisaka RK_U32 reserve4 : 3 ; 81*437bfbebSnyanmisaka RK_U32 sw_softrst_en_p : 1 ; 82*437bfbebSnyanmisaka RK_U32 sw_force_softreset_valid: 1 ; 83*437bfbebSnyanmisaka RK_U32 sw_softreset_rdy : 1 ; 84*437bfbebSnyanmisaka RK_U32 sw_wr_ddr_align_en : 1; 85*437bfbebSnyanmisaka RK_U32 sw_scl_down_en : 1; 86*437bfbebSnyanmisaka RK_U32 sw_allow_not_wr_unref_bframe : 1; 87*437bfbebSnyanmisaka } sw_interrupt; ///<- zrh: do nothing in C Model 88*437bfbebSnyanmisaka 89*437bfbebSnyanmisaka struct swreg_sysctrl { 90*437bfbebSnyanmisaka RK_U32 sw_in_endian : 1 ; 91*437bfbebSnyanmisaka RK_U32 sw_in_swap32_e : 1 ; 92*437bfbebSnyanmisaka RK_U32 sw_in_swap64_e : 1 ; 93*437bfbebSnyanmisaka RK_U32 sw_str_endian : 1 ; 94*437bfbebSnyanmisaka RK_U32 sw_str_swap32_e : 1 ; 95*437bfbebSnyanmisaka RK_U32 sw_str_swap64_e : 1 ; 96*437bfbebSnyanmisaka RK_U32 sw_out_endian : 1 ; 97*437bfbebSnyanmisaka RK_U32 sw_out_swap32_e : 1 ; 98*437bfbebSnyanmisaka RK_U32 sw_out_cbcr_swap : 1 ; 99*437bfbebSnyanmisaka RK_U32 sw_error_info_en : 1 ; 100*437bfbebSnyanmisaka RK_U32 sw_rlc_mode_direct_write : 1; 101*437bfbebSnyanmisaka RK_U32 sw_rlc_mode : 1 ; 102*437bfbebSnyanmisaka RK_U32 sw_strm_start_bit : 7 ; 103*437bfbebSnyanmisaka RK_U32 sw_inter_error_prc_mode : 1; 104*437bfbebSnyanmisaka RK_U32 sw_dec_mode : 2 ; 105*437bfbebSnyanmisaka RK_U32 sw_info_collect_en : 1 ; 106*437bfbebSnyanmisaka RK_U32 sw_wait_reset_en : 1 ; 107*437bfbebSnyanmisaka RK_U32 sw_h26x_rps_mode : 1 ; 108*437bfbebSnyanmisaka RK_U32 reserve2 : 5 ; 109*437bfbebSnyanmisaka RK_U32 sw_colmv_mode : 1 ; 110*437bfbebSnyanmisaka RK_U32 sw_head_prior_high_en : 1; 111*437bfbebSnyanmisaka } sw_sysctrl; 112*437bfbebSnyanmisaka 113*437bfbebSnyanmisaka struct swreg_pic { 114*437bfbebSnyanmisaka RK_U32 sw_y_hor_virstride : 9 ; 115*437bfbebSnyanmisaka RK_U32 reserve : 3 ; 116*437bfbebSnyanmisaka RK_U32 sw_uv_hor_virstride : 9 ; 117*437bfbebSnyanmisaka RK_U32 sw_slice_num : 8 ; 118*437bfbebSnyanmisaka } sw_picparameter; 119*437bfbebSnyanmisaka 120*437bfbebSnyanmisaka RK_U32 sw_strm_rlc_base ;///<- zrh: do nothing in C Model 121*437bfbebSnyanmisaka RK_U32 sw_stream_len ;///<- zrh: do nothing in C Model 122*437bfbebSnyanmisaka RK_U32 sw_cabactbl_base ;///<- zrh: do nothing in C Model 123*437bfbebSnyanmisaka RK_U32 sw_decout_base ; 124*437bfbebSnyanmisaka RK_U32 sw_y_virstride ; 125*437bfbebSnyanmisaka RK_U32 sw_yuv_virstride ; 126*437bfbebSnyanmisaka RK_U32 sw_refer_base[15] ; 127*437bfbebSnyanmisaka RK_S32 sw_refer_poc[15] ; 128*437bfbebSnyanmisaka RK_S32 sw_cur_poc ; 129*437bfbebSnyanmisaka RK_U32 sw_rlcwrite_base ;///<- zrh: do nothing in C Model 130*437bfbebSnyanmisaka RK_U32 sw_pps_base ;///<- zrh: do nothing in C Model 131*437bfbebSnyanmisaka RK_U32 sw_rps_base ;///<- zrh: do nothing in C Model 132*437bfbebSnyanmisaka RK_U32 cabac_error_en ;///<- zrh add 133*437bfbebSnyanmisaka RK_U32 cabac_error_status ;///<- zrh add 134*437bfbebSnyanmisaka 135*437bfbebSnyanmisaka struct cabac_error_ctu { 136*437bfbebSnyanmisaka RK_U32 sw_cabac_error_ctu_xoffset : 8; 137*437bfbebSnyanmisaka RK_U32 sw_cabac_error_ctu_yoffset : 8; 138*437bfbebSnyanmisaka RK_U32 sw_streamfifo_space2full : 7; 139*437bfbebSnyanmisaka RK_U32 reversed0 : 9; 140*437bfbebSnyanmisaka } cabac_error_ctu; 141*437bfbebSnyanmisaka 142*437bfbebSnyanmisaka struct sao_ctu_position { 143*437bfbebSnyanmisaka RK_U32 sw_saowr_xoffset : 9; 144*437bfbebSnyanmisaka RK_U32 reversed0 : 7; 145*437bfbebSnyanmisaka RK_U32 sw_saowr_yoffset : 10; 146*437bfbebSnyanmisaka RK_U32 reversed1 : 6; 147*437bfbebSnyanmisaka } sao_ctu_position; 148*437bfbebSnyanmisaka 149*437bfbebSnyanmisaka RK_U32 reg_not_use0[RKVDEC_REG_PERF_CYCLE_INDEX - HEVC_DECODER_REG_NUM]; 150*437bfbebSnyanmisaka union { 151*437bfbebSnyanmisaka rkv_reg_end rkv_reg_ends; 152*437bfbebSnyanmisaka v345_reg_end v345_reg_ends; 153*437bfbebSnyanmisaka }; 154*437bfbebSnyanmisaka } H265d_REGS_t; 155*437bfbebSnyanmisaka 156*437bfbebSnyanmisaka #endif 157