aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/eemcs/eemcs_debug.c
blob: 61ee584c011aae3530b3ec7bd881075a1c667c3a (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
/*******************************************************************************
 * File : eemcs_debug.c
 * [Functions]
 *        1. Create p_d_dentry nodes for runtime change p_d_dentry level
 * [TODO]
 *        
 *******************************************************************************/
#include <linux/device.h>
#include <linux/debugfs.h>
#include <linux/mmc/sdio_func.h>
#include <linux/mmc/host.h>
#include <linux/mmc/card.h>
#include "eemcs_debug.h"
#include "eemcs_kal.h"
#include "eemcs_ccci.h"


KAL_UINT64 g_eemcs_dbg_m[DBG_MODULE_NUM];
struct dentry* g_eemcs_dbg_dentry;

static void eemcs_debug_level_init(void);

/*******************************************************************************
 * /d/eemcs/p_d_dentry
 *******************************************************************************/
#define __debugfs_register(name,parent) \
do {    \
    p_f_dentry = debugfs_create_u64(#name,0600,parent,&g_eemcs_dbg_m[DBG_##name##_IDX]); \
    result = PTR_ERR(p_f_dentry); \
    if(IS_ERR(p_f_dentry)&& result != -ENODEV) \
    {   \
        DBGLOG(INIT,ERR, "create eemcs debug folder fail: %d", result); \
        goto eemcs_dbg_init_fail;}  \
}while(0)

KAL_INT32 eemcs_debug_mod_init(void)
{
    KAL_INT32 result = KAL_FAIL;
    struct dentry *p_f_dentry, *p_e_dentry, *p_d_dentry;

    eemcs_debug_level_init();
    
    DEBUG_LOG_FUNCTION_ENTRY;

    p_e_dentry = debugfs_create_dir("eemcs", NULL);
    if(!p_e_dentry){
        DBGLOG(INIT, ERR, "create eemcs folder fail");
        DEBUG_LOG_FUNCTION_LEAVE;
        return -ENOENT;
    }
    
    g_eemcs_dbg_dentry = p_e_dentry; 

    p_d_dentry = debugfs_create_dir("debug",p_e_dentry);
    if(!p_d_dentry)
    {
        DBGLOG(INIT, ERR, "create debug sub folder fail");    
        goto eemcs_dbg_init_fail;
    }

    __debugfs_register(INIT,p_d_dentry);
    __debugfs_register(MSDC,p_d_dentry);    
    __debugfs_register(SDIO,p_d_dentry);
    __debugfs_register(CCCI,p_d_dentry);
    __debugfs_register(NETD,p_d_dentry);
    __debugfs_register(FUNC,p_d_dentry);
    __debugfs_register(CHAR,p_d_dentry);
    __debugfs_register(BOOT,p_d_dentry);
    __debugfs_register(IPCD,p_d_dentry);
    __debugfs_register(FSUT,p_d_dentry);
    __debugfs_register(RPCD,p_d_dentry);
    __debugfs_register(EXPT,p_d_dentry);
    __debugfs_register(SMSG,p_d_dentry);
    __debugfs_register(PORE,p_d_dentry); 
    
    DEBUG_LOG_FUNCTION_LEAVE; 
    return KAL_SUCCESS;

eemcs_dbg_init_fail:
    DBGLOG(INIT, ERR, "eemcs_debug_mod_init fail");  
    debugfs_remove_recursive(g_eemcs_dbg_dentry);

    DEBUG_LOG_FUNCTION_LEAVE;
    return -ENOENT;
}

void eemcs_debug_deinit(void)
{
    DEBUG_LOG_FUNCTION_ENTRY;
    debugfs_remove_recursive(g_eemcs_dbg_dentry);
    DEBUG_LOG_FUNCTION_LEAVE;
    return;
}
static void eemcs_debug_level_init(void){

#if 0
    g_eemcs_dbg_m[DBG_INIT_IDX]=0xff;
    g_eemcs_dbg_m[DBG_MSDC_IDX]=0xff;
    g_eemcs_dbg_m[DBG_SDIO_IDX]=0xff;
    g_eemcs_dbg_m[DBG_CCCI_IDX]=0xff;
    g_eemcs_dbg_m[DBG_FUNC_IDX]=0xff;
    g_eemcs_dbg_m[DBG_NETD_IDX]=0xff;
    g_eemcs_dbg_m[DBG_CHAR_IDX]=0xff;
    g_eemcs_dbg_m[DBG_BOOT_IDX]=0xff;
    g_eemcs_dbg_m[DBG_FSUT_IDX]=0xff;
    g_eemcs_dbg_m[DBG_RPCD_IDX]=0xff;
    g_eemcs_dbg_m[DBG_EXPT_IDX]=0xff;
    g_eemcs_dbg_m[DBG_PORE_IDX]=0xff;     
#else
    g_eemcs_dbg_m[DBG_INIT_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR|DBG_LEVEL_STA|DBG_LEVEL_INF);
    g_eemcs_dbg_m[DBG_MSDC_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR);
    g_eemcs_dbg_m[DBG_SDIO_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR);
    g_eemcs_dbg_m[DBG_CCCI_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR|DBG_LEVEL_INF);
    g_eemcs_dbg_m[DBG_FUNC_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR);
    g_eemcs_dbg_m[DBG_NETD_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR);
    g_eemcs_dbg_m[DBG_CHAR_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR|DBG_LEVEL_INF);
    g_eemcs_dbg_m[DBG_IPCD_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR|DBG_LEVEL_INF);
    g_eemcs_dbg_m[DBG_BOOT_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR|DBG_LEVEL_STA|DBG_LEVEL_INF);
    g_eemcs_dbg_m[DBG_FSUT_IDX]=0xFF;
    g_eemcs_dbg_m[DBG_RPCD_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR);
    g_eemcs_dbg_m[DBG_EXPT_IDX]=0xFF;
    g_eemcs_dbg_m[DBG_SMSG_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR|DBG_LEVEL_INF);
    /* PORE char dev log enable = 1 << port_id */
    g_eemcs_dbg_m[DBG_PORE_IDX]=0;
    g_eemcs_dbg_m[DBG_SYSF_IDX]=(DBG_LEVEL_ERR|DBG_LEVEL_WAR|DBG_LEVEL_INF);
    
#endif

}