diff options
| author | Andrei Danaila <adanaila@codeaurora.org> | 2015-07-30 15:25:59 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:11:38 -0700 |
| commit | 02716573e8a90037661080b54fa0dde938689ae4 (patch) | |
| tree | 19e2b3120fedc03e6d3354a2712995fb318f5225 /drivers/platform | |
| parent | 25539ada431aeeebf57175481983545cd00db8e5 (diff) | |
mhi: Enable logging based on defconfig options
MHI driver stack logging to the private IPC log buffer can be quite
expensive from a MIPS perspective. Enable such MHI logging
if and only if such logging is desired in defconfig.
Change-Id: I4a16eedc2424d250129b1b44a91d1fa32be399f5
Signed-off-by: Andrei Danaila <adanaila@codeaurora.org>
Diffstat (limited to 'drivers/platform')
| -rw-r--r-- | drivers/platform/msm/Kconfig | 9 | ||||
| -rw-r--r-- | drivers/platform/msm/mhi/Makefile | 1 | ||||
| -rw-r--r-- | drivers/platform/msm/mhi/mhi.h | 21 | ||||
| -rw-r--r-- | drivers/platform/msm/mhi/mhi_sys.c | 9 | ||||
| -rw-r--r-- | drivers/platform/msm/mhi/mhi_sys.h | 18 | ||||
| -rw-r--r-- | drivers/platform/msm/mhi_uci/Makefile | 1 | ||||
| -rw-r--r-- | drivers/platform/msm/mhi_uci/mhi_uci.c | 18 |
7 files changed, 50 insertions, 27 deletions
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 <linux/msm_pcie.h> #include <linux/sched.h> #include <linux/irqreturn.h> +#include <linux/list.h> +#include <linux/dma-mapping.h> 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 <linux/ipc_logging.h> #include <linux/sysfs.h> #include <linux/delay.h> +#include <linux/device.h> #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 <linux/delay.h> #include <linux/ipc_logging.h> #include <linux/dma-mapping.h> +#include <linux/device.h> #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, |
