@@ -1767,6 +1767,14 @@ int btintel_shutdown_combined(struct hci_dev *hdev)
}
EXPORT_SYMBOL_GPL(btintel_shutdown_combined);
+void btintel_set_flags(struct hci_dev *hdev, unsigned int flag)
+{
+ struct btintel_data *intel = hci_get_priv(hdev);
+
+ set_bit(flag, &intel->flags);
+}
+EXPORT_SYMBOL_GPL(btintel_set_flags);
+
MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
MODULE_DESCRIPTION("Bluetooth support for Intel devices ver " VERSION);
MODULE_VERSION(VERSION);
@@ -138,6 +138,16 @@ struct intel_debug_features {
#define INTEL_CNVX_TOP_STEP(cnvx_top) (((cnvx_top) & 0x0f000000) >> 24)
#define INTEL_CNVX_TOP_PACK_SWAB(t, s) __swab16(((__u16)(((t) << 4) | (s))))
+#define INTEL_BOOTLOADER 0
+#define INTEL_DOWNLOADING 1
+#define INTEL_FIRMWARE_LOADED 2
+#define INTEL_FIRMWARE_FAILED 3
+#define INTEL_BOOTING 4
+
+struct btintel_data {
+ unsigned long flags;
+};
+
#if IS_ENABLED(CONFIG_BT_INTEL)
int btintel_check_bdaddr(struct hci_dev *hdev);
@@ -167,6 +177,7 @@ int btintel_download_firmware(struct hci_dev *dev, struct intel_version *ver,
const struct firmware *fw, u32 *boot_param);
int btintel_setup_combined(struct hci_dev *hdev);
int btintel_shutdown_combined(struct hci_dev *hdev);
+void btintel_set_flags(struct hci_dev *hdev, unsigned int flag);
int btintel_download_firmware_newgen(struct hci_dev *hdev,
struct intel_version_tlv *ver,
const struct firmware *fw,
@@ -295,6 +306,10 @@ static inline int btintel_shutdown_combined(struct hci_dev *hdev)
return -EOPNOTSUPP;
}
+static inline void btintel_set_flags(struct hci_dev *hdev, unsigned int flag)
+{
+}
+
static inline int btintel_download_firmware_newgen(struct hci_dev *hdev,
const struct firmware *fw,
u32 *boot_param,
@@ -4118,7 +4118,7 @@ static int btusb_probe(struct usb_interface *intf,
struct btusb_data *data;
struct hci_dev *hdev;
unsigned ifnum_base;
- int i, err;
+ int i, err, priv_size;
BT_DBG("intf %p id %p", intf, id);
@@ -4204,6 +4204,8 @@ static int btusb_probe(struct usb_interface *intf,
init_usb_anchor(&data->ctrl_anchor);
spin_lock_init(&data->rxlock);
+ priv_size = 0;
+
if (id->driver_info & BTUSB_INTEL_NEW) {
data->recv_event = btusb_recv_event_intel;
data->recv_bulk = btusb_recv_bulk_intel;
@@ -4213,7 +4215,7 @@ static int btusb_probe(struct usb_interface *intf,
data->recv_bulk = btusb_recv_bulk;
}
- hdev = hci_alloc_dev(0);
+ hdev = hci_alloc_dev(priv_size);
if (!hdev)
return -ENOMEM;