diff options
author | Bing Zhao <bzhao@marvell.com> | 2013-10-31 18:08:31 -0400 |
---|---|---|
committer | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2013-12-04 08:09:03 -0500 |
commit | 3e4543abf9deea8733341d235719e7e02b4068ed (patch) | |
tree | 7a30d772b451acd441a90efbb71bc362c38b527d | |
parent | 6a070e6e81adfaed060c5696ef3388126d2165b1 (diff) |
Bluetooth: btmrvl: operate on 16-bit opcodes instead of ogf/ocf
Replace ogf/ocf and its packing with 16-bit opcodes.
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r-- | drivers/bluetooth/btmrvl_drv.h | 19 | ||||
-rw-r--r-- | drivers/bluetooth/btmrvl_main.c | 21 |
2 files changed, 20 insertions, 20 deletions
diff --git a/drivers/bluetooth/btmrvl_drv.h b/drivers/bluetooth/btmrvl_drv.h index f9d183387f45..e3b49c68ea71 100644 --- a/drivers/bluetooth/btmrvl_drv.h +++ b/drivers/bluetooth/btmrvl_drv.h | |||
@@ -90,12 +90,12 @@ struct btmrvl_private { | |||
90 | 90 | ||
91 | #define MRVL_VENDOR_PKT 0xFE | 91 | #define MRVL_VENDOR_PKT 0xFE |
92 | 92 | ||
93 | /* Bluetooth commands */ | 93 | /* Vendor specific Bluetooth commands */ |
94 | #define BT_CMD_AUTO_SLEEP_MODE 0x23 | 94 | #define BT_CMD_AUTO_SLEEP_MODE 0xFC23 |
95 | #define BT_CMD_HOST_SLEEP_CONFIG 0x59 | 95 | #define BT_CMD_HOST_SLEEP_CONFIG 0xFC59 |
96 | #define BT_CMD_HOST_SLEEP_ENABLE 0x5A | 96 | #define BT_CMD_HOST_SLEEP_ENABLE 0xFC5A |
97 | #define BT_CMD_MODULE_CFG_REQ 0x5B | 97 | #define BT_CMD_MODULE_CFG_REQ 0xFC5B |
98 | #define BT_CMD_LOAD_CONFIG_DATA 0x61 | 98 | #define BT_CMD_LOAD_CONFIG_DATA 0xFC61 |
99 | 99 | ||
100 | /* Sub-commands: Module Bringup/Shutdown Request/Response */ | 100 | /* Sub-commands: Module Bringup/Shutdown Request/Response */ |
101 | #define MODULE_BRINGUP_REQ 0xF1 | 101 | #define MODULE_BRINGUP_REQ 0xF1 |
@@ -104,6 +104,11 @@ struct btmrvl_private { | |||
104 | 104 | ||
105 | #define MODULE_SHUTDOWN_REQ 0xF2 | 105 | #define MODULE_SHUTDOWN_REQ 0xF2 |
106 | 106 | ||
107 | /* Vendor specific Bluetooth events */ | ||
108 | #define BT_EVENT_AUTO_SLEEP_MODE 0x23 | ||
109 | #define BT_EVENT_HOST_SLEEP_CONFIG 0x59 | ||
110 | #define BT_EVENT_HOST_SLEEP_ENABLE 0x5A | ||
111 | #define BT_EVENT_MODULE_CFG_REQ 0x5B | ||
107 | #define BT_EVENT_POWER_STATE 0x20 | 112 | #define BT_EVENT_POWER_STATE 0x20 |
108 | 113 | ||
109 | /* Bluetooth Power States */ | 114 | /* Bluetooth Power States */ |
@@ -111,8 +116,6 @@ struct btmrvl_private { | |||
111 | #define BT_PS_DISABLE 0x03 | 116 | #define BT_PS_DISABLE 0x03 |
112 | #define BT_PS_SLEEP 0x01 | 117 | #define BT_PS_SLEEP 0x01 |
113 | 118 | ||
114 | #define OGF 0x3F | ||
115 | |||
116 | /* Host Sleep states */ | 119 | /* Host Sleep states */ |
117 | #define HS_ACTIVATED 0x01 | 120 | #define HS_ACTIVATED 0x01 |
118 | #define HS_DEACTIVATED 0x00 | 121 | #define HS_DEACTIVATED 0x00 |
diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c index 5cf31c4fe6d1..477b658316b4 100644 --- a/drivers/bluetooth/btmrvl_main.c +++ b/drivers/bluetooth/btmrvl_main.c | |||
@@ -50,12 +50,10 @@ bool btmrvl_check_evtpkt(struct btmrvl_private *priv, struct sk_buff *skb) | |||
50 | 50 | ||
51 | if (hdr->evt == HCI_EV_CMD_COMPLETE) { | 51 | if (hdr->evt == HCI_EV_CMD_COMPLETE) { |
52 | struct hci_ev_cmd_complete *ec; | 52 | struct hci_ev_cmd_complete *ec; |
53 | u16 opcode, ocf, ogf; | 53 | u16 opcode; |
54 | 54 | ||
55 | ec = (void *) (skb->data + HCI_EVENT_HDR_SIZE); | 55 | ec = (void *) (skb->data + HCI_EVENT_HDR_SIZE); |
56 | opcode = __le16_to_cpu(ec->opcode); | 56 | opcode = __le16_to_cpu(ec->opcode); |
57 | ocf = hci_opcode_ocf(opcode); | ||
58 | ogf = hci_opcode_ogf(opcode); | ||
59 | 57 | ||
60 | if (priv->btmrvl_dev.sendcmdflag) { | 58 | if (priv->btmrvl_dev.sendcmdflag) { |
61 | priv->btmrvl_dev.sendcmdflag = false; | 59 | priv->btmrvl_dev.sendcmdflag = false; |
@@ -63,9 +61,8 @@ bool btmrvl_check_evtpkt(struct btmrvl_private *priv, struct sk_buff *skb) | |||
63 | wake_up_interruptible(&priv->adapter->cmd_wait_q); | 61 | wake_up_interruptible(&priv->adapter->cmd_wait_q); |
64 | } | 62 | } |
65 | 63 | ||
66 | if (ogf == OGF) { | 64 | if (hci_opcode_ogf(opcode) == 0x3F) { |
67 | BT_DBG("vendor event skipped: ogf 0x%4.4x ocf 0x%4.4x", | 65 | BT_DBG("vendor event skipped: opcode=%#4.4x", opcode); |
68 | ogf, ocf); | ||
69 | kfree_skb(skb); | 66 | kfree_skb(skb); |
70 | return false; | 67 | return false; |
71 | } | 68 | } |
@@ -89,7 +86,7 @@ int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb) | |||
89 | } | 86 | } |
90 | 87 | ||
91 | switch (event->data[0]) { | 88 | switch (event->data[0]) { |
92 | case BT_CMD_AUTO_SLEEP_MODE: | 89 | case BT_EVENT_AUTO_SLEEP_MODE: |
93 | if (!event->data[2]) { | 90 | if (!event->data[2]) { |
94 | if (event->data[1] == BT_PS_ENABLE) | 91 | if (event->data[1] == BT_PS_ENABLE) |
95 | adapter->psmode = 1; | 92 | adapter->psmode = 1; |
@@ -102,7 +99,7 @@ int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb) | |||
102 | } | 99 | } |
103 | break; | 100 | break; |
104 | 101 | ||
105 | case BT_CMD_HOST_SLEEP_CONFIG: | 102 | case BT_EVENT_HOST_SLEEP_CONFIG: |
106 | if (!event->data[3]) | 103 | if (!event->data[3]) |
107 | BT_DBG("gpio=%x, gap=%x", event->data[1], | 104 | BT_DBG("gpio=%x, gap=%x", event->data[1], |
108 | event->data[2]); | 105 | event->data[2]); |
@@ -110,7 +107,7 @@ int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb) | |||
110 | BT_DBG("HSCFG command failed"); | 107 | BT_DBG("HSCFG command failed"); |
111 | break; | 108 | break; |
112 | 109 | ||
113 | case BT_CMD_HOST_SLEEP_ENABLE: | 110 | case BT_EVENT_HOST_SLEEP_ENABLE: |
114 | if (!event->data[1]) { | 111 | if (!event->data[1]) { |
115 | adapter->hs_state = HS_ACTIVATED; | 112 | adapter->hs_state = HS_ACTIVATED; |
116 | if (adapter->psmode) | 113 | if (adapter->psmode) |
@@ -121,7 +118,7 @@ int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb) | |||
121 | } | 118 | } |
122 | break; | 119 | break; |
123 | 120 | ||
124 | case BT_CMD_MODULE_CFG_REQ: | 121 | case BT_EVENT_MODULE_CFG_REQ: |
125 | if (priv->btmrvl_dev.sendcmdflag && | 122 | if (priv->btmrvl_dev.sendcmdflag && |
126 | event->data[1] == MODULE_BRINGUP_REQ) { | 123 | event->data[1] == MODULE_BRINGUP_REQ) { |
127 | BT_DBG("EVENT:%s", | 124 | BT_DBG("EVENT:%s", |
@@ -166,7 +163,7 @@ exit: | |||
166 | } | 163 | } |
167 | EXPORT_SYMBOL_GPL(btmrvl_process_event); | 164 | EXPORT_SYMBOL_GPL(btmrvl_process_event); |
168 | 165 | ||
169 | static int btmrvl_send_sync_cmd(struct btmrvl_private *priv, u16 cmd_no, | 166 | static int btmrvl_send_sync_cmd(struct btmrvl_private *priv, u16 opcode, |
170 | const void *param, u8 len) | 167 | const void *param, u8 len) |
171 | { | 168 | { |
172 | struct sk_buff *skb; | 169 | struct sk_buff *skb; |
@@ -179,7 +176,7 @@ static int btmrvl_send_sync_cmd(struct btmrvl_private *priv, u16 cmd_no, | |||
179 | } | 176 | } |
180 | 177 | ||
181 | hdr = (struct hci_command_hdr *)skb_put(skb, HCI_COMMAND_HDR_SIZE); | 178 | hdr = (struct hci_command_hdr *)skb_put(skb, HCI_COMMAND_HDR_SIZE); |
182 | hdr->opcode = cpu_to_le16(hci_opcode_pack(OGF, cmd_no)); | 179 | hdr->opcode = cpu_to_le16(opcode); |
183 | hdr->plen = len; | 180 | hdr->plen = len; |
184 | 181 | ||
185 | if (len) | 182 | if (len) |