Re: [PATCH v1] arm64: dts: qcom: hamoa-iot-evk: support Bluetooth over both USB and UART
From: Shuai Zhang
Date: Fri Mar 13 2026 - 02:38:06 EST
Hi Konrad
On 3/11/2026 9:07 PM, Konrad Dybcio wrote:
On 3/11/26 10:09 AM, Shuai Zhang wrote:BT uses either UART or USB, never both at the same time.
When Bluetooth supports both USB and UART, the BT UART driver isIs bluetooth connected over UART *and* USB simultaneously?
always loaded, while USB is hot-pluggable. As a result, when Bluetooth
is used over USB, the UART driver still be probed and drive BT_EN low,
which causes the Bluetooth device on USB to be disconnected.
On platforms supporting both, the UART driver is always probed, while USB is hot‑pluggable.
As a result, when BT runs over USB, the UART driver still probes and pulls BT_EN low,
unintentionally powering off the USB BT device.
Configure BT_EN as a GPIO hog so that it is controlled by the platformWhat's "the platform"?
hamoa-evk
instead of the UART driver, preventing BT over USB from beingWhat if I want to power down Bluetooth now?
unintentionally powered down.
Signed-off-by: Shuai Zhang <shuai.zhang@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
index 630642baa435..60a0b3ecbc1b 100644
--- a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
+++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
@@ -647,10 +647,9 @@ wcn7850-pmu {
vddrfa1p2-supply = <&vreg_wcn_1p9>;
vddrfa1p8-supply = <&vreg_wcn_1p9>;
- bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
It cannot be pulled low because it is not possible to determine whether the inserted M.2 card is UART‑based or USB‑based.
Identifying whether the interface is USB or UART would allow control of the UART probe accordingly;
however, no reliable solution is available so far. Additional approaches are still being explored.
wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;This name is illegal (make CHECK_DTBS=1 qcom/hamoa-iot-evk.dtb)
- pinctrl-0 = <&wcn_bt_en>, <&wcn_wlan_en>;
+ pinctrl-0 = <&wcn_wlan_en>;
pinctrl-names = "default";
regulators {
@@ -1398,11 +1397,12 @@ wcd_default: wcd-reset-n-active-state {
output-low;
};
- wcn_bt_en: wcn-bt-en-state {
- pins = "gpio116";
- function = "gpio";
- drive-strength = <2>;
- bias-disable;
+ wcn_bt_en_hog: wcn-bt-en-state-hog {
|I will use tlmm to control|
+ gpio-hog;This property is not allowed for TLMM pins
+ gpios = <116 GPIO_ACTIVE_HIGH>;
+ output-high;
+ input-disable;
+ link-name = "BT_EN";This property doesn't exist
I will remove it;
Konrad
thanks,
Shuai