xref: /openbmc/linux/drivers/staging/media/rkvdec/rkvdec-regs.h (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
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