Commit ace31982 authored by Kim, Ben Young Tae's avatar Kim, Ben Young Tae Committed by Marcel Holtmann

Bluetooth: btusb: Add setup callback for chip init on USB

Some of chipset does not allow to send a patch or config files through
HCI VS channel at early stage as well as they don't support to send
USB patch files to other channel except USB bulk path.

New callback added is for initialization of BT controller through USB
Signed-off-by: default avatarBen Young Tae Kim <ytkim@qca.qualcomm.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 49b31e57
...@@ -337,6 +337,8 @@ struct btusb_data { ...@@ -337,6 +337,8 @@ struct btusb_data {
int (*recv_event)(struct hci_dev *hdev, struct sk_buff *skb); int (*recv_event)(struct hci_dev *hdev, struct sk_buff *skb);
int (*recv_bulk)(struct btusb_data *data, void *buffer, int count); int (*recv_bulk)(struct btusb_data *data, void *buffer, int count);
int (*setup_on_usb)(struct hci_dev *hdev);
}; };
static inline void btusb_free_frags(struct btusb_data *data) static inline void btusb_free_frags(struct btusb_data *data)
...@@ -878,6 +880,15 @@ static int btusb_open(struct hci_dev *hdev) ...@@ -878,6 +880,15 @@ static int btusb_open(struct hci_dev *hdev)
BT_DBG("%s", hdev->name); BT_DBG("%s", hdev->name);
/* Patching USB firmware files prior to starting any URBs of HCI path
* It is more safe to use USB bulk channel for downloading USB patch
*/
if (data->setup_on_usb) {
err = data->setup_on_usb(hdev);
if (err <0)
return err;
}
err = usb_autopm_get_interface(data->intf); err = usb_autopm_get_interface(data->intf);
if (err < 0) if (err < 0)
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment