[Description]
  1.Update for kernel coding style
  2.Remove print function
  3.Move metabuffer lock_init from btmtk_fops_open() to btmtk_sdio_probe()

CR-Id:ALPS02870048
diff --git a/btmtk_drv.h b/btmtk_drv.h
index 59a9866..ff11539 100644
--- a/btmtk_drv.h
+++ b/btmtk_drv.h
@@ -1,219 +1,219 @@
- /*
-  * Mediatek Bluetooth driver: global definitions & declarations
-  *
-  * Copyright (C) 2015, Mediatek International Ltd.
-  *
-  * This software file (the "File") is distributed by Mediatek International
-  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
-  * (the "License").  You may use, redistribute and/or modify this File in
-  * accordance with the terms and conditions of the License, a copy of which
-  * is available by writing to the Free Software Foundation, Inc.,
-  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
-  * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
-  *
-  *
-  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
-  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
-  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
-  * this warranty disclaimer.
-  *
-  */
+/*
+ * Mediatek Bluetooth driver: global definitions & declarations
+ *
+ * Copyright (C) 2017, Mediatek International Ltd.
+ *
+ * This software file (the "File") is distributed by Mediatek International
+ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
+ * (the "License").  You may use, redistribute and/or modify this File in
+ * accordance with the terms and conditions of the License, a copy of which
+ * is available by writing to the Free Software Foundation, Inc.,
+ * On the worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ *
+ *
+ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
+ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
+ * this warranty disclaimer.
+ *
+ */
 
- #include <linux/kthread.h>
- #include <linux/bitops.h>
- #include <linux/slab.h>
- #include <net/bluetooth/bluetooth.h>
+#ifndef _BTMTK_DRV_H_
+#define _BTMTK_DRV_H_
 
- #define SAVE_FW_DUMP_IN_KERNEL	1
+#include <linux/kthread.h>
+#include <linux/bitops.h>
+#include <linux/slab.h>
+#include <net/bluetooth/bluetooth.h>
 
- #define SUPPORT_FW_DUMP		1
- #define BTM_HEADER_LEN                  5
- #define BTM_UPLD_SIZE                   2312
+#define SAVE_FW_DUMP_IN_KERNEL	1
 
- #define MTK_TXDATA_SIZE 2000
- #define MTK_RXDATA_SIZE 2000
+#define SUPPORT_FW_DUMP		1
+#define BTM_HEADER_LEN                  5
+#define BTM_UPLD_SIZE                   2312
 
- /* Time to wait until Host Sleep state change in millisecond */
- #define WAIT_UNTIL_HS_STATE_CHANGED     msecs_to_jiffies(5000)
- /* Time to wait for command response in millisecond */
- #define WAIT_UNTIL_CMD_RESP             msecs_to_jiffies(5000)
+#define MTK_TXDATA_SIZE 2000
+#define MTK_RXDATA_SIZE 2000
 
- enum rdwr_status {
-         RDWR_STATUS_SUCCESS = 0,
-         RDWR_STATUS_FAILURE = 1,
-         RDWR_STATUS_DONE = 2
- };
+/* Time to wait until Host Sleep state change in millisecond */
+#define WAIT_UNTIL_HS_STATE_CHANGED     msecs_to_jiffies(5000)
+/* Time to wait for command response in millisecond */
+#define WAIT_UNTIL_CMD_RESP             msecs_to_jiffies(5000)
 
- #define FW_DUMP_MAX_NAME_LEN    8
- #define FW_DUMP_HOST_READY      0xEE
- #define FW_DUMP_DONE            0xFF
- #define FW_DUMP_READ_DONE       0xFE
+enum rdwr_status {
+	RDWR_STATUS_SUCCESS = 0,
+	RDWR_STATUS_FAILURE = 1,
+	RDWR_STATUS_DONE = 2
+};
 
- struct memory_type_mapping {
-         u8 mem_name[FW_DUMP_MAX_NAME_LEN];
-         u8 *mem_ptr;
-         u32 mem_size;
-         u8 done_flag;
- };
+#define FW_DUMP_MAX_NAME_LEN    8
+#define FW_DUMP_HOST_READY      0xEE
+#define FW_DUMP_DONE            0xFF
+#define FW_DUMP_READ_DONE       0xFE
 
- struct btmtk_thread {
-         struct task_struct *task;
-         wait_queue_head_t wait_q;
-         void *priv;
- };
+struct memory_type_mapping {
+	u8 mem_name[FW_DUMP_MAX_NAME_LEN];
+	u8 *mem_ptr;
+	u32 mem_size;
+	u8 done_flag;
+};
 
- struct btmtk_device {
-         void *card;
-         //struct hci_dev *hcidev;
+struct btmtk_thread {
+	struct task_struct *task;
+	wait_queue_head_t wait_q;
+	void *priv;
+};
 
-         u8 dev_type;
+struct btmtk_device {
+	void *card;
+	/* struct hci_dev *hcidev; */
 
-         u8 tx_dnld_rdy;
+	u8 dev_type;
 
-         u8 psmode;
-         u8 pscmd;
-         u8 hsmode;
-         u8 hscmd;
+	u8 tx_dnld_rdy;
 
-         /* Low byte is gap, high byte is GPIO */
-         u16 gpio_gap;
+	u8 psmode;
+	u8 pscmd;
+	u8 hsmode;
+	u8 hscmd;
 
-         u8 hscfgcmd;
-         u8 sendcmdflag;
- };
+	/* Low byte is gap, high byte is GPIO */
+	u16 gpio_gap;
 
- struct btmtk_adapter {
-         void *hw_regs_buf;
-         u8 *hw_regs;
-         u32 int_count;
-         struct sk_buff_head tx_queue;
-         struct sk_buff_head fops_queue;
-         u8 fops_mode;
-         u8 psmode;
-         u8 ps_state;
-         u8 hs_state;
-         u8 wakeup_tries;
-         wait_queue_head_t cmd_wait_q;
-         wait_queue_head_t event_hs_wait_q;
-         u8 cmd_complete;
-         bool is_suspended;
- };
+	u8 hscfgcmd;
+	u8 sendcmdflag;
+};
 
- struct btmtk_private {
-         struct btmtk_device btmtk_dev;
-         struct btmtk_adapter *adapter;
-         struct btmtk_thread main_thread;
-         int (*hw_host_to_card)(struct btmtk_private *priv,
-                                 u8 *payload, u16 nb);
+struct btmtk_adapter {
+	void *hw_regs_buf;
+	u8 *hw_regs;
+	u32 int_count;
+	struct sk_buff_head tx_queue;
+	struct sk_buff_head fops_queue;
+	u8 fops_mode;
+	u8 psmode;
+	u8 ps_state;
+	u8 hs_state;
+	u8 wakeup_tries;
+	wait_queue_head_t cmd_wait_q;
+	wait_queue_head_t event_hs_wait_q;
+	u8 cmd_complete;
+	bool is_suspended;
+};
 
-         int (*hw_set_own_back)(int owntype);
-         int (*hw_process_int_status)(struct btmtk_private *priv);
-         void (*firmware_dump)(struct btmtk_private *priv);
-         spinlock_t driver_lock;         /* spinlock used by driver */
- #ifdef CONFIG_DEBUG_FS
-         void *debugfs_data;
- #endif
-         bool surprise_removed;
-#if SUPPORT_FW_DUMP
-		 struct semaphore fw_dump_semaphore;
-		 struct task_struct *fw_dump_tsk;
-		 struct task_struct *fw_dump_end_check_tsk;
+struct btmtk_private {
+	struct btmtk_device btmtk_dev;
+	struct btmtk_adapter *adapter;
+	struct btmtk_thread main_thread;
+	int (*hw_host_to_card)(struct btmtk_private *priv,
+				u8 *payload, u16 nb);
+
+	int (*hw_set_own_back)(int owntype);
+	int (*hw_process_int_status)(struct btmtk_private *priv);
+	void (*firmware_dump)(struct btmtk_private *priv);
+	spinlock_t driver_lock;         /* spinlock used by driver */
+#ifdef CONFIG_DEBUG_FS
+	void *debugfs_data;
 #endif
- };
+	bool surprise_removed;
+#if SUPPORT_FW_DUMP
+	struct semaphore fw_dump_semaphore;
+	struct task_struct *fw_dump_tsk;
+	struct task_struct *fw_dump_end_check_tsk;
+#endif
+};
 
- #define MTK_VENDOR_PKT                 0xFE
+#define MTK_VENDOR_PKT                 0xFE
 
- /* Vendor specific Bluetooth commands */
- #define BT_CMD_PSCAN_WIN_REPORT_ENABLE  0xFC03
- #define BT_CMD_ROUTE_SCO_TO_HOST        0xFC1D
- #define BT_CMD_SET_BDADDR               0xFC22
- #define BT_CMD_AUTO_SLEEP_MODE          0xFC23
- #define BT_CMD_HOST_SLEEP_CONFIG        0xFC59
- #define BT_CMD_HOST_SLEEP_ENABLE        0xFC5A
- #define BT_CMD_MODULE_CFG_REQ           0xFC5B
- #define BT_CMD_LOAD_CONFIG_DATA         0xFC61
+/* Vendor specific Bluetooth commands */
+#define BT_CMD_PSCAN_WIN_REPORT_ENABLE  0xFC03
+#define BT_CMD_ROUTE_SCO_TO_HOST        0xFC1D
+#define BT_CMD_SET_BDADDR               0xFC22
+#define BT_CMD_AUTO_SLEEP_MODE          0xFC23
+#define BT_CMD_HOST_SLEEP_CONFIG        0xFC59
+#define BT_CMD_HOST_SLEEP_ENABLE        0xFC5A
+#define BT_CMD_MODULE_CFG_REQ           0xFC5B
+#define BT_CMD_LOAD_CONFIG_DATA         0xFC61
 
- /* Sub-commands: Module Bringup/Shutdown Request/Response */
- #define MODULE_BRINGUP_REQ              0xF1
- #define MODULE_BROUGHT_UP               0x00
- #define MODULE_ALREADY_UP               0x0C
+/* Sub-commands: Module Bringup/Shutdown Request/Response */
+#define MODULE_BRINGUP_REQ              0xF1
+#define MODULE_BROUGHT_UP               0x00
+#define MODULE_ALREADY_UP               0x0C
 
- #define MODULE_SHUTDOWN_REQ             0xF2
+#define MODULE_SHUTDOWN_REQ             0xF2
 
- /* Vendor specific Bluetooth events */
- #define BT_EVENT_AUTO_SLEEP_MODE        0x23
- #define BT_EVENT_HOST_SLEEP_CONFIG      0x59
- #define BT_EVENT_HOST_SLEEP_ENABLE      0x5A
- #define BT_EVENT_MODULE_CFG_REQ         0x5B
- #define BT_EVENT_POWER_STATE            0x20
+/* Vendor specific Bluetooth events */
+#define BT_EVENT_AUTO_SLEEP_MODE        0x23
+#define BT_EVENT_HOST_SLEEP_CONFIG      0x59
+#define BT_EVENT_HOST_SLEEP_ENABLE      0x5A
+#define BT_EVENT_MODULE_CFG_REQ         0x5B
+#define BT_EVENT_POWER_STATE            0x20
 
- /* Bluetooth Power States */
- #define BT_PS_ENABLE                    0x02
- #define BT_PS_DISABLE                   0x03
- #define BT_PS_SLEEP                     0x01
+/* Bluetooth Power States */
+#define BT_PS_ENABLE                    0x02
+#define BT_PS_DISABLE                   0x03
+#define BT_PS_SLEEP                     0x01
 
- /* Host Sleep states */
- #define HS_ACTIVATED                    0x01
- #define HS_DEACTIVATED                  0x00
+/* Host Sleep states */
+#define HS_ACTIVATED                    0x01
+#define HS_DEACTIVATED                  0x00
 
- /* Power Save modes */
- #define PS_SLEEP                        0x01
- #define PS_AWAKE                        0x00
+/* Power Save modes */
+#define PS_SLEEP                        0x01
+#define PS_AWAKE                        0x00
 
- #define BT_CAL_HDR_LEN                  4
- #define BT_CAL_DATA_SIZE                28
+#define BT_CAL_HDR_LEN                  4
+#define BT_CAL_DATA_SIZE                28
 
+#define FW_DUMP_BUF_SIZE (1024*512)
 
- #define FW_DUMP_BUF_SIZE (1024*512)
+#define FW_DUMP_FILE_NAME_SIZE     64
 
- #define FW_DUMP_FILE_NAME_SIZE     64
-
- //#define SAVE_FW_DUMP_IN_KERNEL     1
+/* #define SAVE_FW_DUMP_IN_KERNEL     1 */
 
 /* stpbt device node */
 #define BT_NODE "stpbt"
 #define BT_DRIVER_NAME "BT_chrdev"
 
- struct btmtk_event {
-         u8 ec;          /* event counter */
-         u8 length;
-         u8 data[4];
- } __packed;
+struct btmtk_event {
+	u8 ec;          /* event counter */
+	u8 length;
+	u8 data[4];
+} __packed;
 
- /* Prototype of global function */
+/* Prototype of global function */
 
- struct btmtk_private *btmtk_add_card(void *card);
- int btmtk_remove_card(struct btmtk_private *priv);
+struct btmtk_private *btmtk_add_card(void *card);
+int btmtk_remove_card(struct btmtk_private *priv);
 
- void btmtk_interrupt(struct btmtk_private *priv);
+void btmtk_interrupt(struct btmtk_private *priv);
 
- bool btmtk_check_evtpkt(struct btmtk_private *priv, struct sk_buff *skb);
- int btmtk_process_event(struct btmtk_private *priv, struct sk_buff *skb);
+bool btmtk_check_evtpkt(struct btmtk_private *priv, struct sk_buff *skb);
+int btmtk_process_event(struct btmtk_private *priv, struct sk_buff *skb);
 
- int btmtk_send_module_cfg_cmd(struct btmtk_private *priv, u8 subcmd);
- int btmtk_pscan_window_reporting(struct btmtk_private *priv, u8 subcmd);
- int btmtk_send_hscfg_cmd(struct btmtk_private *priv);
- int btmtk_enable_ps(struct btmtk_private *priv);
- int btmtk_prepare_command(struct btmtk_private *priv);
- int btmtk_enable_hs(struct btmtk_private *priv);
- void btmtk_firmware_dump(struct btmtk_private *priv);
-
+int btmtk_send_module_cfg_cmd(struct btmtk_private *priv, u8 subcmd);
+int btmtk_pscan_window_reporting(struct btmtk_private *priv, u8 subcmd);
+int btmtk_send_hscfg_cmd(struct btmtk_private *priv);
+int btmtk_enable_ps(struct btmtk_private *priv);
+int btmtk_prepare_command(struct btmtk_private *priv);
+int btmtk_enable_hs(struct btmtk_private *priv);
+void btmtk_firmware_dump(struct btmtk_private *priv);
 
 #define META_BUFFER_SIZE (1024*50)
 
-typedef struct _OSAL_UNSLEEPABLE_LOCK_ {
+struct _OSAL_UNSLEEPABLE_LOCK_ {
 	spinlock_t lock;
 	unsigned long flag;
-} OSAL_UNSLEEPABLE_LOCK, *P_OSAL_UNSLEEPABLE_LOCK;
+};
 
-typedef struct {
-	OSAL_UNSLEEPABLE_LOCK spin_lock;
+struct ring_buffer {
+	struct _OSAL_UNSLEEPABLE_LOCK_ spin_lock;
 	u8 buffer[META_BUFFER_SIZE];	/* MTKSTP_BUFFER_SIZE:1024 */
 	u32 read_p;		/* indicate the current read index */
 	u32 write_p;		/* indicate the current write index */
-} ring_buffer_struct;
+};
 
- #ifdef CONFIG_DEBUG_FS
+#ifdef CONFIG_DEBUG_FS
 
 #define FIXED_STPBT_MAJOR_DEV_ID 111
 
@@ -221,24 +221,7 @@
 #define FW_DUMP_FILE_NAME "/tmp/log"
 #define FW_DUMP_END_EVENT "coredump end"
 
-#define BTMTK_LOG_LEVEL_ERROR       1
-#define BTMTK_LOG_LEVEL_WARNING     2
-#define BTMTK_LOG_LEVEL_INFO        3
-#define BTMTK_LOG_LEVEL_DEBUG       4
-
-#define BTMTK_LOG_LEVEL_DEFAULT      BTMTK_LOG_LEVEL_INFO  /* default setting */
-extern u8 btmtk_log_lvl;
-
-#define BTMTK_ERR(fmt, ...)     \
-    do {if (btmtk_log_lvl >= BTMTK_LOG_LEVEL_ERROR) pr_warn("btmtk_err: "fmt"\n", ##__VA_ARGS__); } while (0)
-#define BTMTK_WARN(fmt, ...)    \
-    do {if (btmtk_log_lvl >= BTMTK_LOG_LEVEL_WARNING) pr_warn("btmtk_warn: "fmt"\n", ##__VA_ARGS__); } while (0)
-#define BTMTK_INFO(fmt, ...)    \
-    do {if (btmtk_log_lvl >= BTMTK_LOG_LEVEL_INFO) pr_warn("btmtk_info: "fmt"\n", ##__VA_ARGS__); } while (0)
-#define BTMTK_DBG(fmt, ...)     \
-    do {if (btmtk_log_lvl >= BTMTK_LOG_LEVEL_DEBUG) pr_warn("btmtk_debug: "fmt"\n", ##__VA_ARGS__); } while (0)
-
-
+#endif
 
 #endif
 
diff --git a/btmtk_main.c b/btmtk_main.c
index bf659d8..5a85061 100644
--- a/btmtk_main.c
+++ b/btmtk_main.c
@@ -1,22 +1,21 @@
-/**
+/*
  * Mediatek Bluetooth driver
  *
- * Copyright (C) 2009, Mediatek International Ltd.
+ * Copyright (C) 2017, Mediatek International Ltd.
  *
  * This software file (the "File") is distributed by Mediatek International
  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
  * (the "License").  You may use, redistribute and/or modify this File in
  * accordance with the terms and conditions of the License, a copy of which
  * is available by writing to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
- * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ * On the worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
  *
  *
  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
  * this warranty disclaimer.
- **/
+ */
 #include <linux/version.h>
 #include <linux/module.h>
 #include <linux/of.h>
@@ -26,33 +25,6 @@
 #include "btmtk_drv.h"
 #include "btmtk_sdio.h"
 
-
-
-
-/*
-* extern unsigned char probe_counter;
-* extern unsigned char *txbuf;
-*/
-
-extern u8 probe_ready;
-
-
-/*
-* int fw_dump_buffer_full = 0;
-* int fw_dump_total_read_size = 0;
-* int fw_dump_total_write_size = 0;
-* int fw_dump_buffer_used_size = 0;
-* int fw_dump_task_should_stop = 0;
-* u8 *fw_dump_ptr = NULL;
-* u8 *fw_dump_read_ptr = NULL;
-* u8 *fw_dump_write_ptr = NULL;
-* struct timeval fw_dump_last_write_time;
-* int fw_dump_end_checking_task_should_stop = 0;
-
-* static volatile int is_assert = 0;
-*/
-
-
 /*
  * This function is called by interface specific interrupt handler.
  * It updates Power Save & Host Sleep states, and wakes up the main
@@ -60,113 +32,112 @@
  */
 void btmtk_interrupt(struct btmtk_private *priv)
 {
-    priv->adapter->ps_state = PS_AWAKE;
+	priv->adapter->ps_state = PS_AWAKE;
 
-        priv->adapter->wakeup_tries = 0;
+	priv->adapter->wakeup_tries = 0;
 
-        priv->adapter->int_count++;
+	priv->adapter->int_count++;
 
-        wake_up_interruptible(&priv->main_thread.wait_q);
+	wake_up_interruptible(&priv->main_thread.wait_q);
 }
 EXPORT_SYMBOL_GPL(btmtk_interrupt);
 
 int btmtk_enable_hs(struct btmtk_private *priv)
 {
-        struct btmtk_adapter *adapter = priv->adapter;
-        int ret = 0;
+	struct btmtk_adapter *adapter = priv->adapter;
+	int ret = 0;
 
-        BTMTK_INFO("%s begin\n", __func__);
+	pr_info("%s begin\n", __func__);
 
-        ret = wait_event_interruptible_timeout(adapter->event_hs_wait_q,
-                                               adapter->hs_state,
-                        msecs_to_jiffies(WAIT_UNTIL_HS_STATE_CHANGED));
-        if (ret < 0) {
-                BTMTK_ERR("event_hs_wait_q terminated (%d): %d,%d,%d",
-                       ret, adapter->hs_state, adapter->ps_state,
-                       adapter->wakeup_tries);
+	ret = wait_event_interruptible_timeout(adapter->event_hs_wait_q,
+						adapter->hs_state,
+						msecs_to_jiffies(WAIT_UNTIL_HS_STATE_CHANGED));
+	if (ret < 0) {
+		pr_err("event_hs_wait_q terminated (%d): %d,%d,%d\n",
+			ret, adapter->hs_state, adapter->ps_state,
+			adapter->wakeup_tries);
 
-        } else {
-                BTMTK_DBG("host sleep enabled: %d,%d,%d", adapter->hs_state,
-                       adapter->ps_state, adapter->wakeup_tries);
-                ret = 0;
-        }
+	} else {
+		pr_debug("host sleep enabled: %d,%d,%d\n", adapter->hs_state,
+			adapter->ps_state, adapter->wakeup_tries);
+		ret = 0;
+	}
 
-        return ret;
+	return ret;
 }
 EXPORT_SYMBOL_GPL(btmtk_enable_hs);
 
 static int btmtk_tx_pkt(struct btmtk_private *priv, struct sk_buff *skb)
 {
-        int ret = 0;
-        u32 sdio_header_len = 0;
+	int ret = 0;
+	u32 sdio_header_len = 0;
 
-        BTMTK_DBG("%s skb->len %d", __func__, skb->len);
+	pr_debug("%s skb->len %d\n", __func__, skb->len);
 
-        if (!skb) {
-                BTMTK_WARN("%s skb is NULL return -EINVAL", __func__);
-                return -EINVAL;
-        }
+	if (!skb) {
+		pr_warn("%s skb is NULL return -EINVAL\n", __func__);
+		return -EINVAL;
+	}
 
-        if (!skb->data) {
-                BTMTK_WARN("%s skb->data is NULL return -EINVAL", __func__);
-                return -EINVAL;
-        }
+	if (!skb->data) {
+		pr_warn("%s skb->data is NULL return -EINVAL\n", __func__);
+		return -EINVAL;
+	}
 
-        if (!skb->len || ((skb->len + BTM_HEADER_LEN) > BTM_UPLD_SIZE)) {
-                BTMTK_WARN("Tx Error: Bad skb length %d : %d",
-                                                skb->len, BTM_UPLD_SIZE);
-                return -EINVAL;
-        }
+	if (!skb->len || ((skb->len + BTM_HEADER_LEN) > BTM_UPLD_SIZE)) {
+		pr_warn("Tx Error: Bad skb length %d : %d\n",
+						skb->len, BTM_UPLD_SIZE);
+		return -EINVAL;
+	}
 
+	sdio_header_len = skb->len + BTM_HEADER_LEN;
+	memset(txbuf, 0, MTK_TXDATA_SIZE);
+	txbuf[0] = (sdio_header_len & 0x0000ff);
+	txbuf[1] = (sdio_header_len & 0x00ff00) >> 8;
+	txbuf[2] = 0;
+	txbuf[3] = 0;
+	txbuf[4] = bt_cb(skb)->pkt_type;
+	memcpy(&txbuf[5], &skb->data[0], skb->len);
+	if (priv->hw_host_to_card)
+		ret = priv->hw_host_to_card(priv, txbuf, sdio_header_len);
 
-        sdio_header_len = skb->len + BTM_HEADER_LEN;
-        memset(txbuf, 0, MTK_TXDATA_SIZE);
-        txbuf[0] = (sdio_header_len & 0x0000ff);
-        txbuf[1] = (sdio_header_len & 0x00ff00) >> 8;
-        txbuf[2] = 0;
-        txbuf[3] = 0;
-        txbuf[4] = bt_cb(skb)->pkt_type;
-        memcpy(&txbuf[5], &skb->data[0], skb->len);
-        if (priv->hw_host_to_card)
-                ret = priv->hw_host_to_card(priv, txbuf, sdio_header_len);
-
-        BTMTK_DBG("%s end", __func__);
-        return ret;
+	pr_debug("%s end\n", __func__);
+	return ret;
 }
 
 static void btmtk_init_adapter(struct btmtk_private *priv)
 {
-        int buf_size;
+	int buf_size;
 
-        skb_queue_head_init(&priv->adapter->tx_queue);
-        skb_queue_head_init(&priv->adapter->fops_queue);
-        priv->adapter->ps_state = PS_AWAKE;
+	skb_queue_head_init(&priv->adapter->tx_queue);
+	skb_queue_head_init(&priv->adapter->fops_queue);
+	priv->adapter->ps_state = PS_AWAKE;
 
-        buf_size = ALIGN_SZ(SDIO_BLOCK_SIZE, BTSDIO_DMA_ALIGN);
-        priv->adapter->hw_regs_buf = kzalloc(buf_size, GFP_KERNEL);
-        if (!priv->adapter->hw_regs_buf) {
-                priv->adapter->hw_regs = NULL;
-                BTMTK_ERR("Unable to allocate buffer for hw_regs.");
-        } else {
-                priv->adapter->hw_regs =
-                        (u8 *)ALIGN_ADDR(priv->adapter->hw_regs_buf,
-                                         BTSDIO_DMA_ALIGN);
-                BTMTK_DBG("hw_regs_buf=%p hw_regs=%p",
-                       priv->adapter->hw_regs_buf, priv->adapter->hw_regs);
-        }
+	buf_size = ALIGN_SZ(SDIO_BLOCK_SIZE, BTSDIO_DMA_ALIGN);
+	priv->adapter->hw_regs_buf = kzalloc(buf_size, GFP_KERNEL);
+	if (!priv->adapter->hw_regs_buf) {
+		priv->adapter->hw_regs = NULL;
+		pr_err("Unable to allocate buffer for hw_regs.\n");
+	} else {
+		priv->adapter->hw_regs =
+			(u8 *)ALIGN_ADDR(priv->adapter->hw_regs_buf,
+					BTSDIO_DMA_ALIGN);
+		pr_debug("hw_regs_buf=%p hw_regs=%p\n",
+			priv->adapter->hw_regs_buf, priv->adapter->hw_regs);
+	}
 
-        init_waitqueue_head(&priv->adapter->cmd_wait_q);
-        init_waitqueue_head(&priv->adapter->event_hs_wait_q);
+	init_waitqueue_head(&priv->adapter->cmd_wait_q);
+	init_waitqueue_head(&priv->adapter->event_hs_wait_q);
 }
 
 static void btmtk_free_adapter(struct btmtk_private *priv)
 {
-        skb_queue_purge(&priv->adapter->tx_queue);
+	skb_queue_purge(&priv->adapter->tx_queue);
 
-        kfree(priv->adapter->hw_regs_buf);
-        kfree(priv->adapter);
+	kfree(priv->adapter->hw_regs_buf);
+	kfree(priv->adapter);
 
-        priv->adapter = NULL;
+	priv->adapter = NULL;
 }
 
 /*
@@ -176,205 +147,196 @@
 
 static int btmtk_service_main_thread(void *data)
 {
-        struct btmtk_thread *thread = data;
-        struct btmtk_private *priv = thread->priv;
-        struct btmtk_adapter *adapter = NULL;
-        wait_queue_t wait;
-        struct sk_buff *skb;
-        int ret = 0;
-        int i = 0;
-        ulong flags;
+	struct btmtk_thread *thread = data;
+	struct btmtk_private *priv = thread->priv;
+	struct btmtk_adapter *adapter = NULL;
+	wait_queue_t wait;
+	struct sk_buff *skb;
+	int ret = 0;
+	int i = 0;
+	ulong flags;
 
-        BTMTK_WARN("main_thread begin 50");
-        //mdelay(50);
-        
-        for(i=0;i<=1000;i++){
-            if (kthread_should_stop()) {
-                        BTMTK_WARN("main_thread: break from main thread for probe_ready");
-                        break;
-            }
+	pr_warn("main_thread begin 50\n");
+	/* mdelay(50); */
 
-            if (probe_ready) {
-                break;
-            } else {
-                BTMTK_WARN("%s probe_ready %d delay 10ms",__func__,probe_ready);
-                mdelay(10);
-            }
+	for (i = 0; i <= 1000; i++) {
+		if (kthread_should_stop()) {
+			pr_warn("main_thread: break from main thread for probe_ready\n");
+			break;
+		}
 
-            if(i==1000){
-                BTMTK_WARN("%s probe_ready %d i = %d try too many times return",__func__,probe_ready,i);
-                return 0;
-            }
-        }
+		if (probe_ready)
+			break;
 
-        if(priv->adapter)
-            adapter = priv->adapter;
-        else {
-            BTMTK_ERR("%s priv->adapter is NULL return",__func__);
-            return 0;
-        }
+		pr_warn("%s probe_ready %d delay 10ms~15ms\n",
+			__func__, probe_ready);
+		usleep_range(10*1000, 15*1000);
 
-        init_waitqueue_entry(&wait, current);
-        for (;;) {
-                add_wait_queue(&thread->wait_q, &wait);
-                set_current_state(TASK_INTERRUPTIBLE);
-                if (kthread_should_stop()) {
-                        BTMTK_WARN("main_thread: break from main thread");
-                        break;
-                }
+		if (i == 1000) {
+			pr_warn("%s probe_ready %d i = %d try too many times return\n",
+				__func__, probe_ready, i);
+			return 0;
+		}
+	}
 
-                if (adapter->wakeup_tries ||
-                                ((!adapter->int_count) &&
-                                (!priv->btmtk_dev.tx_dnld_rdy ||
-                                skb_queue_empty(&adapter->tx_queue)))) {
-                        BTMTK_DBG("main_thread is sleeping...");
-                        schedule();
-                }
+	if (priv->adapter)
+		adapter = priv->adapter;
+	else {
+		pr_err("%s priv->adapter is NULL return\n", __func__);
+		return 0;
+	}
 
-                set_current_state(TASK_RUNNING);
+	init_waitqueue_entry(&wait, current);
+	for (;;) {
+		add_wait_queue(&thread->wait_q, &wait);
+		set_current_state(TASK_INTERRUPTIBLE);
+		if (kthread_should_stop()) {
+			pr_warn("main_thread: break from main thread\n");
+			break;
+		}
 
-                remove_wait_queue(&thread->wait_q, &wait);
+		if (adapter->wakeup_tries ||
+				((!adapter->int_count) &&
+				(!priv->btmtk_dev.tx_dnld_rdy ||
+				skb_queue_empty(&adapter->tx_queue)))) {
+			pr_debug("main_thread is sleeping...\n");
+			schedule();
+		}
 
-                if (kthread_should_stop()) {
-                        BTMTK_WARN("main_thread: break after wake up");
-                        break;
-                }
+		set_current_state(TASK_RUNNING);
 
-                ret = priv->hw_set_own_back(DRIVER_OWN);
-                if (ret) {
-                    BTMTK_ERR("%s set driver own return fail", __func__);
-                    break;
-                }
+		remove_wait_queue(&thread->wait_q, &wait);
 
-                spin_lock_irqsave(&priv->driver_lock, flags);
-                if (adapter->int_count) {
-                        BTMTK_DBG("%s go int\n", __func__);
-                        adapter->int_count = 0;
-                        spin_unlock_irqrestore(&priv->driver_lock, flags);
-                        priv->hw_process_int_status(priv);
-                } else if (adapter->ps_state == PS_SLEEP &&
-                                        !skb_queue_empty(&adapter->tx_queue)) {
-                        BTMTK_DBG("%s go vender, todo\n", __func__);
-                        spin_unlock_irqrestore(&priv->driver_lock, flags);
-                        adapter->wakeup_tries++;
-                        continue;
-                } else {
-                        BTMTK_DBG("%s go tx\n", __func__);
-                        spin_unlock_irqrestore(&priv->driver_lock, flags);
-                }
+		if (kthread_should_stop()) {
+			pr_warn("main_thread: break after wake up\n");
+			break;
+		}
 
-                if (adapter->ps_state == PS_SLEEP) {
-                    BTMTK_DBG("%s ps_state == PS_SLEEP, continue\n", __func__);
-                    continue;
-                }
+		ret = priv->hw_set_own_back(DRIVER_OWN);
+		if (ret) {
+			pr_err("%s set driver own return fail\n", __func__);
+			break;
+		}
 
-                if (!priv->btmtk_dev.tx_dnld_rdy) {
-                    BTMTK_DBG("%s tx_dnld_rdy == 0, continue\n", __func__);
-                    continue;
-                }
+		spin_lock_irqsave(&priv->driver_lock, flags);
+		if (adapter->int_count) {
+			pr_debug("%s go int\n", __func__);
+			adapter->int_count = 0;
+			spin_unlock_irqrestore(&priv->driver_lock, flags);
+			priv->hw_process_int_status(priv);
+		} else if (adapter->ps_state == PS_SLEEP &&
+					!skb_queue_empty(&adapter->tx_queue)) {
+			pr_debug("%s go vender, todo\n", __func__);
+			spin_unlock_irqrestore(&priv->driver_lock, flags);
+			adapter->wakeup_tries++;
+			continue;
+		} else {
+			pr_debug("%s go tx\n", __func__);
+			spin_unlock_irqrestore(&priv->driver_lock, flags);
+		}
 
-                spin_lock_irqsave(&priv->driver_lock, flags);
-                skb = skb_dequeue(&adapter->tx_queue);
-                spin_unlock_irqrestore(&priv->driver_lock, flags);
+		if (adapter->ps_state == PS_SLEEP) {
+			pr_debug("%s ps_state == PS_SLEEP, continue\n",
+				__func__);
+			continue;
+		}
 
-                if (skb) {
-                        if (skb->len < 16)
-                            btmtk_print_buffer_conent(skb->data, skb->len);
-                        else
-                            btmtk_print_buffer_conent(skb->data, 16);
+		if (!priv->btmtk_dev.tx_dnld_rdy) {
+			pr_debug("%s tx_dnld_rdy == 0, continue\n", __func__);
+			continue;
+		}
 
-                        btmtk_tx_pkt(priv, skb);
+		spin_lock_irqsave(&priv->driver_lock, flags);
+		skb = skb_dequeue(&adapter->tx_queue);
+		spin_unlock_irqrestore(&priv->driver_lock, flags);
 
-                        if (skb) {
-                            BTMTK_DBG("%s after btmtk_tx_pkt kfree_skb", __func__);
-                            kfree_skb(skb);
-                        }
-                }
+		if (skb) {
+			if (skb->len < 16)
+				btmtk_print_buffer_conent(skb->data, skb->len);
+			else
+				btmtk_print_buffer_conent(skb->data, 16);
+
+			btmtk_tx_pkt(priv, skb);
+
+			if (skb) {
+				pr_debug("%s after btmtk_tx_pkt kfree_skb\n",
+					__func__);
+				kfree_skb(skb);
+			}
+		}
 
 
-                if (skb_queue_empty(&adapter->tx_queue)) {
-                    ret = priv->hw_set_own_back(FW_OWN);
-                    if (ret) {
-                        BTMTK_ERR("%s set fw own return fail", __func__);
-                        break;
-                    }
-                }
-
-
-        }
-        BTMTK_INFO("%s  end\n", __func__);
-        return 0;
+		if (skb_queue_empty(&adapter->tx_queue)) {
+			ret = priv->hw_set_own_back(FW_OWN);
+			if (ret) {
+				pr_err("%s set fw own return fail\n",
+					__func__);
+				break;
+			}
+		}
+	}
+	pr_info("%s  end\n", __func__);
+	return 0;
 }
 
-
-
 struct btmtk_private *btmtk_add_card(void *card)
 {
-        struct btmtk_private *priv;
+	struct btmtk_private *priv;
 
-        BTMTK_INFO("%s begin", __func__);
-        priv = kzalloc(sizeof(*priv), GFP_KERNEL);
-        if (!priv) {
-                BTMTK_ERR("Can not allocate priv");
-                goto err_priv;
-        }
+	pr_info("%s begin\n", __func__);
+	priv = kzalloc(sizeof(*priv), GFP_KERNEL);
+	if (!priv)
+		goto err_priv;
 
-        priv->adapter = kzalloc(sizeof(*priv->adapter), GFP_KERNEL);
-        if (!priv->adapter) {
-                BTMTK_ERR("Allocate buffer for btmtk_adapter failed!");
-                goto err_adapter;
-        }
+	priv->adapter = kzalloc(sizeof(*priv->adapter), GFP_KERNEL);
+	if (!priv->adapter)
+		goto err_adapter;
 
-        btmtk_init_adapter(priv);
+	btmtk_init_adapter(priv);
 
-        BTMTK_INFO("Starting kthread...");
-        priv->main_thread.priv = priv;
-        spin_lock_init(&priv->driver_lock);
+	pr_info("Starting kthread...\n");
+	priv->main_thread.priv = priv;
+	spin_lock_init(&priv->driver_lock);
 
-        init_waitqueue_head(&priv->main_thread.wait_q);
-        priv->main_thread.task = kthread_run(btmtk_service_main_thread,
-                                &priv->main_thread, "btmtk_main_service");
-        if (IS_ERR(priv->main_thread.task))
-                goto err_thread;
+	init_waitqueue_head(&priv->main_thread.wait_q);
+	priv->main_thread.task = kthread_run(btmtk_service_main_thread,
+				&priv->main_thread, "btmtk_main_service");
+	if (IS_ERR(priv->main_thread.task))
+		goto err_thread;
 
-        priv->btmtk_dev.card = card;
-        priv->btmtk_dev.tx_dnld_rdy = true;
+	priv->btmtk_dev.card = card;
+	priv->btmtk_dev.tx_dnld_rdy = true;
 
-        return priv;
+	return priv;
 
 err_thread:
-        btmtk_free_adapter(priv);
+	btmtk_free_adapter(priv);
 
 err_adapter:
-        kfree(priv);
+	kfree(priv);
 
 err_priv:
-        return NULL;
+	return NULL;
 }
 EXPORT_SYMBOL_GPL(btmtk_add_card);
 
 int btmtk_remove_card(struct btmtk_private *priv)
 {
+	pr_info("%s begin\n", __func__);
 
-
-        BTMTK_INFO("%s begin\n", __func__);
-
-
-        BTMTK_INFO("%s stop main_thread\n", __func__);
-
-        if(!PTR_ERR(priv->main_thread.task))
-            kthread_stop(priv->main_thread.task);
-
-        BTMTK_INFO("%s stop main_thread done\n", __func__);
+	pr_info("%s stop main_thread\n", __func__);
+	if (!PTR_ERR(priv->main_thread.task))
+		kthread_stop(priv->main_thread.task);
+	pr_info("%s stop main_thread done\n", __func__);
 #ifdef CONFIG_DEBUG_FS
-        /*btmtk_debugfs_remove(hdev);*/
+	/*btmtk_debugfs_remove(hdev);*/
 #endif
 
-        btmtk_free_adapter(priv);
+	btmtk_free_adapter(priv);
 
-        kfree(priv);
+	kfree(priv);
 
-        return 0;
+	return 0;
 }
 EXPORT_SYMBOL_GPL(btmtk_remove_card);
 
diff --git a/btmtk_sdio.c b/btmtk_sdio.c
index ab81b8d..94151ae 100644
--- a/btmtk_sdio.c
+++ b/btmtk_sdio.c
@@ -1,21 +1,20 @@
-/**
+/*
  * Mediatek BT-over-SDIO driver: SDIO interface related functions.
- * Copyright (C) 2009, Mediatek International Ltd.
+ * Copyright (C) 2017, Mediatek International Ltd.
  *
  * This software file (the "File") is distributed by Mediatek International
  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
  * (the "License").  You may use, redistribute and/or modify this File in
  * accordance with the terms and conditions of the License, a copy of which
  * is available by writing to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
- * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ * On the worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
  *
  *
  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
  * this warranty disclaimer.
- **/
+ */
 #include <linux/version.h>
 #include <linux/firmware.h>
 #include <linux/slab.h>
@@ -40,7 +39,6 @@
 #include "btmtk_drv.h"
 #include "btmtk_sdio.h"
 
-u8 btmtk_log_lvl = BTMTK_LOG_LEVEL_DEFAULT;
 static dev_t g_devIDfwlog;
 static struct class *pBTClass;
 static struct device *pBTDev;
@@ -82,7 +80,7 @@
 #define STR_COREDUMP_END "coredump end\n\n"
 
 
-static ring_buffer_struct metabuffer;
+static struct ring_buffer metabuffer;
 u8 probe_ready;
 
 static char fw_dump_file_name[FW_DUMP_FILE_NAME_SIZE] = {0};
@@ -100,122 +98,122 @@
 int fw_is_coredump_end_packet;
 
 #if SAVE_FW_DUMP_IN_KERNEL
-    static struct file *fw_dump_file;
+	static struct file *fw_dump_file;
 #else
-    static int    fw_dump_file;
+	static int	fw_dump_file;
 #endif
 
 static const struct btmtk_sdio_card_reg btmtk_reg_6630 = {
-        .cfg = 0x03,
-        .host_int_mask = 0x04,
-        .host_intstatus = 0x05,
-        .card_status = 0x20,
-        .sq_read_base_addr_a0 = 0x10,
-        .sq_read_base_addr_a1 = 0x11,
-        .card_fw_status0 = 0x40,
-        .card_fw_status1 = 0x41,
-        .card_rx_len = 0x42,
-        .card_rx_unit = 0x43,
-        .io_port_0 = 0x00,
-        .io_port_1 = 0x01,
-        .io_port_2 = 0x02,
-        .int_read_to_clear = false,
-    .func_num = 2,
+	.cfg = 0x03,
+	.host_int_mask = 0x04,
+	.host_intstatus = 0x05,
+	.card_status = 0x20,
+	.sq_read_base_addr_a0 = 0x10,
+	.sq_read_base_addr_a1 = 0x11,
+	.card_fw_status0 = 0x40,
+	.card_fw_status1 = 0x41,
+	.card_rx_len = 0x42,
+	.card_rx_unit = 0x43,
+	.io_port_0 = 0x00,
+	.io_port_1 = 0x01,
+	.io_port_2 = 0x02,
+	.int_read_to_clear = false,
+	.func_num = 2,
 };
 
 static const struct btmtk_sdio_card_reg btmtk_reg_6632 = {
-        .cfg = 0x03,
-        .host_int_mask = 0x04,
-        .host_intstatus = 0x05,
-        .card_status = 0x20,
-        .sq_read_base_addr_a0 = 0x10,
-        .sq_read_base_addr_a1 = 0x11,
-        .card_fw_status0 = 0x40,
-        .card_fw_status1 = 0x41,
-        .card_rx_len = 0x42,
-        .card_rx_unit = 0x43,
-        .io_port_0 = 0x00,
-        .io_port_1 = 0x01,
-        .io_port_2 = 0x02,
-        .int_read_to_clear = false,
-    .func_num = 2,
+	.cfg = 0x03,
+	.host_int_mask = 0x04,
+	.host_intstatus = 0x05,
+	.card_status = 0x20,
+	.sq_read_base_addr_a0 = 0x10,
+	.sq_read_base_addr_a1 = 0x11,
+	.card_fw_status0 = 0x40,
+	.card_fw_status1 = 0x41,
+	.card_rx_len = 0x42,
+	.card_rx_unit = 0x43,
+	.io_port_0 = 0x00,
+	.io_port_1 = 0x01,
+	.io_port_2 = 0x02,
+	.int_read_to_clear = false,
+	.func_num = 2,
 };
 
 static const struct btmtk_sdio_card_reg btmtk_reg_7668 = {
-        .cfg = 0x03,
-        .host_int_mask = 0x04,
-        .host_intstatus = 0x05,
-        .card_status = 0x20,
-        .sq_read_base_addr_a0 = 0x10,
-        .sq_read_base_addr_a1 = 0x11,
-        .card_fw_status0 = 0x40,
-        .card_fw_status1 = 0x41,
-        .card_rx_len = 0x42,
-        .card_rx_unit = 0x43,
-        .io_port_0 = 0x00,
-        .io_port_1 = 0x01,
-        .io_port_2 = 0x02,
-        .int_read_to_clear = false,
-    .func_num = 2,
+	.cfg = 0x03,
+	.host_int_mask = 0x04,
+	.host_intstatus = 0x05,
+	.card_status = 0x20,
+	.sq_read_base_addr_a0 = 0x10,
+	.sq_read_base_addr_a1 = 0x11,
+	.card_fw_status0 = 0x40,
+	.card_fw_status1 = 0x41,
+	.card_rx_len = 0x42,
+	.card_rx_unit = 0x43,
+	.io_port_0 = 0x00,
+	.io_port_1 = 0x01,
+	.io_port_2 = 0x02,
+	.int_read_to_clear = false,
+	.func_num = 2,
 };
 
 static const struct btmtk_sdio_card_reg btmtk_reg_7666 = {
-        .cfg = 0x03,
-        .host_int_mask = 0x04,
-        .host_intstatus = 0x05,
-        .card_status = 0x20,
-        .sq_read_base_addr_a0 = 0x10,
-        .sq_read_base_addr_a1 = 0x11,
-        .card_fw_status0 = 0x40,
-        .card_fw_status1 = 0x41,
-        .card_rx_len = 0x42,
-        .card_rx_unit = 0x43,
-        .io_port_0 = 0x00,
-        .io_port_1 = 0x01,
-        .io_port_2 = 0x02,
-        .int_read_to_clear = false,
-    .func_num = 2,
+	.cfg = 0x03,
+	.host_int_mask = 0x04,
+	.host_intstatus = 0x05,
+	.card_status = 0x20,
+	.sq_read_base_addr_a0 = 0x10,
+	.sq_read_base_addr_a1 = 0x11,
+	.card_fw_status0 = 0x40,
+	.card_fw_status1 = 0x41,
+	.card_rx_len = 0x42,
+	.card_rx_unit = 0x43,
+	.io_port_0 = 0x00,
+	.io_port_1 = 0x01,
+	.io_port_2 = 0x02,
+	.int_read_to_clear = false,
+	.func_num = 2,
 };
 
 static const struct btmtk_sdio_device btmtk_sdio_6630 = {
-        .helper         = "mtmk/sd8688_helper.bin",
-        .firmware       = "mt6632_patch_e1_hdr.bin",
-        .reg            = &btmtk_reg_6630,
-        .support_pscan_win_report = false,
-        .sd_blksz_fw_dl = 64,
-        .supports_fw_dump = false,
+	.helper		= "mtmk/sd8688_helper.bin",
+	.firmware	= "mt6632_patch_e1_hdr.bin",
+	.reg		= &btmtk_reg_6630,
+	.support_pscan_win_report = false,
+	.sd_blksz_fw_dl = 64,
+	.supports_fw_dump = false,
 };
 
 static const struct btmtk_sdio_device btmtk_sdio_6632 = {
-        .helper         = "mtmk/sd8688_helper.bin",
-        .firmware       = "mt6632_patch_e1_hdr.bin",
-        .reg            = &btmtk_reg_6632,
-        .support_pscan_win_report = false,
-        .sd_blksz_fw_dl = 64,
-        .supports_fw_dump = false,
+	.helper     = "mtmk/sd8688_helper.bin",
+	.firmware   = "mt6632_patch_e1_hdr.bin",
+	.reg        = &btmtk_reg_6632,
+	.support_pscan_win_report = false,
+	.sd_blksz_fw_dl = 64,
+	.supports_fw_dump = false,
 };
 
 static const struct btmtk_sdio_device btmtk_sdio_7668 = {
-        .helper         = "mtmk/sd8688_helper.bin",
+	.helper		= "mtmk/sd8688_helper.bin",
 #if CFG_THREE_IN_ONE_FIRMWARE
-        .firmware       = "MT7668_FW",
+	.firmware	= "MT7668_FW",
 #else
-        .firmware        = "mt7668_patch_e1_hdr.bin",
-        .firmware1       = "mt7668_patch_e2_hdr.bin",
+	.firmware	= "mt7668_patch_e1_hdr.bin",
+	.firmware1	= "mt7668_patch_e2_hdr.bin",
 #endif
-        .reg            = &btmtk_reg_7668,
-        .support_pscan_win_report = false,
-        .sd_blksz_fw_dl = 64,
-        .supports_fw_dump = false,
+	.reg		= &btmtk_reg_7668,
+	.support_pscan_win_report = false,
+	.sd_blksz_fw_dl = 64,
+	.supports_fw_dump = false,
 };
 
 static const struct btmtk_sdio_device btmtk_sdio_7666 = {
-        .helper         = "mtmk/sd8688_helper.bin",
-        .firmware       = "mt7668_patch_e1_hdr.bin",
-        .reg            = &btmtk_reg_7666,
-        .support_pscan_win_report = false,
-        .sd_blksz_fw_dl = 64,
-        .supports_fw_dump = false,
+	.helper		= "mtmk/sd8688_helper.bin",
+	.firmware	= "mt7668_patch_e1_hdr.bin",
+	.reg		= &btmtk_reg_7666,
+	.support_pscan_win_report = false,
+	.sd_blksz_fw_dl = 64,
+	.supports_fw_dump = false,
 };
 
 
@@ -230,478 +228,507 @@
 #define SDIO_VENDOR_ID_MEDIATEK 0x037A
 
 static const struct sdio_device_id btmtk_sdio_ids[] = {
-        /* Mediatek SD8688 Bluetooth device */
-        { SDIO_DEVICE(SDIO_VENDOR_ID_MEDIATEK, 0x6630),
-                        .driver_data = (unsigned long) &btmtk_sdio_6630 },
+	/* Mediatek SD8688 Bluetooth device */
+	{ SDIO_DEVICE(SDIO_VENDOR_ID_MEDIATEK, 0x6630),
+			.driver_data = (unsigned long) &btmtk_sdio_6630 },
 
-    { SDIO_DEVICE(SDIO_VENDOR_ID_MEDIATEK, 0x6632),
-                        .driver_data = (unsigned long) &btmtk_sdio_6632 },
+	{ SDIO_DEVICE(SDIO_VENDOR_ID_MEDIATEK, 0x6632),
+			.driver_data = (unsigned long) &btmtk_sdio_6632 },
 
-    { SDIO_DEVICE(SDIO_VENDOR_ID_MEDIATEK, 0x7668),
-                        .driver_data = (unsigned long) &btmtk_sdio_7668 },
+	{ SDIO_DEVICE(SDIO_VENDOR_ID_MEDIATEK, 0x7668),
+			.driver_data = (unsigned long) &btmtk_sdio_7668 },
 
-    { SDIO_DEVICE(SDIO_VENDOR_ID_MEDIATEK, 0x7666),
-                        .driver_data = (unsigned long) &btmtk_sdio_7666 },
+	{ SDIO_DEVICE(SDIO_VENDOR_ID_MEDIATEK, 0x7666),
+			.driver_data = (unsigned long) &btmtk_sdio_7666 },
 
-        { }     /* Terminating entry */
+	{ }	/* Terminating entry */
 };
 
 MODULE_DEVICE_TABLE(sdio, btmtk_sdio_ids);
 
 
-u32 lock_unsleepable_lock(P_OSAL_UNSLEEPABLE_LOCK pUSL)
+u32 lock_unsleepable_lock(struct _OSAL_UNSLEEPABLE_LOCK_ *pUSL)
 {
-    spin_lock_irqsave(&(pUSL->lock), pUSL->flag);
-    return 0;
+	spin_lock_irqsave(&(pUSL->lock), pUSL->flag);
+	return 0;
 }
 
-u32 unlock_unsleepable_lock(P_OSAL_UNSLEEPABLE_LOCK pUSL)
+u32 unlock_unsleepable_lock(struct _OSAL_UNSLEEPABLE_LOCK_ *pUSL)
 {
-    spin_unlock_irqrestore(&(pUSL->lock), pUSL->flag);
-    return 0;
+	spin_unlock_irqrestore(&(pUSL->lock), pUSL->flag);
+	return 0;
 }
 
 static int btmtk_sdio_readb(u32 offset, u32 *val)
 {
-    u32 ret = 0;
+	u32 ret = 0;
 
-    if (g_card->func == NULL) {
-        BTMTK_ERR("%s g_card->func is NULL", __func__);
-        return -EIO;
-    }
-    sdio_claim_host(g_card->func);
-    *val = sdio_readb(g_card->func, offset, &ret);
-    sdio_release_host(g_card->func);
-    return ret;
+	if (g_card->func == NULL) {
+		pr_err("%s g_card->func is NULL\n", __func__);
+		return -EIO;
+	}
+	sdio_claim_host(g_card->func);
+	*val = sdio_readb(g_card->func, offset, &ret);
+	sdio_release_host(g_card->func);
+	return ret;
 }
 
 static int btmtk_sdio_writel(u32 offset, u32 val)
 {
-    u32 ret = 0;
+	u32 ret = 0;
 
-    if (g_card->func == NULL) {
-        BTMTK_ERR("%s g_card->func is NULL", __func__);
-        return -EIO;
-    }
-    sdio_claim_host(g_card->func);
-    sdio_writel(g_card->func, val, offset, &ret);
-    sdio_release_host(g_card->func);
-    return ret;
+	if (g_card->func == NULL) {
+		pr_err("%s g_card->func is NULL\n", __func__);
+		return -EIO;
+	}
+	sdio_claim_host(g_card->func);
+	sdio_writel(g_card->func, val, offset, &ret);
+	sdio_release_host(g_card->func);
+	return ret;
 }
 
 static int btmtk_sdio_readl(u32 offset,  u32 *val)
 {
-    u32 ret = 0;
+	u32 ret = 0;
 
-    if (g_card->func == NULL) {
-        BTMTK_ERR("g_card->func is NULL");
-        return -EIO;
-    }
-    sdio_claim_host(g_card->func);
-    *val = sdio_readl(g_card->func, offset, &ret);
-    sdio_release_host(g_card->func);
-    return ret;
+	if (g_card->func == NULL) {
+		pr_err("g_card->func is NULL\n");
+		return -EIO;
+	}
+	sdio_claim_host(g_card->func);
+	*val = sdio_readl(g_card->func, offset, &ret);
+	sdio_release_host(g_card->func);
+	return ret;
 }
+
 struct sk_buff *btmtk_create_send_data(struct sk_buff *skb)
 {
-    struct sk_buff *queue_skb = NULL;
-    u32 sdio_header_len = skb->len + BTM_HEADER_LEN;
+	struct sk_buff *queue_skb = NULL;
+	u32 sdio_header_len = skb->len + BTM_HEADER_LEN;
 
-    if (skb_headroom(skb) < (BTM_HEADER_LEN)) {
-        queue_skb = bt_skb_alloc(sdio_header_len, GFP_ATOMIC);
-        if (queue_skb == NULL) {
-                BTMTK_ERR("bt_skb_alloc fail return");
-                return 0;
-        }
+	if (skb_headroom(skb) < (BTM_HEADER_LEN)) {
+		queue_skb = bt_skb_alloc(sdio_header_len, GFP_ATOMIC);
+		if (queue_skb == NULL) {
+			pr_err("bt_skb_alloc fail return\n");
+			return 0;
+		}
 
-        queue_skb->data[0] = (sdio_header_len & 0x0000ff);
-        queue_skb->data[1] = (sdio_header_len & 0x00ff00) >> 8;
-        queue_skb->data[2] = 0;
-        queue_skb->data[3] = 0;
-        queue_skb->data[4] = bt_cb(skb)->pkt_type;
-        queue_skb->len = sdio_header_len;
-        memcpy(&queue_skb->data[5], &skb->data[0], skb->len);
-        kfree_skb(skb);
-    } else {
-        queue_skb = skb;
-        skb_push(queue_skb, BTM_HEADER_LEN);
-        queue_skb->data[0] = (sdio_header_len & 0x0000ff);
-        queue_skb->data[1] = (sdio_header_len & 0x00ff00) >> 8;
-        queue_skb->data[2] = 0;
-        queue_skb->data[3] = 0;
-        queue_skb->data[4] = bt_cb(skb)->pkt_type;
-    }
+		queue_skb->data[0] = (sdio_header_len & 0x0000ff);
+		queue_skb->data[1] = (sdio_header_len & 0x00ff00) >> 8;
+		queue_skb->data[2] = 0;
+		queue_skb->data[3] = 0;
+		queue_skb->data[4] = bt_cb(skb)->pkt_type;
+		queue_skb->len = sdio_header_len;
+		memcpy(&queue_skb->data[5], &skb->data[0], skb->len);
+		kfree_skb(skb);
+	} else {
+		queue_skb = skb;
+		skb_push(queue_skb, BTM_HEADER_LEN);
+		queue_skb->data[0] = (sdio_header_len & 0x0000ff);
+		queue_skb->data[1] = (sdio_header_len & 0x00ff00) >> 8;
+		queue_skb->data[2] = 0;
+		queue_skb->data[3] = 0;
+		queue_skb->data[4] = bt_cb(skb)->pkt_type;
+	}
 
-    BTMTK_INFO("%s end", __func__);
-    return queue_skb;
+	pr_info("%s end\n", __func__);
+	return queue_skb;
 }
+
 static int btmtk_sdio_set_own_back(int owntype)
 {
-    /*Set driver own*/
-    int ret = 0;
-    u32 u32LoopCount = 0;
-    u32 u32ReadCRValue = 0;
-    u32 ownValue = 0;
-    u32 set_checkretry = 30;
+	/*Set driver own*/
+	int ret = 0;
+	u32 u32LoopCount = 0;
+	u32 u32ReadCRValue = 0;
+	u32 ownValue = 0;
+	u32 set_checkretry = 30;
 
-    BTMTK_DBG("%s owntype %d", __func__, owntype);
+	pr_debug("%s owntype %d\n", __func__, owntype);
 
-    if(user_rmmod)
-        set_checkretry = 1;
+	if (user_rmmod)
+		set_checkretry = 1;
 
-    ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
+	ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
 
-    BTMTK_DBG("%s btmtk_sdio_readl  CHLPCR done", __func__);
-    if (owntype == DRIVER_OWN) {
-        if ((u32ReadCRValue&0x100) == 0x100) {
-            BTMTK_DBG("%s already driver own 0x%0x, return\n", __func__, u32ReadCRValue);
-            return ret;
-        }
-
-    } else if (owntype == FW_OWN) {
-        if ((u32ReadCRValue&0x100) == 0) {
-            BTMTK_DBG("%s already FW own 0x%0x, return\n", __func__, u32ReadCRValue);
-            return ret;
-        }
-
-    }
-
+	pr_debug("%s btmtk_sdio_readl  CHLPCR done\n", __func__);
+	if (owntype == DRIVER_OWN) {
+		if ((u32ReadCRValue&0x100) == 0x100) {
+			pr_debug("%s already driver own 0x%0x, return\n",
+				__func__, u32ReadCRValue);
+			return ret;
+		}
+	} else if (owntype == FW_OWN) {
+		if ((u32ReadCRValue&0x100) == 0) {
+			pr_debug("%s already FW own 0x%0x, return\n",
+				__func__, u32ReadCRValue);
+			return ret;
+		}
+	}
 
 setretry:
 
-    if (owntype == DRIVER_OWN)
-        ownValue = 0x00000200;
-    else
-        ownValue = 0x00000100;
+	if (owntype == DRIVER_OWN)
+		ownValue = 0x00000200;
+	else
+		ownValue = 0x00000100;
 
-    BTMTK_DBG("%s write CHLPCR 0x%x", __func__, ownValue);
-    ret = btmtk_sdio_writel(CHLPCR, ownValue);
-    if (ret) {
-        ret = -EINVAL;
-        goto done;
-    }
-    BTMTK_DBG("%s write CHLPCR 0x%x done", __func__, ownValue);
+	pr_debug("%s write CHLPCR 0x%x\n", __func__, ownValue);
+	ret = btmtk_sdio_writel(CHLPCR, ownValue);
+	if (ret) {
+		ret = -EINVAL;
+		goto done;
+	}
+	pr_debug("%s write CHLPCR 0x%x done\n", __func__, ownValue);
 
-    u32LoopCount = 200;
+	u32LoopCount = 200;
 
-    if (owntype == DRIVER_OWN) {
-        do {
-            udelay(1);
-            ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
-            u32LoopCount--;
-            BTMTK_DBG("%s DRIVER_OWN btmtk_sdio_readl CHLPCR 0x%x ", __func__, u32ReadCRValue);
-        } while ((u32LoopCount > 0) && ((u32ReadCRValue&0x100) != 0x100));
+	if (owntype == DRIVER_OWN) {
+		do {
+			udelay(1);
+			ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
+			u32LoopCount--;
+			pr_debug("%s DRIVER_OWN btmtk_sdio_readl CHLPCR 0x%x\n",
+				__func__, u32ReadCRValue);
+		} while ((u32LoopCount > 0) &&
+			((u32ReadCRValue&0x100) != 0x100));
 
-        if ((u32LoopCount == 0) && (0x100 != (u32ReadCRValue&0x100)) && (set_checkretry > 0)) {
-            BTMTK_WARN("%s retry set_check driver own, CHLPCR 0x%x", __func__,u32ReadCRValue);
-            set_checkretry--;
-            mdelay(20);
-            goto setretry;
-        }
-    } else {
-        do {
-        udelay(1);
-        ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
-        u32LoopCount--;
-        BTMTK_DBG("%s FW_OWN btmtk_sdio_readl CHLPCR 0x%x ", __func__, u32ReadCRValue);
-        } while ((u32LoopCount > 0) &&  ((u32ReadCRValue&0x100) != 0));
+		if ((u32LoopCount == 0) && (0x100 != (u32ReadCRValue&0x100))
+				&& (set_checkretry > 0)) {
+			pr_warn("%s retry set_check driver own, CHLPCR 0x%x\n",
+				__func__, u32ReadCRValue);
+			set_checkretry--;
+			mdelay(20);
+			goto setretry;
+		}
+	} else {
+		do {
+			udelay(1);
+			ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
+			u32LoopCount--;
+			pr_debug("%s FW_OWN btmtk_sdio_readl CHLPCR 0x%x\n",
+				__func__, u32ReadCRValue);
+		} while ((u32LoopCount > 0) && ((u32ReadCRValue&0x100) != 0));
 
-        if ((u32LoopCount == 0) && ((u32ReadCRValue&0x100) != 0) && (set_checkretry > 0)) {
-            BTMTK_WARN("%s retry set_check FW own, CHLPCR 0x%x", __func__,u32ReadCRValue);
-            set_checkretry--;
-            goto setretry;
-        }
-    }
+		if ((u32LoopCount == 0) &&
+				((u32ReadCRValue&0x100) != 0) &&
+				(set_checkretry > 0)) {
+			pr_warn("%s retry set_check FW own, CHLPCR 0x%x\n",
+				__func__, u32ReadCRValue);
+			set_checkretry--;
+			goto setretry;
+		}
+	}
 
-    BTMTK_DBG("%s CHLPCR(0x%x), is 0x%x\n", __func__, CHLPCR, u32ReadCRValue);
+	pr_debug("%s CHLPCR(0x%x), is 0x%x\n",
+		__func__, CHLPCR, u32ReadCRValue);
 
-    if (owntype == DRIVER_OWN) {
-        if ((u32ReadCRValue&0x100) == 0x100)
-            BTMTK_DBG("%s check %04x, is 0x100 driver own success\n", __func__, CHLPCR);
-        else {
-                BTMTK_DBG("%s check %04x, is %x shuld be 0x100\n", __func__, CHLPCR, u32ReadCRValue);
-                ret = EINVAL;
-                goto done;
-        }
-    } else {
-        if (0x0 == (u32ReadCRValue&0x100))
-            BTMTK_DBG("%s check %04x, bit 8 is 0 FW own success\n", __func__, CHLPCR);
-        else{
-            BTMTK_DBG("%s bit 8 should be 0, %04x bit 8 is %04x\n", __func__, u32ReadCRValue, (u32ReadCRValue&0x100));
-            ret = EINVAL;
-            goto done;
-        }
-    }
-
-
+	if (owntype == DRIVER_OWN) {
+		if ((u32ReadCRValue&0x100) == 0x100)
+			pr_debug("%s check %04x, is 0x100 driver own success\n",
+				__func__, CHLPCR);
+		else {
+			pr_debug("%s check %04x, is %x shuld be 0x100\n",
+				__func__, CHLPCR, u32ReadCRValue);
+			ret = EINVAL;
+			goto done;
+		}
+	} else {
+		if (0x0 == (u32ReadCRValue&0x100))
+			pr_debug("%s check %04x, bit 8 is 0 FW own success\n",
+				__func__, CHLPCR);
+		else{
+			pr_debug("%s bit 8 should be 0, %04x bit 8 is %04x\n",
+				__func__, u32ReadCRValue,
+				(u32ReadCRValue&0x100));
+			ret = EINVAL;
+			goto done;
+		}
+	}
 
 done:
+	if (owntype == DRIVER_OWN) {
+		if (ret)
+			pr_err("%s set driver own fail\n", __func__);
+		else
+			pr_debug("%s set driver own success\n", __func__);
+	} else if (owntype == FW_OWN) {
+		if (ret)
+			pr_err("%s set FW own fail\n", __func__);
+		else
+			pr_debug("%s set FW own success\n", __func__);
+	} else
+		pr_err("%s unknown type %d\n", __func__, owntype);
 
-    if (owntype == DRIVER_OWN) {
-        if (ret)
-            BTMTK_ERR("%s set driver own fail\n", __func__);
-        else
-            BTMTK_DBG("%s set driver own success\n", __func__);
-    } else if (owntype == FW_OWN) {
-        if (ret)
-            BTMTK_ERR("%s set FW own fail\n", __func__);
-        else
-            BTMTK_DBG("%s set FW own success\n", __func__);
-
-    } else
-        BTMTK_ERR("%s unknow type %d\n", __func__, owntype);
-
-
-    return ret;
+	return ret;
 }
+
 static int btmtk_sdio_enable_interrupt(int enable)
 {
-    u32 ret = 0;
-    u32 cr_value = 0;
+	u32 ret = 0;
+	u32 cr_value = 0;
 
-    if (enable)
-        cr_value |= C_FW_INT_EN_SET;
-    else
-        cr_value |= C_FW_INT_EN_CLEAR;
+	if (enable)
+		cr_value |= C_FW_INT_EN_SET;
+	else
+		cr_value |= C_FW_INT_EN_CLEAR;
 
-    ret = btmtk_sdio_writel(CHLPCR, cr_value);
-    BTMTK_DBG("%s enable %d write CHLPCR 0x%08x\n", __func__, enable, cr_value);
+	ret = btmtk_sdio_writel(CHLPCR, cr_value);
+	pr_debug("%s enable %d write CHLPCR 0x%08x\n",
+			__func__, enable, cr_value);
 
-    return ret;
+	return ret;
 }
 
 static int btmtk_sdio_get_rx_unit(struct btmtk_sdio_card *card)
 {
-        u8 reg;
-        int ret;
+	u8 reg;
+	int ret;
 
-        reg = sdio_readb(card->func, card->reg->card_rx_unit, &ret);
-        if (!ret)
-                card->rx_unit = reg;
+	reg = sdio_readb(card->func, card->reg->card_rx_unit, &ret);
+	if (!ret)
+		card->rx_unit = reg;
 
-        return ret;
+	return ret;
 }
 
-static int btmtk_sdio_enable_host_int_mask(struct btmtk_sdio_card *card,
-                                                                u8 mask)
+static int btmtk_sdio_enable_host_int_mask(
+				struct btmtk_sdio_card *card,
+				u8 mask)
 {
-        int ret;
+	int ret;
 
-        sdio_writeb(card->func, mask, card->reg->host_int_mask, &ret);
-        if (ret) {
-                BTMTK_ERR("Unable to enable the host interrupt!");
-                ret = -EIO;
-        }
+	sdio_writeb(card->func, mask, card->reg->host_int_mask, &ret);
+	if (ret) {
+		pr_err("Unable to enable the host interrupt!\n");
+		ret = -EIO;
+	}
 
-        return ret;
+	return ret;
 }
 
-static int btmtk_sdio_disable_host_int_mask(struct btmtk_sdio_card *card,
-                                                                u8 mask)
+static int btmtk_sdio_disable_host_int_mask(
+				struct btmtk_sdio_card *card,
+				u8 mask)
 {
-        u8 host_int_mask;
-        int ret;
+	u8 host_int_mask;
+	int ret;
 
-        host_int_mask = sdio_readb(card->func, card->reg->host_int_mask, &ret);
-        if (ret)
-                return -EIO;
+	host_int_mask = sdio_readb(card->func, card->reg->host_int_mask, &ret);
+	if (ret)
+		return -EIO;
 
-        host_int_mask &= ~mask;
+	host_int_mask &= ~mask;
 
-        sdio_writeb(card->func, host_int_mask, card->reg->host_int_mask, &ret);
-        if (ret < 0) {
-                BTMTK_ERR("Unable to disable the host interrupt!");
-                return -EIO;
-        }
+	sdio_writeb(card->func, host_int_mask, card->reg->host_int_mask, &ret);
+	if (ret < 0) {
+		pr_err("Unable to disable the host interrupt!\n");
+		return -EIO;
+	}
 
-        return 0;
+	return 0;
 }
 
 /*for debug*/
 int btmtk_print_buffer_conent(u8 *buf, u32 Datalen)
 {
-    int i = 0;
-    int print_finish = 0;
-    /*Print out txbuf data for debug*/
-    for (i = 0; i <= (Datalen-1); i += 16) {
-        if ((i+16) <= Datalen) {
-            BTMTK_DBG("%s: %02X%02X%02X%02X%02X %02X%02X%02X%02X%02X %02X%02X%02X%02X%02X %02X\n", __func__,
-            buf[i], buf[i+1], buf[i+2], buf[i+3], buf[i+4],
-            buf[i+5], buf[i+6], buf[i+7], buf[i+8], buf[i+9],
-            buf[i+10], buf[i+11], buf[i+12], buf[i+13], buf[i+14],
-            buf[i+15]);
-        } else {
-            for (; i < (Datalen); i++)
-                BTMTK_DBG("%s: %02X\n", __func__, buf[i]);
+	int i = 0;
+	int print_finish = 0;
+	/*Print out txbuf data for debug*/
+	for (i = 0; i <= (Datalen-1); i += 16) {
+		if ((i+16) <= Datalen) {
+			pr_debug("%s: %02X%02X%02X%02X%02X %02X%02X%02X%02X%02X %02X%02X%02X%02X%02X %02X\n",
+				__func__,
+				buf[i], buf[i+1], buf[i+2], buf[i+3], buf[i+4],
+				buf[i+5], buf[i+6], buf[i+7], buf[i+8], buf[i+9],
+				buf[i+10], buf[i+11], buf[i+12], buf[i+13], buf[i+14],
+				buf[i+15]);
+		} else {
+			for (; i < (Datalen); i++)
+				pr_debug("%s: %02X\n", __func__, buf[i]);
 
-            print_finish = 1;
-        }
+			print_finish = 1;
+		}
 
-        if (print_finish)
-            break;
-
-    }
-    return 0;
+		if (print_finish)
+			break;
+	}
+	return 0;
 }
 
 static int btmtk_sdio_send_tx_data(u8 *buffer, int tx_data_len)
 {
-    int ret = 0;
-    u8 MultiBluckCount = 0;
-    u8 redundant = 0;
+	int ret = 0;
+	u8 MultiBluckCount = 0;
+	u8 redundant = 0;
 
-    MultiBluckCount = tx_data_len/SDIO_BLOCK_SIZE;
-    redundant = tx_data_len % SDIO_BLOCK_SIZE;
+	MultiBluckCount = tx_data_len/SDIO_BLOCK_SIZE;
+	redundant = tx_data_len % SDIO_BLOCK_SIZE;
 
-    if (redundant)
-        tx_data_len = (MultiBluckCount+1)*SDIO_BLOCK_SIZE;
+	if (redundant)
+		tx_data_len = (MultiBluckCount+1)*SDIO_BLOCK_SIZE;
 
-    sdio_claim_host(g_card->func);
-    ret = sdio_writesb(g_card->func, CTDR, buffer, tx_data_len);
-    sdio_release_host(g_card->func);
+	sdio_claim_host(g_card->func);
+	ret = sdio_writesb(g_card->func, CTDR, buffer, tx_data_len);
+	sdio_release_host(g_card->func);
 
-    return ret;
+	return ret;
 }
 
 static int btmtk_sdio_recv_rx_data(void)
 {
-    int ret = 0;
-    u32 u32ReadCRValue = 0;
-    int retry_count = 5;
-    u32 sdio_header_length = 0;
-    memset(rxbuf, 0, MTK_RXDATA_SIZE);
+	int ret = 0;
+	u32 u32ReadCRValue = 0;
+	int retry_count = 5;
+	u32 sdio_header_length = 0;
 
-    do {
-        ret = btmtk_sdio_readl(CHISR, &u32ReadCRValue);
-        BTMTK_DBG("%s: loop Get CHISR 0x%08X\n", __func__, u32ReadCRValue);
-        rx_length = (u32ReadCRValue & RX_PKT_LEN) >> 16;
-        if (rx_length == 0xFFFF) {
-            BTMTK_WARN("%s: 0xFFFF==rx_length, error return -EIO\n", __func__);
-            ret = -EIO;
-            break;
-        }
+	memset(rxbuf, 0, MTK_RXDATA_SIZE);
 
-        if ((RX_DONE&u32ReadCRValue) && rx_length) {
-            BTMTK_DBG("%s: u32ReadCRValue = %08X\n", __func__, u32ReadCRValue);
-            u32ReadCRValue &= 0xFFFB;
-            ret = btmtk_sdio_writel(CHISR, u32ReadCRValue);
-            BTMTK_DBG("%s: write = %08X\n", __func__, u32ReadCRValue);
+	do {
+		ret = btmtk_sdio_readl(CHISR, &u32ReadCRValue);
+		pr_debug("%s: loop Get CHISR 0x%08X\n",
+			__func__, u32ReadCRValue);
+		rx_length = (u32ReadCRValue & RX_PKT_LEN) >> 16;
+		if (rx_length == 0xFFFF) {
+			pr_warn("%s: 0xFFFF==rx_length, error return -EIO\n",
+				__func__);
+			ret = -EIO;
+			break;
+		}
+
+		if ((RX_DONE&u32ReadCRValue) && rx_length) {
+			pr_debug("%s: u32ReadCRValue = %08X\n",
+				__func__, u32ReadCRValue);
+			u32ReadCRValue &= 0xFFFB;
+			ret = btmtk_sdio_writel(CHISR, u32ReadCRValue);
+			pr_debug("%s: write = %08X\n",
+				__func__, u32ReadCRValue);
 
 
-            sdio_claim_host(g_card->func);
-            ret = sdio_readsb(g_card->func, rxbuf, CRDR, rx_length);
-            sdio_release_host(g_card->func);
-            sdio_header_length = (rxbuf[1] << 8);
-            sdio_header_length |= rxbuf[0];
+			sdio_claim_host(g_card->func);
+			ret = sdio_readsb(g_card->func, rxbuf, CRDR, rx_length);
+			sdio_release_host(g_card->func);
+			sdio_header_length = (rxbuf[1] << 8);
+			sdio_header_length |= rxbuf[0];
 
-            if(sdio_header_length != rx_length){
-                BTMTK_ERR("%s sdio header length %d, rx_length %d mismatch",__func__,sdio_header_length,rx_length);
-                break;
-            }
+			if (sdio_header_length != rx_length) {
+				pr_err("%s sdio header length %d, rx_length %d mismatch\n",
+					__func__, sdio_header_length,
+					rx_length);
+				break;
+			}
 
-            if (sdio_header_length == 0) {
-                BTMTK_WARN("%s: get sdio_header_length = %d\n", __func__, sdio_header_length);
-                continue;
-            }
+			if (sdio_header_length == 0) {
+				pr_warn("%s: get sdio_header_length = %d\n",
+					__func__, sdio_header_length);
+				continue;
+			}
 
+			break;
+		}
 
-            break;
-        }
+		retry_count--;
+		if (retry_count <= 0) {
+			pr_warn("%s: retry_count = %d,timeout\n",
+				__func__, retry_count);
+			ret = -EIO;
+			break;
+		}
 
+		/* msleep(1); */
+		mdelay(3);
+		pr_debug("%s: retry_count = %d,wait\n", __func__, retry_count);
 
-        retry_count--;
-        if (retry_count <= 0) {
-            BTMTK_WARN("%s: retry_count = %d,timeout\n", __func__, retry_count);
-            ret = -EIO;
-            break;
-        }
+		if (ret)
+			break;
+	} while (1);
 
-/*
-* msleep(1);
-*/
-        mdelay(3);
-        BTMTK_DBG("%s: retry_count = %d,wait\n", __func__, retry_count);
+	if (ret)
+		return -EIO;
 
-        if (ret)
-            break;
-
-    } while (1);
-
-
-
-    if (ret)
-        return -EIO;
-
-
-
-
-
-    return ret;
+	return ret;
 }
 
 static int btmtk_sdio_send_wmt_reset(void)
 {
-    int ret = 0;
-    u8 wmt_event[8] = {4, 0xE4, 5, 2, 7, 1, 0, 0};
-    u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
-    u8 mtksdio_wmt_reset[9] = {1, 0x6F, 0xFC, 5, 1, 7, 1, 0, 4};
+	int ret = 0;
+	u8 wmt_event[8] = {4, 0xE4, 5, 2, 7, 1, 0, 0};
+	u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
+	u8 mtksdio_wmt_reset[9] = {1, 0x6F, 0xFC, 5, 1, 7, 1, 0, 4};
 
-    BTMTK_INFO("%s:\n", __func__);
-    mtksdio_packet_header[0] = sizeof(mtksdio_packet_header) + sizeof(mtksdio_wmt_reset);
+	pr_info("%s:\n", __func__);
+	mtksdio_packet_header[0] = sizeof(mtksdio_packet_header) +
+		sizeof(mtksdio_wmt_reset);
 
-    memcpy(txbuf, mtksdio_packet_header, MTK_SDIO_PACKET_HEADER_SIZE);
-    memcpy(txbuf+MTK_SDIO_PACKET_HEADER_SIZE, mtksdio_wmt_reset, sizeof(mtksdio_wmt_reset));
+	memcpy(txbuf, mtksdio_packet_header, MTK_SDIO_PACKET_HEADER_SIZE);
+	memcpy(txbuf+MTK_SDIO_PACKET_HEADER_SIZE, mtksdio_wmt_reset,
+		sizeof(mtksdio_wmt_reset));
 
-    btmtk_sdio_send_tx_data(txbuf, MTK_SDIO_PACKET_HEADER_SIZE+sizeof(mtksdio_wmt_reset));
-    btmtk_sdio_recv_rx_data();
+	btmtk_sdio_send_tx_data(txbuf,
+		MTK_SDIO_PACKET_HEADER_SIZE+sizeof(mtksdio_wmt_reset));
+	btmtk_sdio_recv_rx_data();
 
-    /*compare rx data is wmt reset correct response or not*/
-    if (memcmp(wmt_event, rxbuf+MTK_SDIO_PACKET_HEADER_SIZE, sizeof(wmt_event)) != 0) {
-        ret = -EIO;
-        BTMTK_WARN("%s: fail\n", __func__);
-    }
+	/*compare rx data is wmt reset correct response or not*/
+	if (memcmp(wmt_event, rxbuf+MTK_SDIO_PACKET_HEADER_SIZE,
+			sizeof(wmt_event)) != 0) {
+		ret = -EIO;
+		pr_warn("%s: fail\n", __func__);
+	}
 
-    return ret;
+	return ret;
 }
 
 static u32 btmtk_sdio_bt_memRegister_read(u32 cr)
 {
 	int retrytime = 300;
 	u32 result = 0;
-	u8 wmt_event[15] = {0x04,0xE4,0x10,0x02,0x08,0x0C/*0x1C*/,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x80 };
-	//msleep(1000);
+	u8 wmt_event[15] = {0x04, 0xE4, 0x10, 0x02,
+				0x08, 0x0C/*0x1C*/, 0x00, 0x00,
+				0x00, 0x00, 0x01, 0x00,
+				0x00, 0x00, 0x80};
+	/* msleep(1000); */
 	u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
-	u8 mtksdio_wmt_cmd[16] = {0x1,0x6F,0xFC,0x0C,0x01,0x08,0x08,0x00,0x02,0x01,0x00,0x01,0x00,0x00,0x00,0x00};
-	mtksdio_packet_header[0] = sizeof(mtksdio_packet_header) + sizeof(mtksdio_wmt_cmd);
-        BTMTK_INFO("%s: read cr %x\n",__func__,cr);
+	u8 mtksdio_wmt_cmd[16] = {0x1, 0x6F, 0xFC, 0x0C,
+				0x01, 0x08, 0x08, 0x00,
+				0x02, 0x01, 0x00, 0x01,
+				0x00, 0x00, 0x00, 0x00};
+	mtksdio_packet_header[0] = sizeof(mtksdio_packet_header)
+				+ sizeof(mtksdio_wmt_cmd);
+	pr_info("%s: read cr %x\n", __func__, cr);
 
-        memcpy(&mtksdio_wmt_cmd[12],&cr,sizeof(cr));
+	memcpy(&mtksdio_wmt_cmd[12], &cr, sizeof(cr));
 
-	memcpy(txbuf,mtksdio_packet_header,MTK_SDIO_PACKET_HEADER_SIZE);
-	memcpy(txbuf+MTK_SDIO_PACKET_HEADER_SIZE,mtksdio_wmt_cmd,sizeof(mtksdio_wmt_cmd));
+	memcpy(txbuf, mtksdio_packet_header, MTK_SDIO_PACKET_HEADER_SIZE);
+	memcpy(txbuf + MTK_SDIO_PACKET_HEADER_SIZE, mtksdio_wmt_cmd,
+		sizeof(mtksdio_wmt_cmd));
 
-	btmtk_sdio_send_tx_data(txbuf,MTK_SDIO_PACKET_HEADER_SIZE+sizeof(mtksdio_wmt_cmd));
-	btmtk_print_buffer_conent(txbuf,MTK_SDIO_PACKET_HEADER_SIZE+sizeof(mtksdio_wmt_cmd));
+	btmtk_sdio_send_tx_data(txbuf,
+		MTK_SDIO_PACKET_HEADER_SIZE + sizeof(mtksdio_wmt_cmd));
+	btmtk_print_buffer_conent(txbuf,
+		MTK_SDIO_PACKET_HEADER_SIZE + sizeof(mtksdio_wmt_cmd));
 
-        do{
-            msleep(10);
-	    btmtk_sdio_recv_rx_data();
-            retrytime--;
-		if(retrytime<=0)
+	do {
+		usleep_range(10*1000, 15*1000);
+		btmtk_sdio_recv_rx_data();
+		retrytime--;
+		if (retrytime <= 0)
 			break;
 
-		BTMTK_INFO("%s: retrytime %d\n",__func__,retrytime);
-	}while(!rxbuf[0]);
+		pr_info("%s: retrytime %d\n", __func__, retrytime);
+	} while (!rxbuf[0]);
 
-	btmtk_print_buffer_conent(rxbuf,rx_length);
+	btmtk_print_buffer_conent(rxbuf, rx_length);
 	/*compare rx data is wmt reset correct response or not*/
-	/*if(0!=memcmp(wmt_event,rxbuf+MTK_SDIO_PACKET_HEADER_SIZE,sizeof(wmt_event))){
+	/*if(0!=memcmp(wmt_event,
+			rxbuf+MTK_SDIO_PACKET_HEADER_SIZE,
+			sizeof(wmt_event))){
 		ret = -EIO;
-		BTMTK_INFO("%s: fail\n",__func__);
+		pr_info("%s: fail\n",__func__);
 	}*/
 
-	memcpy(&result,rxbuf+MTK_SDIO_PACKET_HEADER_SIZE+sizeof(wmt_event),sizeof(result));
-        BTMTK_INFO("%s: ger cr 0x%x value 0x%x\n",__func__,cr,result);
+	memcpy(&result, rxbuf+MTK_SDIO_PACKET_HEADER_SIZE + sizeof(wmt_event),
+		sizeof(result));
+	pr_info("%s: ger cr 0x%x value 0x%x\n", __func__, cr, result);
 	return result;
 }
 
@@ -710,160 +737,177 @@
 */
 static int btmtk_sdio_bt_set_power(u8 onoff)
 {
-    int ret = 0;
-    int retrytime = 60;
-    u8 wmt_event[8] = {4, 0xE4, 5, 2, 6, 1, 0, 0};
-    u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
-    u8 mtksdio_wmt_cmd[10] = {1, 0x6F, 0xFC, 6, 1, 6, 2, 0, 0, 1};
-    if (onoff==0)
-        retrytime = 3;
+	int ret = 0;
+	int retrytime = 60;
+	u8 wmt_event[8] = {4, 0xE4, 5, 2, 6, 1, 0, 0};
+	u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
+	u8 mtksdio_wmt_cmd[10] = {1, 0x6F, 0xFC, 6, 1, 6, 2, 0, 0, 1};
 
-    mtksdio_packet_header[0] = sizeof(mtksdio_packet_header) + sizeof(mtksdio_wmt_cmd);
-    BTMTK_INFO("%s: onoff %d\n", __func__, onoff);
+	if (onoff == 0)
+		retrytime = 3;
 
-    mtksdio_wmt_cmd[9] = onoff;
+	mtksdio_packet_header[0] =
+		sizeof(mtksdio_packet_header) + sizeof(mtksdio_wmt_cmd);
+	pr_info("%s: onoff %d\n", __func__, onoff);
 
-    memcpy(txbuf, mtksdio_packet_header, MTK_SDIO_PACKET_HEADER_SIZE);
-    memcpy(txbuf+MTK_SDIO_PACKET_HEADER_SIZE, mtksdio_wmt_cmd, sizeof(mtksdio_wmt_cmd));
+	mtksdio_wmt_cmd[9] = onoff;
 
-    btmtk_sdio_send_tx_data(txbuf, MTK_SDIO_PACKET_HEADER_SIZE+sizeof(mtksdio_wmt_cmd));
+	memcpy(txbuf, mtksdio_packet_header, MTK_SDIO_PACKET_HEADER_SIZE);
+	memcpy(txbuf+MTK_SDIO_PACKET_HEADER_SIZE, mtksdio_wmt_cmd,
+		sizeof(mtksdio_wmt_cmd));
+
+	btmtk_sdio_send_tx_data(txbuf,
+		MTK_SDIO_PACKET_HEADER_SIZE+sizeof(mtksdio_wmt_cmd));
+
+	do {
+		msleep(100);
+		btmtk_sdio_recv_rx_data();
+		retrytime--;
+		if (retrytime <= 0)
+			break;
+
+		if (retrytime < 40)
+			pr_warn("%s: retry over 2s, retrytime %d\n",
+				__func__, retrytime);
+
+		pr_info("%s: retrytime %d\n", __func__, retrytime);
+	} while (!rxbuf[0]);
 
 
-    do {
-        msleep(100);
-        btmtk_sdio_recv_rx_data();
-        retrytime--;
-        if (retrytime <= 0)
-            break;
+	/*compare rx data is wmt reset correct response or not*/
+	if (memcmp(wmt_event, rxbuf+MTK_SDIO_PACKET_HEADER_SIZE, sizeof(wmt_event))
+			!= 0) {
+		ret = -EIO;
+		pr_info("%s: fail\n", __func__);
+	}
 
-        if (retrytime < 40)
-            BTMTK_WARN("%s: retry over 2s, retrytime %d\n", __func__, retrytime);
-
-        BTMTK_INFO("%s: retrytime %d\n", __func__, retrytime);
-    } while (!rxbuf[0]);
-
-
-    /*compare rx data is wmt reset correct response or not*/
-    if (memcmp(wmt_event, rxbuf+MTK_SDIO_PACKET_HEADER_SIZE, sizeof(wmt_event)) != 0) {
-        ret = -EIO;
-        BTMTK_INFO("%s: fail\n", __func__);
-    }
-
-    return ret;
+	return ret;
 }
 /*
 * 1:on ,  0:off
 */
 static int btmtk_sdio_set_sleep(void)
 {
-    int ret = 0;
-    u8 wmt_event[8] = {4, 0xE, 4, 1, 0x7A, 0xFC, 0};
-    u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
-    u8 mtksdio_wmt_cmd[11] = {1, 0x7A, 0xFC, 7, /*3:sdio, 5:usb*/03,
-    /*host non sleep duration*/0x80, 0x02, /*host non sleep duration*/0x80, 0x02, 0x0, 0x00};
+	int ret = 0;
+	u8 wmt_event[8] = {4, 0xE, 4, 1, 0x7A, 0xFC, 0};
+	u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
+	u8 mtksdio_wmt_cmd[11] = {1, 0x7A, 0xFC, 7,
+		/*3:sdio, 5:usb*/03,
+		/*host non sleep duration*/0x80, 0x02,
+		/*host non sleep duration*/0x80, 0x02, 0x0, 0x00};
 
-    mtksdio_packet_header[0] = sizeof(mtksdio_packet_header) + sizeof(mtksdio_wmt_cmd);
-    BTMTK_INFO("%s begin\n", __func__);
+	mtksdio_packet_header[0] =
+		sizeof(mtksdio_packet_header) + sizeof(mtksdio_wmt_cmd);
+	pr_info("%s begin\n", __func__);
 
-    memcpy(txbuf, mtksdio_packet_header, MTK_SDIO_PACKET_HEADER_SIZE);
-    memcpy(txbuf+MTK_SDIO_PACKET_HEADER_SIZE, mtksdio_wmt_cmd, sizeof(mtksdio_wmt_cmd));
+	memcpy(txbuf, mtksdio_packet_header, MTK_SDIO_PACKET_HEADER_SIZE);
+	memcpy(txbuf+MTK_SDIO_PACKET_HEADER_SIZE, mtksdio_wmt_cmd,
+		sizeof(mtksdio_wmt_cmd));
 
-    btmtk_sdio_send_tx_data(txbuf, MTK_SDIO_PACKET_HEADER_SIZE+sizeof(mtksdio_wmt_cmd));
-    btmtk_sdio_recv_rx_data();
-    btmtk_print_buffer_conent(rxbuf, rx_length);
-    /*compare rx data is wmt reset correct response or not*/
-    if (memcmp(wmt_event, rxbuf+MTK_SDIO_PACKET_HEADER_SIZE, sizeof(wmt_event)) != 0) {
-        ret = -EIO;
-        BTMTK_INFO("%s: fail\n", __func__);
-    }
+	btmtk_sdio_send_tx_data(txbuf,
+			MTK_SDIO_PACKET_HEADER_SIZE+sizeof(mtksdio_wmt_cmd));
+	btmtk_sdio_recv_rx_data();
+	btmtk_print_buffer_conent(rxbuf, rx_length);
+	/*compare rx data is wmt reset correct response or not*/
+	if (memcmp(wmt_event, rxbuf+MTK_SDIO_PACKET_HEADER_SIZE, sizeof(wmt_event))
+			!= 0) {
+		ret = -EIO;
+		pr_info("%s: fail\n", __func__);
+	}
 
-    return ret;
+	return ret;
 }
 
 static int btmtk_send_rom_patch(u8 *fwbuf, u32 fwlen, int mode)
 {
-    int ret = 0;
-    u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
-    int stp_len = 0;
-    u8 mtkdata_header[MTKDATA_HEADER_SIZE] = {0};
+	int ret = 0;
+	u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
+	int stp_len = 0;
+	u8 mtkdata_header[MTKDATA_HEADER_SIZE] = {0};
 
-    int copy_len = 0;
-    int Datalen = fwlen;
-    u32 u32ReadCRValue = 0;
+	int copy_len = 0;
+	int Datalen = fwlen;
+	u32 u32ReadCRValue = 0;
 
 
-    BTMTK_DBG("%s fwlen %d, mode = %d", __func__, fwlen, mode);
-    if (fwlen < Datalen) {
-        BTMTK_ERR("%s file size = %d,is not corect", __func__, fwlen);
-        return -ENOENT;
-    }
+	pr_debug("%s fwlen %d, mode = %d\n", __func__, fwlen, mode);
+	if (fwlen < Datalen) {
+		pr_err("%s file size = %d,is not corect\n", __func__, fwlen);
+		return -ENOENT;
+	}
 
-    stp_len = Datalen + MTKDATA_HEADER_SIZE;
+	stp_len = Datalen + MTKDATA_HEADER_SIZE;
 
 
-    mtkdata_header[0] = 0x2;/*ACL data*/
-    mtkdata_header[1] = 0x6F;
-    mtkdata_header[2] = 0xFC;
+	mtkdata_header[0] = 0x2;/*ACL data*/
+	mtkdata_header[1] = 0x6F;
+	mtkdata_header[2] = 0xFC;
 
-    mtkdata_header[3] = ((Datalen+4+1)&0x00FF);
-    mtkdata_header[4] = ((Datalen+4+1)&0xFF00)>>8;
+	mtkdata_header[3] = ((Datalen+4+1)&0x00FF);
+	mtkdata_header[4] = ((Datalen+4+1)&0xFF00)>>8;
 
-    mtkdata_header[5] = 0x1;
-    mtkdata_header[6] = 0x1;
+	mtkdata_header[5] = 0x1;
+	mtkdata_header[6] = 0x1;
 
-    mtkdata_header[7] = ((Datalen+1)&0x00FF);
-    mtkdata_header[8] = ((Datalen+1)&0xFF00)>>8;
+	mtkdata_header[7] = ((Datalen+1)&0x00FF);
+	mtkdata_header[8] = ((Datalen+1)&0xFF00)>>8;
 
-    mtkdata_header[9] = mode;
+	mtkdata_header[9] = mode;
 
 /*
 * 0 and 1 is packet length, include MTKSTP_HEADER_SIZE
 */
-    mtksdio_packet_header[0] = (Datalen+4+MTKSTP_HEADER_SIZE+6)&0xFF;
-    mtksdio_packet_header[1] = ((Datalen+4+MTKSTP_HEADER_SIZE+6)&0xFF00)>>8;
-    mtksdio_packet_header[2] = 0;
-    mtksdio_packet_header[3] = 0;
+	mtksdio_packet_header[0] =
+		(Datalen+4+MTKSTP_HEADER_SIZE+6)&0xFF;
+	mtksdio_packet_header[1] =
+		((Datalen+4+MTKSTP_HEADER_SIZE+6)&0xFF00)>>8;
+	mtksdio_packet_header[2] = 0;
+	mtksdio_packet_header[3] = 0;
 
 /*
-*mtksdio_packet_header[2] and mtksdio_packet_header[3] are reserved
+*mtksdio_packet_header[2] and mtksdio_packet_header[3]
+*are reserved
 */
-    BTMTK_DBG("%s result %02x  %02x\n", __func__
-    , ((Datalen+4+MTKSTP_HEADER_SIZE+6)&0xFF00)>>8
-    , (Datalen+4+MTKSTP_HEADER_SIZE+6));
+	pr_debug("%s result %02x  %02x\n", __func__,
+		((Datalen+4+MTKSTP_HEADER_SIZE+6)&0xFF00)>>8,
+		(Datalen+4+MTKSTP_HEADER_SIZE+6));
 
-    memcpy(txbuf+copy_len, mtksdio_packet_header, MTK_SDIO_PACKET_HEADER_SIZE);
-    copy_len += MTK_SDIO_PACKET_HEADER_SIZE;
+	memcpy(txbuf+copy_len, mtksdio_packet_header,
+		MTK_SDIO_PACKET_HEADER_SIZE);
+	copy_len += MTK_SDIO_PACKET_HEADER_SIZE;
 
-    memcpy(txbuf+copy_len, mtkdata_header, MTKDATA_HEADER_SIZE);
-    copy_len += MTKDATA_HEADER_SIZE;
+	memcpy(txbuf+copy_len, mtkdata_header, MTKDATA_HEADER_SIZE);
+	copy_len += MTKDATA_HEADER_SIZE;
+
+	memcpy(txbuf+copy_len, fwbuf, Datalen);
+	copy_len += Datalen;
+
+	pr_debug("%s txbuf %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n",
+		__func__,
+		txbuf[0], txbuf[1], txbuf[2], txbuf[3], txbuf[4],
+		txbuf[5], txbuf[6], txbuf[7], txbuf[8], txbuf[9]);
 
 
+	ret = btmtk_sdio_readl(CHIER, &u32ReadCRValue);
+	pr_debug("%s: CHIER u32ReadCRValue %x, ret %d\n",
+		__func__, u32ReadCRValue, ret);
 
-    memcpy(txbuf+copy_len, fwbuf, Datalen);
-    copy_len += Datalen;
+	ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
+	pr_debug("%s: CHLPCR u32ReadCRValue %x, ret %d\n",
+		__func__, u32ReadCRValue, ret);
 
-    BTMTK_DBG("%s txbuf %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", __func__,
-    txbuf[0], txbuf[1], txbuf[2], txbuf[3], txbuf[4],
-    txbuf[5], txbuf[6], txbuf[7], txbuf[8], txbuf[9]);
+	ret = btmtk_sdio_readl(CHISR, &u32ReadCRValue);
+	pr_debug("%s: 0CHISR u32ReadCRValue %x, ret %d\n",
+		__func__, u32ReadCRValue, ret);
+	ret = btmtk_sdio_readl(CHISR, &u32ReadCRValue);
+	pr_debug("%s: 00CHISR u32ReadCRValue %x, ret %d\n",
+		__func__, u32ReadCRValue, ret);
 
+	btmtk_sdio_send_tx_data(txbuf, copy_len);
 
-    ret = btmtk_sdio_readl(CHIER, &u32ReadCRValue);
-    BTMTK_DBG("%s: CHIER u32ReadCRValue %x, ret %d\n", __func__, u32ReadCRValue, ret);
+	ret = btmtk_sdio_recv_rx_data();
 
-    ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
-    BTMTK_DBG("%s: CHLPCR u32ReadCRValue %x, ret %d\n", __func__, u32ReadCRValue, ret);
-
-    ret = btmtk_sdio_readl(CHISR, &u32ReadCRValue);
-    BTMTK_DBG("%s: 0CHISR u32ReadCRValue %x, ret %d\n", __func__, u32ReadCRValue, ret);
-    ret = btmtk_sdio_readl(CHISR, &u32ReadCRValue);
-    BTMTK_DBG("%s: 00CHISR u32ReadCRValue %x, ret %d\n", __func__, u32ReadCRValue, ret);
-
-    btmtk_sdio_send_tx_data(txbuf, copy_len);
-
-
-    ret = btmtk_sdio_recv_rx_data();
-
-    return ret;
+	return ret;
 }
 
 
@@ -878,41 +922,46 @@
 */
 static int btmtk_sdio_send_wohci(u8 type, u32 len, u8 *data)
 {
-    u32 ret = 0;
-    u32 push_in_data_len = 0;
-    u8 mtk_wmt_header[MTKWMT_HEADER_SIZE] = {0};
-    u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
-    u8 mtk_tx_data[512] = {0};
+	u32 ret = 0;
+	u32 push_in_data_len = 0;
+	u8 mtk_wmt_header[MTKWMT_HEADER_SIZE] = {0};
+	u8 mtksdio_packet_header[MTK_SDIO_PACKET_HEADER_SIZE] = {0};
+	u8 mtk_tx_data[512] = {0};
 
-    mtk_wmt_header[0] = type;
-    mtk_wmt_header[1] = 0x6F;
-    mtk_wmt_header[2] = 0xFC;
-    mtk_wmt_header[3] = len;
+	mtk_wmt_header[0] = type;
+	mtk_wmt_header[1] = 0x6F;
+	mtk_wmt_header[2] = 0xFC;
+	mtk_wmt_header[3] = len;
 
-    mtksdio_packet_header[0] = (len+MTKWMT_HEADER_SIZE+MTK_SDIO_PACKET_HEADER_SIZE)&0xFF;
-    mtksdio_packet_header[1] = ((len+MTKWMT_HEADER_SIZE+MTK_SDIO_PACKET_HEADER_SIZE)&0xFF00)>>8;
-    mtksdio_packet_header[2] = 0;
-    mtksdio_packet_header[3] = 0;
+	mtksdio_packet_header[0] =
+		(len+MTKWMT_HEADER_SIZE+MTK_SDIO_PACKET_HEADER_SIZE)&0xFF;
+	mtksdio_packet_header[1] =
+		((len+MTKWMT_HEADER_SIZE+MTK_SDIO_PACKET_HEADER_SIZE)&0xFF00)
+		>>8;
+	mtksdio_packet_header[2] = 0;
+	mtksdio_packet_header[3] = 0;
 /*
-* mtksdio_packet_header[2] and mtksdio_packet_header[3] are reserved
+* mtksdio_packet_header[2] and mtksdio_packet_header[3]
+* are reserved
 */
 
-    memcpy(mtk_tx_data, mtksdio_packet_header, sizeof(mtksdio_packet_header));
-    push_in_data_len += sizeof(mtksdio_packet_header);
+	memcpy(mtk_tx_data, mtksdio_packet_header,
+		sizeof(mtksdio_packet_header));
+	push_in_data_len += sizeof(mtksdio_packet_header);
 
-    memcpy(mtk_tx_data+push_in_data_len, mtk_wmt_header, sizeof(mtk_wmt_header));
-    push_in_data_len += sizeof(mtk_wmt_header);
+	memcpy(mtk_tx_data+push_in_data_len, mtk_wmt_header,
+		sizeof(mtk_wmt_header));
+	push_in_data_len += sizeof(mtk_wmt_header);
 
-    memcpy(mtk_tx_data+push_in_data_len, data, len);
-    push_in_data_len += len;
+	memcpy(mtk_tx_data+push_in_data_len, data, len);
+	push_in_data_len += len;
 
-    sdio_claim_host(g_card->func);
-    ret = sdio_writesb(g_card->func, CTDR, mtk_tx_data, push_in_data_len);
-    sdio_release_host(g_card->func);
+	sdio_claim_host(g_card->func);
+	ret = sdio_writesb(g_card->func, CTDR, mtk_tx_data, push_in_data_len);
+	sdio_release_host(g_card->func);
 
-
-    BTMTK_INFO("%s retrun  0x%0x\n", __func__, ret);
-    return ret;
+	pr_info("%s retrun  0x%0x\n", __func__, ret);
+	return ret;
 }
 /*
 * data event:
@@ -928,1223 +977,1218 @@
 */
 static int btmtk_sdio_need_load_rom_patch(void)
 {
-    u32 ret = 0;
-    u8 cmd[] = {0x1, 0x17, 0x1, 0x0, 0x1};
-    u8 event[] = {0x2, 0x17, 0x1, 0x0};
+	u32 ret = 0;
+	u8 cmd[] = {0x1, 0x17, 0x1, 0x0, 0x1};
+	u8 event[] = {0x2, 0x17, 0x1, 0x0};
 
-    do {
-        ret = btmtk_sdio_send_wohci(HCI_COMMAND_PKT, sizeof(cmd), cmd);
+	do {
+		ret = btmtk_sdio_send_wohci(HCI_COMMAND_PKT, sizeof(cmd), cmd);
 
-        if (ret) {
-            BTMTK_ERR("%s btmtk_sdio_send_wohci return fail ret %d", __func__, ret);
-            break;
-        }
+		if (ret) {
+			pr_err("%s btmtk_sdio_send_wohci return fail ret %d\n",
+					__func__, ret);
+			break;
+		}
 
-        ret = btmtk_sdio_recv_rx_data();
-        if (ret)
-            break;
+		ret = btmtk_sdio_recv_rx_data();
+		if (ret)
+			break;
 
-        if (rx_length == 12) {
-            if (memcmp(rxbuf+7, event, sizeof(event)) == 0)
-                return rxbuf[11];
-            else{
-                BTMTK_ERR("%s receive event content is not correct, print receive data\n", __func__);
-                btmtk_print_buffer_conent(rxbuf, rx_length);
-            }
-        }
+		if (rx_length == 12) {
+			if (memcmp(rxbuf+7, event, sizeof(event)) == 0)
+				return rxbuf[11];
 
-    } while (0);
+			pr_err("%s receive event content is not correct, print receive data\n",
+				__func__);
+			btmtk_print_buffer_conent(rxbuf, rx_length);
+		}
+	} while (0);
 
-    return ret;
+	return ret;
 }
 static int btmtk_sdio_set_write_clear(void)
 {
-    u32 u32ReadCRValue = 0;
-    u32 ret = 0;
+	u32 u32ReadCRValue = 0;
+	u32 ret = 0;
 
-    ret = btmtk_sdio_readl(CHCR, &u32ReadCRValue);
-    if (ret) {
-       BTMTK_ERR("%s read CHCR error\n", __func__);
-       ret = EINVAL;
-       return ret;
-    }
+	ret = btmtk_sdio_readl(CHCR, &u32ReadCRValue);
+	if (ret) {
+		pr_err("%s read CHCR error\n", __func__);
+		ret = EINVAL;
+		return ret;
+	}
 
-    u32ReadCRValue |= 0x00000002;
-    btmtk_sdio_writel(CHCR, u32ReadCRValue);
-    BTMTK_INFO("%s write CHCR 0x%08X\n", __func__, u32ReadCRValue);
-    ret = btmtk_sdio_readl(CHCR, &u32ReadCRValue);
-    BTMTK_INFO("%s read CHCR 0x%08X\n", __func__, u32ReadCRValue);
-    if (u32ReadCRValue&0x00000002)
-       BTMTK_INFO("%s write clear\n", __func__);
-    else
-       BTMTK_INFO("%s read clear\n", __func__);
+	u32ReadCRValue |= 0x00000002;
+	btmtk_sdio_writel(CHCR, u32ReadCRValue);
+	pr_info("%s write CHCR 0x%08X\n", __func__, u32ReadCRValue);
+	ret = btmtk_sdio_readl(CHCR, &u32ReadCRValue);
+	pr_info("%s read CHCR 0x%08X\n", __func__, u32ReadCRValue);
+	if (u32ReadCRValue&0x00000002)
+		pr_info("%s write clear\n", __func__);
+	else
+		pr_info("%s read clear\n", __func__);
 
-
-    return ret;
+	return ret;
 }
-static int btmtk_sdio_download_rom_patch(struct btmtk_sdio_card *card)
+static int btmtk_sdio_download_rom_patch(
+					struct btmtk_sdio_card *card)
 {
-        const struct firmware *fw_firmware = NULL;
-        const u8 *firmware = NULL;
-        int firmwarelen, ret = 0;
-        void *tmpfwbuf = NULL;
-        u8 *fwbuf;
-        P_PATCH_HEADER patchHdr;
-        u8 *cDateTime = NULL;
-        u16 u2HwVer = 0;
-        u16 u2SwVer = 0;
-        u32 u4PatchVer = 0;
-        u32 uhwversion = 0;
+	const struct firmware *fw_firmware = NULL;
+	const u8 *firmware = NULL;
+	int firmwarelen, ret = 0;
+	void *tmpfwbuf = NULL;
+	u8 *fwbuf;
+	struct _PATCH_HEADER *patchHdr;
+	u8 *cDateTime = NULL;
+	u16 u2HwVer = 0;
+	u16 u2SwVer = 0;
+	u32 u4PatchVer = 0;
+	u32 uhwversion = 0;
 
-        u32 u32ReadCRValue = 0;
+	u32 u32ReadCRValue = 0;
 
-        int RedundantSize = 0;
-        u32 bufferOffset = 0;
-        u8  patch_status = 0;
+	int RedundantSize = 0;
+	u32 bufferOffset = 0;
+	u8  patch_status = 0;
 
-        ret = btmtk_sdio_set_own_back(DRIVER_OWN);
+	ret = btmtk_sdio_set_own_back(DRIVER_OWN);
 
-        if (ret)
-            return ret;
+	if (ret)
+		return ret;
 
-        patch_status = btmtk_sdio_need_load_rom_patch();
+	patch_status = btmtk_sdio_need_load_rom_patch();
 
-        BTMTK_DBG("%s patch_status %d\n", __func__, patch_status);
+	pr_debug("%s patch_status %d\n", __func__, patch_status);
 
-        if (PATCH_IS_DOWNLOAD_BT_OTHER == patch_status || PATCH_READY == patch_status) {
-            BTMTK_INFO("%s patch is ready no need load patch again\n", __func__);
+	if (PATCH_IS_DOWNLOAD_BT_OTHER == patch_status ||
+			PATCH_READY == patch_status) {
+		pr_info("%s patch is ready no need load patch again\n",
+					__func__);
 
-            ret = btmtk_sdio_readl(0, &u32ReadCRValue);
-            BTMTK_INFO("%s read chipid =  %x\n", __func__, u32ReadCRValue);
+		ret = btmtk_sdio_readl(0, &u32ReadCRValue);
+		pr_info("%s read chipid =  %x\n", __func__, u32ReadCRValue);
 
-            /*Set interrupt output*/
-            ret = btmtk_sdio_writel(CHIER, FIRMWARE_INT|TX_FIFO_OVERFLOW |
-                FW_INT_IND_INDICATOR | TX_COMPLETE_COUNT |
-                TX_UNDER_THOLD | TX_EMPTY | RX_DONE);
+		/*Set interrupt output*/
+		ret = btmtk_sdio_writel(CHIER, FIRMWARE_INT|TX_FIFO_OVERFLOW |
+				FW_INT_IND_INDICATOR | TX_COMPLETE_COUNT |
+				TX_UNDER_THOLD | TX_EMPTY | RX_DONE);
 
-            if (ret) {
-                BTMTK_ERR("Set interrupt output fail(%d)\n", ret);
-                ret = -EIO;
-            }
+		if (ret) {
+			pr_err("Set interrupt output fail(%d)\n", ret);
+			ret = -EIO;
+		}
+
+		/*enable interrupt output*/
+		ret = btmtk_sdio_writel(CHLPCR, C_FW_INT_EN_SET);
+		if (ret) {
+			pr_err("enable interrupt output fail(%d)\n", ret);
+			ret = -EIO;
+			goto done;
+		}
+
+		ret = btmtk_sdio_bt_set_power(1);
+		if (ret)
+			return ret;
+
+		ret = btmtk_sdio_set_sleep();
+		btmtk_sdio_set_write_clear();
+		return ret;
+	}
+
+	uhwversion = btmtk_sdio_bt_memRegister_read(HW_VERSION);
+	pr_info("%s uhwversion 0x%x\n", __func__, uhwversion);
+
+	if (uhwversion == 0x8A00) {
+		pr_info("%s request_firmware(firmware name %s)\n",
+				__func__, card->firmware);
+		ret = request_firmware(&fw_firmware, card->firmware,
+						&card->func->dev);
+
+		if ((ret < 0) || !fw_firmware) {
+			pr_err("request_firmware(firmware name %s) failed, error code = %d\n",
+					card->firmware,
+					ret);
+			ret = -ENOENT;
+			goto done;
+		}
+	} else {
+		pr_info("%s request_firmware(firmware name %s)\n",
+				__func__, card->firmware1);
+		ret = request_firmware(&fw_firmware,
+				card->firmware1,
+				&card->func->dev);
+
+		if ((ret < 0) || !fw_firmware) {
+			pr_err("request_firmware(firmware name %s) failed, error code = %d\n",
+				card->firmware1, ret);
+			ret = -ENOENT;
+			goto done;
+		}
+	}
+
+	firmware = fw_firmware->data;
+	firmwarelen = fw_firmware->size;
+
+	pr_debug("Downloading FW image (%d bytes)\n", firmwarelen);
+
+	tmpfwbuf = kzalloc(firmwarelen, GFP_KERNEL);
+
+	if (!tmpfwbuf) {
+		ret = -ENOMEM;
+		goto done;
+	}
+
+	/* Ensure aligned firmware buffer */
+	memcpy(tmpfwbuf, firmware, firmwarelen);
+	fwbuf = tmpfwbuf;
+
+	/*Display rom patch info*/
+	patchHdr =  (struct _PATCH_HEADER *)fwbuf;
+	cDateTime = patchHdr->ucDateTime;
+	u2HwVer = patchHdr->u2HwVer;
+	u2SwVer = patchHdr->u2SwVer;
+	u4PatchVer = patchHdr->u4PatchVer;
+
+	pr_debug("=====================================\n");
+	pr_info("===============Patch Info============\n");
+	pr_info("Built Time = %s\n", cDateTime);
+	pr_info("Hw Ver = 0x%x\n",
+		((u2HwVer & 0x00ff) << 8) | ((u2HwVer & 0xff00) >> 8));
+	pr_info("Sw Ver = 0x%x\n",
+		((u2SwVer & 0x00ff) << 8) | ((u2SwVer & 0xff00) >> 8));
+	pr_info("Patch Ver = 0x%04x\n",
+			((u4PatchVer & 0xff000000) >> 24) |
+			((u4PatchVer & 0x00ff0000) >> 16));
+	pr_info("Platform = %c%c%c%c\n",
+			patchHdr->ucPlatform[0],
+			patchHdr->ucPlatform[1],
+			patchHdr->ucPlatform[2],
+			patchHdr->ucPlatform[3]);
+	pr_info("Patch start addr = %02x\n", patchHdr->u2PatchStartAddr);
+	pr_info("=====================================\n");
+
+	fwbuf += sizeof(struct _PATCH_HEADER);
+	pr_debug("%s PATCH_HEADER size %zd\n", __func__, sizeof(struct _PATCH_HEADER));
+	firmwarelen -= sizeof(struct _PATCH_HEADER);
+
+	ret = btmtk_sdio_readl(0, &u32ReadCRValue);
+	pr_info("%s read chipid =  %x\n", __func__, u32ReadCRValue);
+
+	/*Set interrupt output*/
+	ret = btmtk_sdio_writel(CHIER, FIRMWARE_INT|TX_FIFO_OVERFLOW |
+		FW_INT_IND_INDICATOR | TX_COMPLETE_COUNT |
+		TX_UNDER_THOLD | TX_EMPTY | RX_DONE);
+
+	if (ret) {
+		pr_err("Set interrupt output fail(%d)\n", ret);
+		ret = -EIO;
+		goto done;
+	}
+
+	/*enable interrupt output*/
+	ret = btmtk_sdio_writel(CHLPCR, C_FW_INT_EN_SET);
+
+	if (ret) {
+		pr_err("enable interrupt output fail(%d)\n", ret);
+		ret = -EIO;
+		goto done;
+	}
+
+	RedundantSize = firmwarelen;
+	pr_debug("%s firmwarelen %d\n", __func__, firmwarelen);
+
+	do {
+		bufferOffset = firmwarelen - RedundantSize;
+
+		if (RedundantSize == firmwarelen &&
+				PATCH_DOWNLOAD_SIZE <= RedundantSize)
+			ret = btmtk_send_rom_patch(fwbuf+bufferOffset,
+				PATCH_DOWNLOAD_SIZE, SDIO_PATCH_DOWNLOAD_FIRST);
+		else if (RedundantSize == firmwarelen)
+			ret = btmtk_send_rom_patch(fwbuf+bufferOffset,
+				RedundantSize, SDIO_PATCH_DOWNLOAD_FIRST);
+		else if (RedundantSize < PATCH_DOWNLOAD_SIZE) {
+			ret = btmtk_send_rom_patch(fwbuf+bufferOffset,
+				RedundantSize, SDIO_PATCH_DOWNLOAD_END);
+			pr_debug("%s patch downoad last patch part\n",
+					__func__);
+		} else
+			ret = btmtk_send_rom_patch(fwbuf+bufferOffset,
+				PATCH_DOWNLOAD_SIZE, SDIO_PATCH_DOWNLOAD_CON);
+
+		RedundantSize -= PATCH_DOWNLOAD_SIZE;
+
+		if (ret) {
+			pr_err("%s btmtk_send_rom_patch fail\n", __func__);
+			goto done;
+		}
+		pr_debug("%s RedundantSize %d\n", __func__, RedundantSize);
+		if (RedundantSize <= 0) {
+			pr_debug("%s patch downoad finish\n", __func__);
+			break;
+		}
+	} while (1);
+
+	btmtk_sdio_set_write_clear();
+
+	if (btmtk_sdio_need_load_rom_patch() == PATCH_READY)
+		pr_info("%s patch is ready\n", __func__);
 
 
-            /*enable interrupt output*/
-            ret = btmtk_sdio_writel(CHLPCR, C_FW_INT_EN_SET);
+	ret = btmtk_sdio_send_wmt_reset();
+
+	if (ret)
+		goto done;
 
 
+	ret = btmtk_sdio_bt_set_power(1);
 
-            if (ret) {
-                BTMTK_ERR("enable interrupt output fail(%d)\n", ret);
-                ret = -EIO;
-                        goto done;
-            }
+	if (ret) {
+		ret = EINVAL;
+		goto done;
+	}
 
-            ret = btmtk_sdio_bt_set_power(1);
-            if (ret)
-                return ret;
-
-            ret = btmtk_sdio_set_sleep();
-        btmtk_sdio_set_write_clear();
-            return ret;
-        }
-
-        uhwversion = btmtk_sdio_bt_memRegister_read(HW_VERSION);
-        BTMTK_INFO("%s uhwversion 0x%x\n",__func__,uhwversion);
-
-        if (uhwversion == 0x8A00){
-            BTMTK_INFO("%s request_firmware(firmware name %s)\n",__func__,card->firmware);
-	    ret = request_firmware(&fw_firmware, card->firmware,
-                                                        &card->func->dev);
-
-            if ((ret < 0) || !fw_firmware) {
-                BTMTK_ERR("request_firmware(firmware name %s) failed, error code = %d",
-                                                                        card->firmware,
-									ret);
-                ret = -ENOENT;
-                goto done;
-            }
-        }
-        else {
-            BTMTK_INFO("%s request_firmware(firmware name %s)\n",__func__,card->firmware1);
-	    ret = request_firmware(&fw_firmware, card->firmware1,
-                                                        &card->func->dev);
-
-            if ((ret < 0) || !fw_firmware) {
-                BTMTK_ERR("request_firmware(firmware name %s) failed, error code = %d",
-                                                                        card->firmware1,
-									ret);
-                ret = -ENOENT;
-                goto done;
-            }
-     	}
-
-
-        firmware = fw_firmware->data;
-        firmwarelen = fw_firmware->size;
-
-        BTMTK_DBG("Downloading FW image (%d bytes)", firmwarelen);
-
-        tmpfwbuf = kzalloc(firmwarelen, GFP_KERNEL);
-
-        if (!tmpfwbuf) {
-                    BTMTK_ERR("%s Unable to allocate buffer for firmware. Terminating download"
-                    , __func__);
-                    ret = -ENOMEM;
-                    goto done;
-        }
-
-        /* Ensure aligned firmware buffer */
-        memcpy(tmpfwbuf, firmware, firmwarelen);
-        fwbuf = tmpfwbuf;
-
-        /*Display rom patch info*/
-        patchHdr =  (P_PATCH_HEADER)fwbuf;
-        cDateTime = patchHdr->ucDateTime;
-        u2HwVer = patchHdr->u2HwVer;
-        u2SwVer = patchHdr->u2SwVer;
-        u4PatchVer = patchHdr->u4PatchVer;
-
-        BTMTK_DBG("=====================================\n");
-        BTMTK_INFO("===============Patch Info============\n");
-        BTMTK_INFO("Built Time = %s\n", cDateTime);
-        BTMTK_INFO("Hw Ver = 0x%x\n",
-                  ((u2HwVer & 0x00ff) << 8) | ((u2HwVer & 0xff00) >> 8));
-        BTMTK_INFO("Sw Ver = 0x%x\n",
-                  ((u2SwVer & 0x00ff) << 8) | ((u2SwVer & 0xff00) >> 8));
-        BTMTK_INFO("Patch Ver = 0x%04x\n",
-                  ((u4PatchVer & 0xff000000) >> 24) | ((u4PatchVer & 0x00ff0000) >>
-                                   16));
-        BTMTK_INFO("Platform = %c%c%c%c\n", patchHdr->ucPlatform[0],
-                  patchHdr->ucPlatform[1], patchHdr->ucPlatform[2], patchHdr->ucPlatform[3]);
-        BTMTK_INFO("Patch start addr = %02x\n", patchHdr->u2PatchStartAddr);
-        BTMTK_INFO("=====================================\n");
-
-
-        fwbuf += sizeof(PATCH_HEADER);
-        BTMTK_DBG("%s PATCH_HEADER size %zd\n", __func__, sizeof(PATCH_HEADER));
-        firmwarelen -= sizeof(PATCH_HEADER);
-
-
-
-        ret = btmtk_sdio_readl(0, &u32ReadCRValue);
-        BTMTK_INFO("%s read chipid =  %x\n", __func__, u32ReadCRValue);
-
-        /*Set interrupt output*/
-        ret = btmtk_sdio_writel(CHIER, FIRMWARE_INT|TX_FIFO_OVERFLOW |
-            FW_INT_IND_INDICATOR | TX_COMPLETE_COUNT |
-            TX_UNDER_THOLD | TX_EMPTY | RX_DONE);
-
-        if (ret) {
-            BTMTK_ERR("Set interrupt output fail(%d)\n", ret);
-            ret = -EIO;
-                    goto done;
-        }
-
-        /*enable interrupt output*/
-        ret = btmtk_sdio_writel(CHLPCR, C_FW_INT_EN_SET);
-
-
-
-        if (ret) {
-            BTMTK_ERR("enable interrupt output fail(%d)\n", ret);
-            ret = -EIO;
-                    goto done;
-        }
-
-        RedundantSize = firmwarelen;
-        BTMTK_DBG("%s firmwarelen %d\n", __func__, firmwarelen);
-
-
-        do {
-            bufferOffset = firmwarelen - RedundantSize;
-
-            if (RedundantSize == firmwarelen && PATCH_DOWNLOAD_SIZE <= RedundantSize)
-                ret = btmtk_send_rom_patch(fwbuf+bufferOffset, PATCH_DOWNLOAD_SIZE, SDIO_PATCH_DOWNLOAD_FIRST);
-            else if (RedundantSize == firmwarelen)
-                ret = btmtk_send_rom_patch(fwbuf+bufferOffset, RedundantSize, SDIO_PATCH_DOWNLOAD_FIRST);
-            else if (RedundantSize < PATCH_DOWNLOAD_SIZE) {
-                ret = btmtk_send_rom_patch(fwbuf+bufferOffset, RedundantSize, SDIO_PATCH_DOWNLOAD_END);
-                BTMTK_DBG("%s patch downoad last patch part\n", __func__);
-            } else
-                ret = btmtk_send_rom_patch(fwbuf+bufferOffset, PATCH_DOWNLOAD_SIZE, SDIO_PATCH_DOWNLOAD_CON);
-
-            RedundantSize -= PATCH_DOWNLOAD_SIZE;
-
-            if (ret) {
-                BTMTK_ERR("%s btmtk_send_rom_patch fail\n", __func__);
-                goto done;
-            }
-            BTMTK_DBG("%s RedundantSize %d", __func__, RedundantSize);
-            if (RedundantSize <= 0) {
-                BTMTK_DBG("%s patch downoad finish\n", __func__);
-                break;
-            }
-
-        } while (1);
-
-        btmtk_sdio_set_write_clear();
-
-
-        if (btmtk_sdio_need_load_rom_patch() == PATCH_READY)
-            BTMTK_INFO("%s patch is ready\n", __func__);
-
-
-        ret = btmtk_sdio_send_wmt_reset();
-
-        if (ret)
-            goto done;
-
-
-        ret = btmtk_sdio_bt_set_power(1);
-
-        if (ret){
-            ret = EINVAL;
-            goto done;
-        }
-
-        ret = btmtk_sdio_set_sleep();
-
+	ret = btmtk_sdio_set_sleep();
 
 done:
 
-        kfree(tmpfwbuf);
-            release_firmware(fw_firmware);
+	kfree(tmpfwbuf);
+	release_firmware(fw_firmware);
 
+	if (!ret)
+		pr_info("%s success\n", __func__);
+	else
+		pr_info("%s fail\n", __func__);
 
-
-
-        if (!ret)
-            BTMTK_INFO("%s success\n", __func__);
-        else
-            BTMTK_INFO("%s fail\n", __func__);
-
-
-        return ret;
+	return ret;
 }
 
+static void btmtk_sdio_for_code_style(void)
+{
+	pr_info("%s  vfs_fsync\n", __func__);
+
+#if SAVE_FW_DUMP_IN_KERNEL
+	if (fw_dump_file)
+		vfs_fsync(fw_dump_file, 0);
+#endif
+
+	if (fw_dump_file) {
+		pr_info("%s : close file  %s\n",
+			__func__, fw_dump_file_name);
+#if SAVE_FW_DUMP_IN_KERNEL
+		filp_close(fw_dump_file, NULL);
+/* #endif */
+		fw_dump_file = NULL;
+#endif
+		fw_is_doing_coredump = false;
+		fw_is_coredump_end_packet = true;
+	} else {
+		fw_is_doing_coredump = false;
+		pr_info("%s : fw_dump_file is NULL can't close file %s\n",
+			__func__, fw_dump_file_name);
+	}
+}
 
 static int btmtk_sdio_card_to_host(struct btmtk_private *priv)
 {
-        u16 buf_len = 0;
-        int ret = 0, num_blocks = 0, blksz = 0;
-        struct sk_buff *skb = NULL;
-        struct sk_buff *fops_skb = NULL;
-        u32 type;
-        u8 *payload = NULL;
-        u32 fourbalignment_len = 0;
-        struct btmtk_sdio_card *card = priv->btmtk_dev.card;
-        u32 dump_len = 0;
-        char *core_dump_end = NULL;
+	u16 buf_len = 0;
+	int ret = 0, num_blocks = 0, blksz = 0;
+	struct sk_buff *skb = NULL;
+	struct sk_buff *fops_skb = NULL;
+	u32 type;
+	u8 *payload = NULL;
+	u32 fourbalignment_len = 0;
+	struct btmtk_sdio_card *card = priv->btmtk_dev.card;
+	u32 dump_len = 0;
+	char *core_dump_end = NULL;
 
-        if (!card || !card->func) {
-                BTMTK_ERR("card or function or is NULL!");
-                ret = -EINVAL;
-                goto exit;
-        }
+	if (!card || !card->func) {
+		pr_err("card or function or is NULL!\n");
+		ret = -EINVAL;
+		goto exit;
+	}
 
 #if SUPPORT_FW_DUMP
-    fw_is_coredump_end_packet = false;
-    if (rx_length > (SDIO_HEADER_LEN+8)) {
-        if (rxbuf[SDIO_HEADER_LEN] == 0x80) {
-            dump_len = (rxbuf[SDIO_HEADER_LEN+1]&0x0F)*256 + rxbuf[SDIO_HEADER_LEN+2];
-            BTMTK_WARN("%s get dump length %d", __func__, dump_len);
-            if (rxbuf[SDIO_HEADER_LEN+5] == 0x6F && rxbuf[SDIO_HEADER_LEN+6] == 0xFC) {
+	fw_is_coredump_end_packet = false;
+	if (rx_length > (SDIO_HEADER_LEN+8)) {
+		if (rxbuf[SDIO_HEADER_LEN] == 0x80) {
+			dump_len = (rxbuf[SDIO_HEADER_LEN+1]&0x0F)*256
+					+ rxbuf[SDIO_HEADER_LEN+2];
+			pr_warn("%s get dump length %d\n", __func__, dump_len);
+			if (rxbuf[SDIO_HEADER_LEN+5] == 0x6F &&
+					rxbuf[SDIO_HEADER_LEN+6] == 0xFC) {
 
-                fw_is_doing_coredump = true;
+				fw_is_doing_coredump = true;
 
-                #if SAVE_FW_DUMP_IN_KERNEL
-                if ((fw_dump_total_read_size == 0) && (fw_dump_file == NULL)) {
-                    if(current_fwdump_file_number == probe_counter)
-                        goto FW_DONE;
-                //#if SAVE_FW_DUMP_IN_KERNEL
-                    memset(fw_dump_file_name, 0, sizeof(fw_dump_file_name));
-                    snprintf(fw_dump_file_name, sizeof(fw_dump_file_name),
-                            FW_DUMP_FILE_NAME"_%d", probe_counter);
-                    BTMTK_WARN("%s : open file %s\n", __func__, fw_dump_file_name);
-                    fw_dump_file = filp_open(fw_dump_file_name, O_RDWR | O_CREAT, 0644);
-                    if (fw_dump_file){
-                        current_fwdump_file_number =  probe_counter;
-                        BTMTK_WARN("%s : open file %s success\n", __func__, fw_dump_file_name);
-                    }
-                    else
-                        BTMTK_WARN("%s : open file %s fail\n", __func__, fw_dump_file_name);
-                //#endif
+				#if SAVE_FW_DUMP_IN_KERNEL
+				if ((fw_dump_total_read_size == 0)
+						&& (fw_dump_file == NULL)) {
+					if (current_fwdump_file_number
+							== probe_counter)
+						goto FW_DONE;
+					/* #if SAVE_FW_DUMP_IN_KERNEL */
+					memset(fw_dump_file_name, 0,
+						sizeof(fw_dump_file_name));
+					snprintf(fw_dump_file_name,
+						sizeof(fw_dump_file_name),
+						FW_DUMP_FILE_NAME"_%d",
+						probe_counter);
+					pr_warn("%s : open file %s\n",
+							__func__,
+							fw_dump_file_name);
+					fw_dump_file = filp_open(
+							fw_dump_file_name,
+							O_RDWR | O_CREAT,
+							0644);
+					if (fw_dump_file) {
+						current_fwdump_file_number =
+							probe_counter;
+						pr_warn("%s : open file %s success\n",
+							__func__,
+							fw_dump_file_name);
+					} else
+						pr_warn("%s : open file %s fail\n",
+							__func__,
+							fw_dump_file_name);
+				/* #endif */
+				}
+				#endif
+				fw_dump_total_read_size += dump_len;
 
-                }
-                #endif
-                fw_dump_total_read_size += dump_len;
+				#if SAVE_FW_DUMP_IN_KERNEL
+				if (fw_dump_file->f_op == NULL)
+					pr_warn("%s : fw_dump_file->f_op is NULL\n",
+								__func__);
 
-                #if SAVE_FW_DUMP_IN_KERNEL
-                if (fw_dump_file->f_op == NULL)
-                    BTMTK_WARN("%s : fw_dump_file->f_op is NULL\n", __func__);
-
-                if (fw_dump_file->f_op->write == NULL)
-                    BTMTK_WARN("%s : fw_dump_file->f_op->write is NULL\n", __func__);
+				if (fw_dump_file->f_op->write == NULL)
+					pr_warn("%s : fw_dump_file->f_op->write is NULL\n",
+								__func__);
 
 
-                if ((dump_len > 0) && fw_dump_file)
-                    fw_dump_file->f_op->write(fw_dump_file, &rxbuf[SDIO_HEADER_LEN+10], dump_len, &fw_dump_file->f_pos);
+				if ((dump_len > 0) && fw_dump_file)
+					fw_dump_file->f_op->write(fw_dump_file,
+						&rxbuf[SDIO_HEADER_LEN+10],
+						dump_len,
+						&fw_dump_file->f_pos);
 
-                #endif
+				#endif
 
-                if (dump_len >= sizeof(FW_DUMP_END_EVENT)) {
-                    core_dump_end = strstr(&rxbuf[SDIO_HEADER_LEN+10], FW_DUMP_END_EVENT);
-                    BTMTK_WARN("%s : core_dump_end %d\n", __func__, SDIO_HEADER_LEN);
-                    if (core_dump_end) {
-                        BTMTK_INFO("%s  vfs_fsync ", __func__);
-
-                        #if SAVE_FW_DUMP_IN_KERNEL
-                        if(fw_dump_file)
-                            vfs_fsync(fw_dump_file, 0);
-                        #endif
-
-                        if (fw_dump_file) {
-                            BTMTK_INFO("%s : close file  %s\n", __func__, fw_dump_file_name);
-                            #if SAVE_FW_DUMP_IN_KERNEL
-                            filp_close(fw_dump_file, NULL);
-                            //#endif
-                            fw_dump_file = NULL;
-                            #endif
-                            fw_is_doing_coredump = false;
-                            fw_is_coredump_end_packet = true;
-                        } else{
-                            fw_is_doing_coredump = false;
-                            BTMTK_INFO("%s : fw_dump_file is NULL can't close file %s", __func__, fw_dump_file_name);
-                        }
-                    }
-
-                }
-
-            }
-
-        }
-    }
+				if (dump_len >= sizeof(FW_DUMP_END_EVENT)) {
+					core_dump_end = strstr(
+						&rxbuf[SDIO_HEADER_LEN+10],
+						FW_DUMP_END_EVENT);
+					pr_warn("%s : core_dump_end %d\n",
+						__func__, SDIO_HEADER_LEN);
+					if (core_dump_end)
+						btmtk_sdio_for_code_style();
+				}
+			}
+		}
+	}
 #endif
 
 #if SAVE_FW_DUMP_IN_KERNEL
 FW_DONE:
 #endif
 
-        type = rxbuf[MTK_SDIO_PACKET_HEADER_SIZE];
+	type = rxbuf[MTK_SDIO_PACKET_HEADER_SIZE];
 
+	btmtk_print_buffer_conent(rxbuf, rx_length);
 
-        btmtk_print_buffer_conent(rxbuf, rx_length);
+	/* Read the length of data to be transferred , not include pkt type*/
+	buf_len = rx_length-(MTK_SDIO_PACKET_HEADER_SIZE+1);
 
-        /* Read the length of data to be transferred , not include pkt type*/
-        buf_len = rx_length-(MTK_SDIO_PACKET_HEADER_SIZE+1);
+	pr_debug("buf_len : %d\n", buf_len);
+	if (rx_length <= SDIO_HEADER_LEN) {
+		pr_warn("invalid packet length: %d\n", buf_len);
+		ret = -EINVAL;
+		goto exit;
+	}
 
+	/* Allocate buffer */
+	/* rx_length = num_blocks * blksz + BTSDIO_DMA_ALIGN*/
+	skb = bt_skb_alloc(rx_length, GFP_ATOMIC);
+	if (skb == NULL) {
+		pr_warn("No free skb\n");
+		ret = -ENOMEM;
+		goto exit;
+	}
 
-        BTMTK_DBG("buf_len : %d", buf_len);
-        if (rx_length <= SDIO_HEADER_LEN) {
-                BTMTK_WARN("invalid packet length: %d", buf_len);
-                ret = -EINVAL;
-                goto exit;
-        }
+	payload = rxbuf;
+	pr_debug("%s rx_length %d,buf_len %d\n", __func__, rx_length, buf_len);
 
-        /* Allocate buffer */
-        skb = bt_skb_alloc(rx_length/*num_blocks * blksz + BTSDIO_DMA_ALIGN*/, GFP_ATOMIC);
-        if (skb == NULL) {
-                BTMTK_WARN("No free skb");
-                ret = -ENOMEM;
-                goto exit;
-        }
+	memcpy(skb->data, &rxbuf[MTK_SDIO_PACKET_HEADER_SIZE+1], buf_len);
 
-        payload = rxbuf;
-        BTMTK_DBG("%s rx_length %d,buf_len %d", __func__, rx_length, buf_len);
+	switch (type) {
+	case HCI_ACLDATA_PKT:
+		pr_debug("%s data[2] 0x%02x, data[3] 0x%02x\n",
+				__func__, skb->data[2], skb->data[3]);
+		buf_len = skb->data[2] + skb->data[3]*256 + 4;
+		pr_debug("%s acl buf_len %d\n", __func__, buf_len);
+		break;
+	case HCI_SCODATA_PKT:
+		buf_len = skb->data[3] + 3;
+		break;
+	case HCI_EVENT_PKT:
+		buf_len = skb->data[1] + 2;
+		break;
+	}
 
-        memcpy(skb->data, &rxbuf[MTK_SDIO_PACKET_HEADER_SIZE+1], buf_len);
+	lock_unsleepable_lock(&(metabuffer.spin_lock));
+	if (priv->adapter->fops_mode &
+			(!fw_is_doing_coredump) &
+			(!fw_is_coredump_end_packet)) {
+		fops_skb = bt_skb_alloc(buf_len, GFP_ATOMIC);
+		bt_cb(fops_skb)->pkt_type = type;
+		memcpy(fops_skb->data, skb->data, buf_len);
+		fops_skb->len = buf_len;
+		skb_queue_tail(&g_priv->adapter->fops_queue, fops_skb);
+		pr_debug("%s push fops_queue\n", __func__);
+		if (skb_queue_empty(&g_priv->adapter->fops_queue))
+			pr_info("%s fops_queue is empty\n", __func__);
 
-        switch (type) {
-        case HCI_ACLDATA_PKT:
-                BTMTK_DBG("%s data[2] 0x%02x, data[3] 0x%02x\n", __func__, skb->data[2], skb->data[3]);
-                buf_len = skb->data[2] + skb->data[3]*256 + 4;
-                BTMTK_DBG("%s acl buf_len %d\n", __func__, buf_len);
-                break;
-        case HCI_SCODATA_PKT:
-                buf_len = skb->data[3] + 3;
-                break;
-        case HCI_EVENT_PKT:
-                buf_len = skb->data[1] + 2;
-                break;
-        }
+		kfree_skb(skb);
+		unlock_unsleepable_lock(&(metabuffer.spin_lock));
+		pr_debug("%s call inq wake up\n", __func__);
+		wake_up_interruptible(&inq);
+		goto exit;
+	}
+	unlock_unsleepable_lock(&(metabuffer.spin_lock));
 
-        lock_unsleepable_lock(&(metabuffer.spin_lock));
-        if (priv->adapter->fops_mode & (!fw_is_doing_coredump) & (!fw_is_coredump_end_packet)) {
-            fops_skb = bt_skb_alloc(buf_len, GFP_ATOMIC);
-            bt_cb(fops_skb)->pkt_type = type;
-            memcpy(fops_skb->data, skb->data, buf_len);
-            fops_skb->len = buf_len;
-            skb_queue_tail(&g_priv->adapter->fops_queue, fops_skb);
-            BTMTK_DBG("%s push fops_queue\n", __func__);
-            if (skb_queue_empty(&g_priv->adapter->fops_queue))
-                BTMTK_INFO("%s fops_queue is empty\n", __func__);
+	switch (type) {
+	case HCI_ACLDATA_PKT:
+	case HCI_SCODATA_PKT:
+	case HCI_EVENT_PKT:
+		bt_cb(skb)->pkt_type = type;
+		skb_put(skb, buf_len);
+		break;
 
-            kfree_skb(skb);
-            unlock_unsleepable_lock(&(metabuffer.spin_lock));
-            BTMTK_DBG("%s call inq wake up\n", __func__);
-            wake_up_interruptible(&inq);
-            goto exit;
-        }
-        unlock_unsleepable_lock(&(metabuffer.spin_lock));
+	case MTK_VENDOR_PKT:
+		pr_warn("%s, MTK_VENDOR_PKT no handle now, break\n", __func__);
+		kfree_skb(skb);
+		break;
 
-        switch (type) {
-        case HCI_ACLDATA_PKT:
-        case HCI_SCODATA_PKT:
-        case HCI_EVENT_PKT:
-                bt_cb(skb)->pkt_type = type;
-
-                skb_put(skb, buf_len);
-
-                break;
-
-        case MTK_VENDOR_PKT:
-                BTMTK_WARN("%s, MTK_VENDOR_PKT no handle now, break\n", __func__);
-                kfree_skb(skb);
-                break;
-
-                bt_cb(skb)->pkt_type = HCI_VENDOR_PKT;
-                skb_put(skb, buf_len);
-                skb_pull(skb, SDIO_HEADER_LEN);
-
+		bt_cb(skb)->pkt_type = HCI_VENDOR_PKT;
+		skb_put(skb, buf_len);
+		skb_pull(skb, SDIO_HEADER_LEN);
 
 /*
 * if kernel < 3, 11, 0, should use hci_recv_frame(skb);
 */
 
-                break;
+		break;
 
-        default:
-                BTMTK_WARN("Unknown packet type:%d", type);
-                BTMTK_WARN("hex: %*ph", blksz * num_blocks, payload);
+	default:
+		pr_warn("Unknown packet type:%d\n", type);
+		pr_warn("hex: %*ph\n", blksz * num_blocks, payload);
 
-                kfree_skb(skb);
-                skb = NULL;
-                break;
-        }
+		kfree_skb(skb);
+		skb = NULL;
+		break;
+	}
 
 exit:
-        if (ret) {
-                BTMTK_DBG("%s fail free skb\n", __func__);
-                kfree_skb(skb);
-        }
+	if (ret) {
+		pr_debug("%s fail free skb\n", __func__);
+		kfree_skb(skb);
+	}
 
 
-        buf_len += 1;
-        if (buf_len%4)
-            fourbalignment_len = buf_len + 4 - buf_len%4;
-        else
-            fourbalignment_len = buf_len;
+	buf_len += 1;
+	if (buf_len%4)
+		fourbalignment_len = buf_len + 4 - buf_len%4;
+	else
+		fourbalignment_len = buf_len;
 
-        rx_length -= fourbalignment_len;
+	rx_length -= fourbalignment_len;
 
-        if (rx_length > (MTK_SDIO_PACKET_HEADER_SIZE)) {
-            memcpy(&rxbuf[MTK_SDIO_PACKET_HEADER_SIZE],
-            &rxbuf[MTK_SDIO_PACKET_HEADER_SIZE+fourbalignment_len],
-            rx_length-MTK_SDIO_PACKET_HEADER_SIZE);
-        }
+	if (rx_length > (MTK_SDIO_PACKET_HEADER_SIZE)) {
+		memcpy(&rxbuf[MTK_SDIO_PACKET_HEADER_SIZE],
+		&rxbuf[MTK_SDIO_PACKET_HEADER_SIZE+fourbalignment_len],
+		rx_length-MTK_SDIO_PACKET_HEADER_SIZE);
+	}
 
-        BTMTK_DBG("%s ret %d, rx_length, %d,fourbalignment_len %d <--\n", __func__, ret, rx_length, fourbalignment_len);
+	pr_debug("%s ret %d, rx_length, %d,fourbalignment_len %d <--\n", __func__, ret, rx_length, fourbalignment_len);
 
-        return ret;
+	return ret;
 }
 
-static int btmtk_sdio_process_int_status(struct btmtk_private *priv)
+static int btmtk_sdio_process_int_status(
+		struct btmtk_private *priv)
 {
-        int ret = 0;
-        u32 u32rxdatacount = 0;
-        u32 u32ReadCRValue = 0;
+	int ret = 0;
+	u32 u32rxdatacount = 0;
+	u32 u32ReadCRValue = 0;
 
-        ret = btmtk_sdio_readl(CHISR, &u32ReadCRValue);
-        BTMTK_DBG("%s check TX_EMPTY CHISR 0x%08x\n", __func__, u32ReadCRValue);
-        if (TX_EMPTY&u32ReadCRValue) {
-            ret = btmtk_sdio_writel(CHISR, (TX_EMPTY | TX_COMPLETE_COUNT));
-            priv->btmtk_dev.tx_dnld_rdy = true;
-            BTMTK_DBG("%s set tx_dnld_rdy 1\n", __func__);
-        }
+	ret = btmtk_sdio_readl(CHISR, &u32ReadCRValue);
+	pr_debug("%s check TX_EMPTY CHISR 0x%08x\n", __func__, u32ReadCRValue);
+	if (TX_EMPTY&u32ReadCRValue) {
+		ret = btmtk_sdio_writel(CHISR, (TX_EMPTY | TX_COMPLETE_COUNT));
+		priv->btmtk_dev.tx_dnld_rdy = true;
+		pr_debug("%s set tx_dnld_rdy 1\n", __func__);
+	}
 
-        if (RX_DONE&u32ReadCRValue)
-            ret = btmtk_sdio_recv_rx_data();
+	if (RX_DONE&u32ReadCRValue)
+		ret = btmtk_sdio_recv_rx_data();
 
+	if (ret == 0)
+		while (rx_length > (MTK_SDIO_PACKET_HEADER_SIZE)) {
+			btmtk_sdio_card_to_host(priv);
+			u32rxdatacount++;
+			pr_debug("%s u32rxdatacount %d\n",
+				__func__, u32rxdatacount);
+		}
 
-        if (ret == 0)
-            while (rx_length > (MTK_SDIO_PACKET_HEADER_SIZE)) {
-                btmtk_sdio_card_to_host(priv);
-                u32rxdatacount++;
-                BTMTK_DBG("%s u32rxdatacount %d\n", __func__, u32rxdatacount);
-            }
+	btmtk_sdio_enable_interrupt(1);
 
-        btmtk_sdio_enable_interrupt(1);
-
-        return 0;
+	return 0;
 }
 
-
 static void btmtk_sdio_interrupt(struct sdio_func *func)
 {
-    struct btmtk_private *priv;
-    struct btmtk_sdio_card *card;
+	struct btmtk_private *priv;
+	struct btmtk_sdio_card *card;
+
+	card = sdio_get_drvdata(func);
+
+	if (!card)
+		return;
 
 
-    card = sdio_get_drvdata(func);
+	if (!card->priv)
+		return;
 
-    if (!card)
-            return;
+	priv = card->priv;
+	btmtk_sdio_enable_interrupt(0);
 
-
-    if (!card->priv)
-            return;
-
-    priv = card->priv;
-    btmtk_sdio_enable_interrupt(0);
-
-
-    btmtk_interrupt(priv);
-
-    return;
+	btmtk_interrupt(priv);
 }
 
 static int btmtk_sdio_register_dev(struct btmtk_sdio_card *card)
 {
-        struct sdio_func *func;
-        u32    u32ReadCRValue = 0;
-        u8 reg;
-        int ret = 0;
+	struct sdio_func *func;
+	u32	u32ReadCRValue = 0;
+	u8 reg;
+	int ret = 0;
 
-        if (!card || !card->func) {
-                BTMTK_ERR("Error: card or function is NULL!");
-                ret = -EINVAL;
-                goto failed;
-        }
+	if (!card || !card->func) {
+		pr_err("Error: card or function is NULL!\n");
+		ret = -EINVAL;
+		goto failed;
+	}
 
-        func = card->func;
+	func = card->func;
 
-        sdio_claim_host(func);
+	sdio_claim_host(func);
 
-        ret = sdio_enable_func(func);
-        if (ret) {
-                BTMTK_ERR("sdio_enable_func() failed: ret=%d", ret);
-                ret = -EIO;
-                goto release_host;
-        }
+	ret = sdio_enable_func(func);
+	if (ret) {
+		pr_err("sdio_enable_func() failed: ret=%d\n", ret);
+		ret = -EIO;
+		goto release_host;
+	}
 
+	btmtk_sdio_readb(SDIO_CCCR_IENx, &u32ReadCRValue);
+	pr_info("before claim irq read SDIO_CCCR_IENx %x, func num %d\n",
+		u32ReadCRValue, func->num);
 
-        btmtk_sdio_readb(SDIO_CCCR_IENx, &u32ReadCRValue);
-        BTMTK_INFO("before claim irq read SDIO_CCCR_IENx %x, func num %d\n", u32ReadCRValue, func->num);
+	ret = sdio_claim_irq(func, btmtk_sdio_interrupt);
+	if (ret) {
+		pr_err("sdio_claim_irq failed: ret=%d\n", ret);
+		ret = -EIO;
+		goto disable_func;
+	}
+	pr_info("sdio_claim_irq success: ret=%d\n", ret);
 
+	btmtk_sdio_readb(SDIO_CCCR_IENx, &u32ReadCRValue);
+	pr_info("after claim irq read SDIO_CCCR_IENx %x\n", u32ReadCRValue);
 
-        ret = sdio_claim_irq(func, btmtk_sdio_interrupt);
-        if (ret) {
-                BTMTK_ERR("sdio_claim_irq failed: ret=%d", ret);
-                ret = -EIO;
-                goto disable_func;
-        }
-        BTMTK_INFO("sdio_claim_irq success: ret=%d", ret);
+	ret = sdio_set_block_size(card->func, SDIO_BLOCK_SIZE);
+	if (ret) {
+		pr_err("cannot set SDIO block size\n");
+		ret = -EIO;
+		goto release_irq;
+	}
 
-        btmtk_sdio_readb(SDIO_CCCR_IENx, &u32ReadCRValue);
-        BTMTK_INFO("after claim irq read SDIO_CCCR_IENx %x\n", u32ReadCRValue);
+	reg = sdio_readb(func, card->reg->io_port_0, &ret);
+	if (ret < 0) {
+		ret = -EIO;
+		goto release_irq;
+	}
 
-        ret = sdio_set_block_size(card->func, SDIO_BLOCK_SIZE);
-        if (ret) {
-                BTMTK_ERR("cannot set SDIO block size");
-                ret = -EIO;
-                goto release_irq;
-        }
+	card->ioport = reg;
 
-        reg = sdio_readb(func, card->reg->io_port_0, &ret);
-        if (ret < 0) {
-                ret = -EIO;
-                goto release_irq;
-        }
+	reg = sdio_readb(func, card->reg->io_port_1, &ret);
+	if (ret < 0) {
+		ret = -EIO;
+		goto release_irq;
+	}
 
-        card->ioport = reg;
+	card->ioport |= (reg << 8);
 
-        reg = sdio_readb(func, card->reg->io_port_1, &ret);
-        if (ret < 0) {
-                ret = -EIO;
-                goto release_irq;
-        }
+	reg = sdio_readb(func, card->reg->io_port_2, &ret);
+	if (ret < 0) {
+		ret = -EIO;
+		goto release_irq;
+	}
 
-        card->ioport |= (reg << 8);
+	card->ioport |= (reg << 16);
 
-        reg = sdio_readb(func, card->reg->io_port_2, &ret);
-        if (ret < 0) {
-                ret = -EIO;
-                goto release_irq;
-        }
+	pr_info("SDIO FUNC%d IO port: 0x%x\n", func->num, card->ioport);
 
-        card->ioport |= (reg << 16);
+	if (card->reg->int_read_to_clear) {
+		reg = sdio_readb(func, card->reg->host_int_rsr, &ret);
+		if (ret < 0) {
+			ret = -EIO;
+			goto release_irq;
+		}
+		sdio_writeb(func, reg | 0x3f, card->reg->host_int_rsr, &ret);
+		if (ret < 0) {
+			ret = -EIO;
+			goto release_irq;
+		}
 
-        BTMTK_INFO("SDIO FUNC%d IO port: 0x%x", func->num, card->ioport);
+		reg = sdio_readb(func, card->reg->card_misc_cfg, &ret);
+		if (ret < 0) {
+			ret = -EIO;
+			goto release_irq;
+		}
+		sdio_writeb(func, reg | 0x10, card->reg->card_misc_cfg, &ret);
+		if (ret < 0) {
+			ret = -EIO;
+			goto release_irq;
+		}
+	}
 
-        if (card->reg->int_read_to_clear) {
-                reg = sdio_readb(func, card->reg->host_int_rsr, &ret);
-                if (ret < 0) {
-                        ret = -EIO;
-                        goto release_irq;
-                }
-                sdio_writeb(func, reg | 0x3f, card->reg->host_int_rsr, &ret);
-                if (ret < 0) {
-                        ret = -EIO;
-                        goto release_irq;
-                }
+	sdio_set_drvdata(func, card);
 
-                reg = sdio_readb(func, card->reg->card_misc_cfg, &ret);
-                if (ret < 0) {
-                        ret = -EIO;
-                        goto release_irq;
-                }
-                sdio_writeb(func, reg | 0x10, card->reg->card_misc_cfg, &ret);
-                if (ret < 0) {
-                        ret = -EIO;
-                        goto release_irq;
-                }
-        }
+	sdio_release_host(func);
 
-        sdio_set_drvdata(func, card);
-
-        sdio_release_host(func);
-
-        return 0;
+	return 0;
 
 release_irq:
-        sdio_release_irq(func);
+	sdio_release_irq(func);
 
 disable_func:
-        sdio_disable_func(func);
+	sdio_disable_func(func);
 
 release_host:
-        sdio_release_host(func);
+	sdio_release_host(func);
 
 failed:
-        BTMTK_INFO("%s fail\n", __func__);
-        return ret;
+	pr_info("%s fail\n", __func__);
+	return ret;
 }
 
 static int btmtk_sdio_unregister_dev(struct btmtk_sdio_card *card)
 {
-        if (card && card->func) {
-                sdio_claim_host(card->func);
-                sdio_release_irq(card->func);
-                sdio_disable_func(card->func);
-                sdio_release_host(card->func);
-                sdio_set_drvdata(card->func, NULL);
-        }
+	if (card && card->func) {
+		sdio_claim_host(card->func);
+		sdio_release_irq(card->func);
+		sdio_disable_func(card->func);
+		sdio_release_host(card->func);
+		sdio_set_drvdata(card->func, NULL);
+	}
 
-        return 0;
+	return 0;
 }
 
 static int btmtk_sdio_enable_host_int(struct btmtk_sdio_card *card)
 {
-        int ret;
-        u32 read_data = 0;
+	int ret;
+	u32 read_data = 0;
 
-        if (!card || !card->func)
-                return -EINVAL;
+	if (!card || !card->func)
+		return -EINVAL;
 
-        sdio_claim_host(card->func);
+	sdio_claim_host(card->func);
 
-        ret = btmtk_sdio_enable_host_int_mask(card, HIM_ENABLE);
+	ret = btmtk_sdio_enable_host_int_mask(card, HIM_ENABLE);
 
-        btmtk_sdio_get_rx_unit(card);
+	btmtk_sdio_get_rx_unit(card);
 
-if (0) {
-                typedef int (*fp_sdio_hook)(struct mmc_host *host, unsigned int width);
-                fp_sdio_hook func_sdio_hook = (fp_sdio_hook) kallsyms_lookup_name("mmc_set_bus_width");
-                unsigned char data = 0;
+	if (0) {
+		typedef int (*fp_sdio_hook)(struct mmc_host *host,
+						unsigned int width);
+		fp_sdio_hook func_sdio_hook =
+			(fp_sdio_hook)kallsyms_lookup_name("mmc_set_bus_width");
+		unsigned char data = 0;
 
-                data = sdio_f0_readb(card->func, SDIO_CCCR_IF, &ret);
-                if (ret)
-                    BTMTK_INFO("%s sdio_f0_readb ret %d\n", __func__, ret);
+		data = sdio_f0_readb(card->func, SDIO_CCCR_IF, &ret);
+		if (ret)
+			pr_info("%s sdio_f0_readb ret %d\n", __func__, ret);
 
-                BTMTK_INFO("%s sdio_f0_readb data 0x%X!\n", __func__, data);
+		pr_info("%s sdio_f0_readb data 0x%X!\n", __func__, data);
 
-                data  &= ~SDIO_BUS_WIDTH_MASK;
-                data  |= SDIO_BUS_ASYNC_INT;
-                card->func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
+		data  &= ~SDIO_BUS_WIDTH_MASK;
+		data  |= SDIO_BUS_ASYNC_INT;
+		card->func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
 
-                sdio_f0_writeb(card->func, data, SDIO_CCCR_IF, &ret);
-                if (ret)
-                    BTMTK_INFO("%s sdio_f0_writeb ret %d\n", __func__, ret);
+		sdio_f0_writeb(card->func, data, SDIO_CCCR_IF, &ret);
+		if (ret)
+			pr_info("%s sdio_f0_writeb ret %d\n", __func__, ret);
 
-                BTMTK_INFO("%s func_sdio_hook at 0x%p!\n", __func__, func_sdio_hook);
-                if (func_sdio_hook)
-                    func_sdio_hook(card->func->card->host, MMC_BUS_WIDTH_1);
+		pr_info("%s func_sdio_hook at 0x%p!\n",
+			__func__, func_sdio_hook);
+		if (func_sdio_hook)
+			func_sdio_hook(card->func->card->host, MMC_BUS_WIDTH_1);
 
+		data = sdio_f0_readb(card->func, SDIO_CCCR_IF, &ret);
+		if (ret)
+			pr_info("%s sdio_f0_readb 2 ret %d\n",
+				__func__, ret);
 
-                data = sdio_f0_readb(card->func, SDIO_CCCR_IF, &ret);
-                if (ret)
-                BTMTK_INFO("%s sdio_f0_readb 2 ret %d\n", __func__, ret);
+		pr_info("%s sdio_f0_readb2 data 0x%X\n", __func__, data);
+	}
 
-
-                BTMTK_INFO("%s sdio_f0_readb2 data 0x%X\n", __func__, data);
-}
-
-        sdio_release_host(card->func);
-
+	sdio_release_host(card->func);
 
 /*
-* workaround for some platfrom no host clock sometimes
+* workaround for some platform no host clock sometimes
 */
 
-        btmtk_sdio_readl(CSDIOCSR, &read_data);
-        BTMTK_INFO("%s read CSDIOCSR is 0x%X\n", __func__, read_data);
-        read_data |= 0x4;
-        btmtk_sdio_writel(CSDIOCSR, read_data);
-        BTMTK_INFO("%s write CSDIOCSR is 0x%X\n", __func__, read_data);
+	btmtk_sdio_readl(CSDIOCSR, &read_data);
+	pr_info("%s read CSDIOCSR is 0x%X\n", __func__, read_data);
+	read_data |= 0x4;
+	btmtk_sdio_writel(CSDIOCSR, read_data);
+	pr_info("%s write CSDIOCSR is 0x%X\n", __func__, read_data);
 
-
-
-        return ret;
+	return ret;
 }
 
 static int btmtk_sdio_disable_host_int(struct btmtk_sdio_card *card)
 {
-        int ret;
+	int ret;
 
-        if (!card || !card->func)
-                return -EINVAL;
+	if (!card || !card->func)
+		return -EINVAL;
 
-        sdio_claim_host(card->func);
+	sdio_claim_host(card->func);
 
-        ret = btmtk_sdio_disable_host_int_mask(card, HIM_DISABLE);
+	ret = btmtk_sdio_disable_host_int_mask(card, HIM_DISABLE);
 
-        sdio_release_host(card->func);
+	sdio_release_host(card->func);
 
-        return ret;
+	return ret;
 }
 
 static int btmtk_sdio_host_to_card(struct btmtk_private *priv,
-                                u8 *payload, u16 nb)
+				u8 *payload, u16 nb)
 {
-        struct btmtk_sdio_card *card = priv->btmtk_dev.card;
-        int ret = 0;
-        int i = 0;
-        u8 MultiBluckCount = 0;
-        u8 redundant = 0;
-        if (payload != txbuf){
-            memset(txbuf,0,MTK_TXDATA_SIZE);
-            memcpy(txbuf,payload,nb);
-        }
+	struct btmtk_sdio_card *card = priv->btmtk_dev.card;
+	int ret = 0;
+	int i = 0;
+	u8 MultiBluckCount = 0;
+	u8 redundant = 0;
+	if (payload != txbuf) {
+		memset(txbuf, 0, MTK_TXDATA_SIZE);
+		memcpy(txbuf, payload, nb);
+	}
 
-        if (!card || !card->func) {
-                BTMTK_ERR("card or function is NULL!");
-                return -EINVAL;
-        }
+	if (!card || !card->func) {
+		pr_err("card or function is NULL!\n");
+		return -EINVAL;
+	}
 
-        MultiBluckCount = nb/SDIO_BLOCK_SIZE;
-        redundant = nb % SDIO_BLOCK_SIZE;
+	MultiBluckCount = nb/SDIO_BLOCK_SIZE;
+	redundant = nb % SDIO_BLOCK_SIZE;
 
-        if (redundant)
-           nb = (MultiBluckCount+1)*SDIO_BLOCK_SIZE;
+	if (redundant)
+		nb = (MultiBluckCount+1)*SDIO_BLOCK_SIZE;
 
+	if (nb < 16)
+		btmtk_print_buffer_conent(txbuf, nb);
+	else
+		btmtk_print_buffer_conent(txbuf, 16);
 
-       
+	do {
+		/* Transfer data to card */
+		sdio_claim_host(card->func);
+		ret = sdio_writesb(card->func, CTDR, txbuf, nb);
+		sdio_release_host(card->func);
+		if (ret < 0) {
+			i++;
+			pr_err("i=%d writesb failed: %d\n", i, ret);
+			pr_err("hex: %*ph\n", nb, txbuf);
+			ret = -EIO;
+			if (i > MAX_WRITE_IOMEM_RETRY)
+				goto exit;
+		}
+	} while (ret);
 
-       if (nb < 16)
-            btmtk_print_buffer_conent(txbuf, nb);
-       else
-            btmtk_print_buffer_conent(txbuf, 16);
+	if (priv)
+		priv->btmtk_dev.tx_dnld_rdy = false;
 
-       do {
-                 /* Transfer data to card */
-                 sdio_claim_host(card->func);
-                 ret = sdio_writesb(card->func, CTDR, txbuf,
-                                    nb);
-                 sdio_release_host(card->func);
-                 if (ret < 0) {
-                         i++;
-                         BTMTK_ERR("i=%d writesb failed: %d", i, ret);
-                         BTMTK_ERR("hex: %*ph", nb, txbuf);
-                         ret = -EIO;
-                         if (i > MAX_WRITE_IOMEM_RETRY)
-                                 goto exit;
-                 }
-         } while (ret);
+exit:
+	return ret;
+}
 
-         if (priv)
-            priv->btmtk_dev.tx_dnld_rdy = false;
+static int btmtk_sdio_download_fw(struct btmtk_sdio_card *card)
+{
+	int ret;
 
- exit:
-         
+	pr_info("%s begin\n", __func__);
+	if (!card || !card->func) {
+		pr_err("card or function is NULL!\n");
+		return -EINVAL;
+	}
 
+	sdio_claim_host(card->func);
 
-         return ret;
- }
+	if (btmtk_sdio_download_rom_patch(card)) {
+		pr_err("Failed to download firmware!\n");
+		ret = -EIO;
+		goto done;
+	}
 
- static int btmtk_sdio_download_fw(struct btmtk_sdio_card *card)
- {
-         int ret;
+	/*
+	 * winner or not, with this test the FW synchronizes
+	 * when the
+	 * module can continue its initialization
+	 */
+	sdio_release_host(card->func);
 
-         BTMTK_INFO("%s begin", __func__);
-         if (!card || !card->func) {
-                 BTMTK_ERR("card or function is NULL!");
-                 return -EINVAL;
-         }
+	return 0;
+done:
+	sdio_release_host(card->func);
+	return ret;
+}
 
+static int btmtk_sdio_probe(struct sdio_func *func,
+					const struct sdio_device_id *id)
+{
+	int ret = 0;
+	struct btmtk_private *priv = NULL;
+	struct btmtk_sdio_card *card = NULL;
+	struct btmtk_sdio_device *data = (void *) id->driver_data;
+	u32 u32ReadCRValue = 0;
 
+	probe_counter++;
+	pr_info("%s Mediatek Bluetooth driver Version=%s\n",
+			__func__, VERSION);
+	pr_info("vendor=0x%x, device=0x%x, class=%d, fn=%d, support func_num %d\n",
+			id->vendor, id->device, id->class,
+			func->num, data->reg->func_num);
 
-         sdio_claim_host(card->func);
+	if (func->num != data->reg->func_num) {
+		pr_info("func num is not match\n");
+		return -ENODEV;
+	}
 
-         if (btmtk_sdio_download_rom_patch(card)) {
-                         BTMTK_ERR("Failed to download firmware!");
-                         ret = -EIO;
-                         goto done;
-         }
+	card = devm_kzalloc(&func->dev, sizeof(*card), GFP_KERNEL);
+	if (!card)
+		return -ENOMEM;
 
-         /*
-          * winner or not, with this test the FW synchronizes when the
-          * module can continue its initialization
-          */
-         sdio_release_host(card->func);
+	card->func = func;
+	g_card = card;
 
-         return 0;
+	if (id->driver_data) {
+		card->helper = data->helper;
+		card->firmware = data->firmware;
+		card->firmware1 = data->firmware1;
+		card->reg = data->reg;
+		card->sd_blksz_fw_dl = data->sd_blksz_fw_dl;
+		card->support_pscan_win_report = data->support_pscan_win_report;
+		card->supports_fw_dump = data->supports_fw_dump;
+	}
 
- done:
-         sdio_release_host(card->func);
-         return ret;
- }
+	pr_info("%s func device %X\n", __func__, card->func->device);
+	pr_info("%s Call btmtk_sdio_register_dev\n", __func__);
+	if (btmtk_sdio_register_dev(card) < 0) {
+		pr_err("Failed to register BT device!\n");
+		return -ENODEV;
+	}
 
- static int btmtk_sdio_probe(struct sdio_func *func,
-                                         const struct sdio_device_id *id)
- {
-    int ret = 0;
-    struct btmtk_private *priv = NULL;
-    struct btmtk_sdio_card *card = NULL;
-    struct btmtk_sdio_device *data = (void *) id->driver_data;
-    u32 u32ReadCRValue = 0;
+	pr_info("%s btmtk_sdio_register_dev success\n", __func__);
 
-    probe_counter++;
-    BTMTK_INFO("%s Mediatek Bluetooth driver Version=%s", __func__, VERSION);
-    BTMTK_INFO("vendor=0x%x, device=0x%x, class=%d, fn=%d, support func_num %d",
-                        id->vendor, id->device, id->class, func->num, data->reg->func_num);
+	/* Disable the interrupts on the card */
+	btmtk_sdio_enable_host_int(card);
+	pr_info("call btmtk_sdio_enable_host_int done\n");
+	if (btmtk_sdio_download_fw(card)) {
+		pr_err("Downloading firmware failed!\n");
+		ret = -ENODEV;
+		goto unreg_dev;
+	}
 
-    if (func->num != data->reg->func_num) {
-        BTMTK_INFO("func num is not match");
-        return -ENODEV;
-    }
+	/* Move from btmtk_fops_open() */
+	spin_lock_init(&(metabuffer.spin_lock.lock));
+	pr_info("%s spin_lock_init end\n", __func__);
 
+	priv = btmtk_add_card(card);
+	if (!priv) {
+		pr_err("Initializing card failed!\n");
+		ret = -ENODEV;
+		goto unreg_dev;
+	}
+	pr_info("btmtk_add_card success\n");
+	card->priv = priv;
+	pr_info("assign priv done\n");
+	/* Initialize the interface specific function pointers */
+	priv->hw_host_to_card = btmtk_sdio_host_to_card;
+	priv->hw_process_int_status = btmtk_sdio_process_int_status;
+	priv->hw_set_own_back =  btmtk_sdio_set_own_back;
 
-        card = devm_kzalloc(&func->dev, sizeof(*card), GFP_KERNEL);
-        if (!card)
-                return -ENOMEM;
+	g_priv = priv;
+	if (!fw_dump_ptr)
+		fw_dump_ptr = kmalloc(FW_DUMP_BUF_SIZE, GFP_ATOMIC);
 
-        card->func = func;
-        g_card = card;
+	if (!fw_dump_ptr) {
+		ret = -ENODEV;
+		return ret;
+	}
 
-        if (id->driver_data) {
+	memset(&metabuffer.buffer, 0, META_BUFFER_SIZE);
+	memset(fw_dump_ptr, 0, FW_DUMP_BUF_SIZE);
 
-                card->helper = data->helper;
-                card->firmware = data->firmware;
-                card->firmware1 = data->firmware1;
-                card->reg = data->reg;
-                card->sd_blksz_fw_dl = data->sd_blksz_fw_dl;
-                card->support_pscan_win_report = data->support_pscan_win_report;
-                card->supports_fw_dump = data->supports_fw_dump;
-        }
-
-        BTMTK_INFO("%s func device %X\n", __func__, card->func->device);
-        BTMTK_INFO("%s Call btmtk_sdio_register_dev\n", __func__);
-        if (btmtk_sdio_register_dev(card) < 0) {
-                BTMTK_ERR("Failed to register BT device!");
-                return -ENODEV;
-        } else
-            BTMTK_INFO("%s btmtk_sdio_register_dev success\n", __func__);
-
-
-        /* Disable the interrupts on the card */
-        btmtk_sdio_enable_host_int(card);
-        BTMTK_INFO("call btmtk_sdio_enable_host_int done");
-        if (btmtk_sdio_download_fw(card)) {
-            BTMTK_ERR("Downloading firmware failed!");
-            ret = -ENODEV;
-            goto unreg_dev;
-        }
-
-
-
-
-
-         priv = btmtk_add_card(card);
-         if (!priv) {
-                 BTMTK_ERR("Initializing card failed!");
-                 ret = -ENODEV;
-                 goto unreg_dev;
-         }
-         BTMTK_INFO("btmtk_add_card success");
-         card->priv = priv;
-         BTMTK_INFO("assign priv done");
-         /* Initialize the interface specific function pointers */
-         priv->hw_host_to_card = btmtk_sdio_host_to_card;
-         priv->hw_process_int_status = btmtk_sdio_process_int_status;
-         priv->hw_set_own_back =  btmtk_sdio_set_own_back;
-
-        g_priv = priv;
-        if (fw_dump_ptr == NULL)
-            fw_dump_ptr = kmalloc(FW_DUMP_BUF_SIZE, GFP_ATOMIC);
-
-
-        if (fw_dump_ptr == NULL) {
-            BTMTK_ERR("%s : alloc fw_dump_ptr fail\n", __func__);
-            ret = -ENODEV;
-            return ret;
-        }
-
-        memset(&metabuffer.buffer, 0, META_BUFFER_SIZE);
-        memset(fw_dump_ptr, 0, FW_DUMP_BUF_SIZE);
-        fw_dump_task_should_stop = 0;
+	fw_dump_task_should_stop = 0;
 #if SAVE_FW_DUMP_IN_KERNEL
-        fw_dump_file = NULL;
+	fw_dump_file = NULL;
 #endif
-        fw_dump_read_ptr = fw_dump_ptr;
-        fw_dump_write_ptr = fw_dump_ptr;
-        fw_dump_total_read_size = 0;
-        fw_dump_total_write_size = 0;
-        fw_dump_buffer_used_size = 0;
-        fw_dump_buffer_full = 0;
+	fw_dump_read_ptr = fw_dump_ptr;
+	fw_dump_write_ptr = fw_dump_ptr;
+	fw_dump_total_read_size = 0;
+	fw_dump_total_write_size = 0;
+	fw_dump_buffer_used_size = 0;
+	fw_dump_buffer_full = 0;
 
-        ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
-        BTMTK_INFO("%s read CHLPCR (0x%08X)\n", __func__, u32ReadCRValue);
-        BTMTK_INFO("%s normal end\n", __func__);
-        probe_ready = true;
-        return 0;
+	ret = btmtk_sdio_readl(CHLPCR, &u32ReadCRValue);
+	pr_info("%s read CHLPCR (0x%08X)\n", __func__, u32ReadCRValue);
+	pr_info("%s normal end\n", __func__);
+	probe_ready = true;
+	return 0;
 
- unreg_dev:
-         btmtk_sdio_unregister_dev(card);
+unreg_dev:
+	btmtk_sdio_unregister_dev(card);
 
-         BTMTK_ERR("%s fail end\n", __func__);
-         return ret;
- }
+	pr_err("%s fail end\n", __func__);
+	return ret;
+}
 
- static void btmtk_sdio_remove(struct sdio_func *func)
- {
-         struct btmtk_sdio_card *card;
+static void btmtk_sdio_remove(struct sdio_func *func)
+{
+	struct btmtk_sdio_card *card;
 
-         BTMTK_INFO("%s begin user_rmmod %d\n", __func__,user_rmmod);
-         probe_ready = false;
+	pr_info("%s begin user_rmmod %d\n", __func__, user_rmmod);
+	probe_ready = false;
 
-         if (func) {
-                 card = sdio_get_drvdata(func);
-                 if (card) {
-                         /* Send SHUTDOWN command & disable interrupt
-                          * if user removes the module.
-                          */
-                         if (user_rmmod) {
-                                 BTMTK_INFO("%s begin user_rmmod %d in user mode\n", __func__,user_rmmod);
-                                 btmtk_sdio_set_own_back(DRIVER_OWN);
-                                 btmtk_sdio_enable_interrupt(0);
-                                 btmtk_sdio_bt_set_power(0);
-                                 btmtk_sdio_set_own_back(FW_OWN);
+	if (func) {
+		card = sdio_get_drvdata(func);
+		if (card) {
+			/* Send SHUTDOWN command & disable interrupt
+			 * if user removes the module.
+			 */
+			if (user_rmmod) {
+				pr_info("%s begin user_rmmod %d in user mode\n",
+					__func__, user_rmmod);
+				btmtk_sdio_set_own_back(DRIVER_OWN);
+				btmtk_sdio_enable_interrupt(0);
+				btmtk_sdio_bt_set_power(0);
+				btmtk_sdio_set_own_back(FW_OWN);
 
-                                 btmtk_sdio_disable_host_int(card);
-                         }
-                         BTMTK_DBG("unregester dev");
-                         card->priv->surprise_removed = true;
-                         btmtk_sdio_unregister_dev(card);
-                         btmtk_remove_card(card->priv);
-
-
-
-                 }
-         }
-         BTMTK_INFO("%s end\n", __func__);
- }
-
+				btmtk_sdio_disable_host_int(card);
+			}
+			pr_debug("unregester dev\n");
+			card->priv->surprise_removed = true;
+			btmtk_sdio_unregister_dev(card);
+			btmtk_remove_card(card->priv);
+		}
+	}
+	pr_info("%s end\n", __func__);
+}
 
 /*
 cmd_type:
-#define HCI_COMMAND_PKT         0x01
-#define HCI_ACLDATA_PKT         0x02
-#define HCI_SCODATA_PKT         0x03
-#define HCI_EVENT_PKT           0x04
-#define HCI_VENDOR_PKT          0xff
-
-
+#define HCI_COMMAND_PKT   0x01
+#define HCI_ACLDATA_PKT   0x02
+#define HCI_SCODATA_PKT   0x03
+#define HCI_EVENT_PKT     0x04
+#define HCI_VENDOR_PKT    0xff
 */
-  static int btmtk_sdio_send_cmd(u8 cmd_type,u8* cmd,int cmd_len)
- {
-        u8 ret = 0;
-        u32 sdio_header_len = 0;
-        u8 *send_data = NULL;
-        u32 send_data_len = cmd_len + BTM_HEADER_LEN;
-        if(cmd_len==0){
-                BTMTK_ERR("%s cmd_len (%d) error return\n", __func__,cmd_len);
-                return -EINVAL;
-        }
+static int btmtk_sdio_send_cmd(u8 cmd_type, u8 *cmd, int cmd_len)
+{
+	u8 ret = 0;
+	u32 sdio_header_len = 0;
+	u8 *send_data = NULL;
+	u32 send_data_len = cmd_len + BTM_HEADER_LEN;
 
-        send_data = kmalloc(send_data_len, GFP_KERNEL);
-        sdio_header_len = send_data_len;
-        memset(send_data, 0, send_data_len);
-        send_data[0] = (sdio_header_len & 0x0000ff);
-        send_data[1] = (sdio_header_len & 0x00ff00) >> 8;
-        send_data[2] = 0;
-        send_data[3] = 0;
-        send_data[4] = cmd_type ;
-        memcpy(&send_data[BTM_HEADER_LEN], &cmd[0], cmd_len);
+	if (cmd_len == 0) {
+		pr_err("%s cmd_len (%d) error return\n", __func__, cmd_len);
+		return -EINVAL;
+	}
 
-        ret = btmtk_sdio_host_to_card(g_priv, send_data, send_data_len);
-        kfree(send_data);
-        return ret;
- }
- static int btmtk_sdio_send_woble_cmd(void)
- {
-        u8 ret = 0;
-        u8 cmd[] = { 0xC9, 0xFC, 0x0D, 0x01, 0x0E, 0x00, 0x05, 0x43,
-                     0x52, 0x4B, 0x54, 0x4D, 0x20, 0x04, 0x32, 0x00 };
+	send_data = kmalloc(send_data_len, GFP_KERNEL);
+	sdio_header_len = send_data_len;
+	memset(send_data, 0, send_data_len);
+	send_data[0] = (sdio_header_len & 0x0000ff);
+	send_data[1] = (sdio_header_len & 0x00ff00) >> 8;
+	send_data[2] = 0;
+	send_data[3] = 0;
+	send_data[4] = cmd_type;
+	memcpy(&send_data[BTM_HEADER_LEN], &cmd[0], cmd_len);
+	ret = btmtk_sdio_host_to_card(g_priv, send_data, send_data_len);
+	kfree(send_data);
+	return ret;
+}
+static int btmtk_sdio_send_woble_cmd(void)
+{
+	u8 ret = 0;
+	u8 cmd[] = { 0xC9, 0xFC, 0x0D, 0x01, 0x0E, 0x00, 0x05, 0x43,
+			0x52, 0x4B, 0x54, 0x4D, 0x20, 0x04, 0x32, 0x00};
 
-        ret = btmtk_sdio_send_cmd(HCI_COMMAND_PKT,cmd,sizeof(cmd));
-        BTMTK_INFO("%s return %d\n", __func__,ret);
-        return ret;
- }
+	ret = btmtk_sdio_send_cmd(HCI_COMMAND_PKT, cmd, sizeof(cmd));
+	pr_info("%s return %d\n", __func__, ret);
+	return ret;
+}
 
- static int btmtk_sdio_suspend(struct device *dev)
- {
-         struct sdio_func *func = dev_to_sdio_func(dev);
-         u8 ret = 0;
-         mmc_pm_flag_t pm_flags;
-         ret = btmtk_sdio_set_own_back(DRIVER_OWN);
-         if(ret)
-             BTMTK_ERR("%s set driver own fail",__func__);
+static int btmtk_sdio_suspend(struct device *dev)
+{
+	struct sdio_func *func = dev_to_sdio_func(dev);
+	u8 ret = 0;
+	mmc_pm_flag_t pm_flags;
 
-         ret = btmtk_sdio_send_woble_cmd();
-         if(ret)
-             BTMTK_ERR("%s set woble cmd fail",__func__);
+	ret = btmtk_sdio_set_own_back(DRIVER_OWN);
+	if (ret)
+		pr_err("%s set driver own fail\n", __func__);
 
+	ret = btmtk_sdio_send_woble_cmd();
+	if (ret)
+		pr_err("%s set woble cmd fail\n", __func__);
 
-         need_reset_stack = 1;
-         BTMTK_ERR("%s set reset_stack 1\n", __func__);
-         if (func) {
-                 pm_flags = sdio_get_host_pm_caps(func);
-                 BTMTK_DBG("%s: suspend: PM flags = 0x%x", sdio_func_id(func),
-                        pm_flags);
-                 if (!(pm_flags & MMC_PM_KEEP_POWER)) {
-                         BTMTK_ERR("%s: cannot remain alive while suspended",
-                                sdio_func_id(func));
-                         return -EINVAL;
-                 }
-         } else {
-                 BTMTK_ERR("sdio_func is not specified");
-                 return 0;
-         }
-         ret = btmtk_sdio_set_own_back(FW_OWN);
-         if(ret)
-             BTMTK_ERR("%s set fw own fail",__func__);
-         return sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER);
- }
+	need_reset_stack = 1;
+	pr_err("%s set reset_stack 1\n", __func__);
+	if (func) {
+		pm_flags = sdio_get_host_pm_caps(func);
+		pr_debug("%s: suspend: PM flags = 0x%x\n",
+			sdio_func_id(func), pm_flags);
+		if (!(pm_flags & MMC_PM_KEEP_POWER)) {
+			pr_err("%s: cannot remain alive while suspended\n",
+				sdio_func_id(func));
+			return -EINVAL;
+		}
+	} else {
+		pr_err("sdio_func is not specified\n");
+		return 0;
+	}
+	ret = btmtk_sdio_set_own_back(FW_OWN);
+	if (ret)
+		pr_err("%s set fw own fail\n", __func__);
+	return sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER);
+}
 
- static int btmtk_sdio_resume(struct device *dev)
- {
-         BTMTK_INFO("%s begin return 0, do nothing", __func__);
-         return 0;
- }
+static int btmtk_sdio_resume(struct device *dev)
+{
+	pr_info("%s begin return 0, do nothing\n", __func__);
+	return 0;
+}
 
- static const struct dev_pm_ops btmtk_sdio_pm_ops = {
-         .suspend        = btmtk_sdio_suspend,
-         .resume         = btmtk_sdio_resume,
- };
+static const struct dev_pm_ops btmtk_sdio_pm_ops = {
+	.suspend       = btmtk_sdio_suspend,
+	.resume        = btmtk_sdio_resume,
+};
 
- static struct sdio_driver bt_mtk_sdio = {
-         .name           = "btmtk_sdio",
-         .id_table       = btmtk_sdio_ids,
-         .probe          = btmtk_sdio_probe,
-         .remove         = btmtk_sdio_remove,
-         .drv = {
-                 .owner = THIS_MODULE,
-                 .pm = &btmtk_sdio_pm_ops,
-         }
- };
+static struct sdio_driver bt_mtk_sdio = {
+	.name          = "btmtk_sdio",
+	.id_table      = btmtk_sdio_ids,
+	.probe         = btmtk_sdio_probe,
+	.remove        = btmtk_sdio_remove,
+	.drv = {
+		.owner = THIS_MODULE,
+		.pm = &btmtk_sdio_pm_ops,
+	}
+};
 
 
 static int btmtk_fops_open(struct inode *inode, struct file *file)
 {
-    BTMTK_INFO("%s begin", __func__);
+	pr_info("%s begin\n", __func__);
 
-    if (!probe_ready) {
-        BTMTK_ERR("%s probe_ready is %d return", __func__,probe_ready);
-        return -EFAULT;
-    }
+	if (!probe_ready) {
+		pr_err("%s probe_ready is %d return\n", __func__, probe_ready);
+		return -EFAULT;
+	}
 
-    spin_lock_init(&(metabuffer.spin_lock.lock));
-    BTMTK_INFO("%s spin_lock_init end", __func__);
-    if (g_priv == NULL) {
-        BTMTK_ERR("%s g_priv is NULL", __func__);
-        return -ENOENT;
-    }
+#if 0 /* Move to btmtk_sdio_probe() */
+	spin_lock_init(&(metabuffer.spin_lock.lock));
+	pr_info("%s spin_lock_init end\n", __func__);
+#endif
+	if (g_priv == NULL) {
+		pr_err("%s g_priv is NULL\n", __func__);
+		return -ENOENT;
+	}
 
-    if (g_priv->adapter == NULL) {
-        BTMTK_ERR("%s g_priv->adapter is NULL", __func__);
-        return -ENOENT;
-    }
+	if (g_priv->adapter == NULL) {
+		pr_err("%s g_priv->adapter is NULL\n", __func__);
+		return -ENOENT;
+	}
 
-    if (g_priv)
-        g_priv->adapter->fops_mode = true;
+	if (g_priv)
+		g_priv->adapter->fops_mode = true;
 
-    BTMTK_INFO("%s fops_mode=%d end", __func__, g_priv->adapter->fops_mode);
-    return 0;
+	pr_info("%s fops_mode=%d end\n", __func__, g_priv->adapter->fops_mode);
+	return 0;
 }
 
 static int btmtk_fops_close(struct inode *inode, struct file *file)
 {
-    struct sk_buff *skb = NULL;
+	struct sk_buff *skb = NULL;
 
-    BTMTK_INFO("%s begin", __func__);
+	pr_info("%s begin\n", __func__);
 
-    if (!probe_ready) {
-        BTMTK_ERR("%s probe_ready is %d return", __func__,probe_ready);
-        return -EFAULT;
-    }
+	if (!probe_ready) {
+		pr_err("%s probe_ready is %d return\n", __func__, probe_ready);
+		return -EFAULT;
+	}
 
-    spin_lock_init(&(metabuffer.spin_lock.lock));
-    if (g_priv)
-        g_priv->adapter->fops_mode = false;
+	spin_lock_init(&(metabuffer.spin_lock.lock));
+	if (g_priv)
+		g_priv->adapter->fops_mode = false;
 
-    lock_unsleepable_lock(&(metabuffer.spin_lock));
+	lock_unsleepable_lock(&(metabuffer.spin_lock));
 
+	if (!skb_queue_empty(&g_priv->adapter->fops_queue)) {
+		pr_info("%s clean data in fops_queue\n", __func__);
+		do {
+			skb = skb_dequeue(&g_priv->adapter->fops_queue);
+			if (skb == NULL) {
+				pr_info("%s skb=NULL error break\n", __func__);
+				break;
+			}
 
-    if (!skb_queue_empty(&g_priv->adapter->fops_queue)) {
-       BTMTK_INFO("%s clean data in fops_queue", __func__);
-       do {
-            skb = skb_dequeue(&g_priv->adapter->fops_queue);
-            if (skb == NULL) {
-                BTMTK_INFO("%s skb=NULL error break", __func__);
-                break;
-            }
+			kfree_skb(skb);
+		} while (!skb_queue_empty(&g_priv->adapter->fops_queue));
+	}
+	unlock_unsleepable_lock(&(metabuffer.spin_lock));
 
-           kfree_skb(skb);
-        } while (!skb_queue_empty(&g_priv->adapter->fops_queue));
-
-    }
-
-
-    unlock_unsleepable_lock(&(metabuffer.spin_lock));
-
-    BTMTK_INFO("%s fops_mode=%d end", __func__, g_priv->adapter->fops_mode);
-    return 0;
+	pr_info("%s fops_mode=%d end\n", __func__, g_priv->adapter->fops_mode);
+	return 0;
 }
 
-ssize_t btmtk_fops_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos)
+ssize_t btmtk_fops_write(struct file *filp, const char __user *buf,
+			size_t count, loff_t *f_pos)
 {
-    int retval = 0;
-    struct sk_buff *skb = NULL;
-    u32 crAddr = 0, crValue = 0, crMask = 0;
-    /*int i = 0;*/
+	int retval = 0;
+	struct sk_buff *skb = NULL;
+	u32 crAddr = 0, crValue = 0, crMask = 0;
+	/*int i = 0;*/
 
-    if (!probe_ready) {
-        BTMTK_ERR("%s probe_ready is %d return", __func__,probe_ready);
-        return -EFAULT;
-    }
+	if (!probe_ready) {
+		pr_err("%s probe_ready is %d return\n", __func__, probe_ready);
+		return -EFAULT;
+	}
 
-    if (g_priv == NULL) {
-        BTMTK_INFO("%s g_priv is NULL", __func__);
-        return -EFAULT;
-    }
+	if (g_priv == NULL) {
+		pr_info("%s g_priv is NULL\n", __func__);
+		return -EFAULT;
+	}
 
-    if (g_priv->adapter->fops_mode == 0) {
-        BTMTK_INFO("%s fops_mode is 0", __func__);
-        return -EFAULT;
-    }
+	if (g_priv->adapter->fops_mode == 0) {
+		pr_info("%s fops_mode is 0\n", __func__);
+		return -EFAULT;
+	}
 
-
-	/*BTMTK_INFO("%s : (%d) %02X %02X %02X %02X %02X %02X %02X %02X\n", __func__, (int)count,
+	/*pr_info("%s : (%d) %02X %02X %02X %02X "
+			%"02X %02X %02X %02X\n",
+			__func__, (int)count,
 			buf[0],
 			buf[1],
 			buf[2],
@@ -2154,231 +2198,255 @@
 			buf[6],
 			buf[7]);*/
 
-    /*
-    BTMTK_INFO("%s print write data", __func__);
-    if (count > 10)
-        BTMTK_INFO("  %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9]);
-    else {
-        for(i=0;i<count;i++)
-            BTMTK_INFO("%d %02X",i,buf[i]);
-    }*/
+	/*
+	pr_info("%s print write data", __func__);
+	if (count > 10)
+	pr_info("  %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
+			buf[0],buf[1],buf[2],buf[3],buf[4],
+			buf[5],buf[6],buf[7],buf[8],buf[9]);
+	else {
+	for(i=0;i<count;i++)
+		pr_info("%d %02X",i,buf[i]);
+	}*/
 
-    if (buf[0] == 0x7) {
-/*
-* write CR
-*/
-        if (count < 15) {
-            BTMTK_INFO("%s count=%zd less than 15, error", __func__, count);
-            return -EFAULT;
-        }
+	if (buf[0] == 0x7) {
+		/*
+		* write CR
+		*/
+		if (count < 15) {
+			pr_info("%s count=%zd less than 15, error\n",
+				__func__, count);
+			return -EFAULT;
+		}
 
-        crAddr = (buf[3]&0xff) + ((buf[4]&0xff)<<8) + ((buf[5]&0xff)<<16) + ((buf[6]&0xff)<<24);
-        crValue = (buf[7]&0xff) + ((buf[8]&0xff)<<8) + ((buf[9]&0xff)<<16) + ((buf[10]&0xff)<<24);
-        crMask = (buf[11]&0xff) + ((buf[12]&0xff)<<8) + ((buf[13]&0xff)<<16) + ((buf[14]&0xff)<<24);
+		crAddr = (buf[3]&0xff) + ((buf[4]&0xff)<<8)
+			+ ((buf[5]&0xff)<<16) + ((buf[6]&0xff)<<24);
+		crValue = (buf[7]&0xff) + ((buf[8]&0xff)<<8)
+			+ ((buf[9]&0xff)<<16) + ((buf[10]&0xff)<<24);
+		crMask = (buf[11]&0xff) + ((buf[12]&0xff)<<8)
+			+ ((buf[13]&0xff)<<16) + ((buf[14]&0xff)<<24);
 
-        BTMTK_INFO("%s crAddr=0x%08x crValue=0x%08x crMask=0x%08x", __func__, crAddr, crValue, crMask);
-        crValue &= crMask;
+		pr_info("%s crAddr=0x%08x crValue=0x%08x crMask=0x%08x\n",
+			__func__, crAddr, crValue, crMask);
+		crValue &= crMask;
 
+		pr_info("%s write crAddr=0x%08x crValue=0x%08x\n", __func__,
+			crAddr, crValue);
+		btmtk_sdio_writel(crAddr, crValue);
+		retval = count;
+	} else if (buf[0] == 0x8) {
+		/*
+		* read CR
+		*/
+		if (count < 16) {
+			pr_info("%s count=%zd less than 15, error\n",
+				__func__, count);
+			return -EFAULT;
+		}
 
-        BTMTK_INFO("%s write crAddr=0x%08x crValue=0x%08x", __func__, crAddr, crValue);
-        btmtk_sdio_writel(crAddr, crValue);
-        retval = count;
-    } else if (buf[0] == 0x8) {
-/*
-* read CR
-*/
-        if (count < 16) {
-            BTMTK_INFO("%s count=%zd less than 15, error", __func__, count);
-            return -EFAULT;
-        }
+		crAddr = (buf[3]&0xff) + ((buf[4]&0xff)<<8) +
+			((buf[5]&0xff)<<16) + ((buf[6]&0xff)<<24);
+		crMask = (buf[11]&0xff) + ((buf[12]&0xff)<<8) +
+			((buf[13]&0xff)<<16) + ((buf[14]&0xff)<<24);
 
-        crAddr = (buf[3]&0xff) + ((buf[4]&0xff)<<8) + ((buf[5]&0xff)<<16) + ((buf[6]&0xff)<<24);
-        crMask = (buf[11]&0xff) + ((buf[12]&0xff)<<8) + ((buf[13]&0xff)<<16) + ((buf[14]&0xff)<<24);
+		btmtk_sdio_readl(crAddr, &crValue);
+		pr_info("%s read crAddr=0x%08x crValue=0x%08x crMask=0x%08x\n",
+				__func__, crAddr, crValue, crMask);
+		retval = count;
+	} else {
+		skb = bt_skb_alloc(count-1, GFP_ATOMIC);
+		bt_cb(skb)->pkt_type = buf[0];
+		memcpy(&skb->data[0], &buf[1], count-1);
+		skb->len = count-1;
+		skb_queue_tail(&g_priv->adapter->tx_queue, skb);
+		wake_up_interruptible(&g_priv->main_thread.wait_q);
 
-        btmtk_sdio_readl(crAddr, &crValue);
-        BTMTK_INFO("%s read crAddr=0x%08x crValue=0x%08x crMask=0x%08x", __func__, crAddr, crValue, crMask);
-        retval = count;
-    } else {
-
-        skb = bt_skb_alloc(count-1, GFP_ATOMIC);
-        bt_cb(skb)->pkt_type = buf[0];
-        memcpy(&skb->data[0], &buf[1], count-1);
-        skb->len = count-1;
-        skb_queue_tail(&g_priv->adapter->tx_queue, skb);
-        wake_up_interruptible(&g_priv->main_thread.wait_q);
-
-        retval = count;
-    }
-    BTMTK_DBG("%s end", __func__);
-    return retval;
+		retval = count;
+	}
+	pr_debug("%s end\n", __func__);
+	return retval;
 }
 
-ssize_t btmtk_fops_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
+ssize_t btmtk_fops_read(struct file *filp, char __user *buf,
+			size_t count, loff_t *f_pos)
 {
-    int copyLen = 0;
-    struct sk_buff *skb = NULL;
-    unsigned long ret = 0;
+	int copyLen = 0;
+	struct sk_buff *skb = NULL;
+	unsigned long ret = 0;
 
-    if (!probe_ready) {
-        BTMTK_ERR("%s probe_ready is %d return", __func__,probe_ready);
-        return -EFAULT;
-    }
+	if (!probe_ready) {
+		pr_err("%s probe_ready is %d return\n", __func__, probe_ready);
+		return -EFAULT;
+	}
 
-    if (g_priv == NULL) {
-        BTMTK_INFO("%s g_priv is NULL", __func__);
-        return -EFAULT;
-    }
+	if (g_priv == NULL) {
+		pr_info("%s g_priv is NULL\n", __func__);
+		return -EFAULT;
+	}
 
-    if (g_priv->adapter->fops_mode == 0) {
-        BTMTK_INFO("%s fops_mode is 0", __func__);
-        return -EFAULT;
-    }
+	if (g_priv->adapter->fops_mode == 0) {
+		pr_info("%s fops_mode is 0\n", __func__);
+		return -EFAULT;
+	}
 
-    lock_unsleepable_lock(&(metabuffer.spin_lock));
+	lock_unsleepable_lock(&(metabuffer.spin_lock));
 
+	if (skb_queue_empty(&g_priv->adapter->fops_queue)) {
+		if (filp->f_flags & O_NONBLOCK) {
+			unlock_unsleepable_lock(&(metabuffer.spin_lock));
+			return 0;
+		}
+	}
 
-    if (skb_queue_empty(&g_priv->adapter->fops_queue)) {
-        if (filp->f_flags & O_NONBLOCK) {
-            unlock_unsleepable_lock(&(metabuffer.spin_lock));
-            return 0;
-        }
-    }
+	if (need_reset_stack == 1) {
+		kill_fasync(&fasync, SIGIO, POLL_IN);
+		need_reset_stack = 0;
+		pr_info("%s Call kill_fasync and set reset_stack 0\n",
+			__func__);
+		return -ENODEV;
+	}
 
-    if (need_reset_stack == 1){
-        kill_fasync(&fasync, SIGIO, POLL_IN);
-        need_reset_stack = 0;
-        BTMTK_INFO("%s Call  kill_fasync and set reset_stack 0", __func__);
-        return -ENODEV;
-    }
+	do {
+		skb = skb_dequeue(&g_priv->adapter->fops_queue);
+		if (skb == NULL) {
+			pr_info("%s skb=NULL error break\n", __func__);
+			break;
+		}
+		/* pr_debug("%s pkt_type %d metabuffer.buffer %d",
+			__func__, bt_cb(skb)->pkt_type,
+			metabuffer.buffer[copyLen]); */
+		btmtk_print_buffer_conent(skb->data, skb->len);
 
-    do {
-        skb = skb_dequeue(&g_priv->adapter->fops_queue);
-        if (skb == NULL) {
-            BTMTK_INFO("%s skb=NULL error break", __func__);
-            break;
-        }
-        //BTMTK_DBG("%s pkt_type %d metabuffer.buffer %d", __func__, bt_cb(skb)->pkt_type, metabuffer.buffer[copyLen]);
-        btmtk_print_buffer_conent(skb->data, skb->len);
+		if (((copyLen + 1 + skb->len) > META_BUFFER_SIZE) ||
+				((copyLen + 1 + skb->len) > count)) {
+			pr_err("%s copy copyLen %d > META_BUFFER_SIZE(%d), push back to queue\n",
+				__func__,
+				(copyLen + 1 + skb->len),
+				META_BUFFER_SIZE);
+			skb_queue_head(&g_priv->adapter->fops_queue,
+				skb);
+			break;
+		}
 
-        if (((copyLen + 1 + skb->len) > META_BUFFER_SIZE) || ((copyLen + 1 + skb->len) > count)) {
-            BTMTK_ERR("%s copy copyLen %d > META_BUFFER_SIZE(%d), push back to queue", __func__,
-            (copyLen + 1 + skb->len), META_BUFFER_SIZE);
-            skb_queue_head(&g_priv->adapter->fops_queue, skb);
-            break;
-        }
+		metabuffer.buffer[copyLen] = bt_cb(skb)->pkt_type;
+		copyLen++;
 
-        metabuffer.buffer[copyLen] = bt_cb(skb)->pkt_type;
-        copyLen++;
+		memcpy(&metabuffer.buffer[copyLen], skb->data, skb->len);
+		copyLen += skb->len;
 
-        memcpy(&metabuffer.buffer[copyLen], skb->data, skb->len);
-        copyLen += skb->len;
+		kfree_skb(skb);
+	} while (!skb_queue_empty(&g_priv->adapter->fops_queue));
+	unlock_unsleepable_lock(&(metabuffer.spin_lock));
 
-        kfree_skb(skb);
+	ret = copy_to_user(buf, metabuffer.buffer, copyLen);
+	if (ret) {
+		pr_err("%s copy to user fail, ret %d\n", __func__, (int)ret);
+		copyLen = (copyLen - ret);
+	} /* else {
+		pr_info("%s : (%d) %02X %02X %02X %02X "
+				"%02X %02X %02X %02X\n",
+				__func__, copyLen,
+				metabuffer.buffer[0],
+				metabuffer.buffer[1],
+				metabuffer.buffer[2],
+				metabuffer.buffer[3],
+				metabuffer.buffer[4],
+				metabuffer.buffer[5],
+				metabuffer.buffer[6],
+				metabuffer.buffer[7]);
+	}*/
 
-    } while (!skb_queue_empty(&g_priv->adapter->fops_queue));
-    unlock_unsleepable_lock(&(metabuffer.spin_lock));
-
-
-    ret = copy_to_user(buf, metabuffer.buffer, copyLen);
-    if (ret) {
-        BTMTK_ERR("%s copy to user fail, ret %d", __func__, (int)ret);
-        copyLen = (copyLen - ret);
-    }/* else {
-    	BTMTK_INFO("%s : (%d) %02X %02X %02X %02X %02X %02X %02X %02X\n", __func__, copyLen, 
-    			metabuffer.buffer[0],
-    			metabuffer.buffer[1],
-    			metabuffer.buffer[2],
-    			metabuffer.buffer[3],
-    			metabuffer.buffer[4],
-    			metabuffer.buffer[5],
-    			metabuffer.buffer[6],
-    			metabuffer.buffer[7]);
-    }*/
-
-    //BTMTK_DBG("%s copyLen %d", __func__, copyLen);
-    return copyLen;
+	/* pr_debug("%s copyLen %d", __func__, copyLen);*/
+	return copyLen;
 }
 
 static int btmtk_fops_fasync(int fd, struct file *file, int on)
 {
-	BTMTK_INFO("%s: fd = 0x%X, flag = 0x%X", __func__, fd, on);
+	pr_info("%s: fd = 0x%X, flag = 0x%X\n", __func__, fd, on);
 	return fasync_helper(fd, file, on, &fasync);
 }
 
 unsigned int btmtk_fops_poll(struct file *filp, poll_table *wait)
 {
-    unsigned int mask = 0;
+	unsigned int mask = 0;
 
-    if (!probe_ready) {
-        BTMTK_ERR("%s probe_ready is %d return", __func__,probe_ready);
-        return mask;
-    }
-
-    if (g_priv == NULL) {
-        BTMTK_ERR("%s g_priv is NULL", __func__);
-        return -ENODEV;
-    }
-
-    if (skb_queue_empty(&g_priv->adapter->fops_queue)) {
-        poll_wait(filp, &inq, wait);
-
-        if (!skb_queue_empty(&g_priv->adapter->fops_queue)) {
-            mask |= (POLLIN | POLLRDNORM);
-            //BTMTK_INFO("%s poll done\n", __func__);
+	if (!probe_ready) {
+		pr_err("%s probe_ready is %d return\n", __func__, probe_ready);
+		return mask;
 	}
-    } else
-        mask |= (POLLIN | POLLRDNORM);
 
-    mask |= (POLLOUT | POLLWRNORM);
-
-    //BTMTK_INFO("%s poll mask 0x%x\n", __func__,mask);
-    return mask;
-}
-
-long btmtk_fops_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-{
-    u32 retval = 0;
-
-    return retval;
-}
-
-static int btmtk_fops_openfwlog(struct inode *inode, struct file *file)
-{
 	if (g_priv == NULL) {
-		BTMTK_ERR("%s: ERROR, g_data is NULL!", __func__);
+		pr_err("%s g_priv is NULL\n", __func__);
 		return -ENODEV;
 	}
 
-	BTMTK_INFO("%s: OK", __func__);
-	return 0;
+	if (skb_queue_empty(&g_priv->adapter->fops_queue)) {
+		poll_wait(filp, &inq, wait);
+
+		if (!skb_queue_empty(&g_priv->adapter->fops_queue)) {
+			mask |= (POLLIN | POLLRDNORM);
+			/* pr_info("%s poll done\n", __func__); */
+		}
+	} else
+		mask |= (POLLIN | POLLRDNORM);
+
+	mask |= (POLLOUT | POLLWRNORM);
+
+	/* pr_info("%s poll mask 0x%x\n", __func__,mask); */
+	return mask;
 }
 
-static int btmtk_fops_closefwlog(struct inode *inode, struct file *file)
+long btmtk_fops_unlocked_ioctl(struct file *filp,
+				unsigned int cmd, unsigned long arg)
+{
+	u32 retval = 0;
+
+	return retval;
+}
+
+static int btmtk_fops_openfwlog(struct inode *inode,
+					struct file *file)
 {
 	if (g_priv == NULL) {
-		BTMTK_ERR("%s: ERROR, g_data is NULL!", __func__);
+		pr_err("%s: ERROR, g_data is NULL!\n", __func__);
 		return -ENODEV;
 	}
 
-	BTMTK_INFO("%s: OK", __func__);
+	pr_info("%s: OK\n", __func__);
 	return 0;
 }
 
-static ssize_t btmtk_fops_readfwlog(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
+static int btmtk_fops_closefwlog(struct inode *inode,
+					struct file *file)
+{
+	if (g_priv == NULL) {
+		pr_err("%s: ERROR, g_data is NULL!\n", __func__);
+		return -ENODEV;
+	}
+
+	pr_info("%s: OK\n", __func__);
+	return 0;
+}
+
+static ssize_t btmtk_fops_readfwlog(struct file *filp,
+			char __user *buf,
+			size_t count,
+			loff_t *f_pos)
 {
 	int copyLen = 0;
 
 	if (g_priv == NULL) {
-		BTMTK_ERR("%s: ERROR, g_data is NULL!", __func__);
+		pr_err("%s: ERROR, g_data is NULL!\n", __func__);
 		return -ENODEV;
 	}
 
-	BTMTK_INFO("%s: OK", __func__);
+	pr_info("%s: OK\n", __func__);
 	return copyLen;
 }
 
-static ssize_t btmtk_fops_writefwlog(struct file *filp, const char __user *buf,
-					size_t count, loff_t *f_pos)
+static ssize_t btmtk_fops_writefwlog(
+			struct file *filp, const char __user *buf,
+			size_t count, loff_t *f_pos)
 {
 	struct sk_buff *skb = NULL;
 	int length = 0, i, j = 0;
@@ -2389,33 +2457,35 @@
 	memset(i_fwlog_buf, 0, HCI_MAX_COMMAND_BUF_SIZE);
 	memset(o_fwlog_buf, 0, HCI_MAX_COMMAND_SIZE);
 
-
 	if (g_priv == NULL) {
-		BTMTK_INFO("%s g_priv is NULL", __func__);
+		pr_info("%s g_priv is NULL\n", __func__);
 		goto exit;
 	}
 	if (count > HCI_MAX_COMMAND_BUF_SIZE) {
-		BTMTK_ERR("%s: your command is larger than maximum length, count = %zd\n", __func__, count);
+		pr_err("%s: your command is larger than maximum length, count = %zd\n",
+			__func__, count);
 		goto exit;
 	}
 
 	for (i = 0; i < count; i++) {
-		if (buf[i] != '=' ) {
+		if (buf[i] != '=') {
 			i_fwlog_buf[i] = buf[i];
-			BTMTK_DBG("%s: tag_param %02x", __func__, i_fwlog_buf[i]);
-		}
-		else {
+			pr_debug("%s: tag_param %02x\n",
+				__func__, i_fwlog_buf[i]);
+		} else {
 			val_param = &buf[i+1];
 			if (strcmp(i_fwlog_buf, "log_lvl") == 0) {
-				BTMTK_INFO("%s: btmtk_log_lvl = %d", __func__, val_param[0] - 48);
-				btmtk_log_lvl = val_param[0] - 48;
+				pr_info("%s: btmtk_log_lvl = %d\n",
+					__func__, val_param[0] - 48);
+				/* btmtk_log_lvl = val_param[0] - 48; */
 			}
 			goto exit;
 		}
 	}
 
 	if (i == count) {
-		/* hci input command format : echo 01 be fc 01 05 > /dev/stpbtfwlog */
+		/* hci input command format : */
+		/* echo 01 be fc 01 05 > /dev/stpbtfwlog */
 		/* We take the data from index three to end. */
 		val_param = &buf[0];
 	}
@@ -2426,16 +2496,17 @@
 		u8 temp_str[3] = { 0 };
 		long res = 0;
 
-		if (val_param[i] == ' ' || val_param[i] == '\t' || val_param[i] == '\r' || val_param[i] == '\n')
+		if (val_param[i] == ' ' || val_param[i] == '\t'
+			|| val_param[i] == '\r' || val_param[i] == '\n')
 			continue;
 		if ((val_param[i] == '0' && val_param[i + 1] == 'x')
-				|| (val_param[0] == '0' && val_param[i + 1] == 'X')) {
+			|| (val_param[0] == '0' && val_param[i + 1] == 'X')) {
 			i++;
 			continue;
 		}
 		if (!(val_param[i] >= '0' && val_param[i] <= '9')
-				&& !(val_param[i] >= 'A' && val_param[i] <= 'F')
-				&& !(val_param[i] >= 'a' && val_param[i] <= 'f')) {
+			&& !(val_param[i] >= 'A' && val_param[i] <= 'F')
+			&& !(val_param[i] >= 'a' && val_param[i] <= 'f')) {
 			break;
 		}
 		temp_str[0] = *(val_param+i);
@@ -2446,63 +2517,65 @@
 	}
 	length = j;
 
-
-
 	/* Receive command from stpbtfwlog, then Sent hci command to controller */
-	BTMTK_DBG("%s: hci buff is %02x%02x%02x%02x%02x ", __func__, o_fwlog_buf[0]
-		, o_fwlog_buf[1], o_fwlog_buf[2], o_fwlog_buf[3], o_fwlog_buf[4]);
+	pr_debug("%s: hci buff is %02x%02x%02x%02x%02x\n",
+		__func__, o_fwlog_buf[0], o_fwlog_buf[1],
+		o_fwlog_buf[2], o_fwlog_buf[3], o_fwlog_buf[4]);
 	/* check HCI command length */
 	if (length > HCI_MAX_COMMAND_SIZE) {
-		BTMTK_ERR("%s: your command is larger than maximum length, length = %d\n", __func__, length);
+		pr_err("%s: your command is larger than maximum length, length = %d\n",
+			__func__, length);
 		goto exit;
 	}
 
-	BTMTK_DBG("%s: hci buff is %02x%02x%02x%02x%02x ", __func__, o_fwlog_buf[0]
-		, o_fwlog_buf[1], o_fwlog_buf[2], o_fwlog_buf[3], o_fwlog_buf[4]);
+	pr_debug("%s: hci buff is %02x%02x%02x%02x%02x\n",
+		__func__, o_fwlog_buf[0], o_fwlog_buf[1],
+		o_fwlog_buf[2], o_fwlog_buf[3], o_fwlog_buf[4]);
 
 	/* Receive command from stpbtfwlog, then Sent hci command to Stack */
 	skb = bt_skb_alloc(length - 1, GFP_ATOMIC);
 	bt_cb(skb)->pkt_type = o_fwlog_buf[0];
-	memcpy(&skb->data[0],&o_fwlog_buf[1],length - 1);
+	memcpy(&skb->data[0], &o_fwlog_buf[1], length - 1);
 	skb->len = length - 1;
 	skb_queue_tail(&g_priv->adapter->tx_queue, skb);
 	wake_up_interruptible(&g_priv->main_thread.wait_q);
 
-	BTMTK_INFO("%s write end", __func__);
+	pr_info("%s write end\n", __func__);
 exit:
-	BTMTK_INFO("%s exit, length = %d", __func__, length);
+	pr_info("%s exit, length = %d\n", __func__, length);
 	kfree(i_fwlog_buf);
 	kfree(o_fwlog_buf);
 	return count;
 }
 
-static unsigned int btmtk_fops_pollfwlog(struct file *file, poll_table *wait)
+static unsigned int btmtk_fops_pollfwlog(
+			struct file *file, poll_table *wait)
 {
 	unsigned int mask = 0;
 
-	if (g_priv== NULL) {
-		BTMTK_ERR("%s: ERROR, g_data is NULL!", __func__);
+	if (g_priv == NULL) {
+		pr_err("%s: ERROR, g_data is NULL!\n", __func__);
 		return -ENODEV;
 	}
 
 	return mask;
 }
 
-static long btmtk_fops_unlocked_ioctlfwlog(struct file *filp, unsigned int cmd,
-					  unsigned long arg)
+static long btmtk_fops_unlocked_ioctlfwlog(
+			struct file *filp, unsigned int cmd,
+			unsigned long arg)
 {
 	int retval = 0;
 
-	BTMTK_INFO("%s: ->", __func__);
+	pr_info("%s: ->\n", __func__);
 	if (g_priv == NULL) {
-		BTMTK_ERR("%s: ERROR, g_data is NULL!", __func__);
+		pr_err("%s: ERROR, g_data is NULL!\n", __func__);
 		return -ENODEV;
 	}
 
 	return retval;
 }
 
-
 static int BTMTK_major;
 static int BT_majorfwlog;
 static struct cdev BTMTK_cdev;
@@ -2511,23 +2584,22 @@
 
 static wait_queue_head_t inq;
 const struct file_operations BTMTK_fops = {
-    .open = btmtk_fops_open,
-    .release = btmtk_fops_close,
-    .read = btmtk_fops_read,
-    .write = btmtk_fops_write,
-    .poll = btmtk_fops_poll,
-    .unlocked_ioctl = btmtk_fops_unlocked_ioctl,
-    .fasync = btmtk_fops_fasync
+	.open = btmtk_fops_open,
+	.release = btmtk_fops_close,
+	.read = btmtk_fops_read,
+	.write = btmtk_fops_write,
+	.poll = btmtk_fops_poll,
+	.unlocked_ioctl = btmtk_fops_unlocked_ioctl,
+	.fasync = btmtk_fops_fasync
 };
 
-
 const struct file_operations BT_fopsfwlog = {
-    .open = btmtk_fops_openfwlog,
-    .release = btmtk_fops_closefwlog,
-    .read = btmtk_fops_readfwlog,
-    .write = btmtk_fops_writefwlog,
-    .poll = btmtk_fops_pollfwlog,
-    .unlocked_ioctl = btmtk_fops_unlocked_ioctlfwlog
+	.open = btmtk_fops_openfwlog,
+	.release = btmtk_fops_closefwlog,
+	.read = btmtk_fops_readfwlog,
+	.write = btmtk_fops_writefwlog,
+	.poll = btmtk_fops_pollfwlog,
+	.unlocked_ioctl = btmtk_fops_unlocked_ioctlfwlog
 
 };
 
@@ -2540,7 +2612,7 @@
 	int major = 0;
 	int majorfwlog = 0;
 
-	BTMTK_INFO("BTMTK_init\n");
+	pr_info("BTMTK_init\n");
 
 	g_card = NULL;
 	txbuf = NULL;
@@ -2554,7 +2626,6 @@
 #endif
 	g_priv = NULL;
 
-
 	fw_dump_buffer_full = 0;
 	fw_dump_total_read_size = 0;
 	fw_dump_total_write_size = 0;
@@ -2570,20 +2641,20 @@
 
 	ret = alloc_chrdev_region(&devID, 0, 1, "BT_chrdev");
 	if (ret) {
-		BTMTK_ERR("fail to allocate chrdev\n");
+		pr_err("fail to allocate chrdev\n");
 		return ret;
 	}
 
 	ret = alloc_chrdev_region(&devIDfwlog, 0, 1, "BT_chrdevfwlog");
 	if (ret) {
-		BTMTK_ERR("fail to allocate chrdev");
+		pr_err("fail to allocate chrdev\n");
 		return ret;
 	}
 
 	BTMTK_major = major = MAJOR(devID);
-	BTMTK_INFO("major number:%d", BTMTK_major);
+	pr_info("major number:%d\n", BTMTK_major);
 	BT_majorfwlog = majorfwlog = MAJOR(devIDfwlog);
-	BTMTK_INFO("BT_majorfwlog number: %d", BT_majorfwlog);
+	pr_info("BT_majorfwlog number: %d\n", BT_majorfwlog);
 
 	cdev_init(&BTMTK_cdev, &BTMTK_fops);
 	BTMTK_cdev.owner = THIS_MODULE;
@@ -2591,39 +2662,46 @@
 	cdev_init(&BT_cdevfwlog, &BT_fopsfwlog);
 	BT_cdevfwlog.owner = THIS_MODULE;
 
-    cdevErr = cdev_add(&BTMTK_cdev, devID, BTMTK_devs);
-    if (cdevErr)
-        goto error;
+	cdevErr = cdev_add(&BTMTK_cdev, devID, BTMTK_devs);
+	if (cdevErr)
+		goto error;
 
 	cdevErr = cdev_add(&BT_cdevfwlog, devIDfwlog, 1);
 	if (cdevErr)
 		goto error;
 
-	BTMTK_INFO("%s driver(major %d) installed.\n", "BT_chrdev", BTMTK_major);
-	BTMTK_INFO("%s driver(major %d) installed.\n", "BT_chrdevfwlog", BT_majorfwlog);
+	pr_info("%s driver(major %d) installed.\n",
+			"BT_chrdev", BTMTK_major);
+	pr_info("%s driver(major %d) installed.\n",
+			"BT_chrdevfwlog", BT_majorfwlog);
 
 	pBTClass = class_create(THIS_MODULE, "BT_chrdev");
 	if (IS_ERR(pBTClass)) {
-		BTMTK_ERR("class create fail, error code(%ld)\n", PTR_ERR(pBTClass));
+		pr_err("class create fail, error code(%ld)\n",
+			PTR_ERR(pBTClass));
 		goto err1;
 	}
 
 	pBTDev = device_create(pBTClass, NULL, devID, NULL, BT_NODE);
 	if (IS_ERR(pBTDev)) {
-		BTMTK_ERR("device create fail, error code(%ld)\n", PTR_ERR(pBTDev));
+		pr_err("device create fail, error code(%ld)\n",
+			PTR_ERR(pBTDev));
 		goto err2;
 	}
 
-	pBTDevfwlog = device_create(pBTClass, NULL, devIDfwlog, NULL, "stpbtfwlog");
+	pBTDevfwlog = device_create(pBTClass, NULL,
+				devIDfwlog, NULL, "stpbtfwlog");
 	if (IS_ERR(pBTDevfwlog)) {
-		BTMTK_ERR("device(stpbtfwlog) create fail, error code(%ld)", PTR_ERR(pBTDevfwlog));
+		pr_err("device(stpbtfwlog) create fail, error code(%ld)\n",
+			PTR_ERR(pBTDevfwlog));
 		goto err2;
 	}
 
-	BTMTK_INFO("%s: BT_major %d, BT_majorfwlog %d", __func__, BTMTK_major, BT_majorfwlog);
-	BTMTK_INFO("%s: devID %d, devIDfwlog %d", __func__, devID, devIDfwlog);
+	pr_info("%s: BT_major %d, BT_majorfwlog %d\n",
+			__func__, BTMTK_major, BT_majorfwlog);
+	pr_info("%s: devID %d, devIDfwlog %d\n", __func__, devID, devIDfwlog);
 
-	// init wait queue
+	/* init wait queue */
 	g_devIDfwlog = devIDfwlog;
 	init_waitqueue_head(&(fw_log_inq));
 	init_waitqueue_head(&(inq));
@@ -2653,10 +2731,10 @@
 	dev_t dev = MKDEV(BTMTK_major, 0);
 	dev_t devIDfwlog = g_devIDfwlog;
 
-	BTMTK_INFO("BTMTK_exit\n");
+	pr_info("BTMTK_exit\n");
 
-	if(pBTDevfwlog){
-		device_destroy(pBTClass,devIDfwlog);
+	if (pBTDevfwlog) {
+		device_destroy(pBTClass, devIDfwlog);
 		pBTDevfwlog = NULL;
 	}
 
@@ -2672,50 +2750,49 @@
 
 	cdev_del(&BTMTK_cdev);
 	unregister_chrdev_region(dev, 1);
-	BTMTK_INFO("%s driver removed.\n", BT_DRIVER_NAME);
+	pr_info("%s driver removed.\n", BT_DRIVER_NAME);
 }
 
- static int __init btmtk_sdio_init_module(void)
+static int __init btmtk_sdio_init_module(void)
 {
-     BTMTK_init();
+	BTMTK_init();
 
-     if (txbuf == NULL) {
-        txbuf = kmalloc(MTK_TXDATA_SIZE, GFP_ATOMIC);
-        memset(txbuf, 0, MTK_TXDATA_SIZE);
-     }
+	if (txbuf == NULL) {
+		txbuf = kmalloc(MTK_TXDATA_SIZE, GFP_ATOMIC);
+		memset(txbuf, 0, MTK_TXDATA_SIZE);
+	}
 
-     if (rxbuf == NULL) {
-        rxbuf = kmalloc(MTK_RXDATA_SIZE, GFP_ATOMIC);
-        memset(rxbuf, 0, MTK_RXDATA_SIZE);
-     }
+	if (rxbuf == NULL) {
+		rxbuf = kmalloc(MTK_RXDATA_SIZE, GFP_ATOMIC);
+		memset(rxbuf, 0, MTK_RXDATA_SIZE);
+	}
 
+	if (sdio_register_driver(&bt_mtk_sdio) != 0) {
+		pr_err("SDIO Driver Registration Failed\n");
+		return -ENODEV;
+	}
 
-     if (sdio_register_driver(&bt_mtk_sdio) != 0) {
-                 BTMTK_ERR("SDIO Driver Registration Failed");
-                 return -ENODEV;
-     } else
-         BTMTK_INFO("SDIO Driver Registration Success");
+	pr_info("SDIO Driver Registration Success\n");
 
-         /* Clear the flag in case user removes the card. */
-         user_rmmod = 0;
+	/* Clear the flag in case user removes the card. */
+	user_rmmod = 0;
 
-         return 0;
- }
+	return 0;
+}
 
- static void __exit btmtk_sdio_exit_module(void)
- {
-     /* Set the flag as user is removing this module. */
-     user_rmmod = 1;
+static void __exit btmtk_sdio_exit_module(void)
+{
+	/* Set the flag as user is removing this module. */
+	user_rmmod = 1;
 
-     BTMTK_exit();
+	BTMTK_exit();
 
-     sdio_unregister_driver(&bt_mtk_sdio);
+	sdio_unregister_driver(&bt_mtk_sdio);
 
-     kfree(txbuf);
+	kfree(txbuf);
 
-     kfree(rxbuf);
+	kfree(rxbuf);
+}
 
- }
-
- module_init(btmtk_sdio_init_module);
- module_exit(btmtk_sdio_exit_module);
+module_init(btmtk_sdio_init_module);
+module_exit(btmtk_sdio_exit_module);
diff --git a/btmtk_sdio.h b/btmtk_sdio.h
index 0eb02a0..e821518 100644
--- a/btmtk_sdio.h
+++ b/btmtk_sdio.h
@@ -1,15 +1,14 @@
-/**
+/*
  * Mediatek BT-over-SDIO driver: SDIO interface related definitions
  *
- * Copyright (C) 2015, Mediatek International Ltd.
+ * Copyright (C) 2017, Mediatek International Ltd.
  *
  * This software file (the "File") is distributed by Mediatek International
  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
  * (the "License").  You may use, redistribute and/or modify this File in
  * accordance with the terms and conditions of the License, a copy of which
  * is available by writing to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
- * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ * On the worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
  *
  *
  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
@@ -17,9 +16,12 @@
  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
  * this warranty disclaimer.
  *
- **/
+ */
 
-#define VERSION "v0.0.0.27"
+#ifndef _BTMTK_SDIO_H_
+#define _BTMTK_SDIO_H_
+
+#define VERSION "v0.0.0.28"
 
 #define SDIO_HEADER_LEN                 4
 
@@ -41,12 +43,12 @@
 #define MRVDRV_SIZE_OF_CMD_BUFFER       (2 * 1024)
 
 #define MRVDRV_BT_RX_PACKET_BUFFER_SIZE \
-        (HCI_MAX_FRAME_SIZE + FW_EXTRA_LEN)
+					(HCI_MAX_FRAME_SIZE + FW_EXTRA_LEN)
 
 #define ALLOC_BUF_SIZE  (((max_t (int, MRVDRV_BT_RX_PACKET_BUFFER_SIZE, \
-                        MRVDRV_SIZE_OF_CMD_BUFFER) + SDIO_HEADER_LEN \
-                        + SDIO_BLOCK_SIZE - 1) / SDIO_BLOCK_SIZE) \
-                        * SDIO_BLOCK_SIZE)
+				MRVDRV_SIZE_OF_CMD_BUFFER) + SDIO_HEADER_LEN \
+				+ SDIO_BLOCK_SIZE - 1) / SDIO_BLOCK_SIZE) \
+				* SDIO_BLOCK_SIZE)
 
 /* The number of times to try when polling for status */
 #define MAX_POLL_TRIES                  100
@@ -73,82 +75,83 @@
 
 #if CFG_THREE_IN_ONE_FIRMWARE
 #define BUILD_SIGN(ch0, ch1, ch2, ch3) \
-                    ((unsigned int)(unsigned char)(ch0) | ((unsigned int)(unsigned char)(ch1) << 8) |    \
-                    ((unsigned int)(unsigned char)(ch2) << 16) | ((unsigned int)(unsigned char)(ch3) << 24))
+		((unsigned int)(unsigned char)(ch0) | \
+		((unsigned int)(unsigned char)(ch1) << 8) | \
+		((unsigned int)(unsigned char)(ch2) << 16) | \
+		((unsigned int)(unsigned char)(ch3) << 24))
 
 #define MTK_WIFI_SIGNATURE BUILD_SIGN('M', 'T', 'K', 'W')
 #define FW_TYPE_PATCH   2
-typedef struct _FW_SECTION_T {
-        unsigned int u4FwType;
-        unsigned int u4Offset;
-        unsigned int u4Length;
-} FW_SECTION_T, *P_FW_SECTION_T;
+struct _FW_SECTION_T {
+	unsigned int u4FwType;
+	unsigned int u4Offset;
+	unsigned int u4Length;
+};
 
-typedef struct _FIRMWARE_HEADER_T {
-        unsigned int u4Signature;
-        unsigned int u4CRC;
-        unsigned int u4NumOfEntries;
-        unsigned int u4Reserved;
-        FW_SECTION_T arSection[];
-} FIRMWARE_HEADER_T, *P_FIRMWARE_HEADER_T;
+struct _FIRMWARE_HEADER_T {
+	unsigned int u4Signature;
+	unsigned int u4CRC;
+	unsigned int u4NumOfEntries;
+	unsigned int u4Reserved;
+	struct _FW_SECTION_T arSection[];
+};
 #endif
 
 struct btmtk_sdio_card_reg {
-        u8 cfg;
-        u8 host_int_mask;
-        u8 host_intstatus;
-        u8 card_status;
-        u8 sq_read_base_addr_a0;
-        u8 sq_read_base_addr_a1;
-        u8 card_revision;
-        u8 card_fw_status0;
-        u8 card_fw_status1;
-        u8 card_rx_len;
-        u8 card_rx_unit;
-        u8 io_port_0;
-        u8 io_port_1;
-        u8 io_port_2;
-        bool int_read_to_clear;
-        u8 host_int_rsr;
-        u8 card_misc_cfg;
-        u8 fw_dump_ctrl;
-        u8 fw_dump_start;
-        u8 fw_dump_end;
-    u8 func_num;
+	u8 cfg;
+	u8 host_int_mask;
+	u8 host_intstatus;
+	u8 card_status;
+	u8 sq_read_base_addr_a0;
+	u8 sq_read_base_addr_a1;
+	u8 card_revision;
+	u8 card_fw_status0;
+	u8 card_fw_status1;
+	u8 card_rx_len;
+	u8 card_rx_unit;
+	u8 io_port_0;
+	u8 io_port_1;
+	u8 io_port_2;
+	bool int_read_to_clear;
+	u8 host_int_rsr;
+	u8 card_misc_cfg;
+	u8 fw_dump_ctrl;
+	u8 fw_dump_start;
+	u8 fw_dump_end;
+	u8 func_num;
 };
 
 struct btmtk_sdio_card {
-        struct sdio_func *func;
-        u32 ioport;
-        const char *helper;
-        const char *firmware;
-        const char *firmware1;
-        const struct btmtk_sdio_card_reg *reg;
-        bool support_pscan_win_report;
-        bool supports_fw_dump;
-        u16 sd_blksz_fw_dl;
-        u8 rx_unit;
-        struct btmtk_private *priv;
+	struct sdio_func *func;
+	u32 ioport;
+	const char *helper;
+	const char *firmware;
+	const char *firmware1;
+	const struct btmtk_sdio_card_reg *reg;
+	bool support_pscan_win_report;
+	bool supports_fw_dump;
+	u16 sd_blksz_fw_dl;
+	u8 rx_unit;
+	struct btmtk_private *priv;
 };
-
 struct btmtk_sdio_device {
-        const char *helper;
-        const char *firmware;
-        const char *firmware1;
-        const struct btmtk_sdio_card_reg *reg;
-        const bool support_pscan_win_report;
-        u16 sd_blksz_fw_dl;
-        bool supports_fw_dump;
+	const char *helper;
+	const char *firmware;
+	const char *firmware1;
+	const struct btmtk_sdio_card_reg *reg;
+	const bool support_pscan_win_report;
+	u16 sd_blksz_fw_dl;
+	bool supports_fw_dump;
 };
 #pragma pack(1)
-typedef struct _PATCH_HEADER {
-    u8 ucDateTime[16];
-    u8 ucPlatform[4];
-    u16 u2HwVer;
-    u16 u2SwVer;
-    u32 u4PatchVer;
-    u16 u2PatchStartAddr;/*Patch ram start address*/
-} PATCH_HEADER, *P_PATCH_HEADER;
+struct _PATCH_HEADER {
+	u8 ucDateTime[16];
+	u8 ucPlatform[4];
+	u16 u2HwVer;
+	u16 u2SwVer;
+	u32 u4PatchVer;
+	u16 u2PatchStartAddr;/*Patch ram start address*/
+};
 #pragma pack()
 
 #define HW_VERSION 0x80000000
@@ -225,16 +228,20 @@
 
 /* Macros for Data Alignment : size */
 #define ALIGN_SZ(p, a)  \
-        (((p) + ((a) - 1)) & ~((a) - 1))
+		(((p) + ((a) - 1)) & ~((a) - 1))
 
 /* Macros for Data Alignment : address */
 #define ALIGN_ADDR(p, a)        \
-        ((((unsigned long)(p)) + (((unsigned long)(a)) - 1)) & \
-                                        ~(((unsigned long)(a)) - 1))
+		((((unsigned long)(p)) + (((unsigned long)(a)) - 1)) & \
+		~(((unsigned long)(a)) - 1))
 struct sk_buff *btmtk_create_send_data(struct sk_buff *skb);
 int btmtk_print_buffer_conent(u8 *buf, u32 Datalen);
-u32 lock_unsleepable_lock(P_OSAL_UNSLEEPABLE_LOCK pUSL);
-u32 unlock_unsleepable_lock(P_OSAL_UNSLEEPABLE_LOCK pUSL);
+u32 lock_unsleepable_lock(struct _OSAL_UNSLEEPABLE_LOCK_ *pUSL);
+u32 unlock_unsleepable_lock(struct _OSAL_UNSLEEPABLE_LOCK_ *pUSL);
 
 extern unsigned char probe_counter;
 extern unsigned char *txbuf;
+extern u8 probe_ready;
+
+#endif
+