@@ -1286,7 +1286,9 @@ static void nxp_coredump(struct hci_dev *hdev)
12861286 u8 pcmd = 2 ;
12871287
12881288 skb = nxp_drv_send_cmd (hdev , HCI_NXP_TRIGGER_DUMP , 1 , & pcmd );
1289- if (!IS_ERR (skb ))
1289+ if (IS_ERR (skb ))
1290+ bt_dev_err (hdev , "Failed to trigger FW Dump. (%ld)" , PTR_ERR (skb ));
1291+ else
12901292 kfree_skb (skb );
12911293}
12921294
@@ -1445,9 +1447,6 @@ static int nxp_shutdown(struct hci_dev *hdev)
14451447 /* HCI_NXP_IND_RESET command may not returns any response */
14461448 if (!IS_ERR (skb ))
14471449 kfree_skb (skb );
1448- } else if (nxpdev -> current_baudrate != nxpdev -> fw_init_baudrate ) {
1449- nxpdev -> new_baudrate = nxpdev -> fw_init_baudrate ;
1450- nxp_set_baudrate_cmd (hdev , NULL );
14511450 }
14521451
14531452 return 0 ;
@@ -1799,13 +1798,15 @@ static void nxp_serdev_remove(struct serdev_device *serdev)
17991798 clear_bit (BTNXPUART_FW_DOWNLOADING , & nxpdev -> tx_state );
18001799 wake_up_interruptible (& nxpdev -> check_boot_sign_wait_q );
18011800 wake_up_interruptible (& nxpdev -> fw_dnld_done_wait_q );
1802- }
1803-
1804- if (test_bit (HCI_RUNNING , & hdev -> flags )) {
1805- /* Ensure shutdown callback is executed before unregistering, so
1806- * that baudrate is reset to initial value.
1801+ } else {
1802+ /* Restore FW baudrate to fw_init_baudrate if changed.
1803+ * This will ensure FW baudrate is in sync with
1804+ * driver baudrate in case this driver is re-inserted.
18071805 */
1808- nxp_shutdown (hdev );
1806+ if (nxpdev -> current_baudrate != nxpdev -> fw_init_baudrate ) {
1807+ nxpdev -> new_baudrate = nxpdev -> fw_init_baudrate ;
1808+ nxp_set_baudrate_cmd (hdev , NULL );
1809+ }
18091810 }
18101811
18111812 ps_cleanup (nxpdev );
0 commit comments