1*d968e50bSDetlev Casanova /* SPDX-License-Identifier: GPL-2.0 */ 2*d968e50bSDetlev Casanova 3*d968e50bSDetlev Casanova #ifndef RKVDEC_REGS_H_ 4*d968e50bSDetlev Casanova #define RKVDEC_REGS_H_ 5*d968e50bSDetlev Casanova 6*d968e50bSDetlev Casanova /* rkvcodec registers */ 7*d968e50bSDetlev Casanova #define RKVDEC_REG_INTERRUPT 0x004 8*d968e50bSDetlev Casanova #define RKVDEC_INTERRUPT_DEC_E BIT(0) 9*d968e50bSDetlev Casanova #define RKVDEC_CONFIG_DEC_CLK_GATE_E BIT(1) 10*d968e50bSDetlev Casanova #define RKVDEC_E_STRMD_CLKGATE_DIS BIT(2) 11*d968e50bSDetlev Casanova #define RKVDEC_TIMEOUT_MODE BIT(3) 12*d968e50bSDetlev Casanova #define RKVDEC_IRQ_DIS BIT(4) 13*d968e50bSDetlev Casanova #define RKVDEC_TIMEOUT_E BIT(5) 14*d968e50bSDetlev Casanova #define RKVDEC_BUF_EMPTY_E BIT(6) 15*d968e50bSDetlev Casanova #define RKVDEC_STRM_E_WAITDECFIFO_EMPTY BIT(7) 16*d968e50bSDetlev Casanova #define RKVDEC_IRQ BIT(8) 17*d968e50bSDetlev Casanova #define RKVDEC_IRQ_RAW BIT(9) 18*d968e50bSDetlev Casanova #define RKVDEC_E_REWRITE_VALID BIT(10) 19*d968e50bSDetlev Casanova #define RKVDEC_COMMONIRQ_MODE BIT(11) 20*d968e50bSDetlev Casanova #define RKVDEC_RDY_STA BIT(12) 21*d968e50bSDetlev Casanova #define RKVDEC_BUS_STA BIT(13) 22*d968e50bSDetlev Casanova #define RKVDEC_ERR_STA BIT(14) 23*d968e50bSDetlev Casanova #define RKVDEC_TIMEOUT_STA BIT(15) 24*d968e50bSDetlev Casanova #define RKVDEC_BUF_EMPTY_STA BIT(16) 25*d968e50bSDetlev Casanova #define RKVDEC_COLMV_REF_ERR_STA BIT(17) 26*d968e50bSDetlev Casanova #define RKVDEC_CABU_END_STA BIT(18) 27*d968e50bSDetlev Casanova #define RKVDEC_H264ORVP9_ERR_MODE BIT(19) 28*d968e50bSDetlev Casanova #define RKVDEC_SOFTRST_EN_P BIT(20) 29*d968e50bSDetlev Casanova #define RKVDEC_FORCE_SOFTRESET_VALID BIT(21) 30*d968e50bSDetlev Casanova #define RKVDEC_SOFTRESET_RDY BIT(22) 31*d968e50bSDetlev Casanova 32*d968e50bSDetlev Casanova #define RKVDEC_REG_SYSCTRL 0x008 33*d968e50bSDetlev Casanova #define RKVDEC_IN_ENDIAN BIT(0) 34*d968e50bSDetlev Casanova #define RKVDEC_IN_SWAP32_E BIT(1) 35*d968e50bSDetlev Casanova #define RKVDEC_IN_SWAP64_E BIT(2) 36*d968e50bSDetlev Casanova #define RKVDEC_STR_ENDIAN BIT(3) 37*d968e50bSDetlev Casanova #define RKVDEC_STR_SWAP32_E BIT(4) 38*d968e50bSDetlev Casanova #define RKVDEC_STR_SWAP64_E BIT(5) 39*d968e50bSDetlev Casanova #define RKVDEC_OUT_ENDIAN BIT(6) 40*d968e50bSDetlev Casanova #define RKVDEC_OUT_SWAP32_E BIT(7) 41*d968e50bSDetlev Casanova #define RKVDEC_OUT_CBCR_SWAP BIT(8) 42*d968e50bSDetlev Casanova #define RKVDEC_RLC_MODE_DIRECT_WRITE BIT(10) 43*d968e50bSDetlev Casanova #define RKVDEC_RLC_MODE BIT(11) 44*d968e50bSDetlev Casanova #define RKVDEC_STRM_START_BIT(x) (((x) & 0x7f) << 12) 45*d968e50bSDetlev Casanova #define RKVDEC_MODE(x) (((x) & 0x03) << 20) 46*d968e50bSDetlev Casanova #define RKVDEC_MODE_H264 1 47*d968e50bSDetlev Casanova #define RKVDEC_MODE_VP9 2 48*d968e50bSDetlev Casanova #define RKVDEC_RPS_MODE BIT(24) 49*d968e50bSDetlev Casanova #define RKVDEC_STRM_MODE BIT(25) 50*d968e50bSDetlev Casanova #define RKVDEC_H264_STRM_LASTPKT BIT(26) 51*d968e50bSDetlev Casanova #define RKVDEC_H264_FIRSTSLICE_FLAG BIT(27) 52*d968e50bSDetlev Casanova #define RKVDEC_H264_FRAME_ORSLICE BIT(28) 53*d968e50bSDetlev Casanova #define RKVDEC_BUSPR_SLOT_DIS BIT(29) 54*d968e50bSDetlev Casanova 55*d968e50bSDetlev Casanova #define RKVDEC_REG_PICPAR 0x00C 56*d968e50bSDetlev Casanova #define RKVDEC_Y_HOR_VIRSTRIDE(x) ((x) & 0x1ff) 57*d968e50bSDetlev Casanova #define RKVDEC_SLICE_NUM_HIGHBIT BIT(11) 58*d968e50bSDetlev Casanova #define RKVDEC_UV_HOR_VIRSTRIDE(x) (((x) & 0x1ff) << 12) 59*d968e50bSDetlev Casanova #define RKVDEC_SLICE_NUM_LOWBITS(x) (((x) & 0x7ff) << 21) 60*d968e50bSDetlev Casanova 61*d968e50bSDetlev Casanova #define RKVDEC_REG_STRM_RLC_BASE 0x010 62*d968e50bSDetlev Casanova 63*d968e50bSDetlev Casanova #define RKVDEC_REG_STRM_LEN 0x014 64*d968e50bSDetlev Casanova #define RKVDEC_STRM_LEN(x) ((x) & 0x7ffffff) 65*d968e50bSDetlev Casanova 66*d968e50bSDetlev Casanova #define RKVDEC_REG_CABACTBL_PROB_BASE 0x018 67*d968e50bSDetlev Casanova #define RKVDEC_REG_DECOUT_BASE 0x01C 68*d968e50bSDetlev Casanova 69*d968e50bSDetlev Casanova #define RKVDEC_REG_Y_VIRSTRIDE 0x020 70*d968e50bSDetlev Casanova #define RKVDEC_Y_VIRSTRIDE(x) ((x) & 0xfffff) 71*d968e50bSDetlev Casanova 72*d968e50bSDetlev Casanova #define RKVDEC_REG_YUV_VIRSTRIDE 0x024 73*d968e50bSDetlev Casanova #define RKVDEC_YUV_VIRSTRIDE(x) ((x) & 0x1fffff) 74*d968e50bSDetlev Casanova #define RKVDEC_REG_H264_BASE_REFER(i) (((i) * 0x04) + 0x028) 75*d968e50bSDetlev Casanova 76*d968e50bSDetlev Casanova #define RKVDEC_REG_H264_BASE_REFER15 0x0C0 77*d968e50bSDetlev Casanova #define RKVDEC_FIELD_REF BIT(0) 78*d968e50bSDetlev Casanova #define RKVDEC_TOPFIELD_USED_REF BIT(1) 79*d968e50bSDetlev Casanova #define RKVDEC_BOTFIELD_USED_REF BIT(2) 80*d968e50bSDetlev Casanova #define RKVDEC_COLMV_USED_FLAG_REF BIT(3) 81*d968e50bSDetlev Casanova 82*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_LAST_FRAME_BASE 0x02c 83*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_GOLDEN_FRAME_BASE 0x030 84*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_ALTREF_FRAME_BASE 0x034 85*d968e50bSDetlev Casanova 86*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_CPRHEADER_OFFSET 0x028 87*d968e50bSDetlev Casanova #define RKVDEC_VP9_CPRHEADER_OFFSET(x) ((x) & 0xffff) 88*d968e50bSDetlev Casanova 89*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_REFERLAST_BASE 0x02C 90*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_REFERGOLDEN_BASE 0x030 91*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_REFERALFTER_BASE 0x034 92*d968e50bSDetlev Casanova 93*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9COUNT_BASE 0x038 94*d968e50bSDetlev Casanova #define RKVDEC_VP9COUNT_UPDATE_EN BIT(0) 95*d968e50bSDetlev Casanova 96*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_SEGIDLAST_BASE 0x03C 97*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_SEGIDCUR_BASE 0x040 98*d968e50bSDetlev Casanova #define RKVDEC_REG_VP9_FRAME_SIZE(i) ((i) * 0x04 + 0x044) 99*d968e50bSDetlev Casanova #define RKVDEC_VP9_FRAMEWIDTH(x) (((x) & 0xffff) << 0) 100*d968e50bSDetlev Casanova #define RKVDEC_VP9_FRAMEHEIGHT(x) (((x) & 0xffff) << 16) 101*d968e50bSDetlev Casanova 102*d968e50bSDetlev Casanova #define RKVDEC_VP9_SEGID_GRP(i) ((i) * 0x04 + 0x050) 103*d968e50bSDetlev Casanova #define RKVDEC_SEGID_ABS_DELTA(x) ((x) & 0x1) 104*d968e50bSDetlev Casanova #define RKVDEC_SEGID_FRAME_QP_DELTA_EN(x) (((x) & 0x1) << 1) 105*d968e50bSDetlev Casanova #define RKVDEC_SEGID_FRAME_QP_DELTA(x) (((x) & 0x1ff) << 2) 106*d968e50bSDetlev Casanova #define RKVDEC_SEGID_FRAME_LOOPFILTER_VALUE_EN(x) (((x) & 0x1) << 11) 107*d968e50bSDetlev Casanova #define RKVDEC_SEGID_FRAME_LOOPFILTER_VALUE(x) (((x) & 0x7f) << 12) 108*d968e50bSDetlev Casanova #define RKVDEC_SEGID_REFERINFO_EN(x) (((x) & 0x1) << 19) 109*d968e50bSDetlev Casanova #define RKVDEC_SEGID_REFERINFO(x) (((x) & 0x03) << 20) 110*d968e50bSDetlev Casanova #define RKVDEC_SEGID_FRAME_SKIP_EN(x) (((x) & 0x1) << 22) 111*d968e50bSDetlev Casanova 112*d968e50bSDetlev Casanova #define RKVDEC_VP9_CPRHEADER_CONFIG 0x070 113*d968e50bSDetlev Casanova #define RKVDEC_VP9_TX_MODE(x) ((x) & 0x07) 114*d968e50bSDetlev Casanova #define RKVDEC_VP9_FRAME_REF_MODE(x) (((x) & 0x03) << 3) 115*d968e50bSDetlev Casanova 116*d968e50bSDetlev Casanova #define RKVDEC_VP9_REF_SCALE(i) ((i) * 0x04 + 0x074) 117*d968e50bSDetlev Casanova #define RKVDEC_VP9_REF_HOR_SCALE(x) ((x) & 0xffff) 118*d968e50bSDetlev Casanova #define RKVDEC_VP9_REF_VER_SCALE(x) (((x) & 0xffff) << 16) 119*d968e50bSDetlev Casanova 120*d968e50bSDetlev Casanova #define RKVDEC_VP9_REF_DELTAS_LASTFRAME 0x080 121*d968e50bSDetlev Casanova #define RKVDEC_REF_DELTAS_LASTFRAME(pos, val) (((val) & 0x7f) << ((pos) * 7)) 122*d968e50bSDetlev Casanova 123*d968e50bSDetlev Casanova #define RKVDEC_VP9_INFO_LASTFRAME 0x084 124*d968e50bSDetlev Casanova #define RKVDEC_MODE_DELTAS_LASTFRAME(pos, val) (((val) & 0x7f) << ((pos) * 7)) 125*d968e50bSDetlev Casanova #define RKVDEC_SEG_EN_LASTFRAME BIT(16) 126*d968e50bSDetlev Casanova #define RKVDEC_LAST_SHOW_FRAME BIT(17) 127*d968e50bSDetlev Casanova #define RKVDEC_LAST_INTRA_ONLY BIT(18) 128*d968e50bSDetlev Casanova #define RKVDEC_LAST_WIDHHEIGHT_EQCUR BIT(19) 129*d968e50bSDetlev Casanova #define RKVDEC_COLOR_SPACE_LASTKEYFRAME(x) (((x) & 0x07) << 20) 130*d968e50bSDetlev Casanova 131*d968e50bSDetlev Casanova #define RKVDEC_VP9_INTERCMD_BASE 0x088 132*d968e50bSDetlev Casanova 133*d968e50bSDetlev Casanova #define RKVDEC_VP9_INTERCMD_NUM 0x08C 134*d968e50bSDetlev Casanova #define RKVDEC_INTERCMD_NUM(x) ((x) & 0xffffff) 135*d968e50bSDetlev Casanova 136*d968e50bSDetlev Casanova #define RKVDEC_VP9_LASTTILE_SIZE 0x090 137*d968e50bSDetlev Casanova #define RKVDEC_LASTTILE_SIZE(x) ((x) & 0xffffff) 138*d968e50bSDetlev Casanova 139*d968e50bSDetlev Casanova #define RKVDEC_VP9_HOR_VIRSTRIDE(i) ((i) * 0x04 + 0x094) 140*d968e50bSDetlev Casanova #define RKVDEC_HOR_Y_VIRSTRIDE(x) ((x) & 0x1ff) 141*d968e50bSDetlev Casanova #define RKVDEC_HOR_UV_VIRSTRIDE(x) (((x) & 0x1ff) << 16) 142*d968e50bSDetlev Casanova 143*d968e50bSDetlev Casanova #define RKVDEC_REG_H264_POC_REFER0(i) (((i) * 0x04) + 0x064) 144*d968e50bSDetlev Casanova #define RKVDEC_REG_H264_POC_REFER1(i) (((i) * 0x04) + 0x0C4) 145*d968e50bSDetlev Casanova #define RKVDEC_REG_H264_POC_REFER2(i) (((i) * 0x04) + 0x120) 146*d968e50bSDetlev Casanova #define RKVDEC_POC_REFER(x) ((x) & 0xffffffff) 147*d968e50bSDetlev Casanova 148*d968e50bSDetlev Casanova #define RKVDEC_REG_CUR_POC0 0x0A0 149*d968e50bSDetlev Casanova #define RKVDEC_REG_CUR_POC1 0x128 150*d968e50bSDetlev Casanova #define RKVDEC_CUR_POC(x) ((x) & 0xffffffff) 151*d968e50bSDetlev Casanova 152*d968e50bSDetlev Casanova #define RKVDEC_REG_RLCWRITE_BASE 0x0A4 153*d968e50bSDetlev Casanova #define RKVDEC_REG_PPS_BASE 0x0A8 154*d968e50bSDetlev Casanova #define RKVDEC_REG_RPS_BASE 0x0AC 155*d968e50bSDetlev Casanova 156*d968e50bSDetlev Casanova #define RKVDEC_REG_STRMD_ERR_EN 0x0B0 157*d968e50bSDetlev Casanova #define RKVDEC_STRMD_ERR_EN(x) ((x) & 0xffffffff) 158*d968e50bSDetlev Casanova 159*d968e50bSDetlev Casanova #define RKVDEC_REG_STRMD_ERR_STA 0x0B4 160*d968e50bSDetlev Casanova #define RKVDEC_STRMD_ERR_STA(x) ((x) & 0xfffffff) 161*d968e50bSDetlev Casanova #define RKVDEC_COLMV_ERR_REF_PICIDX(x) (((x) & 0x0f) << 28) 162*d968e50bSDetlev Casanova 163*d968e50bSDetlev Casanova #define RKVDEC_REG_STRMD_ERR_CTU 0x0B8 164*d968e50bSDetlev Casanova #define RKVDEC_STRMD_ERR_CTU(x) ((x) & 0xff) 165*d968e50bSDetlev Casanova #define RKVDEC_STRMD_ERR_CTU_YOFFSET(x) (((x) & 0xff) << 8) 166*d968e50bSDetlev Casanova #define RKVDEC_STRMFIFO_SPACE2FULL(x) (((x) & 0x7f) << 16) 167*d968e50bSDetlev Casanova #define RKVDEC_VP9_ERR_EN_CTU0 BIT(24) 168*d968e50bSDetlev Casanova 169*d968e50bSDetlev Casanova #define RKVDEC_REG_SAO_CTU_POS 0x0BC 170*d968e50bSDetlev Casanova #define RKVDEC_SAOWR_XOFFSET(x) ((x) & 0x1ff) 171*d968e50bSDetlev Casanova #define RKVDEC_SAOWR_YOFFSET(x) (((x) & 0x3ff) << 16) 172*d968e50bSDetlev Casanova 173*d968e50bSDetlev Casanova #define RKVDEC_VP9_LAST_FRAME_YSTRIDE 0x0C0 174*d968e50bSDetlev Casanova #define RKVDEC_VP9_GOLDEN_FRAME_YSTRIDE 0x0C4 175*d968e50bSDetlev Casanova #define RKVDEC_VP9_ALTREF_FRAME_YSTRIDE 0x0C8 176*d968e50bSDetlev Casanova #define RKVDEC_VP9_REF_YSTRIDE(x) (((x) & 0xfffff) << 0) 177*d968e50bSDetlev Casanova 178*d968e50bSDetlev Casanova #define RKVDEC_VP9_LAST_FRAME_YUVSTRIDE 0x0CC 179*d968e50bSDetlev Casanova #define RKVDEC_VP9_REF_YUVSTRIDE(x) (((x) & 0x1fffff) << 0) 180*d968e50bSDetlev Casanova 181*d968e50bSDetlev Casanova #define RKVDEC_VP9_REF_COLMV_BASE 0x0D0 182*d968e50bSDetlev Casanova 183*d968e50bSDetlev Casanova #define RKVDEC_REG_PERFORMANCE_CYCLE 0x100 184*d968e50bSDetlev Casanova #define RKVDEC_PERFORMANCE_CYCLE(x) ((x) & 0xffffffff) 185*d968e50bSDetlev Casanova 186*d968e50bSDetlev Casanova #define RKVDEC_REG_AXI_DDR_RDATA 0x104 187*d968e50bSDetlev Casanova #define RKVDEC_AXI_DDR_RDATA(x) ((x) & 0xffffffff) 188*d968e50bSDetlev Casanova 189*d968e50bSDetlev Casanova #define RKVDEC_REG_AXI_DDR_WDATA 0x108 190*d968e50bSDetlev Casanova #define RKVDEC_AXI_DDR_WDATA(x) ((x) & 0xffffffff) 191*d968e50bSDetlev Casanova 192*d968e50bSDetlev Casanova #define RKVDEC_REG_FPGADEBUG_RESET 0x10C 193*d968e50bSDetlev Casanova #define RKVDEC_BUSIFD_RESETN BIT(0) 194*d968e50bSDetlev Casanova #define RKVDEC_CABAC_RESETN BIT(1) 195*d968e50bSDetlev Casanova #define RKVDEC_DEC_CTRL_RESETN BIT(2) 196*d968e50bSDetlev Casanova #define RKVDEC_TRANSD_RESETN BIT(3) 197*d968e50bSDetlev Casanova #define RKVDEC_INTRA_RESETN BIT(4) 198*d968e50bSDetlev Casanova #define RKVDEC_INTER_RESETN BIT(5) 199*d968e50bSDetlev Casanova #define RKVDEC_RECON_RESETN BIT(6) 200*d968e50bSDetlev Casanova #define RKVDEC_FILER_RESETN BIT(7) 201*d968e50bSDetlev Casanova 202*d968e50bSDetlev Casanova #define RKVDEC_REG_PERFORMANCE_SEL 0x110 203*d968e50bSDetlev Casanova #define RKVDEC_PERF_SEL_CNT0(x) ((x) & 0x3f) 204*d968e50bSDetlev Casanova #define RKVDEC_PERF_SEL_CNT1(x) (((x) & 0x3f) << 8) 205*d968e50bSDetlev Casanova #define RKVDEC_PERF_SEL_CNT2(x) (((x) & 0x3f) << 16) 206*d968e50bSDetlev Casanova 207*d968e50bSDetlev Casanova #define RKVDEC_REG_PERFORMANCE_CNT(i) ((i) * 0x04 + 0x114) 208*d968e50bSDetlev Casanova #define RKVDEC_PERF_CNT(x) ((x) & 0xffffffff) 209*d968e50bSDetlev Casanova 210*d968e50bSDetlev Casanova #define RKVDEC_REG_H264_ERRINFO_BASE 0x12C 211*d968e50bSDetlev Casanova 212*d968e50bSDetlev Casanova #define RKVDEC_REG_H264_ERRINFO_NUM 0x130 213*d968e50bSDetlev Casanova #define RKVDEC_SLICEDEC_NUM(x) ((x) & 0x3fff) 214*d968e50bSDetlev Casanova #define RKVDEC_STRMD_DECT_ERR_FLAG BIT(15) 215*d968e50bSDetlev Casanova #define RKVDEC_ERR_PKT_NUM(x) (((x) & 0x3fff) << 16) 216*d968e50bSDetlev Casanova 217*d968e50bSDetlev Casanova #define RKVDEC_REG_H264_ERR_E 0x134 218*d968e50bSDetlev Casanova #define RKVDEC_H264_ERR_EN_HIGHBITS(x) ((x) & 0x3fffffff) 219*d968e50bSDetlev Casanova 220*d968e50bSDetlev Casanova #define RKVDEC_REG_PREF_LUMA_CACHE_COMMAND 0x410 221*d968e50bSDetlev Casanova #define RKVDEC_REG_PREF_CHR_CACHE_COMMAND 0x450 222*d968e50bSDetlev Casanova 223*d968e50bSDetlev Casanova #endif /* RKVDEC_REGS_H_ */ 224