aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/eemcs/eemcs_debug.h
blob: de54f7aeb1b88b519ae4dc9da03a190ffefc86a1 (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
/*******************************************************************************
 * 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__