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