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
|
/*******************************************************************************
* File : eemcs_debug.h
*******************************************************************************/
#ifndef __EEMCS_DEBUG_H__
#define __EEMCS_DEBUG_H__
#include "eemcs_kal.h"
#define EEMCS_DEBUG
#define LOG_FUNC(a...) printk(KERN_ERR a)
/*******************************************************************************
* C O N S T A N T S
*
* Define debug category (level):
* (1) ERROR (2) WARN (3) STATE (4) TRACE (5) INFO (6) REV (7) REV (8) Development Debug
*
*******************************************************************************/
#define DBG_LEVEL_ERR BIT(0)
#define DBG_LEVEL_WAR BIT(1)
#define DBG_LEVEL_STA BIT(2)
#define DBG_LEVEL_TRA BIT(3)
#define DBG_LEVEL_INF BIT(4)
#define DBG_LEVEL_DEF BIT(5)
#define DBG_LEVEL_REV BIT(6)
#define DBG_LEVEL_DBG BIT(7)
#define DBG_LEVEL_MASK BITS(0,7)
/*******************************************************************************
* D A T A T Y P E S
*
* Define debug module index
*
********************************************************************************/
typedef enum _ENUM_DBG_MODULE_T {
DBG_INIT_IDX = 0, /* For EEMCS driver initial */
DBG_MSDC_IDX, /* For Android MSDC driver */
DBG_SDIO_IDX, /* For MD SDIO driver */
DBG_CCCI_IDX, /* For CCCI channel operation */
DBG_NETD_IDX, /* For NET device */
DBG_CHAR_IDX, /* For character device */
DBG_FUNC_IDX, /* For general function entry debug */
DBG_IPCD_IDX, /* For IPC character device */
DBG_BOOT_IDX, /* For xBoot */
DBG_FSUT_IDX, /* For FS UT*/
DBG_RPCD_IDX, /* For RPC service*/
DBG_EXPT_IDX, /* For Exception Handling*/
DBG_SMSG_IDX, /* For SYSTEM MESSAGE service*/
DBG_PORE_IDX, /* For PORt Enable*/
DBG_SYSF_IDX, /* For SYS file*/
DBG_MODULE_NUM
} ENUM_DBG_MODULE_T;
extern KAL_UINT64 g_eemcs_dbg_m[DBG_MODULE_NUM];
#define FUNC_NAME __func__
#if defined(EEMCS_DEBUG)
#define DBGLOG(_mod, _level, _fmt, a...) \
do{ \
if (g_eemcs_dbg_m[DBG_##_mod##_IDX] & DBG_LEVEL_##_level) { \
if (DBG_LEVEL_##_level == DBG_LEVEL_ERR) { \
LOG_FUNC("[EEMCS/"#_mod"] [Error:%d]%s:"_fmt"\n",\
__LINE__,__func__,##a); \
} \
else if (DBG_LEVEL_##_level == DBG_LEVEL_WAR) { \
LOG_FUNC("[EEMCS/"#_mod"] [Warn:%d]%s:"_fmt"\n",\
__LINE__,__func__,##a); \
} \
else { \
LOG_FUNC("[EEMCS/"#_mod"] "_fmt"\n",##a); \
} \
} \
}while(0)
#define CDEV_LOG(_port_id, _mod, _level, _fmt, a...) \
do{ \
if (g_eemcs_dbg_m[DBG_PORE_IDX] & (1 << _port_id)) { \
LOG_FUNC("[EEMCS/"#_mod"] "_fmt"\n",##a); \
} \
}while(0)
#else
#define DBGLOG(_mod, _level, _fmt, a...)
#define CDEV_LOG(_port_id, _mod, _level, _fmt, a...)
#endif
#define DEBUG_LOG_FUNCTION_ENTRY \
do{ \
DBGLOG(FUNC,DBG,"[EEMCS]==> %s",__func__); \
}while(0)
#define DEBUG_LOG_FUNCTION_LEAVE \
do{ \
DBGLOG(FUNC,DBG,"[EEMCS]<== %s",__func__); \
}while(0)
/*******************************************************************************
* A P I s
********************************************************************************/
KAL_INT32 eemcs_debug_mod_init(void);
void eemcs_debug_deinit(void);
#endif //__EEMCS_DEBUG_H__
|