Linux ARM-MSM sub-architecture
 help / color / mirror / Atom feed
* [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches
@ 2026-01-08  7:43 Shuai Zhang
  2026-01-19 11:45 ` Shuai Zhang
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Shuai Zhang @ 2026-01-08  7:43 UTC (permalink / raw)
  To: Marcel Holtmann, Luiz Augusto von Dentz
  Cc: linux-bluetooth, linux-kernel, linux-arm-msm, cheng.jiang,
	quic_chezhou, wei.deng, jinwang.li, mengshi.wu, shuai.zhang

Since USB can disconnect at any time, if it disconnects during
the BT firmware download, the BT controller firmware version may still
be updated even without completing the download.

When USB reconnects, the BT host detects the same version as in the
firmware file, which prevents the firmware from being downloaded again.

Therefore, remove the equality check to ensure that after
USB reconnection, the BT host can still download the firmware.

Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
---
 drivers/bluetooth/btusb.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 646de80c7..991064a25 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -3503,7 +3503,10 @@ static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
 		    "firmware rome 0x%x build 0x%x",
 		    rver_rom, rver_patch, ver_rom, ver_patch);
 
-	if (rver_rom != ver_rom || rver_patch <= ver_patch) {
+	/* Allow rampatch if version is greater than or equal to firmware version.
+	 * Equal versions are acceptable for re-flashing or recovery scenarios.
+	 */
+	if (rver_rom != ver_rom || rver_patch < ver_patch) {
 		bt_dev_err(hdev, "rampatch file version did not match with firmware");
 		err = -EINVAL;
 		goto done;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches
  2026-01-08  7:43 [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches Shuai Zhang
@ 2026-01-19 11:45 ` Shuai Zhang
  2026-03-05  8:08 ` Shuai Zhang
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Shuai Zhang @ 2026-01-19 11:45 UTC (permalink / raw)
  To: Marcel Holtmann, Luiz Augusto von Dentz
  Cc: linux-bluetooth, linux-kernel, linux-arm-msm, cheng.jiang,
	quic_chezhou, wei.deng, jinwang.li, mengshi.wu

Hi

On 1/8/2026 3:43 PM, Shuai Zhang wrote:
> Since USB can disconnect at any time, if it disconnects during
> the BT firmware download, the BT controller firmware version may still
> be updated even without completing the download.
>
> When USB reconnects, the BT host detects the same version as in the
> firmware file, which prevents the firmware from being downloaded again.
>
> Therefore, remove the equality check to ensure that after
> USB reconnection, the BT host can still download the firmware.
>
> Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
> ---
>   drivers/bluetooth/btusb.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 646de80c7..991064a25 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -3503,7 +3503,10 @@ static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
>   		    "firmware rome 0x%x build 0x%x",
>   		    rver_rom, rver_patch, ver_rom, ver_patch);
>   
> -	if (rver_rom != ver_rom || rver_patch <= ver_patch) {
> +	/* Allow rampatch if version is greater than or equal to firmware version.
> +	 * Equal versions are acceptable for re-flashing or recovery scenarios.
> +	 */
> +	if (rver_rom != ver_rom || rver_patch < ver_patch) {
>   		bt_dev_err(hdev, "rampatch file version did not match with firmware");
>   		err = -EINVAL;
>   		goto done;


Kindly let me know if there are any updates.


Kindly, regard

Shuai


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches
  2026-01-08  7:43 [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches Shuai Zhang
  2026-01-19 11:45 ` Shuai Zhang
@ 2026-03-05  8:08 ` Shuai Zhang
  2026-03-13 12:16 ` Shuai Zhang
  2026-03-13 16:06 ` Dmitry Baryshkov
  3 siblings, 0 replies; 7+ messages in thread
From: Shuai Zhang @ 2026-03-05  8:08 UTC (permalink / raw)
  To: Marcel Holtmann, Luiz Augusto von Dentz
  Cc: linux-bluetooth, linux-kernel, linux-arm-msm, cheng.jiang,
	quic_chezhou, wei.deng, jinwang.li, mengshi.wu

Hi

On 1/8/2026 3:43 PM, Shuai Zhang wrote:
> Since USB can disconnect at any time, if it disconnects during
> the BT firmware download, the BT controller firmware version may still
> be updated even without completing the download.
>
> When USB reconnects, the BT host detects the same version as in the
> firmware file, which prevents the firmware from being downloaded again.
>
> Therefore, remove the equality check to ensure that after
> USB reconnection, the BT host can still download the firmware.
>
> Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
> ---
>   drivers/bluetooth/btusb.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 646de80c7..991064a25 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -3503,7 +3503,10 @@ static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
>   		    "firmware rome 0x%x build 0x%x",
>   		    rver_rom, rver_patch, ver_rom, ver_patch);
>   
> -	if (rver_rom != ver_rom || rver_patch <= ver_patch) {
> +	/* Allow rampatch if version is greater than or equal to firmware version.
> +	 * Equal versions are acceptable for re-flashing or recovery scenarios.
> +	 */
> +	if (rver_rom != ver_rom || rver_patch < ver_patch) {
>   		bt_dev_err(hdev, "rampatch file version did not match with firmware");
>   		err = -EINVAL;
>   		goto done;


Could you please let me know if there are any updates?

Thanks,
Shuai


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches
  2026-01-08  7:43 [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches Shuai Zhang
  2026-01-19 11:45 ` Shuai Zhang
  2026-03-05  8:08 ` Shuai Zhang
@ 2026-03-13 12:16 ` Shuai Zhang
  2026-03-13 16:06 ` Dmitry Baryshkov
  3 siblings, 0 replies; 7+ messages in thread
From: Shuai Zhang @ 2026-03-13 12:16 UTC (permalink / raw)
  To: Marcel Holtmann, Luiz Augusto von Dentz, linux-bluetooth
  Cc: linux-kernel, linux-arm-msm, cheng.jiang, quic_chezhou, wei.deng,
	jinwang.li, mengshi.wu

Hi reviewer,

On 1/8/2026 3:43 PM, Shuai Zhang wrote:
> Since USB can disconnect at any time, if it disconnects during
> the BT firmware download, the BT controller firmware version may still
> be updated even without completing the download.
>
> When USB reconnects, the BT host detects the same version as in the
> firmware file, which prevents the firmware from being downloaded again.
>
> Therefore, remove the equality check to ensure that after
> USB reconnection, the BT host can still download the firmware.
>
> Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
> ---
>   drivers/bluetooth/btusb.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 646de80c7..991064a25 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -3503,7 +3503,10 @@ static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
>   		    "firmware rome 0x%x build 0x%x",
>   		    rver_rom, rver_patch, ver_rom, ver_patch);
>   
> -	if (rver_rom != ver_rom || rver_patch <= ver_patch) {
> +	/* Allow rampatch if version is greater than or equal to firmware version.
> +	 * Equal versions are acceptable for re-flashing or recovery scenarios.
> +	 */
> +	if (rver_rom != ver_rom || rver_patch < ver_patch) {
>   		bt_dev_err(hdev, "rampatch file version did not match with firmware");
>   		err = -EINVAL;
>   		goto done;

If there are any updates, please let me know.

Thanks,
Shuai


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches
  2026-01-08  7:43 [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches Shuai Zhang
                   ` (2 preceding siblings ...)
  2026-03-13 12:16 ` Shuai Zhang
@ 2026-03-13 16:06 ` Dmitry Baryshkov
  2026-03-18  2:32   ` Shuai Zhang
  3 siblings, 1 reply; 7+ messages in thread
From: Dmitry Baryshkov @ 2026-03-13 16:06 UTC (permalink / raw)
  To: Shuai Zhang
  Cc: Marcel Holtmann, Luiz Augusto von Dentz, linux-bluetooth,
	linux-kernel, linux-arm-msm, cheng.jiang, quic_chezhou, wei.deng,
	jinwang.li, mengshi.wu

On Thu, Jan 08, 2026 at 03:43:53PM +0800, Shuai Zhang wrote:
> Since USB can disconnect at any time, if it disconnects during
> the BT firmware download, the BT controller firmware version may still
> be updated even without completing the download.

Does it not have any check for not completing firmware update if the
download was not successful / complete?

> 
> When USB reconnects, the BT host detects the same version as in the
> firmware file, which prevents the firmware from being downloaded again.
> 
> Therefore, remove the equality check to ensure that after
> USB reconnection, the BT host can still download the firmware.
> 
> Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
> ---
>  drivers/bluetooth/btusb.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 646de80c7..991064a25 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -3503,7 +3503,10 @@ static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
>  		    "firmware rome 0x%x build 0x%x",
>  		    rver_rom, rver_patch, ver_rom, ver_patch);
>  
> -	if (rver_rom != ver_rom || rver_patch <= ver_patch) {
> +	/* Allow rampatch if version is greater than or equal to firmware version.
> +	 * Equal versions are acceptable for re-flashing or recovery scenarios.
> +	 */
> +	if (rver_rom != ver_rom || rver_patch < ver_patch) {
>  		bt_dev_err(hdev, "rampatch file version did not match with firmware");
>  		err = -EINVAL;
>  		goto done;
> -- 
> 2.34.1
> 

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches
  2026-03-13 16:06 ` Dmitry Baryshkov
@ 2026-03-18  2:32   ` Shuai Zhang
  2026-04-02  2:25     ` Shuai Zhang
  0 siblings, 1 reply; 7+ messages in thread
From: Shuai Zhang @ 2026-03-18  2:32 UTC (permalink / raw)
  To: Dmitry Baryshkov
  Cc: Marcel Holtmann, Luiz Augusto von Dentz, linux-bluetooth,
	linux-kernel, linux-arm-msm, cheng.jiang, quic_chezhou, wei.deng,
	jinwang.li, mengshi.wu

Hi Dmitry

Thanks for the review.

On 3/14/2026 12:06 AM, Dmitry Baryshkov wrote:
> On Thu, Jan 08, 2026 at 03:43:53PM +0800, Shuai Zhang wrote:
>> Since USB can disconnect at any time, if it disconnects during
>> the BT firmware download, the BT controller firmware version may still
>> be updated even without completing the download.
> Does it not have any check for not completing firmware update if the
> download was not successful / complete?

Because of RAM limitations, the controller updates the firmware version 
during

the download process,even if the download does not complete.

Since btusb cannot power-cycle the controller, the only recovery after

an interrupted download is to retry the firmware download.

>
>> When USB reconnects, the BT host detects the same version as in the
>> firmware file, which prevents the firmware from being downloaded again.
>>
>> Therefore, remove the equality check to ensure that after
>> USB reconnection, the BT host can still download the firmware.
>>
>> Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
>> ---
>>   drivers/bluetooth/btusb.c | 5 ++++-
>>   1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
>> index 646de80c7..991064a25 100644
>> --- a/drivers/bluetooth/btusb.c
>> +++ b/drivers/bluetooth/btusb.c
>> @@ -3503,7 +3503,10 @@ static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
>>   		    "firmware rome 0x%x build 0x%x",
>>   		    rver_rom, rver_patch, ver_rom, ver_patch);
>>   
>> -	if (rver_rom != ver_rom || rver_patch <= ver_patch) {
>> +	/* Allow rampatch if version is greater than or equal to firmware version.
>> +	 * Equal versions are acceptable for re-flashing or recovery scenarios.
>> +	 */
>> +	if (rver_rom != ver_rom || rver_patch < ver_patch) {
>>   		bt_dev_err(hdev, "rampatch file version did not match with firmware");
>>   		err = -EINVAL;
>>   		goto done;
>> -- 
>> 2.34.1
>>
Thanks,
Shuai




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches
  2026-03-18  2:32   ` Shuai Zhang
@ 2026-04-02  2:25     ` Shuai Zhang
  0 siblings, 0 replies; 7+ messages in thread
From: Shuai Zhang @ 2026-04-02  2:25 UTC (permalink / raw)
  To: Dmitry Baryshkov
  Cc: Marcel Holtmann, Luiz Augusto von Dentz, linux-bluetooth,
	linux-kernel, linux-arm-msm, cheng.jiang, quic_chezhou, wei.deng,
	jinwang.li, mengshi.wu

Hi  Dmitry

just checking if there are any updates on this patch.
Please let me know if any further information is needed.

On 3/18/2026 10:32 AM, Shuai Zhang wrote:
> Hi Dmitry
>
> Thanks for the review.
>
> On 3/14/2026 12:06 AM, Dmitry Baryshkov wrote:
>> On Thu, Jan 08, 2026 at 03:43:53PM +0800, Shuai Zhang wrote:
>>> Since USB can disconnect at any time, if it disconnects during
>>> the BT firmware download, the BT controller firmware version may still
>>> be updated even without completing the download.
>> Does it not have any check for not completing firmware update if the
>> download was not successful / complete?
>
> Because of RAM limitations, the controller updates the firmware 
> version during
>
> the download process,even if the download does not complete.
>
> Since btusb cannot power-cycle the controller, the only recovery after
>
> an interrupted download is to retry the firmware download.
>
>>
>>> When USB reconnects, the BT host detects the same version as in the
>>> firmware file, which prevents the firmware from being downloaded again.
>>>
>>> Therefore, remove the equality check to ensure that after
>>> USB reconnection, the BT host can still download the firmware.
>>>
>>> Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
>>> ---
>>>   drivers/bluetooth/btusb.c | 5 ++++-
>>>   1 file changed, 4 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
>>> index 646de80c7..991064a25 100644
>>> --- a/drivers/bluetooth/btusb.c
>>> +++ b/drivers/bluetooth/btusb.c
>>> @@ -3503,7 +3503,10 @@ static int 
>>> btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
>>>               "firmware rome 0x%x build 0x%x",
>>>               rver_rom, rver_patch, ver_rom, ver_patch);
>>>   -    if (rver_rom != ver_rom || rver_patch <= ver_patch) {
>>> +    /* Allow rampatch if version is greater than or equal to 
>>> firmware version.
>>> +     * Equal versions are acceptable for re-flashing or recovery 
>>> scenarios.
>>> +     */
>>> +    if (rver_rom != ver_rom || rver_patch < ver_patch) {
>>>           bt_dev_err(hdev, "rampatch file version did not match with 
>>> firmware");
>>>           err = -EINVAL;
>>>           goto done;
>>> -- 
>>> 2.34.1
>>>
> Thanks,
> Shuai
>
>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-04-02  2:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-08  7:43 [PATCH v1] Bluetooth: btusb: Allow firmware re-download when version matches Shuai Zhang
2026-01-19 11:45 ` Shuai Zhang
2026-03-05  8:08 ` Shuai Zhang
2026-03-13 12:16 ` Shuai Zhang
2026-03-13 16:06 ` Dmitry Baryshkov
2026-03-18  2:32   ` Shuai Zhang
2026-04-02  2:25     ` Shuai Zhang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox