summaryrefslogtreecommitdiff
path: root/drivers/misc/sprd_coda7l/vpuconfig.h
blob: f00b4960d13530b7d56092e96ebcf9163e2af345 (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
#ifndef _VPU_CONFIG_H_
#define _VPU_CONFIG_H_

//#include "../config.h"
//#include "vputypes.h"



#define MAX_INST_HANDLE_SIZE	        (20*1024)

#define BODA7503_CODE       0x7503
#define CODA7L_CODE			0x7542
#define CODA851_CODE        0x8510
#define BODA950_CODE        0x9500
#define CODA960_CODE        0x9600
#define CODA980_CODE        0x9800
#define WAVE320_CODE        0x3200

#	define MAX_ENC_PIC_WIDTH        1920
#	define MAX_ENC_PIC_HEIGHT       1088
#	define MAX_ENC_AVC_PIC_WIDTH        1920
#	define MAX_ENC_AVC_PIC_HEIGHT       1088
#	define MAX_DEC_PIC_WIDTH   1920
#	define MAX_DEC_PIC_HEIGHT  1088
#define MIN_ENC_PIC_WIDTH               96
#define MIN_ENC_PIC_HEIGHT              16

// MAX_NUM_INSTANCE can set any value as many as memory size of system. the bellow setting is dedicated for C&M FPGA board.
#define MAX_NUM_INSTANCE 4
#define MAX_NUM_VPU_CORE 1

#if MAX_DEC_PIC_WIDTH > 1920		// 4K		

#define USE_WTL          0          // not support 4K WTL
#define MAX_EXTRA_FRAME_BUFFER_NUM      1
#define MAX_PP_SRC_NUM                  2   //PPU buffer(decoding case) or Source buffer(encoding case)

#define MAX_DPB_MBS      110400     // 32768 for level 5

#elif MAX_DEC_PIC_WIDTH > 720

#define USE_WTL         0           // for WTL (needs MAX_DPB_NUM*2 frame)
#define MAX_EXTRA_FRAME_BUFFER_NUM      4
#define MAX_PP_SRC_NUM                  2   //PPU buffer(decoding case) or Source buffer(encoding case)

#define MAX_DPB_MBS      32768      // 32768 for level 4.1

#else

#define USE_WTL          0          // for WTL (needs MAX_DPB_NUM*2 frame)
#define MAX_EXTRA_FRAME_BUFFER_NUM      4
#define MAX_PP_SRC_NUM                  2   //PPU buffer(decoding case) or Source buffer(encoding case)

#define MAX_DPB_MBS      32768      // 32768 for level 4.1

#endif


// codec specific configuration
#define VPU_REORDER_ENABLE  1   // it can be set to 1 to handle reordering DPB in host side.
#define VPU_GMC_PROCESS_METHOD  1
#define VPU_AVC_X264_SUPPORT 1

// DRAM configuration for TileMap access
#ifdef CNM_FPGA_PLATFORM
#define EM_RAS 13
#define EM_BANK  2
#define EM_CAS   9
#define EM_WIDTH 3
#else
#define EM_RAS 13
#define EM_BANK  3
#define EM_CAS   10
#define EM_WIDTH 2
#endif


//  Application specific configuration
#define VPU_BUSY_CHECK_TIMEOUT       5000

#ifdef CNM_FPGA_PLATFORM
#ifdef CNM_FPGA_USB_INTERFACE
#define VPU_FRAME_ENDIAN      VDI_LITTLE_ENDIAN
#define VPU_STREAM_ENDIAN     VDI_LITTLE_ENDIAN
#else
#define VPU_FRAME_ENDIAN      VDI_BIG_ENDIAN
#define VPU_STREAM_ENDIAN     VDI_BIG_ENDIAN
#endif
#else
#define VPU_FRAME_ENDIAN      VDI_LITTLE_ENDIAN
#define VPU_STREAM_ENDIAN     VDI_LITTLE_ENDIAN
#endif
#define VPU_USER_DATA_ENDIAN  VDI_LITTLE_ENDIAN

#define CBCR_INTERLEAVE			1 //[default 1 for BW checking with CnMViedo Conformance] 0 (chroma separate mode), 1 (chroma interleave mode) // if the type of tiledmap uses the kind of MB_RASTER_MAP. must set to enable CBCR_INTERLEAVE
#define VPU_REPORT_USERDATA		0






#define USE_BIT_INTERNAL_BUF	1
#define USE_IP_INTERNAL_BUF		1
#define USE_DBKY_INTERNAL_BUF	1
#define USE_DBKC_INTERNAL_BUF	1
#define USE_OVL_INTERNAL_BUF	1
#define USE_ME_INTERNAL_BUF		1
#define USE_SCALER_INTERNAL_BUF 1


#define VPU_GBU_SIZE    1024	//No modification required
#define JPU_GBU_SIZE	512		//No modification required

//********************************************//
//      External Memory Map Table - No modification required
//********************************************//


#	define CODE_BUF_SIZE      (248*1024)
#   define MINI_PIPPEN_SCALER_COEFFCIENT_ARRAY_SIZE  256   /** the real size is 152 bytes, please refer to: ScalerCoeff_c */
#   define WORK_BUF_SIZE      (512*1024) + (MAX_NUM_INSTANCE*48*1024) + (MAX_DEC_PIC_WIDTH*MAX_DEC_PIC_HEIGHT*3/4) + MINI_PIPPEN_SCALER_COEFFCIENT_ARRAY_SIZE


#define PARA_BUF_SIZE     ( 10 * 1024 )


//=====1. VPU COMMON MEMORY ======================//
#define SIZE_COMMON                     (CODE_BUF_SIZE + WORK_BUF_SIZE + PARA_BUF_SIZE)

//=====2. VPU BITSTREAM MEMORY ===================//
#define MAX_STREAM_BUF_SIZE             0x300000  // max bitstream size

//===== 3. VPU PPS Save Size ===================//
//----- SPS/PPS save buffer --------------------//
#define PS_SAVE_SIZE          (512*1024)
//----- VP8 MB save buffer -------------------//
#define VP8_MB_SAVE_SIZE                (17*4*(MAX_DEC_PIC_WIDTH*MAX_DEC_PIC_HEIGHT/256))    // MB information + split MVs)*4*MbNumbyte
//----- slice save buffer --------------------//
#define SLICE_SAVE_SIZE                 (MAX_DEC_PIC_WIDTH*MAX_DEC_PIC_HEIGHT*3/4)          // this buffer for ASO/FMO


//=====4. VPU REPORT MEMORY  ======================//
#define SIZE_REPORT_BUF                 (0x34000)

//=====5. VPU Encoder Scratch buffer ssize ======================//
#define SIZE_AVCENC_QMAT_TABLE          ((16*6)+(64*2)) // 4x4 6, 8x8 2
#define SIZE_MP4ENC_DATA_PARTITION      (MAX_ENC_PIC_WIDTH*MAX_ENC_PIC_HEIGHT*3/4)

//=====6. Check VPU required memory size =======================//
#define MAX_FRM_SIZE                    ((MAX_DEC_PIC_WIDTH*MAX_DEC_PIC_HEIGHT*3)/2)
#define MAX_DEC_FRAME_BUFFERING         (MAX_DPB_MBS/((MAX_DEC_PIC_WIDTH*MAX_DEC_PIC_HEIGHT)/256))
#define MAX_DPB_NUM                     (16 < MAX_DEC_FRAME_BUFFERING ? (16+2+MAX_EXTRA_FRAME_BUFFER_NUM) : (MAX_DEC_FRAME_BUFFERING+2+MAX_EXTRA_FRAME_BUFFER_NUM)) //  (+2 for current and display_delay)
#define MAX_DPB_SIZE                    (((MAX_FRM_SIZE+0x3fff)&(~0x3fff))*MAX_DPB_NUM)    // frame buffer for codec (MAX_DPB_NUM)
#define MAX_MV_COL_SIZE                 (((MAX_FRM_SIZE+4)/5)*MAX_DPB_NUM)
#define MAX_PP_SRC_SIZE					(((MAX_FRM_SIZE+0x3fff)&(~0x3fff))*MAX_PP_SRC_NUM)

#define CODEC_FRAME_BASE                ((((MAX_STREAM_BUF_SIZE*MAX_NUM_INSTANCE)) + 0xff) & (~0xff))
#define REQUIRED_VPU_MEMORY_SIZE		(CODEC_FRAME_BASE+((MAX_DPB_SIZE*(1+USE_WTL))+MAX_MV_COL_SIZE+MAX_PP_SRC_SIZE)*MAX_NUM_INSTANCE)


#endif  /* _VPU_CONFIG_H_ */