/*
|
* Copyright 2020 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 __VDPU34X_H265D_H__
|
#define __VDPU34X_H265D_H__
|
|
#include "vdpu34x_com.h"
|
|
typedef struct Vdpu34xRegH265d_t {
|
struct SWREG64_H26X_SET {
|
RK_U32 h26x_frame_orslice : 1;
|
RK_U32 h26x_rps_mode : 1;
|
RK_U32 h26x_stream_mode : 1;
|
RK_U32 h26x_stream_lastpacket : 1;
|
RK_U32 h264_firstslice_flag : 1;
|
RK_U32 reserve : 27;
|
} reg64;
|
|
struct SWREG65_CUR_POC {
|
RK_U32 cur_top_poc : 32;
|
} reg65;
|
|
struct SWREG66_H264_CUR_POC1 {
|
RK_U32 cur_bot_poc : 32;
|
} reg66;
|
|
RK_U32 reg67_82_ref_poc[16];
|
|
|
struct SWREG83_98_H264_REF_POC {
|
RK_U32 ref_poc : 32;
|
} ref_poc_no_use[16];
|
|
/* struct SWREG99_HEVC_REF_VALID{
|
RK_U32 hevc_ref_valid : 15;
|
RK_U32 reserve : 17;
|
}hevc_ref_valid; */
|
|
struct SWREG99_HEVC_REF_VALID {
|
RK_U32 hevc_ref_valid_0 : 1;
|
RK_U32 hevc_ref_valid_1 : 1;
|
RK_U32 hevc_ref_valid_2 : 1;
|
RK_U32 hevc_ref_valid_3 : 1;
|
RK_U32 reserve0 : 4;
|
RK_U32 hevc_ref_valid_4 : 1;
|
RK_U32 hevc_ref_valid_5 : 1;
|
RK_U32 hevc_ref_valid_6 : 1;
|
RK_U32 hevc_ref_valid_7 : 1;
|
RK_U32 reserve1 : 4;
|
RK_U32 hevc_ref_valid_8 : 1;
|
RK_U32 hevc_ref_valid_9 : 1;
|
RK_U32 hevc_ref_valid_10 : 1;
|
RK_U32 hevc_ref_valid_11 : 1;
|
RK_U32 reserve2 : 4;
|
RK_U32 hevc_ref_valid_12 : 1;
|
RK_U32 hevc_ref_valid_13 : 1;
|
RK_U32 hevc_ref_valid_14 : 1;
|
RK_U32 reserve3 : 5;
|
} reg99;
|
|
RK_U32 reg100_102_no_use[3];
|
|
struct SWREG103_HEVC_MVC0 {
|
RK_U32 ref_pic_layer_same_with_cur : 16;
|
RK_U32 reserve : 16;
|
} reg103;
|
|
struct SWREG104_HEVC_MVC1 {
|
RK_U32 poc_lsb_not_present_flag : 1;
|
RK_U32 num_direct_ref_layers : 6;
|
RK_U32 reserve0 : 1;
|
|
RK_U32 num_reflayer_pics : 6;
|
RK_U32 default_ref_layers_active_flag : 1;
|
RK_U32 max_one_active_ref_layer_flag : 1;
|
|
RK_U32 poc_reset_info_present_flag : 1;
|
RK_U32 vps_poc_lsb_aligned_flag : 1;
|
RK_U32 mvc_poc15_valid_flag : 1;
|
RK_U32 reserve1 : 13;
|
} reg104;
|
|
struct SWREG105_111_NO_USE_REGS {
|
RK_U32 no_use_regs[7];
|
} no_use_regs;
|
|
struct SWREG112_ERROR_REF_INFO {
|
RK_U32 avs2_ref_error_field : 1;
|
RK_U32 avs2_ref_error_topfield : 1;
|
RK_U32 ref_error_topfield_used : 1;
|
RK_U32 ref_error_botfield_used : 1;
|
RK_U32 reserve : 28;
|
} reg112;
|
|
} Vdpu34xRegH265d;
|
|
typedef struct Vdpu34xRegH265dAddr_t {
|
struct SWREG160_VP9_DELTA_PROB_BASE {
|
RK_U32 vp9_delta_prob_base : 32;
|
} reg160_no_use;
|
|
RK_U32 reg161_pps_base;
|
|
RK_U32 reg162_no_use;
|
|
RK_U32 reg163_rps_base;
|
|
RK_U32 reg164_179_ref_base[16];
|
|
RK_U32 reg180_scanlist_addr;
|
|
RK_U32 reg181_196_colmv_base[16];
|
|
RK_U32 reg197_cabactbl_base;
|
} Vdpu34xRegH265dAddr;
|
|
typedef struct Vdpu34xH265dHighPoc_t {
|
/* SWREG200 */
|
struct SWREG200_REF0_7_POC_HIGHBIT {
|
RK_U32 ref0_poc_highbit : 4;
|
RK_U32 ref1_poc_highbit : 4;
|
RK_U32 ref2_poc_highbit : 4;
|
RK_U32 ref3_poc_highbit : 4;
|
RK_U32 ref4_poc_highbit : 4;
|
RK_U32 ref5_poc_highbit : 4;
|
RK_U32 ref6_poc_highbit : 4;
|
RK_U32 ref7_poc_highbit : 4;
|
} reg200;
|
struct SWREG201_REF8_15_POC_HIGHBIT {
|
RK_U32 ref8_poc_highbit : 4;
|
RK_U32 ref9_poc_highbit : 4;
|
RK_U32 ref10_poc_highbit : 4;
|
RK_U32 ref11_poc_highbit : 4;
|
RK_U32 ref12_poc_highbit : 4;
|
RK_U32 ref13_poc_highbit : 4;
|
RK_U32 ref14_poc_highbit : 4;
|
RK_U32 ref15_poc_highbit : 4;
|
} reg201;
|
struct SWREG200_REF16_23_POC_HIGHBIT {
|
RK_U32 ref16_poc_highbit : 4;
|
RK_U32 ref17_poc_highbit : 4;
|
RK_U32 ref18_poc_highbit : 4;
|
RK_U32 ref19_poc_highbit : 4;
|
RK_U32 ref20_poc_highbit : 4;
|
RK_U32 ref21_poc_highbit : 4;
|
RK_U32 ref22_poc_highbit : 4;
|
RK_U32 ref23_poc_highbit : 4;
|
} reg202;
|
struct SWREG200_REF24_31_POC_HIGHBIT {
|
RK_U32 ref24_poc_highbit : 4;
|
RK_U32 ref25_poc_highbit : 4;
|
RK_U32 ref26_poc_highbit : 4;
|
RK_U32 ref27_poc_highbit : 4;
|
RK_U32 ref28_poc_highbit : 4;
|
RK_U32 ref29_poc_highbit : 4;
|
RK_U32 ref30_poc_highbit : 4;
|
RK_U32 ref31_poc_highbit : 4;
|
} reg203;
|
struct SWREG200_CUR_POC_HIGHBIT {
|
RK_U32 cur_poc_highbit : 4;
|
RK_U32 reserver : 28;
|
} reg204;
|
} Vdpu34xH2645HighPoc_t;
|
|
typedef struct Vdpu34xH265dRegSet_t {
|
Vdpu34xRegCommon common;
|
Vdpu34xRegH265d h265d_param;
|
Vdpu34xRegCommonAddr common_addr;
|
Vdpu34xRegH265dAddr h265d_addr;
|
Vdpu34xH2645HighPoc_t highpoc;
|
Vdpu34xRegIrqStatus irq_status;
|
Vdpu34xRegStatistic statistic;
|
} Vdpu34xH265dRegSet;
|
|
#endif /* __VDPU34X_H265D_H__ */
|