msm: sdio: add debugfs ability to control open/close debug messages
Signed-off-by: Maya Erez <merez@codeaurora.org>
diff --git a/arch/arm/mach-msm/sdio_al.c b/arch/arm/mach-msm/sdio_al.c
index 2213f9f..f5b9ad7 100644
--- a/arch/arm/mach-msm/sdio_al.c
+++ b/arch/arm/mach-msm/sdio_al.c
@@ -179,6 +179,13 @@
sdio_al_log(x, y); \
} while (0)
+#define CLOSE_DEBUG(x, y...) \
+ do { \
+ if (sdio_al->debug.debug_close_on) \
+ pr_info(y); \
+ sdio_al_log(x, y); \
+ } while (0)
+
/* The index of the SDIO card used for the sdio_al_dloader */
#define SDIO_BOOTLOADER_CARD_INDEX 1
@@ -193,9 +200,11 @@
struct sdio_al_debug {
u8 debug_lpm_on;
u8 debug_data_on;
+ u8 debug_close_on;
struct dentry *sdio_al_debug_root;
struct dentry *sdio_al_debug_lpm_on;
struct dentry *sdio_al_debug_data_on;
+ struct dentry *sdio_al_debug_close_on;
struct dentry *sdio_al_debug_info;
struct dentry *sdio_al_debug_log_buffers[MAX_NUM_OF_SDIO_DEVICES + 1];
};
@@ -472,6 +481,12 @@
static int debug_data_on;
module_param(debug_data_on, int, 0);
+/*
+ * Enables / disables open close debug messages
+ */
+static int debug_close_on = 1;
+module_param(debug_close_on, int, 0);
+
/** The driver context */
static struct sdio_al *sdio_al;
@@ -557,6 +572,12 @@
sdio_al->debug.sdio_al_debug_root,
&sdio_al->debug.debug_data_on);
+ sdio_al->debug.sdio_al_debug_close_on = debugfs_create_u8(
+ "debug_close_on",
+ S_IRUGO | S_IWUGO,
+ sdio_al->debug.sdio_al_debug_root,
+ &sdio_al->debug.debug_close_on);
+
sdio_al->debug.sdio_al_debug_info = debugfs_create_file(
"sdio_debug_info",
S_IRUGO | S_IWUGO,
@@ -602,6 +623,7 @@
if ((!sdio_al->debug.sdio_al_debug_data_on) &&
(!sdio_al->debug.sdio_al_debug_lpm_on) &&
+ (!sdio_al->debug.sdio_al_debug_close_on) &&
(!sdio_al->debug.sdio_al_debug_info) &&
blob_errs) {
debugfs_remove(sdio_al->debug.sdio_al_debug_root);
@@ -623,6 +645,7 @@
debugfs_remove(sdio_al->debug.sdio_al_debug_lpm_on);
debugfs_remove(sdio_al->debug.sdio_al_debug_data_on);
+ debugfs_remove(sdio_al->debug.sdio_al_debug_close_on);
debugfs_remove(sdio_al->debug.sdio_al_debug_info);
for (i = 0; i < (MAX_NUM_OF_SDIO_DEVICES + 1); ++i)
@@ -1911,7 +1934,7 @@
if (ch->min_write_avail > ch->write_threshold)
ch->min_write_avail = ch->write_threshold;
- sdio_al_logi(sdio_al_dev->dev_log, MODULE_NAME ":ch %s "
+ CLOSE_DEBUG(sdio_al_dev->dev_log, MODULE_NAME ":ch %s "
"read_threshold=%d, write_threshold=%d,"
" min_write_avail=%d, max_rx_threshold=%d,"
" max_tx_threshold=%d\n", ch->name, ch->read_threshold,
@@ -2677,8 +2700,8 @@
goto exit_err;
}
- sdio_al_logi(sdio_al_dev->dev_log, MODULE_NAME ":sdio_open %s "
- "completed OK\n", name);
+ CLOSE_DEBUG(sdio_al_dev->dev_log, MODULE_NAME ":sdio_open %s "
+ "completed OK\n", name);
if (sdio_al_dev->lpm_chan == INVALID_SDIO_CHAN) {
if (sdio_al->sdioc_major == PEER_SDIOC_OLD_VERSION_MAJOR) {
if (!ch->is_packet_mode) {
@@ -2908,6 +2931,8 @@
return ret;
}
ch->state = SDIO_CHANNEL_STATE_CLOSED;
+ CLOSE_DEBUG(sdio_al_dev->dev_log, MODULE_NAME ":%s: Ch %s closed "
+ "successfully\n", __func__, ch->name);
sdio_release_host(sdio_al_dev->card->sdio_func[0]);
return ret;
@@ -4071,6 +4096,7 @@
sdio_al->debug.debug_lpm_on = debug_lpm_on;
sdio_al->debug.debug_data_on = debug_data_on;
+ sdio_al->debug.debug_close_on = debug_close_on;
#ifdef CONFIG_DEBUG_FS
sdio_al_debugfs_init();