1*4882a593Smuzhiyun /* GPL-2.0 WITH Linux-syscall-note OR Apache 2.0 */ 2*4882a593Smuzhiyun /* Copyright (c) 2021 Fuzhou Rockchip Electronics Co., Ltd */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef INCLUDE_RT_MPI_RK_ERRNO_H_ 5*4882a593Smuzhiyun #define INCLUDE_RT_MPI_RK_ERRNO_H_ 6*4882a593Smuzhiyun #ifndef __BUILD_KO__ 7*4882a593Smuzhiyun #include <stdint.h> 8*4882a593Smuzhiyun #endif 9*4882a593Smuzhiyun #include "rk_type.h" 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifdef __cplusplus 12*4882a593Smuzhiyun #if __cplusplus 13*4882a593Smuzhiyun extern "C" { 14*4882a593Smuzhiyun #endif 15*4882a593Smuzhiyun #endif /* __cplusplus */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun typedef enum rkERR_LEVEL_E { 18*4882a593Smuzhiyun RK_ERR_LEVEL_DEBUG = 0, /* debug-level */ 19*4882a593Smuzhiyun RK_ERR_LEVEL_INFO, /* informational */ 20*4882a593Smuzhiyun RK_ERR_LEVEL_NOTICE, /* normal but significant condition */ 21*4882a593Smuzhiyun RK_ERR_LEVEL_WARNING, /* warning conditions */ 22*4882a593Smuzhiyun RK_ERR_LEVEL_ERROR, /* error conditions */ 23*4882a593Smuzhiyun RK_ERR_LEVEL_CRIT, /* critical conditions */ 24*4882a593Smuzhiyun RK_ERR_LEVEL_ALERT, /* action must be taken immediately */ 25*4882a593Smuzhiyun RK_ERR_LEVEL_FATAL, /* just for compatibility with previous version */ 26*4882a593Smuzhiyun RK_ERR_LEVEL_BUTT 27*4882a593Smuzhiyun } ERR_LEVEL_E; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #define RK_ERR_APPID (0x80000000L + 0x20000000L) 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun /****************************************************************************** 32*4882a593Smuzhiyun |----------------------------------------------------------------| 33*4882a593Smuzhiyun | 1 | APP_ID | MOD_ID | ERR_LEVEL | ERR_ID | 34*4882a593Smuzhiyun |----------------------------------------------------------------| 35*4882a593Smuzhiyun |<--><--7bits----><----8bits---><--3bits---><------13bits------->| 36*4882a593Smuzhiyun ******************************************************************************/ 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #define RK_DEF_ERR(module, level, errid) \ 39*4882a593Smuzhiyun ((RK_S32)((RK_ERR_APPID) | ((module) << 16 ) | ((level) << 13) | (errid))) 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /* NOTE! the following defined all common error code, 42*4882a593Smuzhiyun ** all module must reserved 0~63 for their common error code 43*4882a593Smuzhiyun */ 44*4882a593Smuzhiyun typedef enum rkEN_ERR_CODE_E { 45*4882a593Smuzhiyun // invlalid device ID 46*4882a593Smuzhiyun RK_ERR_INVALID_DEVID = 1, 47*4882a593Smuzhiyun // invlalid channel ID 48*4882a593Smuzhiyun RK_ERR_INVALID_CHNID = 2, 49*4882a593Smuzhiyun /* 50*4882a593Smuzhiyun * at lease one parameter is illagal 51*4882a593Smuzhiyun * eg, an illegal enumeration value 52*4882a593Smuzhiyun */ 53*4882a593Smuzhiyun RK_ERR_ILLEGAL_PARAM = 3, 54*4882a593Smuzhiyun // resource exists 55*4882a593Smuzhiyun RK_ERR_EXIST = 4, 56*4882a593Smuzhiyun // resource unexists 57*4882a593Smuzhiyun RK_ERR_UNEXIST = 5, 58*4882a593Smuzhiyun // using a NULL point 59*4882a593Smuzhiyun RK_ERR_NULL_PTR = 6, 60*4882a593Smuzhiyun /* 61*4882a593Smuzhiyun * try to enable or initialize system, device 62*4882a593Smuzhiyun * or channel, before configing attribute 63*4882a593Smuzhiyun */ 64*4882a593Smuzhiyun RK_ERR_NOT_CONFIG = 7, 65*4882a593Smuzhiyun // operation or type is not supported by NOW 66*4882a593Smuzhiyun RK_ERR_NOT_SUPPORT = 8, 67*4882a593Smuzhiyun /* 68*4882a593Smuzhiyun * operation is not permitted 69*4882a593Smuzhiyun * eg, try to change static attribute 70*4882a593Smuzhiyun */ 71*4882a593Smuzhiyun RK_ERR_NOT_PERM = 9, 72*4882a593Smuzhiyun // invlalid pipe ID 73*4882a593Smuzhiyun RK_ERR_INVALID_PIPEID = 10, 74*4882a593Smuzhiyun // invlalid stitch group ID 75*4882a593Smuzhiyun RK_ERR_INVALID_STITCHGRPID = 11, 76*4882a593Smuzhiyun // failure caused by malloc memory 77*4882a593Smuzhiyun RK_ERR_NOMEM = 12, 78*4882a593Smuzhiyun // failure caused by malloc buffer 79*4882a593Smuzhiyun RK_ERR_NOBUF = 13, 80*4882a593Smuzhiyun // no data in buffer 81*4882a593Smuzhiyun RK_ERR_BUF_EMPTY = 14, 82*4882a593Smuzhiyun // no buffer for new data 83*4882a593Smuzhiyun RK_ERR_BUF_FULL = 15, 84*4882a593Smuzhiyun /* 85*4882a593Smuzhiyun * System is not ready,maybe not initialed or 86*4882a593Smuzhiyun * loaded. Returning the error code when opening 87*4882a593Smuzhiyun * a device file failed. 88*4882a593Smuzhiyun */ 89*4882a593Smuzhiyun RK_ERR_NOTREADY = 16, 90*4882a593Smuzhiyun /* 91*4882a593Smuzhiyun * bad address, 92*4882a593Smuzhiyun * eg. used for copy_from_user & copy_to_user 93*4882a593Smuzhiyun */ 94*4882a593Smuzhiyun RK_ERR_BADADDR = 17, 95*4882a593Smuzhiyun /* 96*4882a593Smuzhiyun * resource is busy, 97*4882a593Smuzhiyun * eg. destroy a venc chn without unregister it 98*4882a593Smuzhiyun */ 99*4882a593Smuzhiyun RK_ERR_BUSY = 18, 100*4882a593Smuzhiyun // buffer size is smaller than the actual size required 101*4882a593Smuzhiyun RK_ERR_SIZE_NOT_ENOUGH = 19, 102*4882a593Smuzhiyun /* 103*4882a593Smuzhiyun * maxium code, private error code of all modules 104*4882a593Smuzhiyun * must be greater than it 105*4882a593Smuzhiyun */ 106*4882a593Smuzhiyun RK_ERR_BUTT = 63, 107*4882a593Smuzhiyun }RK_ERR_CODE_E; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun #ifdef __cplusplus 110*4882a593Smuzhiyun #if __cplusplus 111*4882a593Smuzhiyun } 112*4882a593Smuzhiyun #endif 113*4882a593Smuzhiyun #endif /* __cplusplus */ 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun #endif // INCLUDE_RT_MPI_RK_ERRNO_H_ 116