diff options
Diffstat (limited to 'drivers/bluetooth')
-rw-r--r-- | drivers/bluetooth/btmrvl_debugfs.c | 1 | ||||
-rw-r--r-- | drivers/bluetooth/btmrvl_drv.h | 1 | ||||
-rw-r--r-- | drivers/bluetooth/btmrvl_main.c | 55 | ||||
-rw-r--r-- | drivers/bluetooth/btmrvl_sdio.c | 4 | ||||
-rw-r--r-- | drivers/bluetooth/hci_vhci.c | 20 |
5 files changed, 41 insertions, 40 deletions
diff --git a/drivers/bluetooth/btmrvl_debugfs.c b/drivers/bluetooth/btmrvl_debugfs.c index 4617bd12f63b..d43b5cb864ef 100644 --- a/drivers/bluetooth/btmrvl_debugfs.c +++ b/drivers/bluetooth/btmrvl_debugfs.c | |||
@@ -29,7 +29,6 @@ struct btmrvl_debugfs_data { | |||
29 | struct dentry *root_dir, *config_dir, *status_dir; | 29 | struct dentry *root_dir, *config_dir, *status_dir; |
30 | 30 | ||
31 | /* config */ | 31 | /* config */ |
32 | struct dentry *drvdbg; | ||
33 | struct dentry *psmode; | 32 | struct dentry *psmode; |
34 | struct dentry *pscmd; | 33 | struct dentry *pscmd; |
35 | struct dentry *hsmode; | 34 | struct dentry *hsmode; |
diff --git a/drivers/bluetooth/btmrvl_drv.h b/drivers/bluetooth/btmrvl_drv.h index 411c7a77082d..523d197b9824 100644 --- a/drivers/bluetooth/btmrvl_drv.h +++ b/drivers/bluetooth/btmrvl_drv.h | |||
@@ -131,6 +131,7 @@ void btmrvl_check_evtpkt(struct btmrvl_private *priv, struct sk_buff *skb); | |||
131 | int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb); | 131 | int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb); |
132 | 132 | ||
133 | int btmrvl_send_module_cfg_cmd(struct btmrvl_private *priv, int subcmd); | 133 | int btmrvl_send_module_cfg_cmd(struct btmrvl_private *priv, int subcmd); |
134 | int btmrvl_enable_ps(struct btmrvl_private *priv); | ||
134 | int btmrvl_prepare_command(struct btmrvl_private *priv); | 135 | int btmrvl_prepare_command(struct btmrvl_private *priv); |
135 | 136 | ||
136 | #ifdef CONFIG_DEBUG_FS | 137 | #ifdef CONFIG_DEBUG_FS |
diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c index e605563b4eaa..f97771ce432c 100644 --- a/drivers/bluetooth/btmrvl_main.c +++ b/drivers/bluetooth/btmrvl_main.c | |||
@@ -189,6 +189,38 @@ int btmrvl_send_module_cfg_cmd(struct btmrvl_private *priv, int subcmd) | |||
189 | } | 189 | } |
190 | EXPORT_SYMBOL_GPL(btmrvl_send_module_cfg_cmd); | 190 | EXPORT_SYMBOL_GPL(btmrvl_send_module_cfg_cmd); |
191 | 191 | ||
192 | int btmrvl_enable_ps(struct btmrvl_private *priv) | ||
193 | { | ||
194 | struct sk_buff *skb; | ||
195 | struct btmrvl_cmd *cmd; | ||
196 | |||
197 | skb = bt_skb_alloc(sizeof(*cmd), GFP_ATOMIC); | ||
198 | if (skb == NULL) { | ||
199 | BT_ERR("No free skb"); | ||
200 | return -ENOMEM; | ||
201 | } | ||
202 | |||
203 | cmd = (struct btmrvl_cmd *) skb_put(skb, sizeof(*cmd)); | ||
204 | cmd->ocf_ogf = cpu_to_le16(hci_opcode_pack(OGF, | ||
205 | BT_CMD_AUTO_SLEEP_MODE)); | ||
206 | cmd->length = 1; | ||
207 | |||
208 | if (priv->btmrvl_dev.psmode) | ||
209 | cmd->data[0] = BT_PS_ENABLE; | ||
210 | else | ||
211 | cmd->data[0] = BT_PS_DISABLE; | ||
212 | |||
213 | bt_cb(skb)->pkt_type = MRVL_VENDOR_PKT; | ||
214 | |||
215 | skb->dev = (void *) priv->btmrvl_dev.hcidev; | ||
216 | skb_queue_head(&priv->adapter->tx_queue, skb); | ||
217 | |||
218 | BT_DBG("Queue PSMODE Command:%d", cmd->data[0]); | ||
219 | |||
220 | return 0; | ||
221 | } | ||
222 | EXPORT_SYMBOL_GPL(btmrvl_enable_ps); | ||
223 | |||
192 | static int btmrvl_enable_hs(struct btmrvl_private *priv) | 224 | static int btmrvl_enable_hs(struct btmrvl_private *priv) |
193 | { | 225 | { |
194 | struct sk_buff *skb; | 226 | struct sk_buff *skb; |
@@ -258,28 +290,7 @@ int btmrvl_prepare_command(struct btmrvl_private *priv) | |||
258 | 290 | ||
259 | if (priv->btmrvl_dev.pscmd) { | 291 | if (priv->btmrvl_dev.pscmd) { |
260 | priv->btmrvl_dev.pscmd = 0; | 292 | priv->btmrvl_dev.pscmd = 0; |
261 | 293 | btmrvl_enable_ps(priv); | |
262 | skb = bt_skb_alloc(sizeof(*cmd), GFP_ATOMIC); | ||
263 | if (skb == NULL) { | ||
264 | BT_ERR("No free skb"); | ||
265 | return -ENOMEM; | ||
266 | } | ||
267 | |||
268 | cmd = (struct btmrvl_cmd *) skb_put(skb, sizeof(*cmd)); | ||
269 | cmd->ocf_ogf = cpu_to_le16(hci_opcode_pack(OGF, BT_CMD_AUTO_SLEEP_MODE)); | ||
270 | cmd->length = 1; | ||
271 | |||
272 | if (priv->btmrvl_dev.psmode) | ||
273 | cmd->data[0] = BT_PS_ENABLE; | ||
274 | else | ||
275 | cmd->data[0] = BT_PS_DISABLE; | ||
276 | |||
277 | bt_cb(skb)->pkt_type = MRVL_VENDOR_PKT; | ||
278 | |||
279 | skb->dev = (void *) priv->btmrvl_dev.hcidev; | ||
280 | skb_queue_head(&priv->adapter->tx_queue, skb); | ||
281 | |||
282 | BT_DBG("Queue PSMODE Command:%d", cmd->data[0]); | ||
283 | } | 294 | } |
284 | 295 | ||
285 | if (priv->btmrvl_dev.hscmd) { | 296 | if (priv->btmrvl_dev.hscmd) { |
diff --git a/drivers/bluetooth/btmrvl_sdio.c b/drivers/bluetooth/btmrvl_sdio.c index 63bfc5436799..f36defa37764 100644 --- a/drivers/bluetooth/btmrvl_sdio.c +++ b/drivers/bluetooth/btmrvl_sdio.c | |||
@@ -930,6 +930,8 @@ static int btmrvl_sdio_probe(struct sdio_func *func, | |||
930 | priv->hw_wakeup_firmware = btmrvl_sdio_wakeup_fw; | 930 | priv->hw_wakeup_firmware = btmrvl_sdio_wakeup_fw; |
931 | 931 | ||
932 | btmrvl_send_module_cfg_cmd(priv, MODULE_BRINGUP_REQ); | 932 | btmrvl_send_module_cfg_cmd(priv, MODULE_BRINGUP_REQ); |
933 | priv->btmrvl_dev.psmode = 1; | ||
934 | btmrvl_enable_ps(priv); | ||
933 | 935 | ||
934 | return 0; | 936 | return 0; |
935 | 937 | ||
@@ -1001,3 +1003,5 @@ MODULE_AUTHOR("Marvell International Ltd."); | |||
1001 | MODULE_DESCRIPTION("Marvell BT-over-SDIO driver ver " VERSION); | 1003 | MODULE_DESCRIPTION("Marvell BT-over-SDIO driver ver " VERSION); |
1002 | MODULE_VERSION(VERSION); | 1004 | MODULE_VERSION(VERSION); |
1003 | MODULE_LICENSE("GPL v2"); | 1005 | MODULE_LICENSE("GPL v2"); |
1006 | MODULE_FIRMWARE("sd8688_helper.bin"); | ||
1007 | MODULE_FIRMWARE("sd8688.bin"); | ||
diff --git a/drivers/bluetooth/hci_vhci.c b/drivers/bluetooth/hci_vhci.c index d5cde6d86f89..7595274103fd 100644 --- a/drivers/bluetooth/hci_vhci.c +++ b/drivers/bluetooth/hci_vhci.c | |||
@@ -41,8 +41,6 @@ | |||
41 | 41 | ||
42 | #define VERSION "1.3" | 42 | #define VERSION "1.3" |
43 | 43 | ||
44 | static int minor = MISC_DYNAMIC_MINOR; | ||
45 | |||
46 | struct vhci_data { | 44 | struct vhci_data { |
47 | struct hci_dev *hdev; | 45 | struct hci_dev *hdev; |
48 | 46 | ||
@@ -218,12 +216,6 @@ static unsigned int vhci_poll(struct file *file, poll_table *wait) | |||
218 | return POLLOUT | POLLWRNORM; | 216 | return POLLOUT | POLLWRNORM; |
219 | } | 217 | } |
220 | 218 | ||
221 | static int vhci_ioctl(struct inode *inode, struct file *file, | ||
222 | unsigned int cmd, unsigned long arg) | ||
223 | { | ||
224 | return -EINVAL; | ||
225 | } | ||
226 | |||
227 | static int vhci_open(struct inode *inode, struct file *file) | 219 | static int vhci_open(struct inode *inode, struct file *file) |
228 | { | 220 | { |
229 | struct vhci_data *data; | 221 | struct vhci_data *data; |
@@ -284,10 +276,10 @@ static int vhci_release(struct inode *inode, struct file *file) | |||
284 | } | 276 | } |
285 | 277 | ||
286 | static const struct file_operations vhci_fops = { | 278 | static const struct file_operations vhci_fops = { |
279 | .owner = THIS_MODULE, | ||
287 | .read = vhci_read, | 280 | .read = vhci_read, |
288 | .write = vhci_write, | 281 | .write = vhci_write, |
289 | .poll = vhci_poll, | 282 | .poll = vhci_poll, |
290 | .ioctl = vhci_ioctl, | ||
291 | .open = vhci_open, | 283 | .open = vhci_open, |
292 | .release = vhci_release, | 284 | .release = vhci_release, |
293 | }; | 285 | }; |
@@ -302,18 +294,12 @@ static int __init vhci_init(void) | |||
302 | { | 294 | { |
303 | BT_INFO("Virtual HCI driver ver %s", VERSION); | 295 | BT_INFO("Virtual HCI driver ver %s", VERSION); |
304 | 296 | ||
305 | if (misc_register(&vhci_miscdev) < 0) { | 297 | return misc_register(&vhci_miscdev); |
306 | BT_ERR("Can't register misc device with minor %d", minor); | ||
307 | return -EIO; | ||
308 | } | ||
309 | |||
310 | return 0; | ||
311 | } | 298 | } |
312 | 299 | ||
313 | static void __exit vhci_exit(void) | 300 | static void __exit vhci_exit(void) |
314 | { | 301 | { |
315 | if (misc_deregister(&vhci_miscdev) < 0) | 302 | misc_deregister(&vhci_miscdev); |
316 | BT_ERR("Can't unregister misc device with minor %d", minor); | ||
317 | } | 303 | } |
318 | 304 | ||
319 | module_init(vhci_init); | 305 | module_init(vhci_init); |