Skip to content

UPSTREAM: Bluetooth: hci_qca: Use 100 ms SSR delay for rampatch and NVM loading#1246

Open
shuaz-shuai wants to merge 1 commit into
qualcomm-linux:tech/net/bluetoothfrom
shuaz-shuai:add_ssr_delay
Open

UPSTREAM: Bluetooth: hci_qca: Use 100 ms SSR delay for rampatch and NVM loading#1246
shuaz-shuai wants to merge 1 commit into
qualcomm-linux:tech/net/bluetoothfrom
shuaz-shuai:add_ssr_delay

Conversation

@shuaz-shuai
Copy link
Copy Markdown
Contributor

@shuaz-shuai shuaz-shuai commented May 27, 2026

When bt_en is pulled high by hardware, the host does not re-download the firmware after SSR. The controller loads the rampatch and NVM internally.

On WCN7850 chip, the rampatch is ~264 KB and the NVM is ~9.4 KB. The loading process takes approximately 70 ms. The previous 50 ms delay is too short, causing the controller to not respond to the reset command sent by the host, which leads to BT initialization failure:

Bluetooth: hci0: QCA memdump Done, received 458752, total 458752
Bluetooth: hci0: mem_dump_status: 2
Bluetooth: hci0: Opcode 0x0c03 failed: -110

Increase the delay to 100 ms, which was confirmed as a safe value by the controller, to ensure the controller has finished loading the firmware before the host sends commands.

Steps to reproduce:

  1. Trigger SSR and wait for SSR to complete: hcitool cmd 0x3f 0c 26
  2. Run "bluetoothctl power on" and observe that BT fails to start.

Fixes: fce1a92 ("Bluetooth: hci_qca: Fix SSR (SubSystem Restart) fail when BT_EN is pulled up by hw")
Cc: stable@vger.kernel.org
Reviewed-by: Dmitry Baryshkov dmitry.baryshkov@oss.qualcomm.com
Link: https://lore.kernel.org/all/20260525065156.2213123-1-shuai.zhang@oss.qualcomm.com/
CRs-Fixed: 4495934

@qcomlnxci qcomlnxci requested review from a team, che-jiang and quic-mohamull and removed request for a team May 27, 2026 03:32
@qcomlnxci qcomlnxci requested a review from a team May 27, 2026 03:38
…VM loading

When bt_en is pulled high by hardware, the host does not re-download
the firmware after SSR. The controller loads the rampatch and NVM
internally.

On WCN7850 chip, the rampatch is ~264 KB and the NVM is ~9.4 KB. The
loading process takes approximately 70 ms. The previous 50 ms delay is
too short, causing the controller to not respond to the reset command
sent by the host, which leads to BT initialization failure:

 Bluetooth: hci0: QCA memdump Done, received 458752, total 458752
 Bluetooth: hci0: mem_dump_status: 2
 Bluetooth: hci0: Opcode 0x0c03 failed: -110

Increase the delay to 100 ms, which was confirmed as a safe value by
the controller, to ensure the controller has finished loading the
firmware before the host sends commands.

Steps to reproduce:
1. Trigger SSR and wait for SSR to complete:
   hcitool cmd 0x3f 0c 26
2. Run "bluetoothctl power on" and observe that BT fails to start.

Fixes: fce1a92 ("Bluetooth: hci_qca: Fix SSR (SubSystem Restart) fail when BT_EN is pulled up by hw")
Cc: stable@vger.kernel.org
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260525065156.2213123-1-shuai.zhang@oss.qualcomm.com
@qswat-orbit-external
Copy link
Copy Markdown

Merge Check Failed: No Component Found

Configuration Error: No component found for branch 'tech/net/bluetooth'.

There is no component associated with the provided branch in Polaris. Please verify the branch configuration.

Branch: tech/net/bluetooth

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant