driver: bluetooth: hci: Support NXP BT CTLR FW blobs

Add Kconfig.nxp to support NXP Bluetooth Chipset.
Current only NXP IW612 Chipset (BT_NXP_NW612) has
been supported.

Add modules/hal_nxp/bt_controller/CMakeLists.txt to
determine whether any firmware is selected, and
check whether the firmware exists.

If the firmware exists, copy the firmware to the
temporary folder ${ZEPHYR_BINARY_DIR}/include/
generated/bt_nxp_ctlr_fw.h. OR, raise a fatal error.

In file hci_nxp_setup.c, includes the temporary file
bt_nxp_ctlr_fw.h.

Signed-off-by: Lyle Zhu <lyle.zhu@nxp.com>
This commit is contained in:
Lyle Zhu 2024-06-05 16:11:02 +08:00 committed by Anas Nashif
commit d74698a36b
5 changed files with 44 additions and 18 deletions

View file

@ -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 <zephyrproject>/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

View file

@ -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

View file

@ -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

View file

@ -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()

View file

@ -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()