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 0x028 |
87 | #define (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 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 | |