summaryrefslogtreecommitdiff
path: root/drivers/bluetooth/sd8797/bt/bt_drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/bluetooth/sd8797/bt/bt_drv.h')
-rw-r--r--drivers/bluetooth/sd8797/bt/bt_drv.h82
1 files changed, 58 insertions, 24 deletions
diff --git a/drivers/bluetooth/sd8797/bt/bt_drv.h b/drivers/bluetooth/sd8797/bt/bt_drv.h
index 6773d34a944c..e417f976fbee 100644
--- a/drivers/bluetooth/sd8797/bt/bt_drv.h
+++ b/drivers/bluetooth/sd8797/bt/bt_drv.h
@@ -54,6 +54,16 @@ typedef u32 t_ptr;
/** Define maximum number of radio func supported */
#define MAX_RADIO_FUNC 4
+/** MAC address print format */
+#ifndef MACSTR
+#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
+#endif
+
+/** MAC address print arguments */
+#ifndef MAC2STR
+#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
+#endif
+
/** Debug level : Message */
#define DBG_MSG BIT(0)
/** Debug level : Fatal */
@@ -86,11 +96,14 @@ extern u32 mbt_drvdbg;
#ifdef DEBUG_LEVEL2
/** Print informative message */
-#define PRINTM_INFO(msg...) do {if (mbt_drvdbg & DBG_INFO) printk(KERN_DEBUG msg); } while (0)
+#define PRINTM_INFO(msg...) do {if (mbt_drvdbg & DBG_INFO) \
+ printk(KERN_DEBUG msg); } while (0)
/** Print warning message */
-#define PRINTM_WARN(msg...) do {if (mbt_drvdbg & DBG_WARN) printk(KERN_DEBUG msg); } while (0)
+#define PRINTM_WARN(msg...) do {if (mbt_drvdbg & DBG_WARN) \
+ printk(KERN_DEBUG msg); } while (0)
/** Print entry message */
-#define PRINTM_ENTRY(msg...) do {if (mbt_drvdbg & DBG_ENTRY) printk(KERN_DEBUG msg); } while (0)
+#define PRINTM_ENTRY(msg...) do {if (mbt_drvdbg & DBG_ENTRY) \
+ printk(KERN_DEBUG msg); } while (0)
#else
/** Print informative message */
#define PRINTM_INFO(msg...) do {} while (0)
@@ -101,24 +114,33 @@ extern u32 mbt_drvdbg;
#endif /* DEBUG_LEVEL2 */
/** Print interrupt message */
-#define PRINTM_INTR(msg...) do {if (mbt_drvdbg & DBG_INTR) printk(KERN_DEBUG msg); } while (0)
+#define PRINTM_INTR(msg...) do {if (mbt_drvdbg & DBG_INTR) \
+ printk(KERN_DEBUG msg); } while (0)
/** Print event message */
-#define PRINTM_EVENT(msg...) do {if (mbt_drvdbg & DBG_EVENT) printk(KERN_DEBUG msg); } while (0)
+#define PRINTM_EVENT(msg...) do {if (mbt_drvdbg & DBG_EVENT) \
+ printk(KERN_DEBUG msg); } while (0)
/** Print command message */
-#define PRINTM_CMD(msg...) do {if (mbt_drvdbg & DBG_CMD) printk(KERN_DEBUG msg); } while (0)
+#define PRINTM_CMD(msg...) do {if (mbt_drvdbg & DBG_CMD) \
+ printk(KERN_DEBUG msg); } while (0)
/** Print data message */
-#define PRINTM_DATA(msg...) do {if (mbt_drvdbg & DBG_DATA) printk(KERN_DEBUG msg); } while (0)
+#define PRINTM_DATA(msg...) do {if (mbt_drvdbg & DBG_DATA) \
+ printk(KERN_DEBUG msg); } while (0)
/** Print error message */
-#define PRINTM_ERROR(msg...) do {if (mbt_drvdbg & DBG_ERROR) printk(KERN_ERR msg); } while (0)
+#define PRINTM_ERROR(msg...) do {if (mbt_drvdbg & DBG_ERROR) \
+ printk(KERN_ERR msg); } while (0)
/** Print fatal message */
-#define PRINTM_FATAL(msg...) do {if (mbt_drvdbg & DBG_FATAL) printk(KERN_ERR msg); } while (0)
+#define PRINTM_FATAL(msg...) do {if (mbt_drvdbg & DBG_FATAL) \
+ printk(KERN_ERR msg); } while (0)
/** Print message */
-#define PRINTM_MSG(msg...) do {if (mbt_drvdbg & DBG_MSG) printk(KERN_ALERT msg); } while (0)
+#define PRINTM_MSG(msg...) do {if (mbt_drvdbg & DBG_MSG) \
+ printk(KERN_ALERT msg); } while (0)
/** Print data dump message */
-#define PRINTM_DAT_D(msg...) do {if (mbt_drvdbg & DBG_DAT_D) printk(KERN_DEBUG msg); } while (0)
+#define PRINTM_DAT_D(msg...) do {if (mbt_drvdbg & DBG_DAT_D) \
+ printk(KERN_DEBUG msg); } while (0)
/** Print data dump message */
-#define PRINTM_CMD_D(msg...) do {if (mbt_drvdbg & DBG_CMD_D) printk(KERN_DEBUG msg); } while (0)
+#define PRINTM_CMD_D(msg...) do {if (mbt_drvdbg & DBG_CMD_D) \
+ printk(KERN_DEBUG msg); } while (0)
/** Print message with required level */
#define PRINTM(level, msg...) PRINTM_##level(msg)
@@ -154,28 +176,30 @@ hexdump(char *prompt, u8 * buf, int len)
}
/** Debug hexdump of debug data */
-#define DBG_HEXDUMP_DAT_D(x, y, z) do {if (mbt_drvdbg & DBG_DAT_D) hexdump(x, y, z); } while (0)
+#define DBG_HEXDUMP_DAT_D(x, y, z) do {if (mbt_drvdbg & DBG_DAT_D) \
+ hexdump(x, y, z); } while (0)
/** Debug hexdump of debug command */
-#define DBG_HEXDUMP_CMD_D(x, y, z) do {if (mbt_drvdbg & DBG_CMD_D) hexdump(x, y, z); } while (0)
+#define DBG_HEXDUMP_CMD_D(x, y, z) do {if (mbt_drvdbg & DBG_CMD_D) \
+ hexdump(x, y, z); } while (0)
/** Debug hexdump */
#define DBG_HEXDUMP(level, x, y, z) DBG_HEXDUMP_##level(x, y, z)
/** Mark entry point */
-#define ENTER() PRINTM(ENTRY, "Enter: %s, %s:%i\n", __FUNCTION__, \
+#define ENTER() PRINTM(ENTRY, "Enter: %s, %s:%i\n", __func__, \
__FILE__, __LINE__)
/** Mark exit point */
-#define LEAVE() PRINTM(ENTRY, "Leave: %s, %s:%i\n", __FUNCTION__, \
+#define LEAVE() PRINTM(ENTRY, "Leave: %s, %s:%i\n", __func__, \
__FILE__, __LINE__)
#else
/** Do nothing */
-#define PRINTM(level, msg...) do {} while (0);
+#define PRINTM(level, msg...) do {} while (0)
/** Do nothing */
-#define DBG_HEXDUMP(level, x, y, z) do {} while (0);
+#define DBG_HEXDUMP(level, x, y, z) do {} while (0)
/** Do nothing */
-#define ENTER() do {} while (0);
+#define ENTER() do {} while (0)
/** Do nothing */
-#define LEAVE() do {} while (0);
+#define LEAVE() do {} while (0)
#endif /* DEBUG_LEVEL1 */
/** Bluetooth upload size */
@@ -268,7 +292,7 @@ os_sched_timeout(u32 millisec)
#endif
#ifndef __ATTRIB_PACK__
-#define __ATTRIB_PACK__ __attribute__ ((packed))
+#define __ATTRIB_PACK__ __attribute__((packed))
#endif
/** Data structure for the Marvell Bluetooth device */
@@ -435,15 +459,19 @@ typedef struct _bt_private {
spinlock_t driver_lock;
/** Driver lock flags */
ulong driver_flags;
+ /** Driver reference flags */
+ struct kobject kobj;
int debug_device_pending;
int debug_ocf_ogf[2];
} bt_private, *pbt_private;
/** Disable interrupt */
-#define OS_INT_DISABLE spin_lock_irqsave(&priv->driver_lock, priv->driver_flags)
+#define OS_INT_DISABLE spin_lock_irqsave(&priv->driver_lock, \
+ priv->driver_flags)
/** Enable interrupt */
-#define OS_INT_RESTORE spin_unlock_irqrestore(&priv->driver_lock, priv->driver_flags)
+#define OS_INT_RESTORE spin_unlock_irqrestore(&priv->driver_lock, \
+ priv->driver_flags)
#ifndef HCI_BT_AMP
/** BT_AMP flag for device type */
@@ -566,6 +594,8 @@ int fm_set_intr_mask(bt_private * priv, u32 mask);
/** default idle time */
#define DEFAULT_IDLE_TIME 1000
+#define BT_CMD_HEADER_SIZE 3
+
typedef struct _BT_CMD {
/** OCF OGF */
u16 ocf_ogf;
@@ -588,7 +618,10 @@ typedef struct _BT_EVENT {
int check_evtpkt(bt_private * priv, struct sk_buff *skb);
/* Prototype of global function */
-
+/** This function gets the priv reference */
+struct kobject *bt_priv_get(bt_private * priv);
+/** This function release the priv reference */
+void bt_priv_put(bt_private * priv);
/** This function adds the card */
bt_private *bt_add_card(void *card);
/** This function removes the card */
@@ -690,6 +723,7 @@ int bt_init_config(bt_private * priv, char *cfg_file);
int bt_load_cal_data(bt_private * priv, u8 * config_data, u8 * mac);
/** BT set user defined calibration data */
int bt_cal_config(bt_private * priv, char *cfg_file, char *mac);
+int bt_init_mac_address(bt_private * priv, char *mac);
typedef struct _BT_HCI_CMD {
/** OCF OGF */