Merge tag 'v3.10.76' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / mach / mt_storage_logger.h
CommitLineData
6fa3eb70
S
1/*
2 * Copyright (C) 2011 MediaTek, Inc.
3 *
4 * Author: Holmes Chiou <holmes.chiou@mediatek.com>
5 *
6 * This software is licensed under the terms of the GNU General Public
7 * License version 2, as published by the Free Software Foundation, and
8 * may be copied, distributed, and modified under those terms.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 */
16
17#ifndef __MT_STORAGE_LOGGER_H__
18#define __MT_STORAGE_LOGGER_H__
19
20
21#define SLTAG "[StorageLogger]"
22#define SLog_MSG(fmt, args...) \
23do { \
24 printk(KERN_INFO SLTAG""fmt" <- %s(): L<%d> PID<%s><%d>\n", \
25 ##args , __func__, __LINE__, current->comm, current->pid); \
26} while (0);
27
28#define STrace_MSG(fmt, args...) \
29do { \
30 printk(KERN_INFO SLTAG""fmt" in PID<%s><%d>\n", \
31 ##args, current->comm, current->pid); \
32} while (0);
33
34struct _loggerFuncName {
35 int FuncID;
36 char *FuncName;
37};
38
39struct _loggerMsgFormat {
40 int MsgID;
41 char *MsgFmt;
42 char *DispFmt;
43};
44
45enum Storage_Logger_MsgID {
46 STORAGE_LOGGER_MSG_FIRST_ONE = 0,
47 STORAGE_LOGGER_MSG_ISSUE_RQ = STORAGE_LOGGER_MSG_FIRST_ONE,
48 STORAGE_LOGGER_MSG_ISSUE_RQ_1,
49 STORAGE_LOGGER_MSG_SUBMITBIO,
50 STORAGE_LOGGER_MSG_VFS_SDCARD,
51 STORAGE_LOGGER_MSG_VFS_SDCARD_END,
52 STORAGE_LOGGER_MSG_VFS_OPEN_SDCARD,
53 STORAGE_LOGGER_MSG_VFS_OPEN_SDCARD_END,
54 STORAGE_LOGGER_MSG_VFS_INTFS,
55 STORAGE_LOGGER_MSG_VFS_INTFS_END,
56 STORAGE_LOGGER_MSG_VFS_OPEN_INTFS,
57 STORAGE_LOGGER_MSG_VFS_OPEN_INTFS_END,
58 STORAGE_LOGGER_MSG_IOSCHED1,
59 STORAGE_LOGGER_MSG_IOSCHED2,
60 STORAGE_LOGGER_MSG_MSDC_DO,
61 STORAGE_LOGGER_MSG_MSDC_DO_END,
62 STORAGE_LOGGER_MSG_GET_REQUEST,
63 STORAGE_LOGGER_MSG_GET_REQUEST_END,
64 STORAGE_LOGGER_MSG_LAST_ONE, /* MUST BE THE LAST STORAGE MSG ID */
65
66 USB_LOGGER_MSG_FIRST_ONE = STORAGE_LOGGER_MSG_LAST_ONE + 1,
67 USB_LOGGER_MSG_MUSB_INTERRUPT = USB_LOGGER_MSG_FIRST_ONE,
68 USB_LOGGER_MSG_MUSB_STAGE0_IRQ,
69 USB_LOGGER_MSG_MUSB_G_EP0_IRQ,
70 USB_LOGGER_MSG_TXSTATE,
71 USB_LOGGER_MSG_TXSTATE_END,
72 USB_LOGGER_MSG_MUSB_G_TX,
73 USB_LOGGER_MSG_MUSB_G_RX,
74 USB_LOGGER_MSG_MUSB_READ_SETUP,
75 USB_LOGGER_MSG_FORWARD_TO_DRIVER,
76 USB_LOGGER_MSG_COMPOSITE_SETUP,
77 USB_LOGGER_MSG_USB_ADD_FUNCTION,
78 USB_LOGGER_MSG_SET_CONFIG,
79 USB_LOGGER_MSG_DEVICE_DESCRIPTOR,
80 USB_LOGGER_MSG_INTERFACE_DESCRIPTOR,
81 USB_LOGGER_MSG_ENDPOINT_DESCRIPTOR,
82 USB_LOGGER_MSG_ANDROID_WORK,
83 USB_LOGGER_MSG_GS_RX_PUSH,
84 USB_LOGGER_MSG_GS_START_TX,
85 USB_LOGGER_MSG_ACM_SETUP,
86 USB_LOGGER_MSG_ACM_SET_ALT,
87 USB_LOGGER_MSG_ACM_BIND,
88 USB_LOGGER_MSG_GS_OPEN,
89 USB_LOGGER_MSG_GS_CLOSE,
90 USB_LOGGER_MSG_ACM_CDC_LINE_CODING,
91 USB_LOGGER_MSG_STRING,
92 USB_LOGGER_MSG_HEX_NUM,
93 USB_LOGGER_MSG_DEC_NUM,
94 USB_LOGGER_MSG_LAST_ONE, /* MUST BE THE LAST USB MSG ID */
95
96 THRML_LOGGER_MSG_FIRST_ONE = USB_LOGGER_MSG_LAST_ONE + 1,
97 THRML_LOGGER_MSG_STRING = THRML_LOGGER_MSG_FIRST_ONE,
98 THRML_LOGGER_MSG_HEX_NUM,
99 THRML_LOGGER_MSG_DEC_NUM,
100 THRML_LOGGER_MSG_BIND,
101 THRML_LOGGER_MSG_ZONE_TEMP,
102 THRML_LOGGER_MSG_COOL_STAE,
103 THRML_LOGGER_MSG_TRIP_POINT,
104 THRML_LOGGER_MSG_BATTERY_INFO,
105 THRML_LOGGER_MSG_CPU_INFO,
106 THRML_LOGGER_MSG_CPU_INFO_EX,
107 THRML_LOGGER_MSG_MISC_INFO,
108 THRML_LOGGER_MSG_MISC_EX_INFO,
109 THRML_LOGGER_MSG_LAST_ONE,
110
111 LOGGER_MSG_ID_MAX = THRML_LOGGER_MSG_LAST_ONE /* THE WHOLE ENUM LAST ONE */
112};
113
114/*========STORAGE PART========*/
115enum Storage_LogAPI {
116 STORAGE_LOG_API___submit_bio__func = 0,
117 STORAGE_LOG_API___mmc_blk_issue_rq__func,
118 STORAGE_LOG_API___do_sys_open__func,
119 STORAGE_LOG_API___vfs_read__func,
120 STORAGE_LOG_API___vfs_write__func,
121 STORAGE_LOG_API___msdc_do_request__func,
122 STORAGE_LOG_API___msdc_ops_request__func,
123 STORAGE_LOG_API___io_schedule__func,
124 STORAGE_LOG_API___get_request_wait__func,
125 STORAGE_LOG_API___get_request__func,
126 STORAGE_LOG_API___make_request__func,
127 STORAGE_LOG_API___MAX__func
128};
129
130/*========USB PART========*/
131enum usb_func_string_index {
132 USB_FUNC_STRING_INDEX_MUSB_INTERRUPT = 0,
133 USB_FUNC_STRING_INDEX_MUSB_STAGE0_IRQ,
134 USB_FUNC_STRING_INDEX_MUSB_G_EP0_IRQ,
135 USB_FUNC_STRING_INDEX_TXSTATE,
136 USB_FUNC_STRING_INDEX_MUSB_G_TX,
137 USB_FUNC_STRING_INDEX_MUSB_G_RX,
138 USB_FUNC_STRING_INDEX_MUSB_READ_SETUP,
139 USB_FUNC_STRING_INDEX_FORWARD_TO_DRIVER,
140 USB_FUNC_STRING_INDEX_COMPOSITE_SETUP,
141 USB_FUNC_STRING_INDEX_USB_ADD_FUNCTION,
142 USB_FUNC_STRING_INDEX_SET_CONFIG,
143 USB_FUNC_STRING_INDEX_CONFIG_BUF,
144 USB_FUNC_STRING_INDEX_USB_DESCRIPTOR_FILLBUF,
145 USB_FUNC_STRING_INDEX_ANDROID_WORK,
146 USB_FUNC_STRING_INDEX_GS_RX_PUSH,
147 USB_FUNC_STRING_INDEX_GS_START_TX,
148 USB_FUNC_STRING_INDEX_ACM_SETUP,
149 USB_FUNC_STRING_INDEX_ACM_SET_ALT,
150 USB_FUNC_STRING_INDEX_ACM_BIND,
151 USB_FUNC_STRING_INDEX_GS_OPEN,
152 USB_FUNC_STRING_INDEX_GS_CLOSE,
153 USB_FUNC_STRING_INDEX_ACM_COMPLETE_SET_LINE,
154 USB_FUNC_STRING_INDEX_ADB_READ,
155 USB_FUNC_STRING_INDEX_ADB_WRITE,
156 USB_FUNC_STRING_INDEX_MAX
157};
158/*========Thermal PART========*/
159enum thermal_func_string_index {
160 /* Thermal API INDEX */
161 THRML_FID_bind = 0,
162 THRML_FID_unbind,
163 THRML_FID_get_temp,
164 THRML_FID_get_mode,
165 THRML_FID_set_mode,
166 THRML_FID_get_trip_type, /* 5 */
167 THRML_FID_get_trip_temp,
168 THRML_FID_get_crit_temp,
169 /* Cooling API INDEX */
170 THRML_FID_get_max_state,
171 THRML_FID_get_cur_state,
172 THRML_FID_set_cur_state, /* 10 */
173 /* Battery API INDEX */
174 THRML_FID_get_battery_info,
175 THRML_FID_get_cpu_info,
176 THRML_FID_get_real_time,
177 THRML_FID_get_cpu_info_ex, /* /< JB only, ICS not support */
178 THRML_FID_get_misc_info, /* /< JB only, ICS not support */
179 THRML_FID_get_misc_ex_info, /* /< JB only, ICS not support */
180 THRML_FID_MAX
181};
182/*========================*/
183
184enum logger_type {
185 LOGGER_TYPE_START = 0,
186 LOGGER_TYPE_STORAGE = LOGGER_TYPE_START,
187 LOGGER_TYPE_USB,
188 LOGGER_TYPE_THRML,
189 LOGGER_TYPE_END
190};
191
192#ifndef USER_BUILD_KERNEL /* engineering mode */
193
194#define CREATE_PROC_ENTRY(proc, x, y, z, o) proc = proc_create(x, y, z, o)
195
196#else
197
198#define CREATE_PROC_ENTRY(proc, x, y, z, o)
199
200#endif
201
202/*
203 * add the api to disable the storage logger
204 */
205extern void storage_logger_switch(bool enabled);
206
207extern void add_trace(enum logger_type type, unsigned int msg_id,
208 unsigned int line_cnt, unsigned int func_id, ...);
209
210/*========STORAGE PART========*/
211extern bool dumpMMCqd(void);
212extern bool dumpBlkLayer(void);
213extern bool dumpVFS(void);
214extern bool dumpMSDC(void);
215extern bool ioschedule_dump(void);
216/*======= File System PART========*/
217extern int dumpFsRecTime(void);
218
219#define AddStorageTrace(msg_id, name, ...) \
220 add_trace(LOGGER_TYPE_STORAGE, msg_id, __LINE__, \
221 STORAGE_LOG_API___##name##__func, __VA_ARGS__);
222/*========USB PART========*/
223extern bool is_dump_musb(void);
224extern bool is_dump_usb_gadget(void);
225
226#define ADD_USB_TRACE(func_id, name, ...) \
227 add_trace(LOGGER_TYPE_USB, USB_LOGGER_MSG_##func_id, __LINE__, \
228 USB_FUNC_STRING_INDEX_##name, __VA_ARGS__);
229
230/*======Thermal PART======*/
231extern bool is_dump_mthermal(void);
232
233#define AddThrmlTrace(msg_id, name, ...) \
234 add_trace(LOGGER_TYPE_THRML, msg_id, __LINE__, \
235 THRML_FID_##name, __VA_ARGS__);
236
237/*========================*/
238#endif /* !__MT_STORAGE_LOGGER_H__ */