Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
4305792
Bluetooth: btusb: MT7922: Add VID/PID 0489/e174
ChrisCH-Lu Jan 30, 2026
06291f1
Bluetooth: hci_core: Rate limit the logging of invalid ISO handle
pv Feb 3, 2026
c5fac76
Bluetooth: btbcm: remove done label in btbcm_patchram
Feb 3, 2026
5df0e3c
Bluetooth: btmtk: improve mt79xx firmware setup retry flow
ChrisCH-Lu Feb 3, 2026
27d69b6
Bluetooth: btmtk: add status check in mt79xx firmware setup
ChrisCH-Lu Feb 3, 2026
ef89139
Bluetooth: btmtk: Add reset mechanism if downloading firmware failed
ChrisCH-Lu Feb 3, 2026
a72c9f2
Bluetooth: qca: Refactor code on the basis of chipset names
vivesahu-huboss Feb 10, 2026
123220c
Bluetooth: btbcm: Add entry for BCM4343A2 UART Bluetooth
Feb 9, 2026
f041f6d
Bluetooth: hci_qca: Fix confusing shutdown() and power_off() naming
Feb 12, 2026
a57a8e8
Bluetooth: hci_qca: Fix BT not getting powered-off on rmmod
Feb 12, 2026
6371d6a
Bluetooth: btintel_pcie: Replace snprintf("%s") with strscpy
toblux Feb 20, 2026
2c54e9b
Bluetooth: btusb: Add Lite-On 04ca:3807 for MediaTek MT7921
DYLANeay Feb 19, 2026
c00e9ba
Bluetooth: btintel_pcie: Use struct_size to improve hci_drv_read_info
toblux Feb 23, 2026
7d122ed
mmc: sdio: add MediaTek MT7902 SDIO device ID
moore-bros Feb 24, 2026
094d67e
Bluetooth: btmtk: add MT7902 MCU support
moore-bros Feb 24, 2026
0536a7c
Bluetooth: btusb: Add new VID/PID 13d3/3579 for MT7902
moore-bros Feb 24, 2026
3ae21b1
Bluetooth: btusb: Add new VID/PID 13d3/3580 for MT7902
moore-bros Feb 24, 2026
0a6b6f4
Bluetooth: btusb: Add new VID/PID 13d3/3594 for MT7902
moore-bros Feb 24, 2026
b191f01
Bluetooth: btusb: Add new VID/PID 13d3/3596 for MT7902
moore-bros Feb 24, 2026
8741193
Bluetooth: btusb: Add new VID/PID 0e8d/1ede for MT7902
moore-bros Feb 24, 2026
8a48706
Bluetooth: btmtk: add MT7902 SDIO support
moore-bros Feb 24, 2026
fa768fc
Bluetooth: LE L2CAP: Disconnect if received packet's SDU exceeds IMTU
ceggers-arri Feb 25, 2026
3a7e3a9
Bluetooth: LE L2CAP: Disconnect if sum of payload sizes exceed SDU
ceggers-arri Feb 25, 2026
71099dd
Bluetooth: SMP: make SM/PER/KDU/BI-04-C happy
ceggers-arri Feb 25, 2026
ef20d30
Bluetooth: L2CAP: CoC: Disconnect if received packet size exceeds MPS
ceggers-arri Feb 25, 2026
e321a50
Bluetooth: ISO: Fix defer tests being unstable
Vudentz Feb 27, 2026
e47687d
Bluetooth: btintel: Add support for hybrid signature for ScP2 onwards
kirankrishnappa-intel Feb 28, 2026
569aad7
Bluetooth: btintel: Replace CNVi id with hardware variant
kirankrishnappa-intel Feb 28, 2026
17bfc1a
Bluetooth: btintel: Add support for Scorpious Peak2 support
kirankrishnappa-intel Feb 28, 2026
37c57d5
Bluetooth: btintel: Add DSBR support for ScP2 onwards
kirankrishnappa-intel Feb 28, 2026
e2c39b6
Bluetooth: btintel_pcie: Add support for exception dump for ScP2
kirankrishnappa-intel Feb 28, 2026
c8af33b
Bluetooth: btintel: Add support for Scorpious Peak2F support
kirankrishnappa-intel Feb 28, 2026
05d1b1d
Bluetooth: btintel_pcie: Add support for exception dump for ScP2F
kirankrishnappa-intel Feb 28, 2026
ee33478
Bluetooth: btintel_pcie: Add device id of Scorpius Peak2, Nova Lake-P…
kirankrishnappa-intel Feb 28, 2026
2945318
Bluetooth: btintel_pcie: Add device id of Scorpious2, Nova Lake-PCD-S
kirankrishnappa-intel Feb 28, 2026
5d7e188
Bluetooth: btintel_pci: Fix btintel_pcie_read_hwexp code style
Vudentz Mar 2, 2026
4a62953
Bluetooth: hci_sync: Fix hci_le_create_conn_sync
mgrzeschik Mar 5, 2026
49a9ccb
Bluetooth: MGMT: Fix list corruption and UAF in command complete hand…
Feb 27, 2026
eb83f28
Bluetooth: HIDP: Fix possible UAF
Vudentz Mar 5, 2026
d1d7a87
Bluetooth: L2CAP: Fix use-after-free in l2cap_unregister_user
shauryarane05 Nov 6, 2025
7dd00b0
Bluetooth: L2CAP: Fix accepting multiple L2CAP_ECRED_CONN_REQ
Vudentz Mar 3, 2026
2b53ed4
Bluetooth: L2CAP: Fix type confusion in l2cap_ecred_reconf_rsp()
JohannesLks Mar 10, 2026
c2403f1
Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access
JohannesLks Mar 10, 2026
88a5dee
Bluetooth: qca: fix ROM version reading on WCN3998 chips
lumag Mar 10, 2026
ae74ff4
Bluetooth: qca: enable pwrseq support for WCN39xx devices
lumag Mar 10, 2026
6ec1f2e
Bluetooth: L2CAP: Fix stack-out-of-bounds read in l2cap_ecred_conn_req
Mar 15, 2026
a480f2b
Bluetooth: L2CAP: Validate PDU length before reading SDU length in l2…
V4bel Mar 12, 2026
506c028
Bluetooth: SCO: Fix use-after-free in sco_recv_frame() due to missing…
V4bel Mar 12, 2026
0135988
Bluetooth: L2CAP: Fix printing wrong information if SDU length exceed…
Vudentz Mar 16, 2026
3c2dbfa
Bluetooth: MGMT: Fix dangling pointer on mgmt_add_adv_patterns_monito…
Vudentz Mar 16, 2026
9adcc51
Bluetooth: hci_sync: annotate data-races around hdev->req_status
zzzccc427 Mar 15, 2026
0f1a322
Bluetooth: hci_ll: Fix firmware leak on error path
iqbalcodes6602 Mar 15, 2026
1d58bcf
bluetooth: btusb: Fix whitespace in btusb.c
reboot-required Mar 13, 2026
bc280a5
Bluetooth: L2CAP: Fix null-ptr-deref on l2cap_sock_ready_cb
helen-fornazier Mar 19, 2026
eae2412
Bluetooth: L2CAP: Fix regressions caused by reusing ident
Vudentz Mar 17, 2026
582cc11
Bluetooth: L2CAP: Fix send LE flow credits in ACL link
Mar 19, 2026
b8982b6
Bluetooth: btintel: serialize btintel_hw_error() with hci_req_sync_lock
zzzccc427 Mar 18, 2026
f6bba07
Bluetooth: L2CAP: Fix deadlock in l2cap_conn_del()
V4bel Mar 20, 2026
acf374f
Bluetooth: L2CAP: Fix ERTM re-init and zero pdu_len infinite loop
V4bel Mar 20, 2026
08a1983
Bluetooth: btusb: clamp SCO altsetting table indices
neosys007 Mar 25, 2026
a94b346
Bluetooth: hci_qca: disable power control for WCN7850 when bt_en is n…
shuaz-shuai Mar 24, 2026
dd97a8c
Bluetooth: hci_sync: hci_cmd_sync_queue_once() return -EEXIST if exists
pv Mar 25, 2026
0098a02
Bluetooth: hci_sync: fix leaks when hci_cmd_sync_queue_once fails
pv Mar 25, 2026
c246bfe
Bluetooth: hci_sync: make hci_cmd_sync_run_once return -EEXIST if exists
pv Mar 25, 2026
fdb07d4
Bluetooth: hci_sync: call destroy in hci_cmd_sync_run if immediate
pv Mar 25, 2026
401702a
Bluetooth: SCO: fix race conditions in sco_sock_connect()
zzzccc427 Mar 26, 2026
3e7e7f4
Bluetooth: hci_event: move wake reason storage into validated event h…
1seal Mar 26, 2026
1e14292
Bluetooth: hci_sync: Fix UAF in le_read_features_complete
Vudentz Mar 25, 2026
e9191a1
Bluetooth: hci_ldisc: Clear HCI_UART_PROTO_INIT on error
Mar 27, 2026
931e195
Bluetooth: hci_h4: Fix race during initialization
Mar 27, 2026
f9426e0
Bluetooth: MGMT: validate LTK enc_size on load
Niebelungen-D Mar 28, 2026
2db5a8b
Bluetooth: btusb: refactor endpoint lookup
jhovold Mar 30, 2026
13be27b
Bluetooth: btmtk: refactor endpoint lookup
jhovold Mar 30, 2026
4797dfb
Bluetooth: hci_sync: fix stack buffer overflow in hci_le_big_create_sync
hkbinbinbin Mar 31, 2026
31798ff
Bluetooth: fix locking in hci_conn_request_evt() with HCI_PROTO_DEFER
pv Mar 29, 2026
e00e94a
Bluetooth: hci_conn: fix potential UAF in set_cig_params_sync
pv Mar 29, 2026
22edb15
Bluetooth: hci_event: fix potential UAF in hci_le_remote_conn_param_r…
pv Mar 29, 2026
4cdd001
Bluetooth: btmtk: Add MT6639 (MT7927) Bluetooth support
jetm Mar 30, 2026
fe9e35d
Bluetooth: btmtk: fix ISO interface setup for single alt setting
jetm Mar 30, 2026
af67316
Bluetooth: btusb: Add MT7927 ID for ASUS ROG Crosshair X870E Hero
jetm Mar 30, 2026
70d2954
Bluetooth: btusb: Add MT7927 ID for Lenovo Legion Pro 7 16ARX9
jetm Mar 30, 2026
e4fb211
Bluetooth: btusb: Add MT7927 ID for Gigabyte Z790 AORUS MASTER X
jetm Mar 30, 2026
4be0c88
Bluetooth: btusb: Add MT7927 ID for MSI X870E Ace Max
jetm Mar 30, 2026
26308f9
Bluetooth: btusb: Add MT7927 ID for TP-Link Archer TBE550E
jetm Mar 30, 2026
b65fdb4
Bluetooth: btusb: Add MT7927 ID for ASUS X870E / ProArt X870E-Creator
jetm Mar 30, 2026
2c12536
Bluetooth: MGMT: validate mesh send advertising payload length
Niebelungen-D Apr 1, 2026
1bd2e4c
Bluetooth: SMP: force responder MITM requirements before building the…
1seal Mar 31, 2026
3a0b100
Bluetooth: SMP: derive legacy responder STK authentication from MITM …
1seal Mar 31, 2026
a6e00a8
Bluetooth: btmtk: hide unused btmtk_mt6639_devs[] array
arndb Apr 2, 2026
3966e67
Bluetooth: btusb: MediaTek MT7922: Add VID 0489 & PID e11d
nercone-dev Mar 31, 2026
60f6ea0
Bluetooth: hci_ll: Enable BROKEN_ENHANCED_SETUP_SYNC_CONN for WL183x
StefanoRadaelliVar Apr 2, 2026
c3b37ff
Bluetooth: l2cap: Add missing chan lock in l2cap_ecred_reconf_rsp
phx0fer Apr 5, 2026
0875da1
Bluetooth: btintel_pcie: Align shared DMA memory to 128 bytes
kirankrishnappa-intel Apr 7, 2026
becdde9
Bluetooth: SCO: check for codecs->num_codecs == 1 before assigning to…
metze-samba Apr 7, 2026
710f92b
Bluetooth: hci.h: Avoid a couple -Wflex-array-member-not-at-end warnings
GustavoARSilva Apr 7, 2026
9a108c6
workflow: Add workflow files for ci
tedd-an Nov 5, 2020
05491e1
workflows: Make use bluez/action-ci action
Vudentz Apr 9, 2026
fbe597b
workflow/sync: Attempt to sync every 5 minutes
Vudentz Apr 9, 2026
80f84c0
workflow/sync: Set workflow to use worflow branch
Vudentz Apr 9, 2026
b9d13ec
Bluetooth: btintel_pcie:Support Product level reset.
devegowdIntel Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: CI

on: [pull_request]

jobs:
ci:
runs-on: ubuntu-latest
name: CI for Pull Request
steps:
- name: Checkout the source code
uses: actions/checkout@v3
with:
path: src/src

- name: CI
uses: bluez/action-ci@main
with:
task: ci
base_folder: src
space: kernel
github_token: ${{ secrets.GITHUB_TOKEN }}
email_token: ${{ secrets.EMAIL_TOKEN }}
patchwork_token: ${{ secrets.PATCHWORK_TOKEN }}
patchwork_user: ${{ secrets.PATCHWORK_USER }}

43 changes: 43 additions & 0 deletions .github/workflows/sync.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Sync

on:
schedule:
- cron: "*/5 * * * *"

jobs:
sync_repo:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: master

- name: Sync Repo
uses: bluez/action-ci@main
with:
task: sync
upstream_repo: 'https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git'
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Cleanup PR
uses: bluez/action-ci@main
with:
task: cleanup
github_token: ${{ secrets.ACTION_TOKEN }}

sync_patchwork:
needs: sync_repo
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Sync Patchwork
uses: bluez/action-ci@main
with:
task: patchwork
workflow: workflow
space: kernel
github_token: ${{ secrets.ACTION_TOKEN }}
email_token: ${{ secrets.EMAIL_TOKEN }}
patchwork_token: ${{ secrets.PATCHWORK_TOKEN }}
patchwork_user: ${{ secrets.PATCHWORK_USER }}
11 changes: 5 additions & 6 deletions drivers/bluetooth/btbcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ int btbcm_patchram(struct hci_dev *hdev, const struct firmware *fw)
err = PTR_ERR(skb);
bt_dev_err(hdev, "BCM: Download Minidrv command failed (%d)",
err);
goto done;
return err;
}
kfree_skb(skb);

Expand All @@ -242,8 +242,7 @@ int btbcm_patchram(struct hci_dev *hdev, const struct firmware *fw)

if (fw_size < cmd->plen) {
bt_dev_err(hdev, "BCM: Patch is corrupted");
err = -EINVAL;
goto done;
return -EINVAL;
}

cmd_param = fw_ptr;
Expand All @@ -258,16 +257,15 @@ int btbcm_patchram(struct hci_dev *hdev, const struct firmware *fw)
err = PTR_ERR(skb);
bt_dev_err(hdev, "BCM: Patch command %04x failed (%d)",
opcode, err);
goto done;
return err;
}
kfree_skb(skb);
}

/* 250 msec delay after Launch Ram completes */
msleep(250);

done:
return err;
return 0;
}
EXPORT_SYMBOL(btbcm_patchram);

Expand Down Expand Up @@ -507,6 +505,7 @@ static const struct bcm_subver_table bcm_uart_subver_table[] = {
{ 0x6119, "BCM4345C0" }, /* 003.001.025 */
{ 0x6606, "BCM4345C5" }, /* 003.006.006 */
{ 0x230f, "BCM4356A2" }, /* 001.003.015 */
{ 0x2310, "BCM4343A2" }, /* 001.003.016 */
{ 0x220e, "BCM20702A1" }, /* 001.002.014 */
{ 0x420d, "BCM4349B1" }, /* 002.002.013 */
{ 0x420e, "BCM4349B1" }, /* 002.002.014 */
Expand Down
126 changes: 104 additions & 22 deletions drivers/bluetooth/btintel.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,19 @@ enum {
DSM_SET_RESET_METHOD = 3,
};

/* Hybrid ECDSA + LMS */
#define BTINTEL_RSA_HEADER_VER 0x00010000
#define BTINTEL_ECDSA_HEADER_VER 0x00020000
#define BTINTEL_HYBRID_HEADER_VER 0x00069700
#define BTINTEL_ECDSA_OFFSET 128
#define BTINTEL_CSS_HEADER_SIZE 128
#define BTINTEL_ECDSA_PUB_KEY_SIZE 96
#define BTINTEL_ECDSA_SIG_SIZE 96
#define BTINTEL_LMS_OFFSET 320
#define BTINTEL_LMS_PUB_KEY_SIZE 52
#define BTINTEL_LMS_SIG_SIZE 1744
#define BTINTEL_CMD_BUFFER_OFFSET 2116

#define BTINTEL_BT_DOMAIN 0x12
#define BTINTEL_SAR_LEGACY 0
#define BTINTEL_SAR_INC_PWR 1
Expand All @@ -54,9 +67,10 @@ static struct {
u32 fw_build_num;
} coredump_info;

static const guid_t btintel_guid_dsm =
const guid_t btintel_guid_dsm =
GUID_INIT(0xaa10f4e0, 0x81ac, 0x4233,
0xab, 0xf6, 0x3b, 0x2a, 0xc5, 0x0e, 0x28, 0xd9);
EXPORT_SYMBOL_GPL(btintel_guid_dsm);

int btintel_check_bdaddr(struct hci_dev *hdev)
{
Expand Down Expand Up @@ -251,30 +265,35 @@ void btintel_hw_error(struct hci_dev *hdev, u8 code)

bt_dev_err(hdev, "Hardware error 0x%2.2x", code);

hci_req_sync_lock(hdev);

skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT);
if (IS_ERR(skb)) {
bt_dev_err(hdev, "Reset after hardware error failed (%ld)",
PTR_ERR(skb));
return;
goto unlock;
}
kfree_skb(skb);

skb = __hci_cmd_sync(hdev, 0xfc22, 1, &type, HCI_INIT_TIMEOUT);
if (IS_ERR(skb)) {
bt_dev_err(hdev, "Retrieving Intel exception info failed (%ld)",
PTR_ERR(skb));
return;
goto unlock;
}

if (skb->len != 13) {
bt_dev_err(hdev, "Exception info size mismatch");
kfree_skb(skb);
return;
goto unlock;
}

bt_dev_err(hdev, "Exception info %s", (char *)(skb->data + 1));

kfree_skb(skb);

unlock:
hci_req_sync_unlock(hdev);
}
EXPORT_SYMBOL_GPL(btintel_hw_error);

Expand Down Expand Up @@ -484,6 +503,8 @@ int btintel_version_info_tlv(struct hci_dev *hdev,
case 0x1d: /* BlazarU (BzrU) */
case 0x1e: /* BlazarI (Bzr) */
case 0x1f: /* Scorpious Peak */
case 0x20: /* Scorpious Peak2 */
case 0x21: /* Scorpious Peak2 F */
case 0x22: /* BlazarIW (BzrIW) */
break;
default:
Expand All @@ -505,8 +526,8 @@ int btintel_version_info_tlv(struct hci_dev *hdev,
return -EINVAL;
}

/* Secure boot engine type should be either 1 (ECDSA) or 0 (RSA) */
if (version->sbe_type > 0x01) {
/* Secure boot engine type can be 0 (RSA), 1 (ECDSA), 2 (LMS), 3 (ECDSA + LMS) */
if (version->sbe_type > 0x03) {
bt_dev_err(hdev, "Unsupported Intel secure boot engine type (0x%x)",
version->sbe_type);
return -EINVAL;
Expand Down Expand Up @@ -1025,6 +1046,48 @@ static int btintel_sfi_ecdsa_header_secure_send(struct hci_dev *hdev,
return 0;
}

static int btintel_sfi_hybrid_header_secure_send(struct hci_dev *hdev,
const struct firmware *fw)
{
int err;

err = btintel_secure_send(hdev, 0x00, BTINTEL_CSS_HEADER_SIZE, fw->data);
if (err < 0) {
bt_dev_err(hdev, "Failed to send firmware CSS header (%d)", err);
return err;
}

err = btintel_secure_send(hdev, 0x03, BTINTEL_ECDSA_PUB_KEY_SIZE,
fw->data + BTINTEL_ECDSA_OFFSET);
if (err < 0) {
bt_dev_err(hdev, "Failed to send firmware ECDSA pkey (%d)", err);
return err;
}

err = btintel_secure_send(hdev, 0x02, BTINTEL_ECDSA_SIG_SIZE,
fw->data + BTINTEL_ECDSA_OFFSET + BTINTEL_ECDSA_PUB_KEY_SIZE);
if (err < 0) {
bt_dev_err(hdev, "Failed to send firmware ECDSA signature (%d)", err);
return err;
}

err = btintel_secure_send(hdev, 0x05, BTINTEL_LMS_PUB_KEY_SIZE,
fw->data + BTINTEL_LMS_OFFSET);
if (err < 0) {
bt_dev_err(hdev, "Failed to send firmware LMS pkey (%d)", err);
return err;
}

err = btintel_secure_send(hdev, 0x04, BTINTEL_LMS_SIG_SIZE,
fw->data + BTINTEL_LMS_OFFSET + BTINTEL_LMS_PUB_KEY_SIZE);
if (err < 0) {
bt_dev_err(hdev, "Failed to send firmware LMS signature (%d)", err);
return err;
}

return 0;
}

static int btintel_download_firmware_payload(struct hci_dev *hdev,
const struct firmware *fw,
size_t offset)
Expand Down Expand Up @@ -1198,11 +1261,12 @@ static int btintel_download_fw_tlv(struct hci_dev *hdev,
* Command Buffer.
*
* CSS Header byte positions 0x08 to 0x0B represent the CSS Header
* version: RSA(0x00010000) , ECDSA (0x00020000)
* version: RSA(0x00010000) , ECDSA (0x00020000) , HYBRID (0x00069700)
*/
css_header_ver = get_unaligned_le32(fw->data + CSS_HEADER_OFFSET);
if (css_header_ver != 0x00010000) {
bt_dev_err(hdev, "Invalid CSS Header version");
if (css_header_ver != BTINTEL_RSA_HEADER_VER &&
css_header_ver != BTINTEL_HYBRID_HEADER_VER) {
bt_dev_err(hdev, "Invalid CSS Header version: 0x%8.8x", css_header_ver);
return -EINVAL;
}

Expand All @@ -1220,15 +1284,15 @@ static int btintel_download_fw_tlv(struct hci_dev *hdev,
err = btintel_download_firmware_payload(hdev, fw, RSA_HEADER_LEN);
if (err)
return err;
} else if (hw_variant >= 0x17) {
} else if (hw_variant >= 0x17 && css_header_ver == BTINTEL_RSA_HEADER_VER) {
/* Check if CSS header for ECDSA follows the RSA header */
if (fw->data[ECDSA_OFFSET] != 0x06)
return -EINVAL;

/* Check if the CSS Header version is ECDSA(0x00020000) */
css_header_ver = get_unaligned_le32(fw->data + ECDSA_OFFSET + CSS_HEADER_OFFSET);
if (css_header_ver != 0x00020000) {
bt_dev_err(hdev, "Invalid CSS Header version");
if (css_header_ver != BTINTEL_ECDSA_HEADER_VER) {
bt_dev_err(hdev, "Invalid CSS Header version: 0x%8.8x", css_header_ver);
return -EINVAL;
}

Expand All @@ -1251,6 +1315,14 @@ static int btintel_download_fw_tlv(struct hci_dev *hdev,
if (err)
return err;
}
} else if (hw_variant >= 0x20 && css_header_ver == BTINTEL_HYBRID_HEADER_VER) {
err = btintel_sfi_hybrid_header_secure_send(hdev, fw);
if (err)
return err;

err = btintel_download_firmware_payload(hdev, fw, BTINTEL_CMD_BUFFER_OFFSET);
if (err)
return err;
}
return 0;
}
Expand Down Expand Up @@ -2553,7 +2625,7 @@ static void btintel_set_ppag(struct hci_dev *hdev, struct intel_version_tlv *ver
kfree_skb(skb);
}

static int btintel_acpi_reset_method(struct hci_dev *hdev)
int btintel_acpi_reset_method(struct hci_dev *hdev)
{
int ret = 0;
acpi_status status;
Expand Down Expand Up @@ -2592,6 +2664,7 @@ static int btintel_acpi_reset_method(struct hci_dev *hdev)
kfree(buffer.pointer);
return ret;
}
EXPORT_SYMBOL_GPL(btintel_acpi_reset_method);

static void btintel_set_dsm_reset_method(struct hci_dev *hdev,
struct intel_version_tlv *ver_tlv)
Expand Down Expand Up @@ -2749,35 +2822,40 @@ static int btintel_set_dsbr(struct hci_dev *hdev, struct intel_version_tlv *ver)

struct btintel_dsbr_cmd cmd;
struct sk_buff *skb;
u32 dsbr, cnvi;
u8 status;
u32 dsbr;
u8 status, hw_variant;
int err;

cnvi = ver->cnvi_top & 0xfff;
hw_variant = INTEL_HW_VARIANT(ver->cnvi_bt);
/* DSBR command needs to be sent for,
* 1. BlazarI or BlazarIW + B0 step product in IML image.
* 2. Gale Peak2 or BlazarU in OP image.
* 3. Scorpious Peak in IML image.
* 4. Scorpious Peak2 onwards + PCIe transport in IML image.
*/

switch (cnvi) {
case BTINTEL_CNVI_BLAZARI:
case BTINTEL_CNVI_BLAZARIW:
switch (hw_variant) {
case BTINTEL_HWID_BZRI:
case BTINTEL_HWID_BZRIW:
if (ver->img_type == BTINTEL_IMG_IML &&
INTEL_CNVX_TOP_STEP(ver->cnvi_top) == 0x01)
break;
return 0;
case BTINTEL_CNVI_GAP:
case BTINTEL_CNVI_BLAZARU:
case BTINTEL_HWID_GAP:
case BTINTEL_HWID_BZRU:
if (ver->img_type == BTINTEL_IMG_OP &&
hdev->bus == HCI_USB)
break;
return 0;
case BTINTEL_CNVI_SCP:
case BTINTEL_HWID_SCP:
if (ver->img_type == BTINTEL_IMG_IML)
break;
return 0;
default:
/* Scorpius Peak2 onwards */
if (hw_variant >= BTINTEL_HWID_SCP2 && hdev->bus == HCI_PCI
&& ver->img_type == BTINTEL_IMG_IML)
break;
return 0;
}

Expand Down Expand Up @@ -3254,6 +3332,8 @@ void btintel_set_msft_opcode(struct hci_dev *hdev, u8 hw_variant)
case 0x1d:
case 0x1e:
case 0x1f:
case 0x20:
case 0x21:
case 0x22:
hci_set_msft_opcode(hdev, 0xFC1E);
break;
Expand Down Expand Up @@ -3595,6 +3675,8 @@ static int btintel_setup_combined(struct hci_dev *hdev)
case 0x1d:
case 0x1e:
case 0x1f:
case 0x20:
case 0x21:
case 0x22:
/* Display version information of TLV type */
btintel_version_info_tlv(hdev, &ver_tlv);
Expand Down
Loading
Loading