aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/staging/media/rkvdec/rkvdec-regs.h
blob: 15b9bee92016cfd85689368c83c7f271f1bd727f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
/* SPDX-License-Identifier: GPL-2.0 */

#ifndef RKVDEC_REGS_H_
#define RKVDEC_REGS_H_

/* rkvcodec registers */
#define RKVDEC_REG_INTERRUPT				0x004
#define RKVDEC_INTERRUPT_DEC_E				BIT(0)
#define RKVDEC_CONFIG_DEC_CLK_GATE_E			BIT(1)
#define RKVDEC_E_STRMD_CLKGATE_DIS			BIT(2)
#define RKVDEC_TIMEOUT_MODE				BIT(3)
#define RKVDEC_IRQ_DIS					BIT(4)
#define RKVDEC_TIMEOUT_E				BIT(5)
#define RKVDEC_BUF_EMPTY_E				BIT(6)
#define RKVDEC_STRM_E_WAITDECFIFO_EMPTY			BIT(7)
#define RKVDEC_IRQ					BIT(8)
#define RKVDEC_IRQ_RAW					BIT(9)
#define RKVDEC_E_REWRITE_VALID				BIT(10)
#define RKVDEC_COMMONIRQ_MODE				BIT(11)
#define RKVDEC_RDY_STA					BIT(12)
#define RKVDEC_BUS_STA					BIT(13)
#define RKVDEC_ERR_STA					BIT(14)
#define RKVDEC_TIMEOUT_STA				BIT(15)
#define RKVDEC_BUF_EMPTY_STA				BIT(16)
#define RKVDEC_COLMV_REF_ERR_STA			BIT(17)
#define RKVDEC_CABU_END_STA				BIT(18)
#define RKVDEC_H264ORVP9_ERR_MODE			BIT(19)
#define RKVDEC_SOFTRST_EN_P				BIT(20)
#define RKVDEC_FORCE_SOFTRESET_VALID			BIT(21)
#define RKVDEC_SOFTRESET_RDY				BIT(22)

#define RKVDEC_REG_SYSCTRL				0x008
#define RKVDEC_IN_ENDIAN				BIT(0)
#define RKVDEC_IN_SWAP32_E				BIT(1)
#define RKVDEC_IN_SWAP64_E				BIT(2)
#define RKVDEC_STR_ENDIAN				BIT(3)
#define RKVDEC_STR_SWAP32_E				BIT(4)
#define RKVDEC_STR_SWAP64_E				BIT(5)
#define RKVDEC_OUT_ENDIAN				BIT(6)
#define RKVDEC_OUT_SWAP32_E				BIT(7)
#define RKVDEC_OUT_CBCR_SWAP				BIT(8)
#define RKVDEC_RLC_MODE_DIRECT_WRITE			BIT(10)
#define RKVDEC_RLC_MODE					BIT(11)
#define RKVDEC_STRM_START_BIT(x)			(((x) & 0x7f) << 12)
#define RKVDEC_MODE(x)					(((x) & 0x03) << 20)
#define RKVDEC_MODE_H264				1
#define RKVDEC_MODE_VP9					2
#define RKVDEC_RPS_MODE					BIT(24)
#define RKVDEC_STRM_MODE				BIT(25)
#define RKVDEC_H264_STRM_LASTPKT			BIT(26)
#define RKVDEC_H264_FIRSTSLICE_FLAG			BIT(27)
#define RKVDEC_H264_FRAME_ORSLICE			BIT(28)
#define RKVDEC_BUSPR_SLOT_DIS				BIT(29)

#define RKVDEC_REG_PICPAR				0x00C
#define RKVDEC_Y_HOR_VIRSTRIDE(x)			((x) & 0x1ff)
#define RKVDEC_SLICE_NUM_HIGHBIT			BIT(11)
#define RKVDEC_UV_HOR_VIRSTRIDE(x)			(((x) & 0x1ff) << 12)
#define RKVDEC_SLICE_NUM_LOWBITS(x)			(((x) & 0x7ff) << 21)

#define RKVDEC_REG_STRM_RLC_BASE			0x010

#define RKVDEC_REG_STRM_LEN				0x014
#define RKVDEC_STRM_LEN(x)				((x) & 0x7ffffff)

#define RKVDEC_REG_CABACTBL_PROB_BASE			0x018
#define RKVDEC_REG_DECOUT_BASE				0x01C

#define RKVDEC_REG_Y_VIRSTRIDE				0x020
#define RKVDEC_Y_VIRSTRIDE(x)				((x) & 0xfffff)

#define RKVDEC_REG_YUV_VIRSTRIDE			0x024
#define RKVDEC_YUV_VIRSTRIDE(x)				((x) & 0x1fffff)
#define RKVDEC_REG_H264_BASE_REFER(i)			(((i) * 0x04) + 0x028)

#define RKVDEC_REG_H264_BASE_REFER15			0x0C0
#define RKVDEC_FIELD_REF				BIT(0)
#define RKVDEC_TOPFIELD_USED_REF			BIT(1)
#define RKVDEC_BOTFIELD_USED_REF			BIT(2)
#define RKVDEC_COLMV_USED_FLAG_REF			BIT(3)

#define RKVDEC_REG_VP9_LAST_FRAME_BASE			0x02c
#define RKVDEC_REG_VP9_GOLDEN_FRAME_BASE		0x030
#define RKVDEC_REG_VP9_ALTREF_FRAME_BASE		0x034

#define RKVDEC_REG_VP9_CPRHEADER_OFFSET			0x028
#define RKVDEC_VP9_CPRHEADER_OFFSET(x)			((x) & 0xffff)

#define RKVDEC_REG_VP9_REFERLAST_BASE			0x02C
#define RKVDEC_REG_VP9_REFERGOLDEN_BASE			0x030
#define RKVDEC_REG_VP9_REFERALFTER_BASE			0x034

#define RKVDEC_REG_VP9COUNT_BASE			0x038
#define RKVDEC_VP9COUNT_UPDATE_EN			BIT(0)

#define RKVDEC_REG_VP9_SEGIDLAST_BASE			0x03C
#define RKVDEC_REG_VP9_SEGIDCUR_BASE			0x040
#define RKVDEC_REG_VP9_FRAME_SIZE(i)			((i) * 0x04 + 0x044)
#define RKVDEC_VP9_FRAMEWIDTH(x)			(((x) & 0xffff) << 0)
#define RKVDEC_VP9_FRAMEHEIGHT(x)			(((x) & 0xffff) << 16)

#define RKVDEC_VP9_SEGID_GRP(i)				((i) * 0x04 + 0x050)
#define RKVDEC_SEGID_ABS_DELTA(x)			((x) & 0x1)
#define RKVDEC_SEGID_FRAME_QP_DELTA_EN(x)		(((x) & 0x1) << 1)
#define RKVDEC_SEGID_FRAME_QP_DELTA(x)			(((x) & 0x1ff) << 2)
#define RKVDEC_SEGID_FRAME_LOOPFILTER_VALUE_EN(x)	(((x) & 0x1) << 11)
#define RKVDEC_SEGID_FRAME_LOOPFILTER_VALUE(x)		(((x) & 0x7f) << 12)
#define RKVDEC_SEGID_REFERINFO_EN(x)			(((x) & 0x1) << 19)
#define RKVDEC_SEGID_REFERINFO(x)			(((x) & 0x03) << 20)
#define RKVDEC_SEGID_FRAME_SKIP_EN(x)			(((x) & 0x1) << 22)

#define RKVDEC_VP9_CPRHEADER_CONFIG			0x070
#define RKVDEC_VP9_TX_MODE(x)				((x) & 0x07)
#define RKVDEC_VP9_FRAME_REF_MODE(x)			(((x) & 0x03) << 3)

#define RKVDEC_VP9_REF_SCALE(i)				((i) * 0x04 + 0x074)
#define RKVDEC_VP9_REF_HOR_SCALE(x)			((x) & 0xffff)
#define RKVDEC_VP9_REF_VER_SCALE(x)			(((x) & 0xffff) << 16)

#define RKVDEC_VP9_REF_DELTAS_LASTFRAME			0x080
#define RKVDEC_REF_DELTAS_LASTFRAME(pos, val)		(((val) & 0x7f) << ((pos) * 7))

#define RKVDEC_VP9_INFO_LASTFRAME			0x084
#define RKVDEC_MODE_DELTAS_LASTFRAME(pos, val)		(((val) & 0x7f) << ((pos) * 7))
#define RKVDEC_SEG_EN_LASTFRAME				BIT(16)
#define RKVDEC_LAST_SHOW_FRAME				BIT(17)
#define RKVDEC_LAST_INTRA_ONLY				BIT(18)
#define RKVDEC_LAST_WIDHHEIGHT_EQCUR			BIT(19)
#define RKVDEC_COLOR_SPACE_LASTKEYFRAME(x)		(((x) & 0x07) << 20)

#define RKVDEC_VP9_INTERCMD_BASE			0x088

#define RKVDEC_VP9_INTERCMD_NUM				0x08C
#define RKVDEC_INTERCMD_NUM(x)				((x) & 0xffffff)

#define RKVDEC_VP9_LASTTILE_SIZE			0x090
#define RKVDEC_LASTTILE_SIZE(x)				((x) & 0xffffff)

#define RKVDEC_VP9_HOR_VIRSTRIDE(i)			((i) * 0x04 + 0x094)
#define RKVDEC_HOR_Y_VIRSTRIDE(x)			((x) & 0x1ff)
#define RKVDEC_HOR_UV_VIRSTRIDE(x)			(((x) & 0x1ff) << 16)

#define RKVDEC_REG_H264_POC_REFER0(i)			(((i) * 0x04) + 0x064)
#define RKVDEC_REG_H264_POC_REFER1(i)			(((i) * 0x04) + 0x0C4)
#define RKVDEC_REG_H264_POC_REFER2(i)			(((i) * 0x04) + 0x120)
#define RKVDEC_POC_REFER(x)				((x) & 0xffffffff)

#define RKVDEC_REG_CUR_POC0				0x0A0
#define RKVDEC_REG_CUR_POC1				0x128
#define RKVDEC_CUR_POC(x)				((x) & 0xffffffff)

#define RKVDEC_REG_RLCWRITE_BASE			0x0A4
#define RKVDEC_REG_PPS_BASE				0x0A8
#define RKVDEC_REG_RPS_BASE				0x0AC

#define RKVDEC_REG_STRMD_ERR_EN				0x0B0
#define RKVDEC_STRMD_ERR_EN(x)				((x) & 0xffffffff)

#define RKVDEC_REG_STRMD_ERR_STA			0x0B4
#define RKVDEC_STRMD_ERR_STA(x)				((x) & 0xfffffff)
#define RKVDEC_COLMV_ERR_REF_PICIDX(x)			(((x) & 0x0f) << 28)

#define RKVDEC_REG_STRMD_ERR_CTU			0x0B8
#define RKVDEC_STRMD_ERR_CTU(x)				((x) & 0xff)
#define RKVDEC_STRMD_ERR_CTU_YOFFSET(x)			(((x) & 0xff) << 8)
#define RKVDEC_STRMFIFO_SPACE2FULL(x)			(((x) & 0x7f) << 16)
#define RKVDEC_VP9_ERR_EN_CTU0				BIT(24)

#define RKVDEC_REG_SAO_CTU_POS				0x0BC
#define RKVDEC_SAOWR_XOFFSET(x)				((x) & 0x1ff)
#define RKVDEC_SAOWR_YOFFSET(x)				(((x) & 0x3ff) << 16)

#define RKVDEC_VP9_LAST_FRAME_YSTRIDE			0x0C0
#define RKVDEC_VP9_GOLDEN_FRAME_YSTRIDE			0x0C4
#define RKVDEC_VP9_ALTREF_FRAME_YSTRIDE			0x0C8
#define RKVDEC_VP9_REF_YSTRIDE(x)			(((x) & 0xfffff) << 0)

#define RKVDEC_VP9_LAST_FRAME_YUVSTRIDE			0x0CC
#define RKVDEC_VP9_REF_YUVSTRIDE(x)			(((x) & 0x1fffff) << 0)

#define RKVDEC_VP9_REF_COLMV_BASE			0x0D0

#define RKVDEC_REG_PERFORMANCE_CYCLE			0x100
#define RKVDEC_PERFORMANCE_CYCLE(x)			((x) & 0xffffffff)

#define RKVDEC_REG_AXI_DDR_RDATA			0x104
#define RKVDEC_AXI_DDR_RDATA(x)				((x) & 0xffffffff)

#define RKVDEC_REG_AXI_DDR_WDATA			0x108
#define RKVDEC_AXI_DDR_WDATA(x)				((x) & 0xffffffff)

#define RKVDEC_REG_FPGADEBUG_RESET			0x10C
#define RKVDEC_BUSIFD_RESETN				BIT(0)
#define RKVDEC_CABAC_RESETN				BIT(1)
#define RKVDEC_DEC_CTRL_RESETN				BIT(2)
#define RKVDEC_TRANSD_RESETN				BIT(3)
#define RKVDEC_INTRA_RESETN				BIT(4)
#define RKVDEC_INTER_RESETN				BIT(5)
#define RKVDEC_RECON_RESETN				BIT(6)
#define RKVDEC_FILER_RESETN				BIT(7)

#define RKVDEC_REG_PERFORMANCE_SEL			0x110
#define RKVDEC_PERF_SEL_CNT0(x)				((x) & 0x3f)
#define RKVDEC_PERF_SEL_CNT1(x)				(((x) & 0x3f) << 8)
#define RKVDEC_PERF_SEL_CNT2(x)				(((x) & 0x3f) << 16)

#define RKVDEC_REG_PERFORMANCE_CNT(i)			((i) * 0x04 + 0x114)
#define RKVDEC_PERF_CNT(x)				((x) & 0xffffffff)

#define RKVDEC_REG_H264_ERRINFO_BASE			0x12C

#define RKVDEC_REG_H264_ERRINFO_NUM			0x130
#define RKVDEC_SLICEDEC_NUM(x)				((x) & 0x3fff)
#define RKVDEC_STRMD_DECT_ERR_FLAG			BIT(15)
#define RKVDEC_ERR_PKT_NUM(x)				(((x) & 0x3fff) << 16)

#define RKVDEC_REG_H264_ERR_E				0x134
#define RKVDEC_H264_ERR_EN_HIGHBITS(x)			((x) & 0x3fffffff)

#define RKVDEC_REG_PREF_LUMA_CACHE_COMMAND		0x410
#define RKVDEC_REG_PREF_CHR_CACHE_COMMAND		0x450

#endif /* RKVDEC_REGS_H_ */