/*
|
* 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_H265E_VEPU541_REG_H__
|
#define __HAL_H265E_VEPU541_REG_H__
|
|
#include "rk_type.h"
|
|
/* OSD position */
|
typedef struct {
|
RK_U32 lt_pos_x : 8; /* left-top */
|
RK_U32 lt_pos_y : 8;
|
RK_U32 rd_pos_x : 8; /* right-bottom */
|
RK_U32 rd_pos_y : 8;
|
} OsdPos;
|
|
/* OSD palette */
|
typedef struct {
|
RK_U32 y : 8;
|
RK_U32 u : 8;
|
RK_U32 v : 8;
|
RK_U32 alpha : 8;
|
} OsdPlt;
|
typedef struct {
|
RK_U32 axi_brsp_cke : 7;
|
RK_U32 cime_dspw_orsd : 1;
|
RK_U32 reserve : 24;
|
} v541_dtrns_cfg;
|
|
typedef struct {
|
RK_U32 Reserve0 : 7;
|
RK_U32 cime_dspw_orsd : 1;
|
RK_U32 reserve1 : 8;
|
RK_U32 axi_brsp_cke : 8;
|
RK_U32 reserve2 : 8;
|
} v540_dtrns_cfg;
|
|
typedef struct H265eV541RegSet_t {
|
|
/* reg[000] */
|
/* 0x0 - VERSION, swreg01 */
|
struct {
|
RK_U32 rkvenc_ver : 32; //default : 0x0000_0001
|
} version;
|
|
/* 0x4 - swreg02, ENC_STRT */
|
struct {
|
RK_U32 lkt_num : 8;
|
RK_U32 rkvenc_cmd : 2;
|
RK_U32 reserve : 6;
|
RK_U32 enc_cke : 1;
|
RK_U32 resetn_hw_en : 1;
|
RK_U32 enc_done_tmvp_en : 1;
|
RK_U32 Reserve : 13;
|
} enc_strt;
|
|
/* 0x8 - ENC_CLR */
|
struct {
|
RK_U32 safe_clr : 1;
|
RK_U32 force_clr : 1;
|
RK_U32 reserve : 30;
|
} enc_clr;//swreg03
|
|
/* 0xc - swreg04, LKT_ADDR */
|
struct {
|
RK_U32 lkt_addr : 32;
|
} lkt_addr;
|
|
/* 0x10 - swreg05, INT_EN */
|
struct {
|
RK_U32 enc_done_en : 1;
|
RK_U32 lkt_done_en : 1;
|
RK_U32 sclr_done_en : 1;
|
RK_U32 slc_done_en : 1;
|
RK_U32 bsf_ovflw_en : 1;
|
RK_U32 brsp_ostd_en : 1;
|
RK_U32 wbus_err_en : 1;
|
RK_U32 rbus_err_en : 1;
|
RK_U32 wdg_en : 1;
|
RK_U32 reserve : 23;
|
} int_en;
|
|
struct {
|
RK_U32 enc_done_msk : 1;
|
RK_U32 lkt_done_msk : 1;
|
RK_U32 sclr_done_msk : 1;
|
RK_U32 slc_done_msk : 1;
|
RK_U32 bsf_folw_msk : 1;
|
RK_U32 brsp_otsd_msk : 1;
|
RK_U32 wbus_err_msk : 1;
|
RK_U32 rbus_err_msk : 1;
|
RK_U32 wdg_msk : 1;
|
RK_U32 reserved : 23;;
|
} int_msk; //swreg06, INT_MSK
|
|
struct {
|
RK_U32 enc_done_clr : 1;
|
RK_U32 lkt_done_clr : 1;
|
RK_U32 sclr_done_clr : 1;
|
RK_U32 slc_done_clr : 1;
|
RK_U32 bsf_folw_clr : 1;
|
RK_U32 brsp_otsd_clr : 1;
|
RK_U32 wbus_err_clr : 1;
|
RK_U32 rbus_err_clr : 1;
|
RK_U32 wdg_msk : 1;
|
RK_U32 reserved : 23;
|
} int_clr; //swreg07, INT_CLR
|
|
/* 0x1C - swreg08, INT_STA */
|
struct {
|
RK_U32 reserve : 32;
|
} int_stus;
|
|
RK_U32 reserved_0x20_0x2c[4];
|
|
/* 0x30 - swreg09, ENC_RSL */
|
struct {
|
RK_U32 pic_wd8_m1 : 9;
|
RK_U32 reserve0 : 1;
|
RK_U32 pic_wfill : 6;
|
RK_U32 pic_hd8_m1 : 9;
|
RK_U32 reserve1 : 1;
|
RK_U32 pic_hfill : 6;
|
} enc_rsl;
|
|
/* 0x34 - ENC_PIC */
|
struct {
|
RK_U32 enc_stnd : 1;
|
RK_U32 roi_en : 1;
|
RK_U32 cur_frm_ref : 1;
|
RK_U32 mei_stor : 1;
|
RK_U32 bs_scp : 1;
|
RK_U32 rdo_wgt_sel : 1;
|
RK_U32 reserved : 2;
|
RK_U32 pic_qp : 6;
|
RK_U32 tot_poc_num : 5;
|
RK_U32 log2_ctu_num : 4;
|
RK_U32 atr_thd_sel : 1;
|
RK_U32 dchs_rxid : 2;
|
RK_U32 dchs_txid : 2;
|
RK_U32 dchs_rxe : 1;
|
RK_U32 satd_byps_en : 1;
|
RK_U32 slen_fifo : 1;
|
RK_U32 node_int : 1;
|
} enc_pic; //swreg10
|
|
struct {
|
RK_U32 vs_load_thd : 24;
|
RK_U32 rfp_load_thd : 8;
|
} enc_wdg; //swreg11, ENC_WDG
|
|
/* 0x3c - DTRNS_MAP */
|
struct {
|
RK_U32 lpfw_bus_ordr : 1; /* vepu540 used */
|
RK_U32 cmvw_bus_ordr : 1;
|
RK_U32 dspw_bus_ordr : 1;
|
RK_U32 rfpw_bus_ordr : 1;
|
RK_U32 src_bus_edin : 4;
|
RK_U32 meiw_bus_edin : 4;
|
RK_U32 bsw_bus_edin : 3;
|
RK_U32 lktr_bus_edin : 4;
|
RK_U32 roir_bus_edin : 4;
|
RK_U32 lktw_bus_edin : 4;
|
RK_U32 afbc_bsize : 1;
|
RK_U32 reserved : 4;
|
} dtrns_map; //swreg12
|
|
union {
|
v541_dtrns_cfg dtrns_cfg_541;
|
v540_dtrns_cfg dtrns_cfg_540;
|
};
|
|
/* 0x44 - SRC_FMT */
|
struct {
|
RK_U32 alpha_swap : 1;
|
RK_U32 rbuv_swap : 1;
|
RK_U32 src_cfmt : 4;
|
RK_U32 src_range : 1;
|
RK_U32 out_fmt_cfg : 1; //vepu540
|
RK_U32 reserve : 24;
|
} src_fmt;
|
|
/* 0x48 - SRC_UDFY */
|
struct {
|
RK_S32 wght_b2y : 9;
|
RK_S32 wght_g2y : 9;
|
RK_S32 wght_r2y : 9;
|
RK_S32 reserved : 5;
|
} src_udfy;
|
|
/* 0x4c - SRC_UDFU */
|
struct {
|
RK_S32 wght_b2u : 9;
|
RK_S32 wght_g2u : 9;
|
RK_S32 wght_r2u : 9;
|
RK_S32 reserved : 5;
|
} src_udfu;
|
|
/* 0x50 - SRC_UDFV */
|
struct {
|
RK_S32 wght_b2v : 9;
|
RK_S32 wght_g2v : 9;
|
RK_S32 wght_r2v : 9;
|
RK_S32 reserved : 5;
|
} src_udfv;
|
|
/* 0x54 - SRC_UDFO */
|
struct {
|
RK_U32 ofst_v : 8;
|
RK_U32 ofst_u : 8;
|
RK_U32 ofst_y : 5;
|
RK_U32 reserve : 11;
|
} src_udfo;
|
|
/* 0x58 - SRC_PROC */
|
struct {
|
RK_U32 reserved0 : 26;
|
RK_U32 src_mirr : 1;
|
RK_U32 src_rot : 2;
|
RK_U32 txa_en : 1;
|
RK_U32 afbcd_en : 1;
|
RK_U32 reserved1 : 1;
|
} src_proc;
|
|
/* 0x5c - MMU0_DTE_ADDR */
|
struct {
|
RK_U32 tile_width_m1 : 6;
|
RK_U32 reserved0 : 10;
|
RK_U32 tile_height_m1 : 6;
|
RK_U32 reserved1 : 9;
|
RK_U32 tile_en : 1;
|
} tile_cfg;
|
|
/* 0x60 - MMU1_DTE_ADDR */
|
struct {
|
RK_U32 tile_x : 6;
|
RK_U32 reserved0 : 10;
|
RK_U32 tile_y : 6;
|
RK_U32 reserved1 : 10;
|
} tile_pos;
|
|
/* 0x64 - KLUT_OFST */
|
struct {
|
RK_U32 chrm_kult_ofst : 3;
|
RK_U32 reserved : 29;
|
} klut_ofst;
|
|
/* 0x68-0xc4 - KLUT_WGT */
|
struct {
|
RK_U32 chrm_klut_wgt0 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt1 : 9;
|
} klut_wgt0;
|
|
struct {
|
RK_U32 chrm_klut_wgt1 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt2 : 18;
|
} klut_wgt1;
|
|
struct {
|
RK_U32 chrm_klut_wgt3 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt4 : 9;
|
} klut_wgt2;
|
|
struct {
|
RK_U32 chrm_klut_wgt4 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt5 : 18;
|
} klut_wgt3;
|
|
struct {
|
RK_U32 chrm_klut_wgt6 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt7 : 9;
|
} klut_wgt4;
|
|
struct {
|
RK_U32 chrm_klut_wgt7 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt8 : 18;
|
} klut_wgt5;
|
|
struct {
|
RK_U32 chrm_klut_wgt9 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt10 : 9;
|
} klut_wgt6;
|
|
struct {
|
RK_U32 chrm_klut_wgt10 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt11 : 18;
|
} klut_wgt7;
|
|
struct {
|
RK_U32 chrm_klut_wgt12 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt13 : 9;
|
} klut_wgt8;
|
|
struct {
|
RK_U32 chrm_klut_wgt13 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt14 : 18;
|
} klut_wgt9;
|
|
struct {
|
RK_U32 chrm_klut_wgt15 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt16 : 9;
|
} klut_wgt10;
|
|
struct {
|
RK_U32 chrm_klut_wgt16 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt17 : 18;
|
} klut_wgt11;
|
|
struct {
|
RK_U32 chrm_klut_wgt18 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt19 : 9;
|
} klut_wgt12;
|
|
struct {
|
RK_U32 chrm_klut_wgt19 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt20 : 18;
|
} klut_wgt13;
|
|
struct {
|
RK_U32 chrm_klut_wgt21 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt22 : 9;
|
} klut_wgt14;
|
|
struct {
|
RK_U32 chrm_klut_wgt22 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt23 : 18;
|
} klut_wgt15;
|
|
struct {
|
RK_U32 chrm_klut_wgt24 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt25 : 9;
|
} klut_wgt16;
|
|
struct {
|
RK_U32 chrm_klut_wgt25 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt26 : 18;
|
} klut_wgt17;
|
|
struct {
|
RK_U32 chrm_klut_wgt27 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt28 : 9;
|
} klut_wgt18;
|
|
struct {
|
RK_U32 chrm_klut_wgt28 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt29 : 18;
|
} klut_wgt19;
|
|
struct {
|
RK_U32 chrm_klut_wgt30 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt31 : 9;
|
} klut_wgt20;
|
|
struct {
|
RK_U32 chrm_klut_wgt31 : 9;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt32 : 18;
|
} klut_wgt21;
|
|
struct {
|
RK_U32 chrm_klut_wgt33 : 18;
|
RK_U32 reserved : 5;
|
RK_U32 chrm_klut_wgt34 : 9;
|
} klut_wgt22;
|
|
/* 0xc4 - klut_wgt23 */
|
struct {
|
RK_U32 chrm_klut_wgt34 : 9;
|
RK_U32 reserved : 23;
|
} klut_wgt23;
|
|
/* 0xc8 - RC_CFG */
|
struct {
|
RK_U32 rc_en : 1;
|
RK_U32 aqmode_en : 1;
|
RK_U32 qp_mode : 1;
|
RK_U32 reserved : 13;
|
RK_U32 rc_ctu_num : 16;
|
} rc_cfg;
|
|
/* 0xcc - RC_QP */
|
struct {
|
RK_U32 reserved : 16;
|
RK_U32 rc_qp_range : 4;
|
RK_U32 rc_max_qp : 6;
|
RK_U32 rc_min_qp : 6;
|
} rc_qp;
|
|
/* 0xd0 - swreg55, RC_TGT */
|
struct {
|
RK_U32 ctu_ebits : 20;
|
RK_U32 reserve : 12;
|
} rc_tgt;
|
|
/* 0xd4 - RC_ADJ0 */
|
struct {
|
RK_S32 qp_adjust0 : 5;
|
RK_S32 qp_adjust1 : 5;
|
RK_S32 qp_adjust2 : 5;
|
RK_S32 qp_adjust3 : 5;
|
RK_S32 qp_adjust4 : 5;
|
RK_S32 reserved : 7;
|
} rc_adj0;
|
|
/* 0xd8 - RCADJ1 */
|
struct {
|
RK_S32 qp_adjust5 : 5;
|
RK_S32 qp_adjust6 : 5;
|
RK_S32 qp_adjust7 : 5;
|
RK_S32 qp_adjust8 : 5;
|
RK_S32 reserved : 12;
|
} rc_adj1;
|
|
/* 0xdc-0xfc swreg47, */
|
struct {
|
RK_S32 bits_thd0;
|
} rc_erp0; //RC_ERP0
|
|
struct {
|
RK_S32 bits_thd1;
|
} rc_erp1; //swreg48, RC_ERP1
|
|
struct {
|
RK_S32 bits_thd2;
|
} rc_erp2; //swreg49, RC_ERP2
|
|
struct {
|
RK_S32 bits_thd3;
|
} rc_erp3; //swreg50, RC_ERP3
|
|
struct {
|
RK_S32 bits_thd4;
|
} rc_erp4; //swreg51, RC_ERP4
|
|
/* 0xec-0xf8 */
|
struct {
|
RK_S32 bits_thd5;
|
} rc_erp5;
|
|
struct {
|
RK_S32 bits_thd6;
|
} rc_erp6;
|
|
struct {
|
RK_S32 bits_thd7;
|
} rc_erp7;
|
|
/* 0xfc - RC_ERP8 */
|
struct {
|
RK_S32 bits_thd8;
|
} rc_erp8;
|
|
/* 0x100 - QPMAP0 */
|
struct {
|
RK_U32 qpmin_area0 : 6;
|
RK_U32 qpmax_area0 : 6;
|
RK_U32 qpmin_area1 : 6;
|
RK_U32 qpmax_area1 : 6;
|
RK_U32 qpmin_area2 : 6;
|
RK_U32 reserved : 2;
|
} qpmap0;
|
|
/* 0x104 - QPMAP1 */
|
struct {
|
RK_U32 qpmax_area2 : 6;
|
RK_U32 qpmin_area3 : 6;
|
RK_U32 qpmax_area3 : 6;
|
RK_U32 qpmin_area4 : 6;
|
RK_U32 qpmax_area4 : 6;
|
RK_U32 reserved : 2;
|
} qpmap1;
|
|
/* 0x108 - QPMAP2 */
|
struct {
|
RK_U32 qpmin_area5 : 6;
|
RK_U32 qpmax_area5 : 6;
|
RK_U32 qpmin_area6 : 6;
|
RK_U32 qpmax_area6 : 6;
|
RK_U32 qpmin_area7 : 6;
|
RK_U32 reserved : 2;
|
} qpmap2;
|
|
/* 0x10c - QPMAP3 */
|
struct {
|
RK_U32 qpmax_area7 : 6;
|
RK_U32 reserved : 24;
|
RK_U32 qpmap_mode : 2;
|
} qpmap3;
|
|
/* 0x110 - PIC_OFST */
|
struct {
|
RK_U32 pic_ofst_y : 13;
|
RK_U32 reserved0 : 3;
|
RK_U32 pic_ofst_x : 13;
|
RK_U32 reserved1 : 3;
|
} pic_ofst;
|
|
/* 0x114 - swreg23, SRC_STRID */
|
struct {
|
RK_U32 src_ystrid : 16;
|
RK_U32 src_cstrid : 16;
|
} src_strid;
|
|
RK_U32 adr_srcy_hevc; /* 0x118 */
|
RK_U32 adr_srcu_hevc;
|
RK_U32 adr_srcv_hevc;
|
RK_U32 roi_addr_hevc;
|
RK_U32 rfpw_h_addr_hevc;
|
RK_U32 rfpw_b_addr_hevc;
|
RK_U32 rfpr_h_addr_hevc;
|
RK_U32 rfpr_b_addr_hevc;
|
RK_U32 cmvw_addr_hevc;
|
RK_U32 cmvr_addr_hevc;
|
RK_U32 dspw_addr_hevc;
|
RK_U32 dspr_addr_hevc;
|
RK_U32 meiw_addr_hevc;
|
RK_U32 bsbt_addr_hevc;
|
RK_U32 bsbb_addr_hevc;
|
RK_U32 bsbr_addr_hevc;
|
RK_U32 bsbw_addr_hevc; /* 0x158 */
|
|
/* 0x15c - swreg41, SLI_SPL */
|
struct {
|
RK_U32 sli_splt : 1;
|
RK_U32 sli_splt_mode : 1;
|
RK_U32 sli_splt_cpst : 1;
|
RK_U32 sli_max_num_m1 : 10;
|
RK_U32 sli_flsh : 1;
|
RK_U32 reserve : 2;
|
RK_U32 sli_splt_cnum_m1 : 16;
|
} sli_spl;
|
|
/* 0x160 - swreg42, SLI_SPL_BYTE */
|
struct {
|
RK_U32 sli_splt_byte : 18;
|
RK_U32 reserve : 14;
|
} sli_spl_byte;
|
|
/* 0x164 - swreg43, ME_RNGE */
|
struct {
|
RK_U32 cime_srch_h : 4;
|
RK_U32 cime_srch_v : 4;
|
RK_U32 rime_srch_h : 3;
|
RK_U32 rime_srch_v : 3;
|
RK_U32 reserved : 2;
|
RK_U32 dlt_frm_num : 16;
|
} me_rnge;
|
|
/* 0x168 - swreg44, ME_CNST */
|
struct {
|
RK_U32 pmv_mdst_h : 8;
|
RK_U32 pmv_mdst_v : 8;
|
RK_U32 mv_limit : 2;
|
RK_U32 mv_num : 2;
|
RK_U32 colmv_store : 1;
|
RK_U32 colmv_load : 1;
|
RK_U32 rime_dis_en : 5; /* used for rtl debug */
|
RK_U32 fme_dis_en : 5; /* used for rtl debug */
|
} me_cnst;
|
|
/* 0x16c - ME_RAM */
|
struct {
|
RK_U32 cime_rama_max : 11;
|
RK_U32 cime_rama_h : 5;
|
RK_U32 cach_l2_tag : 2;
|
RK_U32 cime_linebuf_w: 8; /*only used for 540*/
|
RK_U32 reserved : 6;
|
} me_ram;
|
|
/*0x170 - SYNT_REF_MARK4*/
|
struct {
|
RK_U32 poc_lsb_lt1 : 16;
|
RK_U32 poc_lsb_lt2 : 16;
|
} synt_ref_mark4;
|
|
/*0x174 SYNT_REF_MARK5*/
|
struct {
|
RK_U32 dlt_poc_msb_cycl1 : 16;
|
RK_U32 dlt_poc_msb_cycl2 : 16;
|
} synt_ref_mark5;
|
|
struct {
|
RK_U32 osd_ch_inv_en : 8;
|
RK_U32 osd_itype : 8;
|
RK_U32 osd_lu_inv_msk : 8;
|
RK_U32 osd_ch_inv_msk : 8;
|
} osd_inv_cfg;
|
RK_U32 lpfw_addr_hevc;
|
RK_U32 lpfr_addr_hevc;
|
RK_U32 reserved_0x184_0x190[4];
|
|
/* 0x194 - REG_THD, reserved */
|
RK_U32 reg_thd;
|
|
/* 0x198 - swreg56, RDO_CFG */
|
struct {
|
RK_U32 ltm_col : 1;
|
RK_U32 ltm_idx0l0 : 1;
|
RK_U32 chrm_special : 1;
|
RK_U32 rdoq_en : 1; /* may be used in the future */
|
RK_U32 reserved0 : 2;
|
RK_U32 cu_inter_en : 4;
|
RK_U32 reserved1 : 9;
|
RK_U32 cu_intra_en : 4;
|
RK_U32 chrm_klut_en : 1;
|
RK_U32 seq_scaling_matrix_present_flg : 2;
|
RK_U32 reserved2 : 5;
|
RK_U32 stad_byps_flg : 1; /*only for 540*/
|
} rdo_cfg;
|
|
/* 0x19c - swreg57, SYNT_NAL */
|
struct {
|
RK_U32 nal_unit_type : 6;
|
RK_U32 reserve : 26;
|
} synt_nal;
|
|
/* 0x1a0 - swreg58, SYNT_SPS */
|
struct {
|
RK_U32 smpl_adpt_ofst_en : 1;
|
RK_U32 num_st_ref_pic : 7;
|
RK_U32 lt_ref_pic_prsnt : 1;
|
RK_U32 num_lt_ref_pic : 6;
|
RK_U32 tmpl_mvp_en : 1;
|
RK_U32 log2_max_poc_lsb : 4;
|
RK_U32 strg_intra_smth : 1;
|
RK_U32 reserved : 11;
|
} synt_sps;
|
|
/* 0x1a4 - swreg59, SYNT_PPS */
|
struct {
|
RK_U32 dpdnt_sli_seg_en : 1;
|
RK_U32 out_flg_prsnt_flg : 1;
|
RK_U32 num_extr_sli_hdr : 3;
|
RK_U32 sgn_dat_hid_en : 1;
|
RK_U32 cbc_init_prsnt_flg : 1;
|
RK_U32 pic_init_qp : 6;
|
RK_U32 cu_qp_dlt_en : 1;
|
RK_U32 chrm_qp_ofst_prsn : 1;
|
RK_U32 lp_fltr_acrs_sli : 1;
|
RK_U32 dblk_fltr_ovrd_en : 1;
|
RK_U32 lst_mdfy_prsnt_flg : 1;
|
RK_U32 sli_seg_hdr_extn : 1;
|
RK_U32 cu_qp_dlt_depth : 2;
|
RK_U32 lpf_fltr_acrs_til : 1; /*only for 540*/
|
RK_U32 reserved : 10;
|
} synt_pps;
|
|
/* 0x1a8 - swreg60, SYNT_SLI0 */
|
struct {
|
RK_U32 cbc_init_flg : 1;
|
RK_U32 mvd_l1_zero_flg : 1;
|
RK_U32 merge_up_flag : 1;
|
RK_U32 merge_left_flag : 1;
|
RK_U32 reserved : 1;
|
RK_U32 ref_pic_lst_mdf_l0 : 1;
|
RK_U32 num_refidx_l1_act : 2;
|
RK_U32 num_refidx_l0_act : 2;
|
RK_U32 num_refidx_act_ovrd : 1;
|
RK_U32 sli_sao_chrm_flg : 1;
|
RK_U32 sli_sao_luma_flg : 1;
|
RK_U32 sli_tmprl_mvp_en : 1;
|
RK_U32 pic_out_flg : 1;
|
RK_U32 sli_type : 2;
|
RK_U32 sli_rsrv_flg : 7;
|
RK_U32 dpdnt_sli_seg_flg : 1;
|
RK_U32 sli_pps_id : 6;
|
RK_U32 no_out_pri_pic : 1;
|
} synt_sli0;
|
|
/* 0x1ac - swreg61, SYNT_SLI1 */
|
struct {
|
RK_S32 sli_tc_ofst_div2 : 4;
|
RK_S32 sli_beta_ofst_div2 : 4;
|
RK_U32 sli_lp_fltr_acrs_sli : 1;
|
RK_U32 sli_dblk_fltr_dis : 1;
|
RK_U32 dblk_fltr_ovrd_flg : 1;
|
RK_S32 sli_cb_qp_ofst : 5;
|
RK_U32 sli_qp : 6;
|
RK_U32 max_mrg_cnd : 3;
|
RK_U32 col_ref_idx : 1;
|
RK_U32 col_frm_l0_flg : 1;
|
RK_U32 lst_entry_l0 : 4;
|
RK_U32 reserved : 1;
|
} synt_sli1;
|
|
/* 0x1b0 - swreg62, SYNT_SLI2_RODR */
|
struct {
|
RK_U32 sli_poc_lsb : 16;
|
RK_U32 sli_hdr_ext_len : 9;
|
RK_U32 reserve : 7;
|
} synt_sli2_rodr;
|
|
/* 0x1b4 - swreg63, SYNT_REF_MARK0 */
|
struct {
|
RK_U32 st_ref_pic_flg : 1;
|
RK_U32 poc_lsb_lt0 : 16;
|
RK_U32 lt_idx_sps : 5;
|
RK_U32 num_lt_pic : 2;
|
RK_U32 st_ref_pic_idx : 6;
|
RK_U32 num_lt_sps : 2;
|
} synt_ref_mark0;
|
|
/* 0x1b8 - swreg64, SYNT_REF_MARK1 */
|
struct {
|
RK_U32 used_by_s0_flg : 4;
|
RK_U32 num_pos_pic : 1;
|
RK_U32 num_neg_pic : 5;
|
RK_U32 dlt_poc_msb_cycl0 : 16;
|
RK_U32 dlt_poc_msb_prsnt0 : 1;
|
RK_U32 dlt_poc_msb_prsnt1 : 1;
|
RK_U32 dlt_poc_msb_prsnt2 : 1;
|
RK_U32 used_by_lt_flg0 : 1;
|
RK_U32 used_by_lt_flg1 : 1;
|
RK_U32 used_by_lt_flg2 : 1;
|
} synt_ref_mark1;
|
|
RK_U32 reserved_0x1bc; /* not used for a long time */
|
|
/* 0x1c0 - OSD_CFG */
|
struct {
|
RK_U32 osd_en : 8;
|
RK_U32 osd_inv : 8;
|
RK_U32 osd_clk_sel : 1;
|
RK_U32 osd_plt_type : 1;
|
RK_U32 reserved : 14;
|
} osd_cfg;
|
|
/* 0x1c4 - OSD_INV */
|
struct {
|
RK_U32 osd_inv_r0 : 4;
|
RK_U32 osd_inv_r1 : 4;
|
RK_U32 osd_inv_r2 : 4;
|
RK_U32 osd_inv_r3 : 4;
|
RK_U32 osd_inv_r4 : 4;
|
RK_U32 osd_inv_r5 : 4;
|
RK_U32 osd_inv_r6 : 4;
|
RK_U32 osd_inv_r7 : 4;
|
} osd_inv;
|
|
/* 0x1c8 - SYNT_REF_MARK2 */
|
struct {
|
RK_U32 dlt_poc_s0_m10 : 16;
|
RK_U32 dlt_poc_s0_m11 : 16;
|
} synt_ref_mark2;
|
|
/* 0x1cc - SYNT_REF_MARK3 */
|
struct {
|
RK_U32 dlt_poc_s0_m12 : 16;
|
RK_U32 dlt_poc_s0_m13 : 16;
|
} synt_ref_mark3;
|
|
/* 0x1d0-0x1ec - OSD_POS0-OSD_POS7 */
|
OsdPos osd_pos[8];
|
|
/* 0x1f0-0x20c - OSD_ADDR0-OSD_ADDR7 */
|
RK_U32 osd_addr[8];
|
|
/* 0x210 - ST_BSL */
|
struct {
|
RK_U32 bs_lgth : 32;
|
} st_bsl;
|
|
/* 0x214 - ST_SSE_L32 */
|
struct {
|
RK_U32 sse_l32 : 32;
|
} st_sse_l32;
|
|
/* 0x218 - ST_SSE_QP */
|
struct {
|
RK_U32 qp_sum : 24; /* sum of valid CU8x8s' QP */
|
RK_U32 sse_h8 : 8;
|
} st_sse_qp;
|
|
/* 0x21c - ST_SAO */
|
struct {
|
RK_U32 slice_scnum : 12;
|
RK_U32 slice_slnum : 12;
|
RK_U32 reserve : 8;
|
} st_sao;
|
|
/* 0x220 - MMU0_STA, used by hardware?? */
|
RK_U32 mmu0_sta;
|
RK_U32 mmu1_sta;
|
|
/* 0x228 - ST_ENC */
|
struct {
|
RK_U32 st_enc : 2;
|
RK_U32 axiw_cln : 2;
|
RK_U32 axir_cln : 2;
|
RK_U32 reserve : 26;
|
} st_enc;
|
|
/* 0x22c - ST_LKT */
|
struct {
|
RK_U32 fnum_enc : 8;
|
RK_U32 fnum_cfg : 8;
|
RK_U32 fnum_int : 8;
|
RK_U32 reserve : 8;
|
} st_lkt;
|
|
/* 0x230 - ST_NOD */
|
struct {
|
RK_U32 node_addr : 32;
|
} st_nod;
|
|
/* 0x234 - ST_BSB */
|
struct {
|
RK_U32 Bsbw_ovfl : 1;
|
RK_U32 reserve : 2;
|
RK_U32 bsbw_addr : 29;
|
} st_bsb;
|
|
/* 0x238 - ST_DTRNS */
|
struct {
|
RK_U32 axib_idl : 7;
|
RK_U32 axib_ful : 7;
|
RK_U32 axib_err : 7;
|
RK_U32 axir_err : 6;
|
RK_U32 reserve : 5;
|
} st_dtrns;
|
|
/* 0x23c - ST_SNUM */
|
struct {
|
RK_U32 slice_num : 6;
|
RK_U32 reserve : 26;
|
} st_snum;
|
|
/* 0x240 - ST_SLEN */
|
struct {
|
RK_U32 slice_len : 23;
|
RK_U32 reserve : 9;
|
} st_slen;
|
|
/* 0x244-0x340 - debug registers
|
* ST_LVL64_INTER_NUM etc.
|
*/
|
RK_U32 st_lvl64_inter_num;
|
RK_U32 st_lvl32_inter_num;
|
RK_U32 st_lvl16_inter_num;
|
RK_U32 st_lvl8_inter_num;
|
RK_U32 st_lvl32_intra_num;
|
RK_U32 st_lvl16_intra_num;
|
RK_U32 st_lvl8_intra_num;
|
RK_U32 st_lvl4_intra_num;
|
RK_U32 st_cu_num_qp[52];
|
RK_U32 st_madp;
|
RK_U32 st_ctu_num; /* used for MADP calculation */
|
RK_U32 st_madi;
|
RK_U32 st_mb_num; /* used for MADI calculation */
|
|
} H265eV541RegSet;
|
|
typedef struct H265eV541IoctlExtraInfoElem_t {
|
RK_U32 reg_idx;
|
RK_U32 offset;
|
} H265eV541IoctlExtraInfoElem;
|
|
typedef struct H265eV541IoctlExtraInfo_t {
|
RK_U32 magic;
|
RK_U32 cnt;
|
H265eV541IoctlExtraInfoElem elem[20];
|
} H265eV541IoctlExtraInfo;
|
|
typedef struct H265eV541IoctlOutputElem_t {
|
RK_U32 hw_status;
|
|
struct {
|
RK_U32 bs_lgth : 32;
|
} st_bsl;
|
|
/* 0x214 - ST_SSE_L32 */
|
struct {
|
RK_U32 sse_l32 : 32;
|
} st_sse_l32;
|
|
/* 0x218 - ST_SSE_QP */
|
struct {
|
RK_U32 qp_sum : 24; /* sum of valid CU8x8s' QP */
|
RK_U32 sse_h8 : 8;
|
} st_sse_qp;
|
|
/* 0x21c - ST_SAO */
|
struct {
|
RK_U32 slice_scnum : 12;
|
RK_U32 slice_slnum : 12;
|
RK_U32 reserve : 8;
|
} st_sao;
|
|
/* 0x220 - MMU0_STA, used by hardware?? */
|
RK_U32 mmu0_sta;
|
RK_U32 mmu1_sta;
|
|
/* 0x228 - ST_ENC */
|
struct {
|
RK_U32 st_enc : 2;
|
RK_U32 axiw_cln : 2;
|
RK_U32 axir_cln : 2;
|
RK_U32 reserve : 26;
|
} st_enc;
|
|
/* 0x22c - ST_LKT */
|
struct {
|
RK_U32 fnum_enc : 8;
|
RK_U32 fnum_cfg : 8;
|
RK_U32 fnum_int : 8;
|
RK_U32 reserve : 8;
|
} st_lkt;
|
|
/* 0x230 - ST_NOD */
|
struct {
|
RK_U32 node_addr : 32;
|
} st_nod;
|
|
/* 0x234 - ST_BSB */
|
struct {
|
RK_U32 Bsbw_ovfl : 1;
|
RK_U32 reserve : 2;
|
RK_U32 bsbw_addr : 29;
|
} st_bsb;
|
|
/* 0x238 - ST_DTRNS */
|
struct {
|
RK_U32 axib_idl : 7;
|
RK_U32 axib_ful : 7;
|
RK_U32 axib_err : 7;
|
RK_U32 axir_err : 6;
|
RK_U32 reserve : 5;
|
} st_dtrns;
|
|
/* 0x23c - ST_SNUM */
|
struct {
|
RK_U32 slice_num : 6;
|
RK_U32 reserve : 26;
|
} st_snum;
|
|
/* 0x240 - ST_SLEN */
|
struct {
|
RK_U32 slice_len : 23;
|
RK_U32 reserve : 9;
|
} st_slen;
|
RK_U32 st_lvl64_inter_num;
|
RK_U32 st_lvl32_inter_num;
|
RK_U32 st_lvl16_inter_num;
|
RK_U32 st_lvl8_inter_num;
|
RK_U32 st_lvl32_intra_num;
|
RK_U32 st_lvl16_intra_num;
|
RK_U32 st_lvl8_intra_num;
|
RK_U32 st_lvl4_intra_num;
|
RK_U32 st_cu_num_qp[52];
|
RK_U32 st_madp;
|
RK_U32 st_ctu_num; /* used for MADP calculation */
|
RK_U32 st_madi;
|
RK_U32 st_mb_num; /* used for MADI calculation */
|
} H265eV541IoctlOutputElem;
|
|
#endif
|