diff --git a/drivers/bluetooth/hci/Kconfig b/drivers/bluetooth/hci/Kconfig index 70e21bccb39..484dca92e1f 100644 --- a/drivers/bluetooth/hci/Kconfig +++ b/drivers/bluetooth/hci/Kconfig @@ -250,29 +250,14 @@ config BT_SILABS_HCI_BUFFER_MEMORY Bluetooth Library. config BT_H4_NXP_CTLR - bool "NXP Bluetooth Controller [EXPERIMENTAL]" + bool "NXP Bluetooth Controller" select GPIO - # select UART_USE_RUNTIME_CONFIGURE - select EXPERIMENTAL depends on BT_H4 select CRC default y depends on DT_HAS_NXP_BT_HCI_UART_ENABLED help Enables support for NXP Bluetooth Controller. - Murata 2EL M.2 Moudle base on NXP IW612 Chipset which supports - Wi-Fi® 802.11a/b/g/n/ac/ax + Bluetooth® 5.3 BR/EDR/LE + IEEE802.1.5.4 - up to 601 Mbps data rate on Wi-Fi® and 2Mbps data rate on Bluetooth®. - 4-wire UART@3M baud is supported. PCM for audio is also supported. - Details of the module could be fond on - https://www.embeddedartists.com/products/2el-m-2-module/ - - The configuration depends on the firmware (named uart_nw61x_se.h) - of Murata 2EL M.2 Moudle. It could be downloaded here - https://github.com/NXP/wifi_nxp/blob/MCUX_2.15.000/wifi_bt_firmware/nw61x/uart_nw61x_se.h - And it needs to be placed into the folder /zephyr/ - drivers/bluetooth/hci. - More inforamtion about NXP Bluetooth profuct could be found on https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4:WIFI-BLUETOOTH diff --git a/drivers/bluetooth/hci/Kconfig.nxp b/drivers/bluetooth/hci/Kconfig.nxp index a5eb8648c8a..65bbc3067e7 100644 --- a/drivers/bluetooth/hci/Kconfig.nxp +++ b/drivers/bluetooth/hci/Kconfig.nxp @@ -1,5 +1,5 @@ # -# Copyright 2023 NXP +# Copyright 2023-2024 NXP # # SPDX-License-Identifier: Apache-2.0 # @@ -22,3 +22,19 @@ config HCI_NXP_SET_CAL_DATA_ANNEX100 help If enabled, the Host will send calibration data annex 100 to the BLE Controller during HCI init. + +if BT_H4_NXP_CTLR + +config BT_NXP_NW612 + bool "NXP IW612 Chipset" + help + NXP IW612 Chipset supports Wi-Fi? 802.11a/b/g/n/ac/ax + Bluetooth? 5.3 + BR/EDR/LE + IEEE802.1.5.4 up to 601 Mbps data rate on Wi-Fi? and 2Mbps + data rate on Bluetooth?. 4-wire UART@3M baud is supported. PCM for + audio is also supported. + Details of the module could be fond on https://www.nxp.com/products/ + wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4/2-4-5-ghz- + dual-band-1x1-wi-fi-6-802-11ax-plus-bluetooth-5-4-plus-802-15-4-tri- + radio-solution:IW612. + +endif # BT_H4_NXP_CTLR diff --git a/drivers/bluetooth/hci/hci_nxp_setup.c b/drivers/bluetooth/hci/hci_nxp_setup.c index 5a22be2bc7f..b3cc0e18c6f 100644 --- a/drivers/bluetooth/hci/hci_nxp_setup.c +++ b/drivers/bluetooth/hci/hci_nxp_setup.c @@ -24,7 +24,7 @@ LOG_MODULE_REGISTER(bt_nxp_ctlr); #include "common/bt_str.h" -#include "uart_nw61x_se.h" +#include "bt_nxp_ctlr_fw.h" #define DT_DRV_COMPAT nxp_bt_hci_uart diff --git a/modules/hal_nxp/CMakeLists.txt b/modules/hal_nxp/CMakeLists.txt index 2f2e53d22ea..7ae7ff304ae 100644 --- a/modules/hal_nxp/CMakeLists.txt +++ b/modules/hal_nxp/CMakeLists.txt @@ -23,4 +23,6 @@ if(CONFIG_HAS_MCUX OR CONFIG_HAS_IMX_HAL OR CONFIG_HAS_NXP_S32_HAL) if(CONFIG_NOCACHE_MEMORY) zephyr_compile_definitions_ifdef(CONFIG_USB_DEVICE_DRIVER DATA_SECTION_IS_CACHEABLE=1) endif() + + add_subdirectory_ifdef(CONFIG_BT_H4_NXP_CTLR bt_controller) endif() diff --git a/modules/hal_nxp/bt_controller/CMakeLists.txt b/modules/hal_nxp/bt_controller/CMakeLists.txt new file mode 100644 index 00000000000..a0a79cdcb03 --- /dev/null +++ b/modules/hal_nxp/bt_controller/CMakeLists.txt @@ -0,0 +1,23 @@ +# +# Copyright 2024 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +set(hal_nxp_dir ${ZEPHYR_HAL_NXP_MODULE_DIR}) +set(hal_nxp_blobs_dir ${hal_nxp_dir}/zephyr/blobs) +set(blob_gen_file ${ZEPHYR_BINARY_DIR}/include/generated/bt_nxp_ctlr_fw.h) + +if(CONFIG_BT_NXP_NW612) + set(blob_file ${hal_nxp_blobs_dir}/iw612/uart_nw61x_se.h) +endif() + +if (NOT DEFINED blob_file) + message(FATAL_ERROR "Unsupported controller. Please select a BT conntroller, refer to ./driver/bluetooth/hci/Kconfig.nxp") +endif() + +if(EXISTS ${blob_file}) + configure_file(${blob_file} ${blob_gen_file} COPYONLY) +else() + message(FATAL_ERROR "Can't find controller firmware, please fetch blobs by using command: \'west blobs fetch hal_nxp\'") +endif()