summaryrefslogtreecommitdiff
path: root/drivers/platform
diff options
context:
space:
mode:
authorAndrei Danaila <adanaila@codeaurora.org>2015-07-30 15:25:59 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:11:38 -0700
commit02716573e8a90037661080b54fa0dde938689ae4 (patch)
tree19e2b3120fedc03e6d3354a2712995fb318f5225 /drivers/platform
parent25539ada431aeeebf57175481983545cd00db8e5 (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/Kconfig9
-rw-r--r--drivers/platform/msm/mhi/Makefile1
-rw-r--r--drivers/platform/msm/mhi/mhi.h21
-rw-r--r--drivers/platform/msm/mhi/mhi_sys.c9
-rw-r--r--drivers/platform/msm/mhi/mhi_sys.h18
-rw-r--r--drivers/platform/msm/mhi_uci/Makefile1
-rw-r--r--drivers/platform/msm/mhi_uci/mhi_uci.c18
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,