aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/vdec/include/vdec_info_common.h
blob: eba40f327a8534fd32278b8c6dc95fbed58bb166 (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
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
#ifndef _VDEC_INFO_COMMON_H_
#define _VDEC_INFO_COMMON_H_

#include "chip_ver.h"
#include "type.h"
#include <mach/mt_typedefs.h>
#include "vdec_info_h264.h"
#include "vdec_info_h265.h"
#include "vdec_info_wmv.h"
#include "vdec_info_mpeg.h"
#include "vdec_info_rm.h"
#include "vdec_info_vp6.h"
#include "vdec_info_vp8.h"
#include "vdec_info_avs.h"
#include <linux/kernel.h>
#include <asm/memory.h>

int UTIL_Printf(const char *format, ...);
int sprintf(char *str, const char *format, ...);

//#define CONFIG_DRV_VERIFY_SUPPORT 1
#define CONFIG_DRV_FPGA_BOARD 1
#if CONFIG_DRV_FPGA_BOARD
#define IRQ_DISABLE
//#define CAPTURE_ESA_LOG
#ifdef CAPTURE_ESA_LOG
#define CAPTURE_ALL_IN_ONE
#define WRITE_ESA_PER_FRAME 0
#endif
#define VMMU_SUPPORT 0
#endif
#define CONFIG_DRV_LINUX 1
#define START_CODE 0x00000001

///*****Please Note : if you define the MEM_ALLOCATE_IOREMAP, please also modify the following file*****
///ALPS_SW\TRUNK\ALPS\alps\mediatek\config\mt8320fpga_ldvt\autoconfig\kconfig\project
///Change point : CONFIG_MAX_DRAM_SIZE_SUPPORT=0x10000000 ==> 0x08000000
#define MEM_ALLOCATE_IOREMAP 1
#if MEM_ALLOCATE_IOREMAP

#define PHYSICAL(addr)                                  m4u_v2p(addr)
//    #define VIRTUAL(addr)                                   __va(addr)

#else
#define PHYSICAL(addr)                                  __pa(addr)
#define VIRTUAL(addr)                                   __va(addr)

#endif

#define FILEBUF_SZ 1024*400
#define CRC_SZ 819200
#if MEM_ALLOCATE_IOREMAP
#if VMMU_SUPPORT
#define VMMU_SZ 0x400000 // need 64k align
#define VMMU_SA 0x05000000 //0x08000000 
#define FILELIST_SA (VMMU_SA+VMMU_SZ)
#else
#ifdef VDEC_VP8_VERIFY_CODE
#define FILELIST_SA 0x93400000//0x90C00000//0x9AC00000//0x9E500000//0x05000000 //0x08000000
#else
#define FILELIST_SA 0xeda00000 //0xe6000000 //0xB0000000 //0x44700000//0x4ab00000 //0x9A000000//0x05000000 //0x08000000
#endif
#endif
#define VFIFO_SA (FILELIST_SA+FILE_LIST_SZ)
#define GOLDY_SA (VFIFO_SA+V_FIFO_SZ)
#define GOLDC_SA (GOLDY_SA+GOLD_Y_SZ)
#define CRCBUF_SA (GOLDC_SA+GOLD_C_SZ)
#ifdef CAPTURE_ESA_LOG
#define ESALOG_SZ 1024*1024
#define ESALOGTOTAL_SZ 4*1024*1024
#define ESALOG_SA (CRCBUF_SA+CRC_SZ)
#define FILEBUF_SA (ESALOG_SA+ESALOG_SZ)
#else
#define FILEBUF_SA (CRCBUF_SA+CRC_SZ)
#endif
#define WORKBUF_SA (FILEBUF_SA+FILEBUF_SZ)


//#define WORKBUF_SA 0x0D800000
#define ARFBUF_SA (WORKBUF_SA+PIC_Y_SZ+PIC_C_SZ)
#if VDEC_VP8_WRAPPER_OFF
#define GLDBUF_SA (ARFBUF_SA+DEC_PP_Y_SZ+DEC_PP_C_SZ)
#define LSTBUF_SA (GLDBUF_SA+DEC_PP_Y_SZ+DEC_PP_C_SZ)
#define VLDWRAP_SA (LSTBUF_SA+DEC_PP_Y_SZ+DEC_PP_C_SZ)
#define PPWRAPY_SA (VLDWRAP_SA+VLD_PRED_SZ)
#define PPWRAPC_SA (PPWRAPY_SA+PP_WRAPY_SZ)
#define SEGIDWRAP_SA (PPWRAPC_SA+PP_WRAPC_SZ)

#define PPYBUF_SA (LSTBUF_SA+DEC_PP_Y_SZ+DEC_PP_C_SZ)
#else
#define GLDBUF_SA (ARFBUF_SA+PIC_Y_SZ+PIC_C_SZ)
#define LSTBUF_SA (GLDBUF_SA+PIC_Y_SZ+PIC_C_SZ)
#define PPYBUF_SA (LSTBUF_SA+PIC_Y_SZ+PIC_C_SZ)
#endif
#define PPCBUF_SA (PPYBUF_SA+DEC_PP_Y_SZ)
#define VLDWRAPWORK_SA (PPCBUF_SA+DEC_PP_C_SZ)
#define PPWRAPWORK_SA (VLDWRAPWORK_SA+VLD_WRAP_SZ)


//For AVS
#define AVS_PIC_Y0 0x0D800000   //(PPWRAPWORK_SA + V_WRAP_SA)
//#define AVS_PIC_C0 (AVS_PIC_Y0 + PIC_Y_SZ)
#define AVS_PIC_Y1 (AVS_PIC_Y0 + PIC_Y_SZ + PIC_C_SZ)
//#define AVS_PIC_C1 (AVS_PIC_Y1 + PIC_Y_SZ)
#define AVS_PIC_Y2 (AVS_PIC_Y1 + PIC_Y_SZ + PIC_C_SZ)
//#define AVS_PIC_C2 (AVS_PIC_Y2 + PIC_Y_SZ)
#define AVS_PIC_Y3 (AVS_PIC_Y2 + PIC_Y_SZ + PIC_C_SZ)
//#define AVS_PIC_C3 (AVS_PIC_Y3 + PIC_Y_SZ)
#define AVS_VLD_PRED_BUF (AVS_PIC_Y3 + PIC_Y_SZ + PIC_C_SZ)
#define AVS_VLD_MV1_BUF (AVS_VLD_PRED_BUF + AVS_VLD_PRED_SZ)
#define AVS_VLD_MV2_BUF (AVS_VLD_MV1_BUF + AVS_VLD_MV_SZ)
#define AVS_ADDSWAP_BUF (AVS_VLD_MV2_BUF + AVS_VLD_MV_SZ)
#define AVS_VLDWRAPWORK_SA (AVS_ADDSWAP_BUF + ADDSWAP_BUF_SZ)
#define AVS_PPWRAPWORK_SA (AVS_VLDWRAPWORK_SA + VLD_WRAP_SZ)
#endif


typedef struct _VDEC_PARAM_T_
{
    UINT32 u4InstanceId;
    UINT32 u4Mode;
    BOOL fgMVCType;
} VDEC_PARAM_T;

#define NO_PIC 0
#define TOP_FIELD 1
#define BOTTOM_FIELD 2
#define FRAME 3
#define TOP_BOTTOM_FIELD 4

#if VDEC_8320_SUPPORT
#define WMV_8320_SUPPORT  1
#define AVC_8320_SUPPORT  1
#else
#define WMV_8320_SUPPORT  0
#define AVC_8320_SUPPORT  0
#endif
#if VDEC_6589_SUPPORT
#define MPEG4_6589_SUPPORT  1
//#define MPEG4_6589_ERROR_CONCEAL
#else
#define MPEG4_6589_SUPPORT  0
#endif

#if VDEC_6582_SUPPORT
#define MPEG4_6582_SUPPORT  1
#else
#define MPEG4_6582_SUPPORT  0
#endif

#define MPEG4_6582_NORMAL_DEBUG_MODE 0

#define MPEG4_VLD_WRAPPER_PREFETCH_MODE 0
#define WMV_LOG_TMP 0
#define AVC_LOG_TMP 0

#define AVC_NEW_CRC_COMPARE  1

#define VDEC_VER_COMPARE_CRC 1

#define MT6582_L2_EMULATION 0 // 0: No L2$ emulation, 1: L2$ emulation with DRAM, 2: Use L2$ for VLD & PP Wrapper


//#define HEVC_ESA_NBM_LOG   //Record ESA_NBM log
//#define HEVC_DUMP_MC_VLDTOP_LOG   // Record MC_VLDTOP_LOG
//#define HEVC_DUMP_BITSTREAM_INFO    // trigger HW to decode done for insert error
//#define HEVC_DUMP_PIC_BITSTREAM   // after SC to decode done

#define HEVC_SDCARD_VFY
#define HEVC_CRC_CMP
//#define HEVC_DDR4   //enable this config HEVC_CRC_CMP should be turn off

//#define HEVC_UFO_MODE
#define HEVC_VP_MODE
#define HEVC_STILL_IMAGE

//#define VDEC_BW_FAKE_ENGINE_ON

//#define VDEC_SIM_DUMP
#ifdef VDEC_SIM_DUMP
#define REG_LOG_NEW
#endif

#define H263_USE_SORENSON 0

typedef enum
{
    VDEC_UNKNOWN = 0xFF,
    VDEC_MPEG       = 0x0,                 ///< MPEG Deocde Request
    VDEC_MPEG1      = 0x1,               ///< MPEG1 Deocde Request
    VDEC_MPEG2      = 0x2,               ///< MPEG2 Deocde Request
    VDEC_DIVX3       = 0x3,              ///< MPEG3 Deocde Request
    VDEC_MPEG4      = 0x4,              ///< MPEG4 Deocde Request
    VDEC_WMV         = 0x10,            /// < WMV Decode Request
    VDEC_WMV1       = 0x11,             ///< WMV7 Deocde Request
    VDEC_WMV2       = 0x12,            ///< WMV8 Deocde Request
    VDEC_WMV3       = 0x13,            ///< WMV9 Deocde Request
    VDEC_VC1          = 0x111,          ///< VC1 Deocde Request
    VDEC_H265        = 0x265,           ///< H265 Deocde Request
    VDEC_H264        = 0x264,           ///< H264 Deocde Request
    VDEC_H263        = 0x263,           ///< H263 Deocde Request
    VDEC_RM          = 0x300,             ///< RM Decode Request
    VDEC_VP6         = 0x600,             ///< VP6 Decode Request
    VDEC_AVS         = 0x700,             ///< AVS Decode Request
    VDEC_VP8         = 0x800,             ///< VP8 Decode Request
    VDEC_JPG         = 0x900              ///< JPG Decode Request
} VDEC_CODEC_T;


/// Enumerate read pointer align type
typedef enum
{
    BYTE_ALIGN = 0,          ///< BYTE Align Request
    WORD_ALIGN,              ///< WORD Align Request
    DWRD_ALIGN,              ///< UINT32 Align Request
} RPTR_ALIGN_TYPE;


typedef struct _VDEC_INFO_VDSCL_PRM_T_
{
    BOOL     fgDSCLEn; // 1: 709 to 601
    BOOL     fgEnColorCvt; // 1: 709 to 601
    BOOL     fgYOnly;
    BOOL     fgMbaff;
    UCHAR   ucPicStruct;
    UCHAR   ucScrAgent;  // 0:MC 2:PP 3:FGT
    UCHAR   ucSpectType;
    UCHAR   ucScanType; //0: block 1:raster
    UCHAR   ucVdoFmt; // 0:420 1:422
    UCHAR   ucAddrSwapMode;
    UINT32  u4DispW;
    UINT32  u4SrcWidth;
    UINT32  u4SrcHeight;
    UINT32  u4SrcYOffH;
    UINT32  u4SrcYOffV;
    UINT32  u4SrcCOffH;
    UINT32  u4SrcCOffV;
    UINT32  u4TrgBufLen;
    UINT32  u4TrgWidth;
    UINT32  u4TrgHeight;
    UINT32  u4TrgOffH;
    UINT32  u4TrgOffV;
    UINT32   u4TrgYAddr;
    UINT32   u4TrgCAddr;
    UINT32   u4WorkAddr;
    UINT32   u4QY;
    UINT32   u4QC;
    UINT32   u4R_norm;
    UINT32   u4OffY;
    UINT32   u4OffC;

#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
    UINT32   u4SclYOffH;
    UINT32   u4SclCOffH;
    UINT32   u4SclYOffV;
    UINT32   u4SclCOffV;

    BOOL     fgLumaKeyEn;
    UINT16   u2LumaKeyValue;
#endif
} VDEC_INFO_VDSCL_PRM_T;


#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8560)
typedef struct _VDEC_INFO_LBD_PRM_T_
{
    UINT32 u4UpBoundStart;
    UINT32 u4UpBoundEnd;
    UINT32 u4LowBoundStart;
    UINT32 u4LowBoundEnd;
    UINT32 u4LeftBound;
    UINT32 u4RightBound;
    UINT32 u4YOffset;
    UINT32 u4COffset;
    UINT32 u4YValueThd;
    UINT32 u4CValueThd;
    UINT32 u4YCntThd;
    UINT32 u4CCntThd;
} VDEC_INFO_LBD_PRM_T;
#endif


typedef struct _VDEC_INFO_DEC_PRM_T_
{
    UCHAR   ucPicStruct;
    UCHAR   ucPicType;
    UCHAR   ucDecFBufIdx;
    UCHAR   ucAddrSwapMode;
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8560)    //mtk40110 Qing.Li 2010/11/25, to fix mpeg4 DCAC Pred bug
    UCHAR   ucMpegSpecType;    //1:mpeg12, 2:mpeg4&h263, 3:divx
#endif
    UINT32  u4PicBW;
    UINT32  u4PicW;
    UINT32  u4PicH;
    //UFO
#if 0
    UINT32  u4UFO_LEN_SIZE_Y;
    UINT32  u4PIC_SIZE_BS;
    UINT32  u4PIC_SIZE_Y_BS;
#endif
    VDEC_INFO_VDSCL_PRM_T rDownScalerPrm;
#if ((CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8560) && CONFIG_DRV_FTS_SUPPORT)
    VDEC_INFO_LBD_PRM_T rLBDPrm;
#endif
    void *prVDecCodecHalPrm;
#if 1 //(CONFIG_DRV_VERIFY_SUPPORT)
    union
    {
        VDEC_INFO_H264_DEC_PRM_T rVDecH264DecPrm;
        VDEC_INFO_H265_DEC_PRM_T rVDecH265DecPrm;
        VDEC_INFO_WMV_DEC_PRM_T rVDecWMVDecPrm;
        VDEC_INFO_MPEG_DEC_PRM_T rVDecMPEGDecPrm;
        VDEC_INFO_RM_DEC_PRM_T rVDecRMDecPrm;
        VDEC_INFO_VP6_DEC_PRM_T rVDecVP6DecPrm;
        VDEC_INFO_AVS_DEC_PRM_T rVDecAVSDecPrm;
        VDEC_INFO_VP8_DEC_PRM_T rVDecVP8DecPrm;
    } SpecDecPrm;
#endif
    //VDEC_UFO_SUPPORT
    UINT32 u4PIC_SIZE_BS, u4UFO_LEN_SIZE_Y, u4PIC_SIZE_Y_BS;
    UINT32 u4UFODramPicSize, u4UFODramPicArea;
    UINT32 u4DramPicSize, u4DramPicArea;

} VDEC_INFO_DEC_PRM_T;

#endif //#ifndef _HAL_VDEC_COMMON_IF_H_