aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/vdec/include/u_uerrcode.h
blob: 6c99ec02c2524ad2daf8dfb15368fae8d5eb3391 (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
/*****************************************************************************
 *
 * Filename:
 * ---------
 *   $Workfile: $
 *
 * Project:
 * --------
 *   MT8105
 *
 * Description:
 * ------------
 *   Uniform error code definition
 *
 * Author:
 * -------
 *   SC Lin
 *
 * Last changed:
 * -------------
 * $Author: richard.sun $
 *
 * $Modtime: $
 *
 * $Revision: #1 $
****************************************************************************/

/*
 * Acknowledgement:
 *
 *   This is modified from MTK Hefei's error code definition
 *
 *
 */

#ifndef _UERRCODE_H_
#define _UERRCODE_H_

/*****************************************************************************
 * CODING GUIDE (README FIRST before include this)
 *
 * 1. Type of uniform error code is INT32, you can define you API prototype
 *    as:
 *
 *      INT32 iFoofunc(void);
 *
 * 2. Use "iRet < 0" to check if error happens. You can use like:
 *
 *      iRet = iFooFunc();
 *
 *      if(iRet < 0)
 *      {
 *        // error happens, do something
 *      }
 *
 *    If lower module return error value, you can just bypass to upper
 *    layer, then upper layer can easily know what happens.
 *
 * 3. The meaning of positive return value is defined by function
 *
 * 4. Define your error code like this:
 *
 *   #define ERR_USBDRV_FOO UERRCODE(MODULE_USB_DRV, 1)
 *
 *
 */


/*****************************************************************************
 * Error code structure :
 *
 * | 31(1 bit) | 30-29(2 bits) | 28-24 (5bits) | 23-16(8 bits) | 15-0(16 bits) |
 * | Indicator | Layer ID      | Module ID     |   Extened     |    Err Code   |
 *
 * Indicator  : 0 - success, 1 - error
 * Layer ID   : 0 - Application layer (APPL)
 *              1 - Media Middleware layer (MMWL)
 *              2 - System Middleware layer (SMWL)
 *              3 - Driver layer (DRL)
 * Module ID  : module ID, defined below
 * Extended   : module dependent, but providee macro to add partial line info
 * Err code   : defined in each module's public include file,
 *              IF module ID is MODULE_COMMON, the errocode is
 *              defined here
 *****************************************************************************/


/**
 * MACRO definition
 */

#define UERRCODE(modid, errid)         \
    ((INT32)                             \
     ((INT32)(0x80000000) |             \
      (INT32)((modid & 0x7f) << 24) |   \
      (INT32)(errid & 0xffff))          \
    )

#define UOKCODE(modid, okid)           \
    ((INT32)                             \
     ((INT32)(0x00000000) |             \
      (INT32)((modid & 0x7f) << 24) |   \
      (INT32)(okid & 0xffff))           \
    )

#define EXT_UERR(errcode)              \
    ((INT32)                             \
     (INT32)(errcode & 0xff00ffff) |    \
     (INT32)((__LINE__ & 0xff) << 16)   \
    )

/**
 * If a module does not use the bit 15-12 for module error code, module owner can use this macro to log your line number in error code.
 */
#define EXT_UERR_12(errcode)           \
    ((INT32)                             \
     (INT32)(errcode & 0xff000fff) |    \
     (INT32)((__LINE__ & 0xfff) << 12)  \
    )


typedef INT32 MRESULT; // with MRESULT, we can define a function that reture is MRESULT such as MRESULT SetDVDSector();

// Helper macro
#define SUCCEEDED(Status)   ((MRESULT)(Status) >= 0)
#define FAILED(Status)      ((MRESULT)(Status)<0)
#define CHKMR  if (FAILED(mr)) return mr


/**
 * Module ID
 */


#define MODULE_COMMON                           0x00L   /* common module */

// Application Layer, add application module here
#define APP_MODULE_BEGIN                        0x01L   /* common module */


#define APP_MODULE_END                          0x1FL   /* common module */


// Media MiddleWare Layer, add media middleware module here
#define MMWL_MODULE_BEGIN                       0x20L   /* common module */
#define MMWL_MODULE_MPC                         0x21L   //< Multimedia Playback Controller
#define MMWL_MODULE_PB                          0x26L   /* playback engine*/
#define MMWL_MODULE_TCM                         0x28L   /* Thumbnail cache manager */

#define MMWL_MODULE_END                         0x3FL   /* common module */


// System MiddleWare Layer, add system middleware module here
#define SMWL_MODULE_BEGIN                       0x40L   /* common module */


#define SMWL_MODULE_END                         0x5FL   /* common module */


// Driver Layer, add driver module here
#define DRL_MODULE_BEGIN                        0x60L   /* common module */
#define DRL_MODULE_ESM                          0x61L  ///< Elementary stream interface manager
#define DRL_MODULE_FBM                          0x62L  ///< Frame buffer manager
#define DRL_MODULE_PSR                          0x63L  ///< Parser
#define DRL_MODULE_DMX                          0x64L  ///< Transport stream demuxer
#define DRL_MODULE_VDEC                         0x65L  ///< video decoder
#define DRL_MODULE_PBBUF                        0x66L   ///< playback buffer
#define DRL_MODULE_GCPU                         0x67L   ///< GCPU
#define DRL_MODULE_CPSA                         0x68L   ///< CPS Agent
#define DRL_MODULE_SPT                          0x69L   ///< Splitter
#define DRL_MODULE_KM                           0x6AL   ///< KM
#define DRL_MODULE_SYNCCTRL                     0x70L   ///< Sync Control
#define DRL_MODULE_PMX                          0x71L   ///< Plane Mixer
#define DRL_MODULE_AUD                          0x72L   ///< Audio Driver
#define DRL_MODULE_AM                           0x73L   ///< AM
#define DRL_MODULE_HDMI                         0x74L   ///< HDMI
#define DRL_MODULE_AVD                          0x75L   ///< AVD
#define DRL_MODULE_TVE                        0x76L   ///< TVE
#define DRL_MODULE_VENC                        0x77L   ///< VENC
#define DRL_MODULE_END                          0x7FL   /* common module */
#define DRL_MODULE_PVR                           0x80L ///< PVR

// conflict with E_ABORT in fs.h, remark it

// common definition
#ifndef _WINERROR_

#define S_OK                       ((MRESULT)0x00000000)
#define E_FAIL                     UERRCODE(MODULE_COMMON,1)
#define E_NOTIMPL                  UERRCODE(MODULE_COMMON,2)
#define E_INVALIDARG               UERRCODE(MODULE_COMMON,4)

/*
#define E_OUTOFMEMORY              UERRCODE(MODULE_COMMON,3)
#define E_NOINTERFACE              UERRCODE(MODULE_COMMON,5)
#define E_POINTER                  UERRCODE(MODULE_COMMON,6)
#define E_HANDLE                   UERRCODE(MODULE_COMMON,7)
#define E_ABORT                    UERRCODE(MODULE_COMMON,8)
#define E_UNEXPECTED               UERRCODE(MODULE_COMMON,9)
#define E_ACCESSDENIED             UERRCODE(MODULE_COMMON,10)
*/
#endif //_WINERROR_

#endif // _UERRCODE_H_