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