diff options
Diffstat (limited to 'drivers/bluetooth/sd8797/bt/bt_drv.h')
-rw-r--r-- | drivers/bluetooth/sd8797/bt/bt_drv.h | 82 |
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 */ |