Bluetooth: Set hdev->dev_type based on Marvell device type
Bing Zhao [Wed, 3 Mar 2010 22:37:37 +0000 (14:37 -0800)]
Get the device type from MODULE_BRINGUP_REQ command response.

Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>

drivers/bluetooth/btmrvl_drv.h
drivers/bluetooth/btmrvl_main.c

index bf6d54f..bed0ba6 100644 (file)
@@ -42,6 +42,8 @@ struct btmrvl_device {
        void *card;
        struct hci_dev *hcidev;
 
+       u8 dev_type;
+
        u8 tx_dnld_rdy;
 
        u8 psmode;
index ec48bfe..ee37ef0 100644 (file)
@@ -116,6 +116,13 @@ int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb)
                                ((event->data[2] == MODULE_BROUGHT_UP) ||
                                (event->data[2] == MODULE_ALREADY_UP)) ?
                                "Bring-up succeed" : "Bring-up failed");
+
+                       if (event->length > 3)
+                               priv->btmrvl_dev.dev_type = event->data[3];
+                       else
+                               priv->btmrvl_dev.dev_type = HCI_BREDR;
+
+                       BT_DBG("dev_type: %d", priv->btmrvl_dev.dev_type);
                } else if (priv->btmrvl_dev.sendcmdflag &&
                                event->data[1] == MODULE_SHUTDOWN_REQ) {
                        BT_DBG("EVENT:%s", (event->data[2]) ?
@@ -549,6 +556,8 @@ int btmrvl_register_hdev(struct btmrvl_private *priv)
 
        btmrvl_send_module_cfg_cmd(priv, MODULE_BRINGUP_REQ);
 
+       hdev->dev_type = priv->btmrvl_dev.dev_type;
+
        ret = hci_register_dev(hdev);
        if (ret < 0) {
                BT_ERR("Can not register HCI device");