summaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/coda/coda_regs.h
blob: 8e015b8aa8fa01df3459837e06076bb8c295f813 (plain)
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
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
/*
 * linux/drivers/media/platform/coda/coda_regs.h
 *
 * Copyright (C) 2012 Vista Silicon SL
 *    Javier Martin <javier.martin@vista-silicon.com>
 *    Xavier Duret
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

#ifndef _REGS_CODA_H_
#define _REGS_CODA_H_

/* HW registers */
#define CODA_REG_BIT_CODE_RUN			0x000
#define		CODA_REG_RUN_ENABLE		(1 << 0)
#define CODA_REG_BIT_CODE_DOWN			0x004
#define		CODA_DOWN_ADDRESS_SET(x)	(((x) & 0xffff) << 16)
#define		CODA_DOWN_DATA_SET(x)		((x) & 0xffff)
#define CODA_REG_BIT_HOST_IN_REQ		0x008
#define CODA_REG_BIT_INT_CLEAR			0x00c
#define		CODA_REG_BIT_INT_CLEAR_SET	0x1
#define CODA_REG_BIT_INT_STATUS		0x010
#define CODA_REG_BIT_CODE_RESET		0x014
#define		CODA_REG_RESET_ENABLE		(1 << 0)
#define CODA_REG_BIT_CUR_PC			0x018
#define CODA9_REG_BIT_SW_RESET			0x024
#define		CODA9_SW_RESET_BPU_CORE   0x008
#define		CODA9_SW_RESET_BPU_BUS    0x010
#define		CODA9_SW_RESET_VCE_CORE   0x020
#define		CODA9_SW_RESET_VCE_BUS    0x040
#define		CODA9_SW_RESET_GDI_CORE   0x080
#define		CODA9_SW_RESET_GDI_BUS    0x100
#define CODA9_REG_BIT_SW_RESET_STATUS		0x034

/* Static SW registers */
#define CODA_REG_BIT_CODE_BUF_ADDR		0x100
#define CODA_REG_BIT_WORK_BUF_ADDR		0x104
#define CODA_REG_BIT_PARA_BUF_ADDR		0x108
#define CODA_REG_BIT_STREAM_CTRL		0x10c
#define		CODA7_STREAM_BUF_PIC_RESET	(1 << 4)
#define		CODADX6_STREAM_BUF_PIC_RESET	(1 << 3)
#define		CODA7_STREAM_BUF_PIC_FLUSH	(1 << 3)
#define		CODADX6_STREAM_BUF_PIC_FLUSH	(1 << 2)
#define		CODA7_STREAM_BUF_DYNALLOC_EN	(1 << 5)
#define		CODADX6_STREAM_BUF_DYNALLOC_EN	(1 << 4)
#define		CODADX6_STREAM_CHKDIS_OFFSET	(1 << 1)
#define		CODA7_STREAM_SEL_64BITS_ENDIAN	(1 << 1)
#define		CODA_STREAM_ENDIAN_SELECT	(1 << 0)
#define CODA_REG_BIT_FRAME_MEM_CTRL		0x110
#define		CODA_FRAME_CHROMA_INTERLEAVE	(1 << 2)
#define		CODA_IMAGE_ENDIAN_SELECT	(1 << 0)
#define CODA_REG_BIT_BIT_STREAM_PARAM		0x114
#define		CODA_BIT_STREAM_END_FLAG	(1 << 2)
#define		CODA_BIT_DEC_SEQ_INIT_ESCAPE	(1 << 0)
#define CODA_REG_BIT_TEMP_BUF_ADDR		0x118
#define CODA_REG_BIT_RD_PTR(x)			(0x120 + 8 * (x))
#define CODA_REG_BIT_WR_PTR(x)			(0x124 + 8 * (x))
#define CODA_REG_BIT_FRM_DIS_FLG(x)		(0x150 + 4 * (x))
#define CODADX6_REG_BIT_SEARCH_RAM_BASE_ADDR	0x140
#define CODA7_REG_BIT_AXI_SRAM_USE		0x140
#define		CODA9_USE_HOST_BTP_ENABLE	(1 << 13)
#define		CODA9_USE_HOST_OVL_ENABLE	(1 << 12)
#define		CODA7_USE_HOST_ME_ENABLE	(1 << 11)
#define		CODA9_USE_HOST_DBK_ENABLE	(3 << 10)
#define		CODA7_USE_HOST_OVL_ENABLE	(1 << 10)
#define		CODA7_USE_HOST_DBK_ENABLE	(1 << 9)
#define		CODA9_USE_HOST_IP_ENABLE	(1 << 9)
#define		CODA7_USE_HOST_IP_ENABLE	(1 << 8)
#define		CODA9_USE_HOST_BIT_ENABLE	(1 << 8)
#define		CODA7_USE_HOST_BIT_ENABLE	(1 << 7)
#define		CODA9_USE_BTP_ENABLE		(1 << 5)
#define		CODA7_USE_ME_ENABLE		(1 << 4)
#define		CODA9_USE_OVL_ENABLE		(1 << 4)
#define		CODA7_USE_OVL_ENABLE		(1 << 3)
#define		CODA9_USE_DBK_ENABLE		(3 << 2)
#define		CODA7_USE_DBK_ENABLE		(1 << 2)
#define		CODA7_USE_IP_ENABLE		(1 << 1)
#define		CODA7_USE_BIT_ENABLE		(1 << 0)

#define CODA_REG_BIT_BUSY			0x160
#define		CODA_REG_BIT_BUSY_FLAG		1
#define CODA_REG_BIT_RUN_COMMAND		0x164
#define		CODA_COMMAND_SEQ_INIT		1
#define		CODA_COMMAND_SEQ_END		2
#define		CODA_COMMAND_PIC_RUN		3
#define		CODA_COMMAND_SET_FRAME_BUF	4
#define		CODA_COMMAND_ENCODE_HEADER	5
#define		CODA_COMMAND_ENC_PARA_SET	6
#define		CODA_COMMAND_DEC_PARA_SET	7
#define		CODA_COMMAND_DEC_BUF_FLUSH	8
#define		CODA_COMMAND_RC_CHANGE_PARAMETER 9
#define		CODA_COMMAND_FIRMWARE_GET	0xf
#define CODA_REG_BIT_RUN_INDEX			0x168
#define		CODA_INDEX_SET(x)		((x) & 0x3)
#define CODA_REG_BIT_RUN_COD_STD		0x16c
#define		CODADX6_MODE_DECODE_MP4		0
#define		CODADX6_MODE_ENCODE_MP4		1
#define		CODADX6_MODE_DECODE_H264	2
#define		CODADX6_MODE_ENCODE_H264	3
#define		CODA7_MODE_DECODE_H264		0
#define		CODA7_MODE_DECODE_VC1		1
#define		CODA7_MODE_DECODE_MP2		2
#define		CODA7_MODE_DECODE_MP4		3
#define		CODA7_MODE_DECODE_DV3		3
#define		CODA7_MODE_DECODE_RV		4
#define		CODA7_MODE_DECODE_MJPG		5
#define		CODA7_MODE_ENCODE_H264		8
#define		CODA7_MODE_ENCODE_MP4		11
#define		CODA7_MODE_ENCODE_MJPG		13
#define		CODA9_MODE_DECODE_H264		0
#define		CODA9_MODE_DECODE_VC1		1
#define		CODA9_MODE_DECODE_MP2		2
#define		CODA9_MODE_DECODE_MP4		3
#define		CODA9_MODE_DECODE_DV3		3
#define		CODA9_MODE_DECODE_RV		4
#define		CODA9_MODE_DECODE_AVS		5
#define		CODA9_MODE_DECODE_MJPG		6
#define		CODA9_MODE_DECODE_VPX		7
#define		CODA9_MODE_ENCODE_H264		8
#define		CODA9_MODE_ENCODE_MP4		11
#define		CODA9_MODE_ENCODE_MJPG		13
#define 	CODA_MODE_INVALID		0xffff
#define CODA_REG_BIT_INT_ENABLE		0x170
#define		CODA_INT_INTERRUPT_ENABLE	(1 << 3)
#define CODA_REG_BIT_INT_REASON			0x174
#define CODA7_REG_BIT_RUN_AUX_STD		0x178
#define		CODA_MP4_AUX_MPEG4		0
#define		CODA_MP4_AUX_DIVX3		1
#define		CODA_VPX_AUX_THO		0
#define		CODA_VPX_AUX_VP6		1
#define		CODA_VPX_AUX_VP8		2
#define		CODA_H264_AUX_AVC		0
#define		CODA_H264_AUX_MVC		1

/*
 * Commands' mailbox:
 * registers with offsets in the range 0x180-0x1d0
 * have different meaning depending on the command being
 * issued.
 */

/* Decoder Sequence Initialization */
#define CODA_CMD_DEC_SEQ_BB_START		0x180
#define CODA_CMD_DEC_SEQ_BB_SIZE		0x184
#define CODA_CMD_DEC_SEQ_OPTION			0x188
#define		CODA_NO_INT_ENABLE			(1 << 10)
#define		CODA_REORDER_ENABLE			(1 << 1)
#define		CODADX6_QP_REPORT			(1 << 0)
#define		CODA7_MP4_DEBLK_ENABLE			(1 << 0)
#define CODA_CMD_DEC_SEQ_SRC_SIZE		0x18c
#define CODA_CMD_DEC_SEQ_START_BYTE		0x190
#define CODA_CMD_DEC_SEQ_PS_BB_START		0x194
#define CODA_CMD_DEC_SEQ_PS_BB_SIZE		0x198
#define CODA_CMD_DEC_SEQ_MP4_ASP_CLASS		0x19c
#define CODA_CMD_DEC_SEQ_X264_MV_EN		0x19c
#define CODA_CMD_DEC_SEQ_SPP_CHUNK_SIZE		0x1a0

#define CODA7_RET_DEC_SEQ_ASPECT		0x1b0
#define CODA9_RET_DEC_SEQ_BITRATE		0x1b4
#define CODA_RET_DEC_SEQ_SUCCESS		0x1c0
#define CODA_RET_DEC_SEQ_SRC_FMT		0x1c4 /* SRC_SIZE on CODA7 */
#define CODA_RET_DEC_SEQ_SRC_SIZE		0x1c4
#define CODA_RET_DEC_SEQ_SRC_F_RATE		0x1c8
#define CODA9_RET_DEC_SEQ_ASPECT		0x1c8
#define CODA_RET_DEC_SEQ_FRAME_NEED		0x1cc
#define CODA_RET_DEC_SEQ_FRAME_DELAY		0x1d0
#define CODA_RET_DEC_SEQ_INFO			0x1d4
#define CODA_RET_DEC_SEQ_CROP_LEFT_RIGHT	0x1d8
#define CODA_RET_DEC_SEQ_CROP_TOP_BOTTOM	0x1dc
#define CODA_RET_DEC_SEQ_NEXT_FRAME_NUM		0x1e0
#define CODA_RET_DEC_SEQ_ERR_REASON		0x1e0
#define CODA_RET_DEC_SEQ_FRATE_NR		0x1e4
#define CODA_RET_DEC_SEQ_FRATE_DR		0x1e8
#define CODA_RET_DEC_SEQ_JPG_PARA		0x1e4
#define CODA_RET_DEC_SEQ_JPG_THUMB_IND		0x1e8
#define CODA9_RET_DEC_SEQ_HEADER_REPORT		0x1ec

/* Decoder Picture Run */
#define CODA_CMD_DEC_PIC_ROT_MODE		0x180
#define CODA_CMD_DEC_PIC_ROT_ADDR_Y		0x184
#define CODA9_CMD_DEC_PIC_ROT_INDEX		0x184
#define CODA_CMD_DEC_PIC_ROT_ADDR_CB		0x188
#define CODA9_CMD_DEC_PIC_ROT_ADDR_Y		0x188
#define CODA_CMD_DEC_PIC_ROT_ADDR_CR		0x18c
#define CODA9_CMD_DEC_PIC_ROT_ADDR_CB		0x18c
#define CODA_CMD_DEC_PIC_ROT_STRIDE		0x190
#define CODA9_CMD_DEC_PIC_ROT_ADDR_CR		0x190
#define CODA9_CMD_DEC_PIC_ROT_STRIDE		0x1b8

#define CODA_CMD_DEC_PIC_OPTION			0x194
#define		CODA_PRE_SCAN_EN			(1 << 0)
#define		CODA_PRE_SCAN_MODE_DECODE		(0 << 1)
#define		CODA_PRE_SCAN_MODE_RETURN		(1 << 1)
#define		CODA_IFRAME_SEARCH_EN			(1 << 2)
#define		CODA_SKIP_FRAME_MODE			(0x3 << 3)
#define CODA_CMD_DEC_PIC_SKIP_NUM		0x198
#define CODA_CMD_DEC_PIC_CHUNK_SIZE		0x19c
#define CODA_CMD_DEC_PIC_BB_START		0x1a0
#define CODA_CMD_DEC_PIC_START_BYTE		0x1a4
#define CODA_RET_DEC_PIC_SIZE			0x1bc
#define CODA_RET_DEC_PIC_FRAME_NUM		0x1c0
#define CODA_RET_DEC_PIC_FRAME_IDX		0x1c4
#define CODA_RET_DEC_PIC_ERR_MB			0x1c8
#define CODA_RET_DEC_PIC_TYPE			0x1cc
#define		CODA_PIC_TYPE_MASK			0x7
#define		CODA_PIC_TYPE_MASK_VC1			0x3f
#define		CODA9_PIC_TYPE_FIRST_MASK		(0x7 << 3)
#define		CODA9_PIC_TYPE_IDR_MASK			(0x3 << 6)
#define		CODA7_PIC_TYPE_H264_NPF_MASK		(0x3 << 16)
#define		CODA7_PIC_TYPE_INTERLACED		(1 << 18)
#define CODA_RET_DEC_PIC_POST			0x1d0
#define CODA_RET_DEC_PIC_MVC_REPORT		0x1d0
#define CODA_RET_DEC_PIC_OPTION			0x1d4
#define CODA_RET_DEC_PIC_SUCCESS		0x1d8
#define CODA_RET_DEC_PIC_CUR_IDX		0x1dc
#define CODA_RET_DEC_PIC_CROP_LEFT_RIGHT	0x1e0
#define CODA_RET_DEC_PIC_CROP_TOP_BOTTOM	0x1e4
#define CODA_RET_DEC_PIC_FRAME_NEED		0x1ec

#define CODA9_RET_DEC_PIC_VP8_PIC_REPORT	0x1e8
#define CODA9_RET_DEC_PIC_ASPECT		0x1f0
#define CODA9_RET_DEC_PIC_VP8_SCALE_INFO	0x1f0
#define CODA9_RET_DEC_PIC_FRATE_NR		0x1f4
#define CODA9_RET_DEC_PIC_FRATE_DR		0x1f8

/* Encoder Sequence Initialization */
#define CODA_CMD_ENC_SEQ_BB_START				0x180
#define CODA_CMD_ENC_SEQ_BB_SIZE				0x184
#define CODA_CMD_ENC_SEQ_OPTION				0x188
#define		CODA7_OPTION_AVCINTRA16X16ONLY_OFFSET		9
#define		CODA9_OPTION_MVC_PREFIX_NAL_OFFSET		9
#define		CODA7_OPTION_GAMMA_OFFSET			8
#define		CODA9_OPTION_MVC_PARASET_REFRESH_OFFSET		8
#define		CODA7_OPTION_RCQPMAX_OFFSET			7
#define		CODA9_OPTION_GAMMA_OFFSET			7
#define		CODADX6_OPTION_GAMMA_OFFSET			7
#define		CODA7_OPTION_RCQPMIN_OFFSET			6
#define		CODA9_OPTION_RCQPMAX_OFFSET			6
#define		CODA_OPTION_LIMITQP_OFFSET			6
#define		CODA_OPTION_RCINTRAQP_OFFSET			5
#define		CODA_OPTION_FMO_OFFSET				4
#define		CODA9_OPTION_MVC_INTERVIEW_OFFSET		4
#define		CODA_OPTION_AVC_AUD_OFFSET			2
#define		CODA_OPTION_SLICEREPORT_OFFSET			1
#define CODA_CMD_ENC_SEQ_COD_STD				0x18c
#define		CODA_STD_MPEG4					0
#define		CODA9_STD_H264					0
#define		CODA_STD_H263					1
#define		CODA_STD_H264					2
#define		CODA_STD_MJPG					3
#define		CODA9_STD_MPEG4					3

#define CODA_CMD_ENC_SEQ_SRC_SIZE				0x190
#define		CODA7_PICWIDTH_OFFSET				16
#define		CODA7_PICWIDTH_MASK				0xffff
#define		CODADX6_PICWIDTH_OFFSET				10
#define		CODADX6_PICWIDTH_MASK				0x3ff
#define		CODA_PICHEIGHT_OFFSET				0
#define		CODADX6_PICHEIGHT_MASK				0x3ff
#define		CODA7_PICHEIGHT_MASK				0xffff
#define CODA_CMD_ENC_SEQ_SRC_F_RATE				0x194
#define CODA_CMD_ENC_SEQ_MP4_PARA				0x198
#define		CODA_MP4PARAM_VERID_OFFSET			6
#define		CODA_MP4PARAM_VERID_MASK			0x01
#define		CODA_MP4PARAM_INTRADCVLCTHR_OFFSET		2
#define		CODA_MP4PARAM_INTRADCVLCTHR_MASK		0x07
#define		CODA_MP4PARAM_REVERSIBLEVLCENABLE_OFFSET	1
#define		CODA_MP4PARAM_REVERSIBLEVLCENABLE_MASK		0x01
#define		CODA_MP4PARAM_DATAPARTITIONENABLE_OFFSET	0
#define		CODA_MP4PARAM_DATAPARTITIONENABLE_MASK		0x01
#define CODA_CMD_ENC_SEQ_263_PARA				0x19c
#define		CODA_263PARAM_ANNEXJENABLE_OFFSET		2
#define		CODA_263PARAM_ANNEXJENABLE_MASK		0x01
#define		CODA_263PARAM_ANNEXKENABLE_OFFSET		1
#define		CODA_263PARAM_ANNEXKENABLE_MASK		0x01
#define		CODA_263PARAM_ANNEXTENABLE_OFFSET		0
#define		CODA_263PARAM_ANNEXTENABLE_MASK		0x01
#define CODA_CMD_ENC_SEQ_264_PARA				0x1a0
#define		CODA_264PARAM_DEBLKFILTEROFFSETBETA_OFFSET	12
#define		CODA_264PARAM_DEBLKFILTEROFFSETBETA_MASK	0x0f
#define		CODA_264PARAM_DEBLKFILTEROFFSETALPHA_OFFSET	8
#define		CODA_264PARAM_DEBLKFILTEROFFSETALPHA_MASK	0x0f
#define		CODA_264PARAM_DISABLEDEBLK_OFFSET		6
#define		CODA_264PARAM_DISABLEDEBLK_MASK		0x01
#define		CODA_264PARAM_CONSTRAINEDINTRAPREDFLAG_OFFSET	5
#define		CODA_264PARAM_CONSTRAINEDINTRAPREDFLAG_MASK	0x01
#define		CODA_264PARAM_CHROMAQPOFFSET_OFFSET		0
#define		CODA_264PARAM_CHROMAQPOFFSET_MASK		0x1f
#define CODA_CMD_ENC_SEQ_SLICE_MODE				0x1a4
#define		CODA_SLICING_SIZE_OFFSET			2
#define		CODA_SLICING_SIZE_MASK				0x3fffffff
#define		CODA_SLICING_UNIT_OFFSET			1
#define		CODA_SLICING_UNIT_MASK				0x01
#define		CODA_SLICING_MODE_OFFSET			0
#define		CODA_SLICING_MODE_MASK				0x01
#define CODA_CMD_ENC_SEQ_GOP_SIZE				0x1a8
#define		CODA_GOP_SIZE_OFFSET				0
#define		CODA_GOP_SIZE_MASK				0x3f
#define CODA_CMD_ENC_SEQ_RC_PARA				0x1ac
#define		CODA_RATECONTROL_AUTOSKIP_OFFSET		31
#define		CODA_RATECONTROL_AUTOSKIP_MASK			0x01
#define		CODA_RATECONTROL_INITIALDELAY_OFFSET		16
#define		CODA_RATECONTROL_INITIALDELAY_MASK		0x7f
#define		CODA_RATECONTROL_BITRATE_OFFSET		1
#define		CODA_RATECONTROL_BITRATE_MASK			0x7f
#define		CODA_RATECONTROL_ENABLE_OFFSET			0
#define		CODA_RATECONTROL_ENABLE_MASK			0x01
#define CODA_CMD_ENC_SEQ_RC_BUF_SIZE				0x1b0
#define CODA_CMD_ENC_SEQ_INTRA_REFRESH				0x1b4
#define CODADX6_CMD_ENC_SEQ_FMO					0x1b8
#define		CODA_FMOPARAM_TYPE_OFFSET			4
#define		CODA_FMOPARAM_TYPE_MASK				1
#define		CODA_FMOPARAM_SLICENUM_OFFSET			0
#define		CODA_FMOPARAM_SLICENUM_MASK			0x0f
#define CODADX6_CMD_ENC_SEQ_INTRA_QP				0x1bc
#define CODA7_CMD_ENC_SEQ_SEARCH_BASE				0x1b8
#define CODA7_CMD_ENC_SEQ_SEARCH_SIZE				0x1bc
#define CODA7_CMD_ENC_SEQ_INTRA_QP				0x1c4
#define CODA_CMD_ENC_SEQ_RC_QP_MIN_MAX				0x1c8
#define		CODA_QPMIN_OFFSET				8
#define		CODA_QPMIN_MASK					0x3f
#define		CODA_QPMAX_OFFSET				0
#define		CODA_QPMAX_MASK					0x3f
#define CODA_CMD_ENC_SEQ_RC_GAMMA				0x1cc
#define		CODA_GAMMA_OFFSET				0
#define		CODA_GAMMA_MASK					0xffff
#define CODA_CMD_ENC_SEQ_RC_INTERVAL_MODE			0x1d0
#define CODA9_CMD_ENC_SEQ_INTRA_WEIGHT				0x1d4
#define CODA9_CMD_ENC_SEQ_ME_OPTION				0x1d8
#define CODA_RET_ENC_SEQ_SUCCESS				0x1c0

#define CODA_CMD_ENC_SEQ_JPG_PARA				0x198
#define CODA_CMD_ENC_SEQ_JPG_RST_INTERVAL			0x19C
#define CODA_CMD_ENC_SEQ_JPG_THUMB_EN				0x1a0
#define CODA_CMD_ENC_SEQ_JPG_THUMB_SIZE				0x1a4
#define CODA_CMD_ENC_SEQ_JPG_THUMB_OFFSET			0x1a8

/* Encoder Picture Run */
#define CODA9_CMD_ENC_PIC_SRC_INDEX		0x180
#define CODA9_CMD_ENC_PIC_SRC_STRIDE		0x184
#define CODA9_CMD_ENC_PIC_SUB_FRAME_SYNC	0x1a4
#define CODA9_CMD_ENC_PIC_SRC_ADDR_Y		0x1a8
#define CODA9_CMD_ENC_PIC_SRC_ADDR_CB		0x1ac
#define CODA9_CMD_ENC_PIC_SRC_ADDR_CR		0x1b0
#define CODA_CMD_ENC_PIC_SRC_ADDR_Y	0x180
#define CODA_CMD_ENC_PIC_SRC_ADDR_CB	0x184
#define CODA_CMD_ENC_PIC_SRC_ADDR_CR	0x188
#define CODA_CMD_ENC_PIC_QS		0x18c
#define CODA_CMD_ENC_PIC_ROT_MODE	0x190
#define		CODA_ROT_MIR_ENABLE				(1 << 4)
#define		CODA_ROT_0					(0x0 << 0)
#define		CODA_ROT_90					(0x1 << 0)
#define		CODA_ROT_180					(0x2 << 0)
#define		CODA_ROT_270					(0x3 << 0)
#define		CODA_MIR_NONE					(0x0 << 2)
#define		CODA_MIR_VER					(0x1 << 2)
#define		CODA_MIR_HOR					(0x2 << 2)
#define		CODA_MIR_VER_HOR				(0x3 << 2)
#define CODA_CMD_ENC_PIC_OPTION		0x194
#define		CODA_FORCE_IPICTURE				BIT(1)
#define		CODA_REPORT_MB_INFO				BIT(3)
#define		CODA_REPORT_MV_INFO				BIT(4)
#define		CODA_REPORT_SLICE_INFO				BIT(5)
#define CODA_CMD_ENC_PIC_BB_START	0x198
#define CODA_CMD_ENC_PIC_BB_SIZE	0x19c
#define CODA_RET_ENC_FRAME_NUM		0x1c0
#define CODA_RET_ENC_PIC_TYPE		0x1c4
#define CODA_RET_ENC_PIC_FRAME_IDX	0x1c8
#define CODA_RET_ENC_PIC_SLICE_NUM	0x1cc
#define CODA_RET_ENC_PIC_FLAG		0x1d0
#define CODA_RET_ENC_PIC_SUCCESS	0x1d8

/* Set Frame Buffer */
#define CODA_CMD_SET_FRAME_BUF_NUM		0x180
#define CODA_CMD_SET_FRAME_BUF_STRIDE		0x184
#define CODA_CMD_SET_FRAME_SLICE_BB_START	0x188
#define CODA_CMD_SET_FRAME_SLICE_BB_SIZE	0x18c
#define CODA9_CMD_SET_FRAME_SUBSAMP_A		0x188
#define CODA9_CMD_SET_FRAME_SUBSAMP_B		0x18c
#define CODA7_CMD_SET_FRAME_AXI_BIT_ADDR	0x190
#define CODA7_CMD_SET_FRAME_AXI_IPACDC_ADDR	0x194
#define CODA7_CMD_SET_FRAME_AXI_DBKY_ADDR	0x198
#define CODA7_CMD_SET_FRAME_AXI_DBKC_ADDR	0x19c
#define CODA7_CMD_SET_FRAME_AXI_OVL_ADDR	0x1a0
#define CODA7_CMD_SET_FRAME_MAX_DEC_SIZE	0x1a4
#define CODA9_CMD_SET_FRAME_AXI_BTP_ADDR	0x1a4
#define CODA7_CMD_SET_FRAME_SOURCE_BUF_STRIDE	0x1a8
#define CODA9_CMD_SET_FRAME_CACHE_SIZE		0x1a8
#define CODA9_CMD_SET_FRAME_CACHE_CONFIG	0x1ac
#define		CODA9_CACHE_BYPASS_OFFSET		28
#define		CODA9_CACHE_DUALCONF_OFFSET		26
#define		CODA9_CACHE_PAGEMERGE_OFFSET		24
#define		CODA9_CACHE_LUMA_BUFFER_SIZE_OFFSET	16
#define		CODA9_CACHE_CB_BUFFER_SIZE_OFFSET	8
#define		CODA9_CACHE_CR_BUFFER_SIZE_OFFSET	0
#define CODA9_CMD_SET_FRAME_SUBSAMP_A_MVC	0x1b0
#define CODA9_CMD_SET_FRAME_SUBSAMP_B_MVC	0x1b4
#define CODA9_CMD_SET_FRAME_DP_BUF_BASE		0x1b0
#define CODA9_CMD_SET_FRAME_DP_BUF_SIZE		0x1b4
#define CODA9_CMD_SET_FRAME_MAX_DEC_SIZE	0x1b8
#define CODA9_CMD_SET_FRAME_DELAY		0x1bc

/* Encoder Header */
#define CODA_CMD_ENC_HEADER_CODE	0x180
#define		CODA_GAMMA_OFFSET	0
#define		CODA_HEADER_H264_SPS	0
#define		CODA_HEADER_H264_PPS	1
#define		CODA_HEADER_MP4V_VOL	0
#define		CODA_HEADER_MP4V_VOS	1
#define		CODA_HEADER_MP4V_VIS	2
#define		CODA9_HEADER_FRAME_CROP	(1 << 3)
#define CODA_CMD_ENC_HEADER_BB_START	0x184
#define CODA_CMD_ENC_HEADER_BB_SIZE	0x188
#define CODA9_CMD_ENC_HEADER_FRAME_CROP_H	0x18c
#define CODA9_CMD_ENC_HEADER_FRAME_CROP_V	0x190

/* Get Version */
#define CODA_CMD_FIRMWARE_VERNUM		0x1c0
#define		CODA_FIRMWARE_PRODUCT(x)	(((x) >> 16) & 0xffff)
#define		CODA_FIRMWARE_MAJOR(x)		(((x) >> 12) & 0x0f)
#define		CODA_FIRMWARE_MINOR(x)		(((x) >> 8) & 0x0f)
#define		CODA_FIRMWARE_RELEASE(x)	((x) & 0xff)
#define		CODA_FIRMWARE_VERNUM(product, major, minor, release)	\
			((product) << 16 | ((major) << 12) |		\
			((minor) << 8) | (release))
#define CODA9_CMD_FIRMWARE_CODE_REV		0x1c4

#define CODA9_GDMA_BASE				0x1000
#define CODA9_GDI_WPROT_ERR_CLR			(CODA9_GDMA_BASE + 0x0a0)
#define CODA9_GDI_WPROT_RGN_EN			(CODA9_GDMA_BASE + 0x0ac)

#define CODA9_GDI_BUS_CTRL			(CODA9_GDMA_BASE + 0x0f0)
#define CODA9_GDI_BUS_STATUS			(CODA9_GDMA_BASE + 0x0f4)

#define CODA9_GDI_XY2_CAS_0			(CODA9_GDMA_BASE + 0x800)
#define CODA9_GDI_XY2_CAS_F			(CODA9_GDMA_BASE + 0x83c)

#define CODA9_GDI_XY2_BA_0			(CODA9_GDMA_BASE + 0x840)
#define CODA9_GDI_XY2_BA_1			(CODA9_GDMA_BASE + 0x844)
#define CODA9_GDI_XY2_BA_2			(CODA9_GDMA_BASE + 0x848)
#define CODA9_GDI_XY2_BA_3			(CODA9_GDMA_BASE + 0x84c)

#define CODA9_GDI_XY2_RAS_0			(CODA9_GDMA_BASE + 0x850)
#define CODA9_GDI_XY2_RAS_F			(CODA9_GDMA_BASE + 0x88c)

#define CODA9_GDI_XY2_RBC_CONFIG		(CODA9_GDMA_BASE + 0x890)
#define CODA9_GDI_RBC2_AXI_0			(CODA9_GDMA_BASE + 0x8a0)
#define CODA9_GDI_RBC2_AXI_1F			(CODA9_GDMA_BASE + 0x91c)

#endif