diff --git a/drivers/net/ethernet/msm/Makefile b/drivers/net/ethernet/msm/Makefile index c5f20f87e066..68f956ba7f7e 100644 --- a/drivers/net/ethernet/msm/Makefile +++ b/drivers/net/ethernet/msm/Makefile @@ -2,4 +2,5 @@ # Makefile for the msm networking support. # +ccflags-$(CONFIG_MSM_MHI_DEBUG) := -DDEBUG obj-$(CONFIG_MSM_RMNET_MHI) += msm_rmnet_mhi.o diff --git a/drivers/net/ethernet/msm/msm_rmnet_mhi.c b/drivers/net/ethernet/msm/msm_rmnet_mhi.c index 3e6e7069a990..5bc0d7e45ba6 100644 --- a/drivers/net/ethernet/msm/msm_rmnet_mhi.c +++ b/drivers/net/ethernet/msm/msm_rmnet_mhi.c @@ -24,6 +24,7 @@ #include #include #include +#include #define RMNET_MHI_DRIVER_NAME "rmnet_mhi" #define RMNET_MHI_DEV_NAME "rmnet_mhi%d" @@ -54,11 +55,14 @@ struct __packed mhi_skb_priv { enum DBG_LVL rmnet_ipc_log_lvl = MSG_VERBOSE; enum DBG_LVL rmnet_msg_lvl = MSG_CRITICAL; +static unsigned int rmnet_log_override; module_param(rmnet_msg_lvl , uint, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(rmnet_msg_lvl, "dbg lvl"); module_param(rmnet_ipc_log_lvl, uint, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(rmnet_ipc_log_lvl, "dbg lvl"); +module_param(rmnet_log_override , uint, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(rmnet_log_override, "dbg class"); unsigned int mru = MHI_DEFAULT_MRU; module_param(mru, uint, S_IRUGO | S_IWUSR); @@ -67,11 +71,16 @@ MODULE_PARM_DESC(mru, "MRU interface setting"); void *rmnet_ipc_log; #define rmnet_log(_msg_lvl, _msg, ...) do { \ - if ((_msg_lvl) >= rmnet_msg_lvl) \ - pr_alert("[%s] " _msg, __func__, ##__VA_ARGS__);\ - if (rmnet_ipc_log && ((_msg_lvl) >= rmnet_ipc_log_lvl)) \ - ipc_log_string(rmnet_ipc_log, \ - "[%s] " _msg, __func__, ##__VA_ARGS__); \ + DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, _msg); \ + if ((rmnet_log_override || \ + unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) &&\ + (_msg_lvl) >= rmnet_msg_lvl) \ + pr_alert("[%s] " _msg, __func__, ##__VA_ARGS__); \ + if ((rmnet_log_override || \ + unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) && \ + rmnet_ipc_log && ((_msg_lvl) >= rmnet_ipc_log_lvl)) \ + ipc_log_string(rmnet_ipc_log, \ + "[%s] " _msg, __func__, ##__VA_ARGS__); \ } while (0) unsigned long tx_interrupts_count[MHI_RMNET_DEVICE_COUNT]; diff --git a/drivers/platform/msm/Kconfig b/drivers/platform/msm/Kconfig index 8b2f734bd132..debf81a4d7e1 100644 --- a/drivers/platform/msm/Kconfig +++ b/drivers/platform/msm/Kconfig @@ -152,6 +152,15 @@ config MSM_MHI_UCI read, write and ioctl operations to communicate with the attached device. +config MSM_MHI_DEBUG + bool "MHI debug support" + depends on MSM_MHI + help + Say yes here to enable debugging support in the MHI transport + and individual MHI client drivers. This option may impact + throughput as individual MHI packets and state transitions + will be logged. + config MSM_11AD tristate "Platform driver for 11ad chip" depends on PCI diff --git a/drivers/platform/msm/mhi/Makefile b/drivers/platform/msm/mhi/Makefile index 1f7d056ca580..da6cfcb14555 100644 --- a/drivers/platform/msm/mhi/Makefile +++ b/drivers/platform/msm/mhi/Makefile @@ -1,4 +1,5 @@ # Makefile for MHI driver +ccflags-$(CONFIG_MSM_MHI_DEBUG) := -DDEBUG obj-y += mhi_main.o obj-y += mhi_iface.o obj-y += mhi_init.o diff --git a/drivers/platform/msm/mhi/mhi.h b/drivers/platform/msm/mhi/mhi.h index cf3bc3155e49..3c4d2500a1dc 100644 --- a/drivers/platform/msm/mhi/mhi.h +++ b/drivers/platform/msm/mhi/mhi.h @@ -25,22 +25,19 @@ #include #include #include +#include +#include extern struct mhi_pcie_devices mhi_devices; -enum MHI_DEBUG_CLASS { - MHI_DBG_DATA = 0x1000, - MHI_DBG_POWER = 0x2000, - MHI_DBG_reserved = 0x80000000 -}; - enum MHI_DEBUG_LEVEL { - MHI_MSG_VERBOSE = 0x1, - MHI_MSG_INFO = 0x2, - MHI_MSG_DBG = 0x4, - MHI_MSG_WARNING = 0x8, - MHI_MSG_ERROR = 0x10, - MHI_MSG_CRITICAL = 0x20, + MHI_MSG_RAW = 0x1, + MHI_MSG_VERBOSE = 0x2, + MHI_MSG_INFO = 0x4, + MHI_MSG_DBG = 0x8, + MHI_MSG_WARNING = 0x10, + MHI_MSG_ERROR = 0x20, + MHI_MSG_CRITICAL = 0x40, MHI_MSG_reserved = 0x80000000 }; diff --git a/drivers/platform/msm/mhi/mhi_sys.c b/drivers/platform/msm/mhi/mhi_sys.c index e9ffe0548152..5abe56d555a9 100644 --- a/drivers/platform/msm/mhi/mhi_sys.c +++ b/drivers/platform/msm/mhi/mhi_sys.c @@ -18,10 +18,9 @@ #include "mhi_sys.h" -enum MHI_DEBUG_LEVEL mhi_msg_lvl = MHI_MSG_ERROR; +enum MHI_DEBUG_LEVEL mhi_msg_lvl = MHI_MSG_VERBOSE; enum MHI_DEBUG_LEVEL mhi_ipc_log_lvl = MHI_MSG_VERBOSE; - -enum MHI_DEBUG_CLASS mhi_msg_class = MHI_DBG_DATA | MHI_DBG_POWER; +unsigned int mhi_log_override; module_param(mhi_msg_lvl , uint, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(mhi_msg_lvl, "dbg lvl"); @@ -29,8 +28,8 @@ MODULE_PARM_DESC(mhi_msg_lvl, "dbg lvl"); module_param(mhi_ipc_log_lvl, uint, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(mhi_ipc_log_lvl, "dbg lvl"); -module_param(mhi_msg_class , uint, S_IRUGO | S_IWUSR); -MODULE_PARM_DESC(mhi_msg_class, "dbg class"); +module_param(mhi_log_override , uint, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(mhi_log_override, "dbg class"); static ssize_t mhi_dbgfs_chan_read(struct file *fp, char __user *buf, size_t count, loff_t *offp) diff --git a/drivers/platform/msm/mhi/mhi_sys.h b/drivers/platform/msm/mhi/mhi_sys.h index 5932dbba8153..37cc9a0b426c 100644 --- a/drivers/platform/msm/mhi/mhi_sys.h +++ b/drivers/platform/msm/mhi/mhi_sys.h @@ -17,12 +17,13 @@ #include #include #include +#include #include "mhi.h" extern enum MHI_DEBUG_LEVEL mhi_msg_lvl; extern enum MHI_DEBUG_LEVEL mhi_ipc_log_lvl; -extern enum MHI_DEBUG_CLASS mhi_msg_class; +extern unsigned int mhi_log_override; extern u32 m3_timer_val_ms; extern enum MHI_DEBUG_LEVEL mhi_xfer_db_interval; @@ -40,11 +41,16 @@ extern void *mhi_ipc_log; } while (0) #define mhi_log(_msg_lvl, _msg, ...) do { \ - if ((_msg_lvl) >= mhi_msg_lvl) \ - pr_alert("[%s] " _msg, __func__, ##__VA_ARGS__);\ - if (mhi_ipc_log && ((_msg_lvl) >= mhi_ipc_log_lvl)) \ - ipc_log_string(mhi_ipc_log, \ - "[%s] " _msg, __func__, ##__VA_ARGS__); \ + DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, _msg); \ + if ((mhi_log_override || \ + unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) &&\ + (_msg_lvl) >= mhi_msg_lvl) \ + pr_alert("[%s] " _msg, __func__, ##__VA_ARGS__); \ + if ((mhi_log_override || \ + unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) && \ + mhi_ipc_log && ((_msg_lvl) >= mhi_ipc_log_lvl)) \ + ipc_log_string(mhi_ipc_log, \ + "[%s] " _msg, __func__, ##__VA_ARGS__); \ } while (0) irqreturn_t mhi_msi_handlr(int msi_number, void *dev_id); diff --git a/drivers/platform/msm/mhi_uci/Makefile b/drivers/platform/msm/mhi_uci/Makefile index 5709e186abb0..506a5830c8b2 100644 --- a/drivers/platform/msm/mhi_uci/Makefile +++ b/drivers/platform/msm/mhi_uci/Makefile @@ -1,2 +1,3 @@ # Makefile for MHI UCI driver +ccflags-$(CONFIG_MSM_MHI_DEBUG) := -DDEBUG obj-y += mhi_uci.o diff --git a/drivers/platform/msm/mhi_uci/mhi_uci.c b/drivers/platform/msm/mhi_uci/mhi_uci.c index ca07a7b37627..fcc293318399 100644 --- a/drivers/platform/msm/mhi_uci/mhi_uci.c +++ b/drivers/platform/msm/mhi_uci/mhi_uci.c @@ -25,6 +25,7 @@ #include #include #include +#include #define MHI_DEV_NODE_NAME_LEN 13 #define MHI_MAX_NR_OF_CLIENTS 23 @@ -51,6 +52,7 @@ enum UCI_DBG_LEVEL { enum UCI_DBG_LEVEL mhi_uci_msg_lvl = UCI_DBG_CRITICAL; enum UCI_DBG_LEVEL mhi_uci_ipc_log_lvl = UCI_DBG_INFO; +static unsigned int uci_log_override; void *mhi_uci_ipc_log; struct __packed rs232_ctrl_msg { @@ -213,10 +215,15 @@ struct mhi_uci_ctxt_t { }; #define uci_log(_msg_lvl, _msg, ...) do { \ - if (_msg_lvl >= mhi_uci_msg_lvl) { \ - pr_err("[%s] "_msg, __func__, ##__VA_ARGS__); \ - } \ - if (mhi_uci_ipc_log && (_msg_lvl >= mhi_uci_ipc_log_lvl)) { \ + DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, _msg); \ + if ((uci_log_override || \ + unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) &&\ + (_msg_lvl >= mhi_uci_msg_lvl)) { \ + pr_err("[%s] "_msg, __func__, ##__VA_ARGS__); \ + } \ + if ((uci_log_override || \ + unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT)) && \ + mhi_uci_ipc_log && (_msg_lvl >= mhi_uci_ipc_log_lvl)) { \ ipc_log_string(mhi_uci_ipc_log, \ "[%s] " _msg, __func__, ##__VA_ARGS__); \ } \ @@ -228,6 +235,9 @@ MODULE_PARM_DESC(mhi_uci_msg_lvl, "uci dbg lvl"); module_param(mhi_uci_ipc_log_lvl, uint, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(mhi_uci_ipc_log_lvl, "ipc dbg lvl"); +module_param(uci_log_override , uint, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(uci_log_override, "dbg class"); + static ssize_t mhi_uci_client_read(struct file *file, char __user *buf, size_t count, loff_t *offp); static ssize_t mhi_uci_client_write(struct file *file,