Linux ARM-MSM sub-architecture
 help / color / mirror / Atom feed
From: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
To: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>
Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org,
	cheng.jiang@oss.qualcomm.com, quic_chezhou@quicinc.com,
	wei.deng@oss.qualcomm.com, jinwang.li@oss.qualcomm.com,
	mengshi.wu@oss.qualcomm.com
Subject: Re: [PATCH v1] arm64: dts: qcom: hamoa-iot-evk: support Bluetooth over both USB and UART
Date: Fri, 13 Mar 2026 14:37:39 +0800	[thread overview]
Message-ID: <97a3f3f2-e9e2-44ac-a682-0e0f0c100a45@oss.qualcomm.com> (raw)
In-Reply-To: <cffdb8ab-a293-4535-860c-378a4b8a3d33@oss.qualcomm.com>

Hi Konrad

On 3/11/2026 9:07 PM, Konrad Dybcio wrote:
> On 3/11/26 10:09 AM, Shuai Zhang wrote:
>> When Bluetooth supports both USB and UART, the BT UART driver is
>> 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.
> Is bluetooth connected over UART *and* USB simultaneously?
BT uses either UART or USB, never both at the same time.

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 platform
> What's "the platform"?

hamoa-evk


>
>> instead of the UART driver, preventing BT over USB from being
>> unintentionally powered down.
>>
>> Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
>> ---
>>   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>;
> What if I want to power down Bluetooth now?


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>;
>>   
>> -		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 {
> This name is illegal (make CHECK_DTBS=1 qcom/hamoa-iot-evk.dtb)


|I will use tlmm to control|


>
>> +		gpio-hog;
>> +		gpios = <116 GPIO_ACTIVE_HIGH>;
>> +		output-high;
>> +		input-disable;
> This property is not allowed for TLMM pins
>
>> +		link-name = "BT_EN";
> This property doesn't exist


I  will remove it;


>
> Konrad


thanks,
Shuai


  reply	other threads:[~2026-03-13  6:37 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-11  9:09 [PATCH v1] arm64: dts: qcom: hamoa-iot-evk: support Bluetooth over both USB and UART Shuai Zhang
2026-03-11 13:07 ` Konrad Dybcio
2026-03-13  6:37   ` Shuai Zhang [this message]
2026-03-13 12:34     ` Konrad Dybcio
2026-03-18  2:39       ` Shuai Zhang
2026-03-13 12:35     ` Konrad Dybcio
2026-03-13 16:04     ` Dmitry Baryshkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=97a3f3f2-e9e2-44ac-a682-0e0f0c100a45@oss.qualcomm.com \
    --to=shuai.zhang@oss.qualcomm.com \
    --cc=andersson@kernel.org \
    --cc=cheng.jiang@oss.qualcomm.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=jinwang.li@oss.qualcomm.com \
    --cc=konrad.dybcio@oss.qualcomm.com \
    --cc=konradybcio@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mengshi.wu@oss.qualcomm.com \
    --cc=quic_chezhou@quicinc.com \
    --cc=robh@kernel.org \
    --cc=wei.deng@oss.qualcomm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox