1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */ 2*437bfbebSnyanmisaka /* 3*437bfbebSnyanmisaka * Copyright (c) 2024 Rockchip Electronics Co., Ltd. 4*437bfbebSnyanmisaka */ 5*437bfbebSnyanmisaka 6*437bfbebSnyanmisaka #ifndef __VDPU384A_H264D_H__ 7*437bfbebSnyanmisaka #define __VDPU384A_H264D_H__ 8*437bfbebSnyanmisaka 9*437bfbebSnyanmisaka #include "vdpu384a_com.h" 10*437bfbebSnyanmisaka 11*437bfbebSnyanmisaka 12*437bfbebSnyanmisaka typedef struct Vdpu384aRegH264dParam_t { 13*437bfbebSnyanmisaka /* SWREG64_H26X_PARA */ 14*437bfbebSnyanmisaka RK_U32 reg64_unused_bits; 15*437bfbebSnyanmisaka 16*437bfbebSnyanmisaka /* SWREG65_STREAM_PARAM_SET */ 17*437bfbebSnyanmisaka RK_U32 reg65_strm_start_bit; 18*437bfbebSnyanmisaka 19*437bfbebSnyanmisaka /* SWREG66_STREAM_LEN */ 20*437bfbebSnyanmisaka RK_U32 reg66_stream_len; 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka /* SWREG67_GLOBAL_LEN */ 23*437bfbebSnyanmisaka RK_U32 reg67_global_len; 24*437bfbebSnyanmisaka 25*437bfbebSnyanmisaka /* SWREG68_DPB_HOR_STRIDE */ 26*437bfbebSnyanmisaka RK_U32 reg68_dpb_hor_virstride; 27*437bfbebSnyanmisaka 28*437bfbebSnyanmisaka RK_U32 reserve_reg69_70[2]; 29*437bfbebSnyanmisaka 30*437bfbebSnyanmisaka /* SWREG71_SCL_Y_HOR_VIRSTRIDE */ 31*437bfbebSnyanmisaka RK_U32 reg71_scl_ref_hor_virstride; 32*437bfbebSnyanmisaka 33*437bfbebSnyanmisaka /* SWREG72_SCL_UV_HOR_VIRSTRIDE */ 34*437bfbebSnyanmisaka RK_U32 reg72_scl_ref_raster_uv_hor_virstride; 35*437bfbebSnyanmisaka 36*437bfbebSnyanmisaka /* SWREG73_SCL_Y_VIRSTRIDE */ 37*437bfbebSnyanmisaka RK_U32 reg73_scl_ref_virstride; 38*437bfbebSnyanmisaka 39*437bfbebSnyanmisaka /* SWREG74_FGS_Y_HOR_VIRSTRIDE */ 40*437bfbebSnyanmisaka RK_U32 reg74_fgs_ref_hor_virstride; 41*437bfbebSnyanmisaka 42*437bfbebSnyanmisaka RK_U32 reserve_reg75_76[2]; 43*437bfbebSnyanmisaka 44*437bfbebSnyanmisaka /* SWREG77_HEAD_HOR_STRIDE */ 45*437bfbebSnyanmisaka RK_U32 reg77_pp_m_hor_stride; 46*437bfbebSnyanmisaka 47*437bfbebSnyanmisaka /* SWREG78_PP_M_RASTER_UV_HOR_STRIDE */ 48*437bfbebSnyanmisaka RK_U32 reg78_pp_m_uv_hor_stride; 49*437bfbebSnyanmisaka 50*437bfbebSnyanmisaka /* SWREG79_PP_M_Y_STRIDE */ 51*437bfbebSnyanmisaka RK_U32 reg79_pp_m_y_virstride; 52*437bfbebSnyanmisaka 53*437bfbebSnyanmisaka /* SWREG80_ERROR_REF_Y_HOR_VIRSTRIDE */ 54*437bfbebSnyanmisaka RK_U32 reg80_error_ref_hor_virstride; 55*437bfbebSnyanmisaka 56*437bfbebSnyanmisaka /* SWREG81_ERROR_REF_UV_HOR_VIRSTRIDE */ 57*437bfbebSnyanmisaka RK_U32 reg81_error_ref_raster_uv_hor_virstride; 58*437bfbebSnyanmisaka 59*437bfbebSnyanmisaka /* SWREG82_ERROR_REF_Y_VIRSTRIDE */ 60*437bfbebSnyanmisaka RK_U32 reg82_error_ref_virstride; 61*437bfbebSnyanmisaka 62*437bfbebSnyanmisaka /* SWREG83_REF0_Y_HOR_VIRSTRIDE */ 63*437bfbebSnyanmisaka RK_U32 reg83_ref0_hor_virstride; 64*437bfbebSnyanmisaka 65*437bfbebSnyanmisaka /* SWREG84_REF0_UV_HOR_VIRSTRIDE */ 66*437bfbebSnyanmisaka RK_U32 reg84_ref0_raster_uv_hor_virstride; 67*437bfbebSnyanmisaka 68*437bfbebSnyanmisaka /* SWREG85_REF0_Y_VIRSTRIDE */ 69*437bfbebSnyanmisaka RK_U32 reg85_ref0_virstride; 70*437bfbebSnyanmisaka 71*437bfbebSnyanmisaka /* SWREG86_REF1_Y_HOR_VIRSTRIDE */ 72*437bfbebSnyanmisaka RK_U32 reg86_ref1_hor_virstride; 73*437bfbebSnyanmisaka 74*437bfbebSnyanmisaka /* SWREG87_REF1_UV_HOR_VIRSTRIDE */ 75*437bfbebSnyanmisaka RK_U32 reg87_ref1_raster_uv_hor_virstride; 76*437bfbebSnyanmisaka 77*437bfbebSnyanmisaka /* SWREG88_REF1_Y_VIRSTRIDE */ 78*437bfbebSnyanmisaka RK_U32 reg88_ref1_virstride; 79*437bfbebSnyanmisaka 80*437bfbebSnyanmisaka /* SWREG89_REF2_Y_HOR_VIRSTRIDE */ 81*437bfbebSnyanmisaka RK_U32 reg89_ref2_hor_virstride; 82*437bfbebSnyanmisaka 83*437bfbebSnyanmisaka /* SWREG90_REF2_UV_HOR_VIRSTRIDE */ 84*437bfbebSnyanmisaka RK_U32 reg90_ref2_raster_uv_hor_virstride; 85*437bfbebSnyanmisaka 86*437bfbebSnyanmisaka /* SWREG91_REF2_Y_VIRSTRIDE */ 87*437bfbebSnyanmisaka RK_U32 reg91_ref2_virstride; 88*437bfbebSnyanmisaka 89*437bfbebSnyanmisaka /* SWREG92_REF3_Y_HOR_VIRSTRIDE */ 90*437bfbebSnyanmisaka RK_U32 reg92_ref3_hor_virstride; 91*437bfbebSnyanmisaka 92*437bfbebSnyanmisaka /* SWREG93_REF3_UV_HOR_VIRSTRIDE */ 93*437bfbebSnyanmisaka RK_U32 reg93_ref3_raster_uv_hor_virstride; 94*437bfbebSnyanmisaka 95*437bfbebSnyanmisaka /* SWREG94_REF3_Y_VIRSTRIDE */ 96*437bfbebSnyanmisaka RK_U32 reg94_ref3_virstride; 97*437bfbebSnyanmisaka 98*437bfbebSnyanmisaka /* SWREG95_REF4_Y_HOR_VIRSTRIDE */ 99*437bfbebSnyanmisaka RK_U32 reg95_ref4_hor_virstride; 100*437bfbebSnyanmisaka 101*437bfbebSnyanmisaka /* SWREG96_REF4_UV_HOR_VIRSTRIDE */ 102*437bfbebSnyanmisaka RK_U32 reg96_ref4_raster_uv_hor_virstride; 103*437bfbebSnyanmisaka 104*437bfbebSnyanmisaka /* SWREG97_REF4_Y_VIRSTRIDE */ 105*437bfbebSnyanmisaka RK_U32 reg97_ref4_virstride; 106*437bfbebSnyanmisaka 107*437bfbebSnyanmisaka /* SWREG98_REF5_Y_HOR_VIRSTRIDE */ 108*437bfbebSnyanmisaka RK_U32 reg98_ref5_hor_virstride; 109*437bfbebSnyanmisaka 110*437bfbebSnyanmisaka /* SWREG99_REF5_UV_HOR_VIRSTRIDE */ 111*437bfbebSnyanmisaka RK_U32 reg99_ref5_raster_uv_hor_virstride; 112*437bfbebSnyanmisaka 113*437bfbebSnyanmisaka /* SWREG100_REF5_Y_VIRSTRIDE */ 114*437bfbebSnyanmisaka RK_U32 reg100_ref5_virstride; 115*437bfbebSnyanmisaka 116*437bfbebSnyanmisaka /* SWREG101_REF6_Y_HOR_VIRSTRIDE */ 117*437bfbebSnyanmisaka RK_U32 reg101_ref6_hor_virstride; 118*437bfbebSnyanmisaka 119*437bfbebSnyanmisaka /* SWREG102_REF6_UV_HOR_VIRSTRIDE */ 120*437bfbebSnyanmisaka RK_U32 reg102_ref6_raster_uv_hor_virstride; 121*437bfbebSnyanmisaka 122*437bfbebSnyanmisaka /* SWREG103_REF6_Y_VIRSTRIDE */ 123*437bfbebSnyanmisaka RK_U32 reg103_ref6_virstride; 124*437bfbebSnyanmisaka 125*437bfbebSnyanmisaka /* SWREG104_REF7_Y_HOR_VIRSTRIDE */ 126*437bfbebSnyanmisaka RK_U32 reg104_ref7_hor_virstride; 127*437bfbebSnyanmisaka 128*437bfbebSnyanmisaka /* SWREG105_REF7_UV_HOR_VIRSTRIDE */ 129*437bfbebSnyanmisaka RK_U32 reg105_ref7_raster_uv_hor_virstride; 130*437bfbebSnyanmisaka 131*437bfbebSnyanmisaka /* SWREG106_REF7_Y_VIRSTRIDE */ 132*437bfbebSnyanmisaka RK_U32 reg106_ref7_virstride; 133*437bfbebSnyanmisaka 134*437bfbebSnyanmisaka } Vdpu384aRegH264dParam; 135*437bfbebSnyanmisaka 136*437bfbebSnyanmisaka typedef struct Vdpu384aRegH264dAddr_t { 137*437bfbebSnyanmisaka /* SWREG168_DECOUT_BASE */ 138*437bfbebSnyanmisaka RK_U32 reg168_dpb_decout_base; 139*437bfbebSnyanmisaka 140*437bfbebSnyanmisaka /* SWREG169_ERROR_REF_BASE */ 141*437bfbebSnyanmisaka RK_U32 reg169_error_ref_base; 142*437bfbebSnyanmisaka 143*437bfbebSnyanmisaka /* SWREG170_185_REF0_15_BASE */ 144*437bfbebSnyanmisaka RK_U32 reg170_185_ref_base[16]; 145*437bfbebSnyanmisaka 146*437bfbebSnyanmisaka RK_U32 reserve_reg186_191[6]; 147*437bfbebSnyanmisaka 148*437bfbebSnyanmisaka /* SWREG192_PAYLOAD_ST_CUR_BASE */ 149*437bfbebSnyanmisaka RK_U32 reg192_dpb_payload64x4_st_cur_base; 150*437bfbebSnyanmisaka 151*437bfbebSnyanmisaka /* SWREG193_FBC_PAYLOAD_OFFSET */ 152*437bfbebSnyanmisaka RK_U32 reg193_dpb_fbc64x4_payload_offset; 153*437bfbebSnyanmisaka 154*437bfbebSnyanmisaka /* SWREG194_PAYLOAD_ST_ERROR_REF_BASE */ 155*437bfbebSnyanmisaka RK_U32 reg194_payload_st_error_ref_base; 156*437bfbebSnyanmisaka 157*437bfbebSnyanmisaka /* SWREG195_210_PAYLOAD_ST_REF0_15_BASE */ 158*437bfbebSnyanmisaka RK_U32 reg195_210_payload_st_ref_base[16]; 159*437bfbebSnyanmisaka 160*437bfbebSnyanmisaka RK_U32 reserve_reg211_215[5]; 161*437bfbebSnyanmisaka 162*437bfbebSnyanmisaka /* SWREG216_COLMV_CUR_BASE */ 163*437bfbebSnyanmisaka RK_U32 reg216_colmv_cur_base; 164*437bfbebSnyanmisaka 165*437bfbebSnyanmisaka /* SWREG217_232_COLMV_REF0_15_BASE */ 166*437bfbebSnyanmisaka RK_U32 reg217_232_colmv_ref_base[16]; 167*437bfbebSnyanmisaka 168*437bfbebSnyanmisaka } Vdpu384aRegH264dAddr; 169*437bfbebSnyanmisaka 170*437bfbebSnyanmisaka 171*437bfbebSnyanmisaka typedef struct Vdpu384aH264dRegSet_t { 172*437bfbebSnyanmisaka Vdpu384aRegVersion reg_version; /* 0 */ 173*437bfbebSnyanmisaka Vdpu384aCtrlReg ctrl_regs; /* 8-30 */ 174*437bfbebSnyanmisaka Vdpu384aRegCommonAddr common_addr; /* 128-134, 140-161 */ 175*437bfbebSnyanmisaka // Vdpu384aRegNew new_add; /* 320-359 */ 176*437bfbebSnyanmisaka 177*437bfbebSnyanmisaka Vdpu384aRegH264dParam h264d_paras; /* 64-74, 80-106 */ 178*437bfbebSnyanmisaka Vdpu384aRegH264dAddr h264d_addrs; /* 168-185, 192-210, 216-232 */ 179*437bfbebSnyanmisaka } Vdpu384aH264dRegSet; 180*437bfbebSnyanmisaka 181*437bfbebSnyanmisaka #endif /* __VDPU384A_H264D_H__ */ 182