/* * * 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. */ #ifndef __HAL_H264D_RKV_REG_H__ #define __HAL_H264D_RKV_REG_H__ #include "mpp_hal.h" typedef struct h264d_rkv_regs_t { struct { RK_U32 minor_ver : 8; RK_U32 level : 1; RK_U32 dec_support : 3; RK_U32 profile : 1; RK_U32 reserve0 : 1; RK_U32 codec_flag : 1; RK_U32 reserve1 : 1; RK_U32 prod_num : 16; } sw00; struct { RK_U32 dec_e : 1;//0 RK_U32 dec_clkgate_e : 1; // 1 RK_U32 reserve0 : 1;// 2 RK_U32 timeout_mode : 1; // 3 RK_U32 dec_irq_dis : 1;//4 // 4 RK_U32 dec_timeout_e : 1; //5 RK_U32 buf_empty_en : 1; // 6 RK_U32 stmerror_waitdecfifo_empty : 1; // 7 RK_U32 dec_irq : 1; // 8 RK_U32 dec_irq_raw : 1; // 9 RK_U32 reserve2 : 2; RK_U32 dec_rdy_sta : 1; //12 RK_U32 dec_bus_sta : 1; //13 RK_U32 dec_error_sta : 1; // 14 RK_U32 dec_timeout_sta : 1; //15 RK_U32 dec_empty_sta : 1; // 16 RK_U32 colmv_ref_error_sta : 1; // 17 RK_U32 cabu_end_sta : 1; // 18 RK_U32 h264orvp9_error_mode : 1; //19 RK_U32 softrst_en_p : 1; //20 RK_U32 force_softreset_valid : 1; //21 RK_U32 softreset_rdy : 1; // 22 RK_U32 reserve1 : 9; } sw01; struct { RK_U32 in_endian : 1; RK_U32 in_swap32_e : 1; RK_U32 in_swap64_e : 1; RK_U32 str_endian : 1; RK_U32 str_swap32_e : 1; RK_U32 str_swap64_e : 1; RK_U32 out_endian : 1; RK_U32 out_swap32_e : 1; RK_U32 out_cbcr_swap : 1; RK_U32 reserve0 : 1; RK_U32 rlc_mode_direct_write : 1; RK_U32 rlc_mode : 1; RK_U32 strm_start_bit : 7; RK_U32 reserve1 : 1; RK_U32 dec_mode : 2; RK_U32 reserve2 : 2; RK_U32 rps_mode : 1; RK_U32 stream_mode : 1; RK_U32 stream_lastpacket : 1; RK_U32 firstslice_flag : 1; RK_U32 frame_orslice : 1; RK_U32 buspr_slot_disable : 1; RK_U32 reverse3 : 2; } sw02; struct { RK_U32 y_hor_virstride : 9; RK_U32 reserve : 2; RK_U32 slice_num_highbit : 1; RK_U32 uv_hor_virstride : 9; RK_U32 slice_num_lowbits : 11; } sw03; struct { RK_U32 strm_rlc_base : 32; } sw04; struct { RK_U32 stream_len : 27; RK_U32 reverse0 : 5; } sw05; struct { RK_U32 cabactbl_base : 32; } sw06; struct { RK_U32 decout_base : 32; } sw07; struct { RK_U32 y_virstride : 20; RK_U32 reverse0 : 12; } sw08; struct { RK_U32 yuv_virstride : 21; RK_U32 reverse0 : 11; } sw09; struct { /* bit0: ref0_14_field * bit1: ref0_14_topfield_used * bit2: ref0_14_botfield_used * bit3: ref0_14_colmv_use_flag */ RK_U32 ref0_14_base; /* bit4-bit31 */ } sw10_24[15]; struct { RK_U32 ref0_14_poc : 32; } sw25_39[15]; struct { RK_U32 cur_poc : 32; } sw40; struct { RK_U32 rlcwrite_base; } sw41; struct { RK_U32 pps_base; } sw42; struct { RK_U32 rps_base; } sw43; struct { RK_U32 strmd_error_e : 28; RK_U32 reserve : 4; } sw44; struct { RK_U32 strmd_error_status : 28; RK_U32 colmv_error_ref_picidx : 4; } sw45; struct { RK_U32 strmd_error_ctu_xoffset : 8; RK_U32 strmd_error_ctu_yoffset : 8; RK_U32 streamfifo_space2full : 7; RK_U32 reserve0 : 1; RK_U32 vp9_error_ctu0_en : 1; RK_U32 reverse1 : 7; } sw46; struct { RK_U32 saowr_xoffet : 9; RK_U32 reserve0 : 7; RK_U32 saowr_yoffset : 10; RK_U32 reverse1 : 6; } sw47; struct { /* bit0: ref15_field * bit1: ref15_topfield_used * bit2: ref15_botfield_used * bit3: ref15_colmv_use_flag */ RK_U32 ref15_base; /* bit4-bit31 */ } sw48; struct { RK_U32 ref15_29_poc : 32; } sw49_63[15]; struct { RK_U32 performance_cycle : 32; } sw64; struct { RK_U32 axi_ddr_rdata : 32; } sw65; struct { RK_U32 axi_ddr_rdata : 32; } sw66; struct { RK_U32 busifd_resetn : 1; RK_U32 cabac_resetn : 1; RK_U32 dec_ctrl_resetn : 1; RK_U32 transd_resetn : 1; RK_U32 intra_resetn : 1; RK_U32 inter_resetn : 1; RK_U32 recon_resetn : 1; RK_U32 filer_resetn : 1; RK_U32 reverse0 : 24; } sw67; struct { RK_U32 perf_cnt0_sel : 6; RK_U32 reserve0 : 2; RK_U32 perf_cnt1_sel : 6; RK_U32 reserve1 : 2; RK_U32 perf_cnt2_sel : 6; RK_U32 reverse1 : 10; } sw68; struct { RK_U32 perf_cnt0 : 32; } sw69; struct { RK_U32 perf_cnt1 : 32; } sw70; struct { RK_U32 perf_cnt2 : 32; } sw71; struct { RK_U32 ref30_poc; } sw72; struct { RK_U32 ref31_poc; } sw73; struct { RK_U32 cur_poc1 : 32; } sw74; struct { RK_U32 errorinfo_base : 32; } sw75; struct { RK_U32 slicedec_num : 14; RK_U32 reserve0 : 1; RK_U32 strmd_detect_error_flag : 1; RK_U32 error_packet_num : 14; RK_U32 reverse1 : 2; } sw76; struct { RK_U32 error_en_highbits : 30; RK_U32 reserve : 2; } sw77; RK_U32 reverse[2]; } H264dRkvRegs_t; #ifdef __cplusplus extern "C" { #endif MPP_RET rkv_h264d_init (void *hal, MppHalCfg *cfg); MPP_RET rkv_h264d_deinit (void *hal); MPP_RET rkv_h264d_gen_regs(void *hal, HalTaskInfo *task); MPP_RET rkv_h264d_start (void *hal, HalTaskInfo *task); MPP_RET rkv_h264d_wait (void *hal, HalTaskInfo *task); MPP_RET rkv_h264d_reset (void *hal); MPP_RET rkv_h264d_flush (void *hal); MPP_RET rkv_h264d_control (void *hal, MpiCmd cmd_type, void *param); #ifdef __cplusplus } #endif #endif /* __HAL_H264D_RKV_REG_H__ */