Files
2018-03-13 20:29:02 +01:00

239 lines
6.9 KiB
C

/*
* Copyright (C) 2011 MediaTek, Inc.
*
* Author: Holmes Chiou <holmes.chiou@mediatek.com>
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef __MT_STORAGE_LOGGER_H__
#define __MT_STORAGE_LOGGER_H__
#define SLTAG "[StorageLogger]"
#define SLog_MSG(fmt, args...) \
do { \
printk(KERN_INFO SLTAG""fmt" <- %s(): L<%d> PID<%s><%d>\n", \
##args , __func__, __LINE__, current->comm, current->pid); \
} while (0);
#define STrace_MSG(fmt, args...) \
do { \
printk(KERN_INFO SLTAG""fmt" in PID<%s><%d>\n", \
##args, current->comm, current->pid); \
} while (0);
struct _loggerFuncName {
int FuncID;
char *FuncName;
};
struct _loggerMsgFormat {
int MsgID;
char *MsgFmt;
char *DispFmt;
};
enum Storage_Logger_MsgID {
STORAGE_LOGGER_MSG_FIRST_ONE = 0,
STORAGE_LOGGER_MSG_ISSUE_RQ = STORAGE_LOGGER_MSG_FIRST_ONE,
STORAGE_LOGGER_MSG_ISSUE_RQ_1,
STORAGE_LOGGER_MSG_SUBMITBIO,
STORAGE_LOGGER_MSG_VFS_SDCARD,
STORAGE_LOGGER_MSG_VFS_SDCARD_END,
STORAGE_LOGGER_MSG_VFS_OPEN_SDCARD,
STORAGE_LOGGER_MSG_VFS_OPEN_SDCARD_END,
STORAGE_LOGGER_MSG_VFS_INTFS,
STORAGE_LOGGER_MSG_VFS_INTFS_END,
STORAGE_LOGGER_MSG_VFS_OPEN_INTFS,
STORAGE_LOGGER_MSG_VFS_OPEN_INTFS_END,
STORAGE_LOGGER_MSG_IOSCHED1,
STORAGE_LOGGER_MSG_IOSCHED2,
STORAGE_LOGGER_MSG_MSDC_DO,
STORAGE_LOGGER_MSG_MSDC_DO_END,
STORAGE_LOGGER_MSG_GET_REQUEST,
STORAGE_LOGGER_MSG_GET_REQUEST_END,
STORAGE_LOGGER_MSG_LAST_ONE, /* MUST BE THE LAST STORAGE MSG ID */
USB_LOGGER_MSG_FIRST_ONE = STORAGE_LOGGER_MSG_LAST_ONE + 1,
USB_LOGGER_MSG_MUSB_INTERRUPT = USB_LOGGER_MSG_FIRST_ONE,
USB_LOGGER_MSG_MUSB_STAGE0_IRQ,
USB_LOGGER_MSG_MUSB_G_EP0_IRQ,
USB_LOGGER_MSG_TXSTATE,
USB_LOGGER_MSG_TXSTATE_END,
USB_LOGGER_MSG_MUSB_G_TX,
USB_LOGGER_MSG_MUSB_G_RX,
USB_LOGGER_MSG_MUSB_READ_SETUP,
USB_LOGGER_MSG_FORWARD_TO_DRIVER,
USB_LOGGER_MSG_COMPOSITE_SETUP,
USB_LOGGER_MSG_USB_ADD_FUNCTION,
USB_LOGGER_MSG_SET_CONFIG,
USB_LOGGER_MSG_DEVICE_DESCRIPTOR,
USB_LOGGER_MSG_INTERFACE_DESCRIPTOR,
USB_LOGGER_MSG_ENDPOINT_DESCRIPTOR,
USB_LOGGER_MSG_ANDROID_WORK,
USB_LOGGER_MSG_GS_RX_PUSH,
USB_LOGGER_MSG_GS_START_TX,
USB_LOGGER_MSG_ACM_SETUP,
USB_LOGGER_MSG_ACM_SET_ALT,
USB_LOGGER_MSG_ACM_BIND,
USB_LOGGER_MSG_GS_OPEN,
USB_LOGGER_MSG_GS_CLOSE,
USB_LOGGER_MSG_ACM_CDC_LINE_CODING,
USB_LOGGER_MSG_STRING,
USB_LOGGER_MSG_HEX_NUM,
USB_LOGGER_MSG_DEC_NUM,
USB_LOGGER_MSG_LAST_ONE, /* MUST BE THE LAST USB MSG ID */
THRML_LOGGER_MSG_FIRST_ONE = USB_LOGGER_MSG_LAST_ONE + 1,
THRML_LOGGER_MSG_STRING = THRML_LOGGER_MSG_FIRST_ONE,
THRML_LOGGER_MSG_HEX_NUM,
THRML_LOGGER_MSG_DEC_NUM,
THRML_LOGGER_MSG_BIND,
THRML_LOGGER_MSG_ZONE_TEMP,
THRML_LOGGER_MSG_COOL_STAE,
THRML_LOGGER_MSG_TRIP_POINT,
THRML_LOGGER_MSG_BATTERY_INFO,
THRML_LOGGER_MSG_CPU_INFO,
THRML_LOGGER_MSG_CPU_INFO_EX,
THRML_LOGGER_MSG_MISC_INFO,
THRML_LOGGER_MSG_MISC_EX_INFO,
THRML_LOGGER_MSG_LAST_ONE,
LOGGER_MSG_ID_MAX = THRML_LOGGER_MSG_LAST_ONE /* THE WHOLE ENUM LAST ONE */
};
/*========STORAGE PART========*/
enum Storage_LogAPI {
STORAGE_LOG_API___submit_bio__func = 0,
STORAGE_LOG_API___mmc_blk_issue_rq__func,
STORAGE_LOG_API___do_sys_open__func,
STORAGE_LOG_API___vfs_read__func,
STORAGE_LOG_API___vfs_write__func,
STORAGE_LOG_API___msdc_do_request__func,
STORAGE_LOG_API___msdc_ops_request__func,
STORAGE_LOG_API___io_schedule__func,
STORAGE_LOG_API___get_request_wait__func,
STORAGE_LOG_API___get_request__func,
STORAGE_LOG_API___make_request__func,
STORAGE_LOG_API___MAX__func
};
/*========USB PART========*/
enum usb_func_string_index {
USB_FUNC_STRING_INDEX_MUSB_INTERRUPT = 0,
USB_FUNC_STRING_INDEX_MUSB_STAGE0_IRQ,
USB_FUNC_STRING_INDEX_MUSB_G_EP0_IRQ,
USB_FUNC_STRING_INDEX_TXSTATE,
USB_FUNC_STRING_INDEX_MUSB_G_TX,
USB_FUNC_STRING_INDEX_MUSB_G_RX,
USB_FUNC_STRING_INDEX_MUSB_READ_SETUP,
USB_FUNC_STRING_INDEX_FORWARD_TO_DRIVER,
USB_FUNC_STRING_INDEX_COMPOSITE_SETUP,
USB_FUNC_STRING_INDEX_USB_ADD_FUNCTION,
USB_FUNC_STRING_INDEX_SET_CONFIG,
USB_FUNC_STRING_INDEX_CONFIG_BUF,
USB_FUNC_STRING_INDEX_USB_DESCRIPTOR_FILLBUF,
USB_FUNC_STRING_INDEX_ANDROID_WORK,
USB_FUNC_STRING_INDEX_GS_RX_PUSH,
USB_FUNC_STRING_INDEX_GS_START_TX,
USB_FUNC_STRING_INDEX_ACM_SETUP,
USB_FUNC_STRING_INDEX_ACM_SET_ALT,
USB_FUNC_STRING_INDEX_ACM_BIND,
USB_FUNC_STRING_INDEX_GS_OPEN,
USB_FUNC_STRING_INDEX_GS_CLOSE,
USB_FUNC_STRING_INDEX_ACM_COMPLETE_SET_LINE,
USB_FUNC_STRING_INDEX_ADB_READ,
USB_FUNC_STRING_INDEX_ADB_WRITE,
USB_FUNC_STRING_INDEX_MAX
};
/*========Thermal PART========*/
enum thermal_func_string_index {
/* Thermal API INDEX */
THRML_FID_bind = 0,
THRML_FID_unbind,
THRML_FID_get_temp,
THRML_FID_get_mode,
THRML_FID_set_mode,
THRML_FID_get_trip_type, /* 5 */
THRML_FID_get_trip_temp,
THRML_FID_get_crit_temp,
/* Cooling API INDEX */
THRML_FID_get_max_state,
THRML_FID_get_cur_state,
THRML_FID_set_cur_state, /* 10 */
/* Battery API INDEX */
THRML_FID_get_battery_info,
THRML_FID_get_cpu_info,
THRML_FID_get_real_time,
THRML_FID_get_cpu_info_ex, /* /< JB only, ICS not support */
THRML_FID_get_misc_info, /* /< JB only, ICS not support */
THRML_FID_get_misc_ex_info, /* /< JB only, ICS not support */
THRML_FID_MAX
};
/*========================*/
enum logger_type {
LOGGER_TYPE_START = 0,
LOGGER_TYPE_STORAGE = LOGGER_TYPE_START,
LOGGER_TYPE_USB,
LOGGER_TYPE_THRML,
LOGGER_TYPE_END
};
#ifndef USER_BUILD_KERNEL /* engineering mode */
#define CREATE_PROC_ENTRY(proc, x, y, z, o) proc = proc_create(x, y, z, o)
#else
#define CREATE_PROC_ENTRY(proc, x, y, z, o)
#endif
/*
* add the api to disable the storage logger
*/
extern void storage_logger_switch(bool enabled);
extern void add_trace(enum logger_type type, unsigned int msg_id,
unsigned int line_cnt, unsigned int func_id, ...);
/*========STORAGE PART========*/
extern bool dumpMMCqd(void);
extern bool dumpBlkLayer(void);
extern bool dumpVFS(void);
extern bool dumpMSDC(void);
extern bool ioschedule_dump(void);
/*======= File System PART========*/
extern int dumpFsRecTime(void);
#define AddStorageTrace(msg_id, name, ...) \
add_trace(LOGGER_TYPE_STORAGE, msg_id, __LINE__, \
STORAGE_LOG_API___##name##__func, __VA_ARGS__);
/*========USB PART========*/
extern bool is_dump_musb(void);
extern bool is_dump_usb_gadget(void);
#define ADD_USB_TRACE(func_id, name, ...) \
add_trace(LOGGER_TYPE_USB, USB_LOGGER_MSG_##func_id, __LINE__, \
USB_FUNC_STRING_INDEX_##name, __VA_ARGS__);
/*======Thermal PART======*/
extern bool is_dump_mthermal(void);
#define AddThrmlTrace(msg_id, name, ...) \
add_trace(LOGGER_TYPE_THRML, msg_id, __LINE__, \
THRML_FID_##name, __VA_ARGS__);
/*========================*/
#endif /* !__MT_STORAGE_LOGGER_H__ */