Loading drivers/bluetooth/ath3k.c +31 −3 Original line number Diff line number Diff line Loading @@ -44,6 +44,9 @@ #define ROME3_0_USB_RAMPATCH_FILE "ar3k/rampatch_tlv_usb_3.0.tlv" #define ROME3_0_USB_NVM_FILE "ar3k/nvm_tlv_usb_3.0.bin" #define TF1_1_USB_RAMPATCH_FILE "ar3k/rampatch_tlv_usb_tf_1.1.tlv" #define TF1_1_USB_NVM_FILE "ar3k/nvm_tlv_usb_tf_1.1.bin" #define ROME2_1_USB_RAMPATCH_HEADER sizeof(struct rome2_1_version) #define ROME1_1_USB_RAMPATCH_HEADER sizeof(struct rome1_1_version) Loading @@ -53,7 +56,9 @@ #define ROME1_1_USB_CHIP_VERSION 0x101 #define ROME2_1_USB_CHIP_VERSION 0x200 #define ROME3_0_USB_CHIP_VERSION 0x300 #define ROME3_2_USB_CHIP_VERSION 0x302 #define TF1_1_USB_PRODUCT_ID 0xe500 #define ATH3K_DNLOAD 0x01 #define ATH3K_GETSTATE 0x05 #define ATH3K_SET_NORMAL_MODE 0x07 Loading Loading @@ -122,6 +127,7 @@ static struct usb_device_id ath3k_table[] = { { USB_DEVICE(0x0CF3, 0x3008) }, { USB_DEVICE(0x0CF3, 0x311D) }, { USB_DEVICE(0x0CF3, 0x817a) }, { USB_DEVICE(0x0CF3, 0xe500) }, { USB_DEVICE(0x13d3, 0x3375) }, { USB_DEVICE(0x04CA, 0x3004) }, { USB_DEVICE(0x04CA, 0x3005) }, Loading Loading @@ -309,6 +315,7 @@ int get_rome_version(struct usb_device *udev, struct ath3k_version *version) case ROME1_1_USB_CHIP_VERSION: case ROME2_1_USB_CHIP_VERSION: case ROME3_0_USB_CHIP_VERSION: case ROME3_2_USB_CHIP_VERSION: memcpy(version, &fw_version, sizeof(struct ath3k_version)); ret = 0; break; Loading Loading @@ -446,6 +453,16 @@ static int ath3k_load_patch(struct usb_device *udev, BT_DBG("Chip Detected as ROME3.0"); snprintf(filename, ATH3K_NAME_LEN, ROME3_0_USB_RAMPATCH_FILE); break; case ROME3_2_USB_CHIP_VERSION: if (udev->descriptor.idProduct == TF1_1_USB_PRODUCT_ID) { BT_DBG("Chip Detected as TF1.1"); snprintf(filename, ATH3K_NAME_LEN, TF1_1_USB_RAMPATCH_FILE); } else { BT_INFO("Unsupported Chip"); return -ENODEV; } break; default: BT_DBG("Chip Detected as Ath3k"); snprintf(filename, ATH3K_NAME_LEN, "ar3k/AthrBT_0x%08x.dfu", Loading @@ -460,7 +477,8 @@ static int ath3k_load_patch(struct usb_device *udev, } if ((version->rom_version == ROME2_1_USB_CHIP_VERSION) || (version->rom_version == ROME3_0_USB_CHIP_VERSION)) { (version->rom_version == ROME3_0_USB_CHIP_VERSION) || (version->rom_version == ROME3_2_USB_CHIP_VERSION)) { rome2_1_version = (struct rome2_1_version *) firmware->data; pt_version.rom_version = rome2_1_version->build_ver; pt_version.build_version = rome2_1_version->patch_ver; Loading Loading @@ -490,7 +508,8 @@ static int ath3k_load_patch(struct usb_device *udev, } if ((version->rom_version == ROME2_1_USB_CHIP_VERSION) || (version->rom_version == ROME3_0_USB_CHIP_VERSION)) (version->rom_version == ROME3_0_USB_CHIP_VERSION) || (version->rom_version == ROME3_2_USB_CHIP_VERSION)) ret = ath3k_load_fwfile(udev, firmware, ROME2_1_USB_RAMPATCH_HEADER); else if (version->rom_version == ROME1_1_USB_CHIP_VERSION) Loading Loading @@ -545,6 +564,14 @@ static int ath3k_load_syscfg(struct usb_device *udev, snprintf(filename, ATH3K_NAME_LEN, ROME2_1_USB_NVM_FILE); else if (version->rom_version == ROME3_0_USB_CHIP_VERSION) snprintf(filename, ATH3K_NAME_LEN, ROME3_0_USB_NVM_FILE); else if (version->rom_version == ROME3_2_USB_CHIP_VERSION) { if (udev->descriptor.idProduct == TF1_1_USB_PRODUCT_ID) snprintf(filename, ATH3K_NAME_LEN, TF1_1_USB_NVM_FILE); else { BT_INFO("Unsupported Chip"); return -ENODEV; } } else if (version->rom_version == ROME1_1_USB_CHIP_VERSION) snprintf(filename, ATH3K_NAME_LEN, ROME1_1_USB_NVM_FILE); else Loading @@ -558,7 +585,8 @@ static int ath3k_load_syscfg(struct usb_device *udev, } if ((version->rom_version == ROME2_1_USB_CHIP_VERSION) || (version->rom_version == ROME3_0_USB_CHIP_VERSION)) (version->rom_version == ROME3_0_USB_CHIP_VERSION) || (version->rom_version == ROME3_2_USB_CHIP_VERSION)) ret = ath3k_load_fwfile(udev, firmware, ROME2_1_USB_NVM_HEADER); else if (version->rom_version == ROME1_1_USB_CHIP_VERSION) ret = ath3k_load_fwfile(udev, firmware, ROME1_1_USB_NVM_HEADER); Loading drivers/bluetooth/btusb.c +1 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,7 @@ static struct usb_device_id blacklist_table[] = { { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x817a), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe500), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, Loading Loading
drivers/bluetooth/ath3k.c +31 −3 Original line number Diff line number Diff line Loading @@ -44,6 +44,9 @@ #define ROME3_0_USB_RAMPATCH_FILE "ar3k/rampatch_tlv_usb_3.0.tlv" #define ROME3_0_USB_NVM_FILE "ar3k/nvm_tlv_usb_3.0.bin" #define TF1_1_USB_RAMPATCH_FILE "ar3k/rampatch_tlv_usb_tf_1.1.tlv" #define TF1_1_USB_NVM_FILE "ar3k/nvm_tlv_usb_tf_1.1.bin" #define ROME2_1_USB_RAMPATCH_HEADER sizeof(struct rome2_1_version) #define ROME1_1_USB_RAMPATCH_HEADER sizeof(struct rome1_1_version) Loading @@ -53,7 +56,9 @@ #define ROME1_1_USB_CHIP_VERSION 0x101 #define ROME2_1_USB_CHIP_VERSION 0x200 #define ROME3_0_USB_CHIP_VERSION 0x300 #define ROME3_2_USB_CHIP_VERSION 0x302 #define TF1_1_USB_PRODUCT_ID 0xe500 #define ATH3K_DNLOAD 0x01 #define ATH3K_GETSTATE 0x05 #define ATH3K_SET_NORMAL_MODE 0x07 Loading Loading @@ -122,6 +127,7 @@ static struct usb_device_id ath3k_table[] = { { USB_DEVICE(0x0CF3, 0x3008) }, { USB_DEVICE(0x0CF3, 0x311D) }, { USB_DEVICE(0x0CF3, 0x817a) }, { USB_DEVICE(0x0CF3, 0xe500) }, { USB_DEVICE(0x13d3, 0x3375) }, { USB_DEVICE(0x04CA, 0x3004) }, { USB_DEVICE(0x04CA, 0x3005) }, Loading Loading @@ -309,6 +315,7 @@ int get_rome_version(struct usb_device *udev, struct ath3k_version *version) case ROME1_1_USB_CHIP_VERSION: case ROME2_1_USB_CHIP_VERSION: case ROME3_0_USB_CHIP_VERSION: case ROME3_2_USB_CHIP_VERSION: memcpy(version, &fw_version, sizeof(struct ath3k_version)); ret = 0; break; Loading Loading @@ -446,6 +453,16 @@ static int ath3k_load_patch(struct usb_device *udev, BT_DBG("Chip Detected as ROME3.0"); snprintf(filename, ATH3K_NAME_LEN, ROME3_0_USB_RAMPATCH_FILE); break; case ROME3_2_USB_CHIP_VERSION: if (udev->descriptor.idProduct == TF1_1_USB_PRODUCT_ID) { BT_DBG("Chip Detected as TF1.1"); snprintf(filename, ATH3K_NAME_LEN, TF1_1_USB_RAMPATCH_FILE); } else { BT_INFO("Unsupported Chip"); return -ENODEV; } break; default: BT_DBG("Chip Detected as Ath3k"); snprintf(filename, ATH3K_NAME_LEN, "ar3k/AthrBT_0x%08x.dfu", Loading @@ -460,7 +477,8 @@ static int ath3k_load_patch(struct usb_device *udev, } if ((version->rom_version == ROME2_1_USB_CHIP_VERSION) || (version->rom_version == ROME3_0_USB_CHIP_VERSION)) { (version->rom_version == ROME3_0_USB_CHIP_VERSION) || (version->rom_version == ROME3_2_USB_CHIP_VERSION)) { rome2_1_version = (struct rome2_1_version *) firmware->data; pt_version.rom_version = rome2_1_version->build_ver; pt_version.build_version = rome2_1_version->patch_ver; Loading Loading @@ -490,7 +508,8 @@ static int ath3k_load_patch(struct usb_device *udev, } if ((version->rom_version == ROME2_1_USB_CHIP_VERSION) || (version->rom_version == ROME3_0_USB_CHIP_VERSION)) (version->rom_version == ROME3_0_USB_CHIP_VERSION) || (version->rom_version == ROME3_2_USB_CHIP_VERSION)) ret = ath3k_load_fwfile(udev, firmware, ROME2_1_USB_RAMPATCH_HEADER); else if (version->rom_version == ROME1_1_USB_CHIP_VERSION) Loading Loading @@ -545,6 +564,14 @@ static int ath3k_load_syscfg(struct usb_device *udev, snprintf(filename, ATH3K_NAME_LEN, ROME2_1_USB_NVM_FILE); else if (version->rom_version == ROME3_0_USB_CHIP_VERSION) snprintf(filename, ATH3K_NAME_LEN, ROME3_0_USB_NVM_FILE); else if (version->rom_version == ROME3_2_USB_CHIP_VERSION) { if (udev->descriptor.idProduct == TF1_1_USB_PRODUCT_ID) snprintf(filename, ATH3K_NAME_LEN, TF1_1_USB_NVM_FILE); else { BT_INFO("Unsupported Chip"); return -ENODEV; } } else if (version->rom_version == ROME1_1_USB_CHIP_VERSION) snprintf(filename, ATH3K_NAME_LEN, ROME1_1_USB_NVM_FILE); else Loading @@ -558,7 +585,8 @@ static int ath3k_load_syscfg(struct usb_device *udev, } if ((version->rom_version == ROME2_1_USB_CHIP_VERSION) || (version->rom_version == ROME3_0_USB_CHIP_VERSION)) (version->rom_version == ROME3_0_USB_CHIP_VERSION) || (version->rom_version == ROME3_2_USB_CHIP_VERSION)) ret = ath3k_load_fwfile(udev, firmware, ROME2_1_USB_NVM_HEADER); else if (version->rom_version == ROME1_1_USB_CHIP_VERSION) ret = ath3k_load_fwfile(udev, firmware, ROME1_1_USB_NVM_HEADER); Loading
drivers/bluetooth/btusb.c +1 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,7 @@ static struct usb_device_id blacklist_table[] = { { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x817a), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe500), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, Loading