[PATCH 0/3] Bluetooth: btqcomipc: fixes on top of the IPQ5018 v5 series

From: Andrei-Alexandru Bleortu

Date: Sun Oct 11 2026 - 18:14:49 EST


Hi George,

I brought your v5 up on a UniFi U6 Enterprise (IPQ5018) and needed these
three changes on top of it for the controller to load its firmware, to
survive an unbind/bind cycle and to take the board's address. They are
against your v5 as posted; please fold whichever you agree with into v6.

1/3 keeps the dot in split firmware segment names (qca/bt_fw_patch.b02).
2/3 deasserts the BTSS reset before enabling the LPO clock; a probe after
an unbind otherwise fails with "gcc_btss_lpo_clk status stuck at 'off'".
3/3 sets HCI_QUIRK_USE_BDADDR_PROPERTY: btqca skips the NVM tag parsing on
IPQ5018, so the placeholder address (50:18:00:00:5a:ad) is never
detected and every board comes up with it.

Three notes on v5 itself:
- Unloading the module (rmmod btqcomipc) with the controller up hangs the
SoC until the watchdog resets it; I have not looked into why.
- It uses HCI_QUIRK_USE_BDADDR_NVMEM and HCI_QUIRK_BDADDR_NVMEM_BE, which
come from a separate series that is not in bluetooth-next or
next-20261009, so v5 does not build on its own.
- Its btqca patch no longer applies to next-20261009 (btqca.c moved on).

3/3 works best with "Bluetooth: hci_core: program a public address set
during auto off", sent separately to linux-bluetooth: without it, setting
the address within two seconds of the index appearing leaves the
controller up but invisible to mgmt.

Transparency note: developed with an LLM coding assistant (Claude), which
traced these while bringing up the board and wrote the changes and these
messages. Tested on the U6 Enterprise with Linux 7.2.8 and BlueZ: the
firmware loads, hci0 stays unconfigured until userspace sets the address,
then scans and advertises. A W=1 arm64 build of drivers/bluetooth is
clean.

Andrei-Alexandru Bleortu (3):
Bluetooth: btqcomipc: keep the dot in split firmware segment names
Bluetooth: btqcomipc: deassert the BTSS reset before enabling its clock
Bluetooth: btqcomipc: take the board's address from the host

drivers/bluetooth/btqcomipc.c | 24 +++++++++++++++---------
1 file changed, 16 insertions(+), 8 deletions(-)
--
2.47.3