Re: [PATCH] Bluetooth: btusb: Add a parameter to load fw forcibly for Intel BT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Hui,

> On the machines with Intel new BT module, if users run reboot, the BT
> driver will not load the firmware from rootfs during boot since it is
> already in operational mode. This will confuse the users if users
> update the BT firmware and expect the updated firmware to fix some
> problems.
> 
> Let the driver print a message to tell users the firmware is not
> loaded and add a module parameter to let driver forcibly load the
> firmware from rootfs. After users read this message, they could set
> this parameter to load the firmware forcibly.
> 
> Signed-off-by: Hui Wang <hui.wang@xxxxxxxxxxxxx>
> ---
> drivers/bluetooth/btusb.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 1005b6e8ff74..d4fceedd354b 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -32,6 +32,7 @@ static bool force_scofix;
> static bool enable_autosuspend = IS_ENABLED(CONFIG_BT_HCIBTUSB_AUTOSUSPEND);
> 
> static bool reset = true;
> +static bool force_load_fw;
> 
> static struct usb_driver btusb_driver;
> 
> @@ -2589,8 +2590,15 @@ static int btusb_setup_intel_new(struct hci_dev *hdev)
> 		return err;
> 
> 	/* controller is already having an operational firmware */
> -	if (ver.fw_variant == 0x23)
> +	if (ver.fw_variant == 0x23) {
> +		if (force_load_fw) {
> +			btintel_reset_to_bootloader(hdev);
> +			force_load_fw = false;
> +			return -EAGAIN;
> +		}
> +		bt_dev_info(hdev, "already in operational mode, not load fw. Set force_load_fw=1 to load fw forcibly");
> 		goto finish;
> +	}

I don’t like this approach. I rather do this in a more generic way that resets the controller and puts it into boot loader support if support. We can use the experimental mgmt setting for this.

Regards

Marcel




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux