drivers: bluetooth: hci_nxp_setup: support for bt disable and reinit

- added flag in nxp setup driver to perform HCI controller firmware-
  load and configuration only once. This avoid loading/setting-up
  controller fw on successive bt_init() after bt_disable() call.

Signed-off-by: Nirav Agrawal <nirav.agrawal@nxp.com>
diff --git a/drivers/bluetooth/hci/hci_nxp_setup.c b/drivers/bluetooth/hci/hci_nxp_setup.c
index bacc9f3..6bd0e5d 100644
--- a/drivers/bluetooth/hci/hci_nxp_setup.c
+++ b/drivers/bluetooth/hci/hci_nxp_setup.c
@@ -194,6 +194,7 @@
 	bool is_error_case;
 	bool is_cmd7_req;
 	bool is_entry_point_req;
+	bool is_setup_done;
 
 	uint8_t last_5bytes_buffer[6];
 };
@@ -1171,11 +1172,15 @@
 
 int bt_hci_transport_setup(const struct device *dev)
 {
+	int ret = 0;
 	if (dev != uart_dev) {
 		return -EINVAL;
 	}
 
-	return bt_nxp_ctlr_init();
+	if (!fw_upload.is_setup_done) {
+		ret = bt_nxp_ctlr_init();
+	}
+	return ret;
 }
 
 #define BT_HCI_VSC_BAUDRATE_UPDATE_LENGTH 4
@@ -1228,13 +1233,15 @@
 		return 0;
 	}
 
-	err = bt_hci_baudrate_update(dev, operation_speed);
-	if (err) {
-		return err;
-	}
+	if (!fw_upload.is_setup_done) {
+		err = bt_hci_baudrate_update(dev, operation_speed);
+		if (err) {
+			return err;
+		}
 
-	/* BT waiting time after controller bandrate updated */
-	(void)k_msleep(CONFIG_BT_H4_NXP_CTLR_WAIT_TIME_AFTER_BAUDRATE_UPDATE);
+		/* BT waiting time after controller bandrate updated */
+		(void)k_msleep(CONFIG_BT_H4_NXP_CTLR_WAIT_TIME_AFTER_BAUDRATE_UPDATE);
+	}
 
 	err = fw_upload_uart_reconfig(operation_speed, flowcontrol_of_hci);
 	if (err) {
@@ -1242,5 +1249,7 @@
 		return err;
 	}
 
+	fw_upload.is_setup_done = true;
+
 	return 0;
 }