/*
|
*
|
* Copyright 2015 Rockchip Electronics Co. LTD
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
/*
|
* @file hal_h265d_reg.h
|
* @brief
|
* @author csy(csy@rock-chips.com)
|
|
* @version 1.0.0
|
* @history
|
* 2015.7.15 : Create
|
*/
|
|
#ifndef __HAL_H265D_REG_H__
|
#define __HAL_H265D_REG_H__
|
|
#include "rk_type.h"
|
|
#define HEVC_DECODER_REG_NUM (48)
|
#define RKVDEC_REG_PERF_CYCLE_INDEX (64)
|
|
#define RKVDEC_HEVC_REGISTERS (68)
|
#define RKVDEC_V1_REGISTERS (78)
|
#define V345_HEVC_REGISTERS (108)
|
|
typedef struct RKV_HEVC_REG_END {
|
RK_U32 performance_cycle; //65
|
RK_U32 axi_ddr_rdata;
|
RK_U32 axi_ddr_wdata;
|
RK_U32 fpgadebug_reset;
|
RK_U32 reserve[9];
|
RK_U32 extern_error_en;
|
} rkv_reg_end;
|
|
typedef struct V345_HEVC_REG_END {
|
struct hevc_mvc0 {
|
RK_U32 refp_layer_same_with_cur : 16 ;
|
RK_U32 reserve : 16 ;
|
} reg064_mvc0;
|
RK_U32 reserve[55];
|
} v345_reg_end;
|
|
typedef struct {
|
struct swreg_id {
|
RK_U32 minor_ver : 8 ;
|
RK_U32 major_ver : 8 ;
|
RK_U32 prod_num : 16 ;
|
} sw_id;
|
|
struct swreg_int {
|
RK_U32 sw_dec_e : 1 ;
|
RK_U32 sw_dec_clkgate_e : 1 ;
|
RK_U32 reserve0 : 2 ;
|
RK_U32 sw_dec_irq_dis : 1 ;
|
RK_U32 sw_dec_timeout_e : 1 ;
|
RK_U32 sw_buf_empty_en : 1 ;
|
RK_U32 reserve1 : 1 ;
|
RK_U32 sw_dec_irq : 1 ;
|
RK_U32 sw_dec_irq_raw : 1 ;
|
RK_U32 reserve2 : 2 ;
|
RK_U32 sw_dec_rdy_sta : 1 ;
|
RK_U32 sw_dec_bus_sta : 1 ;
|
RK_U32 sw_dec_error_sta : 1 ;
|
RK_U32 sw_dec_timeout_sta : 1 ;
|
RK_U32 sw_dec_empty_sta : 1 ;
|
RK_U32 reserve4 : 3 ;
|
RK_U32 sw_softrst_en_p : 1 ;
|
RK_U32 sw_force_softreset_valid: 1 ;
|
RK_U32 sw_softreset_rdy : 1 ;
|
RK_U32 sw_wr_ddr_align_en : 1;
|
RK_U32 sw_scl_down_en : 1;
|
RK_U32 sw_allow_not_wr_unref_bframe : 1;
|
} sw_interrupt; ///<- zrh: do nothing in C Model
|
|
struct swreg_sysctrl {
|
RK_U32 sw_in_endian : 1 ;
|
RK_U32 sw_in_swap32_e : 1 ;
|
RK_U32 sw_in_swap64_e : 1 ;
|
RK_U32 sw_str_endian : 1 ;
|
RK_U32 sw_str_swap32_e : 1 ;
|
RK_U32 sw_str_swap64_e : 1 ;
|
RK_U32 sw_out_endian : 1 ;
|
RK_U32 sw_out_swap32_e : 1 ;
|
RK_U32 sw_out_cbcr_swap : 1 ;
|
RK_U32 sw_error_info_en : 1 ;
|
RK_U32 sw_rlc_mode_direct_write : 1;
|
RK_U32 sw_rlc_mode : 1 ;
|
RK_U32 sw_strm_start_bit : 7 ;
|
RK_U32 sw_inter_error_prc_mode : 1;
|
RK_U32 sw_dec_mode : 2 ;
|
RK_U32 sw_info_collect_en : 1 ;
|
RK_U32 sw_wait_reset_en : 1 ;
|
RK_U32 sw_h26x_rps_mode : 1 ;
|
RK_U32 reserve2 : 5 ;
|
RK_U32 sw_colmv_mode : 1 ;
|
RK_U32 sw_head_prior_high_en : 1;
|
} sw_sysctrl;
|
|
struct swreg_pic {
|
RK_U32 sw_y_hor_virstride : 9 ;
|
RK_U32 reserve : 3 ;
|
RK_U32 sw_uv_hor_virstride : 9 ;
|
RK_U32 sw_slice_num : 8 ;
|
} sw_picparameter;
|
|
RK_U32 sw_strm_rlc_base ;///<- zrh: do nothing in C Model
|
RK_U32 sw_stream_len ;///<- zrh: do nothing in C Model
|
RK_U32 sw_cabactbl_base ;///<- zrh: do nothing in C Model
|
RK_U32 sw_decout_base ;
|
RK_U32 sw_y_virstride ;
|
RK_U32 sw_yuv_virstride ;
|
RK_U32 sw_refer_base[15] ;
|
RK_S32 sw_refer_poc[15] ;
|
RK_S32 sw_cur_poc ;
|
RK_U32 sw_rlcwrite_base ;///<- zrh: do nothing in C Model
|
RK_U32 sw_pps_base ;///<- zrh: do nothing in C Model
|
RK_U32 sw_rps_base ;///<- zrh: do nothing in C Model
|
RK_U32 cabac_error_en ;///<- zrh add
|
RK_U32 cabac_error_status ;///<- zrh add
|
|
struct cabac_error_ctu {
|
RK_U32 sw_cabac_error_ctu_xoffset : 8;
|
RK_U32 sw_cabac_error_ctu_yoffset : 8;
|
RK_U32 sw_streamfifo_space2full : 7;
|
RK_U32 reversed0 : 9;
|
} cabac_error_ctu;
|
|
struct sao_ctu_position {
|
RK_U32 sw_saowr_xoffset : 9;
|
RK_U32 reversed0 : 7;
|
RK_U32 sw_saowr_yoffset : 10;
|
RK_U32 reversed1 : 6;
|
} sao_ctu_position;
|
|
RK_U32 reg_not_use0[RKVDEC_REG_PERF_CYCLE_INDEX - HEVC_DECODER_REG_NUM];
|
union {
|
rkv_reg_end rkv_reg_ends;
|
v345_reg_end v345_reg_ends;
|
};
|
} H265d_REGS_t;
|
|
#endif
|