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:
parent
d164f9c0bb
commit
d74698a36b
5 changed files with 44 additions and 18 deletions
|
@ -250,29 +250,14 @@ config BT_SILABS_HCI_BUFFER_MEMORY
|
||||||
Bluetooth Library.
|
Bluetooth Library.
|
||||||
|
|
||||||
config BT_H4_NXP_CTLR
|
config BT_H4_NXP_CTLR
|
||||||
bool "NXP Bluetooth Controller [EXPERIMENTAL]"
|
bool "NXP Bluetooth Controller"
|
||||||
select GPIO
|
select GPIO
|
||||||
# select UART_USE_RUNTIME_CONFIGURE
|
|
||||||
select EXPERIMENTAL
|
|
||||||
depends on BT_H4
|
depends on BT_H4
|
||||||
select CRC
|
select CRC
|
||||||
default y
|
default y
|
||||||
depends on DT_HAS_NXP_BT_HCI_UART_ENABLED
|
depends on DT_HAS_NXP_BT_HCI_UART_ENABLED
|
||||||
help
|
help
|
||||||
Enables support for NXP Bluetooth Controller.
|
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
|
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
|
https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4:WIFI-BLUETOOTH
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright 2023 NXP
|
# Copyright 2023-2024 NXP
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
|
@ -22,3 +22,19 @@ config HCI_NXP_SET_CAL_DATA_ANNEX100
|
||||||
help
|
help
|
||||||
If enabled, the Host will send calibration data annex 100 to the BLE Controller during HCI
|
If enabled, the Host will send calibration data annex 100 to the BLE Controller during HCI
|
||||||
init.
|
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
|
||||||
|
|
|
@ -24,7 +24,7 @@ LOG_MODULE_REGISTER(bt_nxp_ctlr);
|
||||||
|
|
||||||
#include "common/bt_str.h"
|
#include "common/bt_str.h"
|
||||||
|
|
||||||
#include "uart_nw61x_se.h"
|
#include "bt_nxp_ctlr_fw.h"
|
||||||
|
|
||||||
#define DT_DRV_COMPAT nxp_bt_hci_uart
|
#define DT_DRV_COMPAT nxp_bt_hci_uart
|
||||||
|
|
||||||
|
|
|
@ -23,4 +23,6 @@ if(CONFIG_HAS_MCUX OR CONFIG_HAS_IMX_HAL OR CONFIG_HAS_NXP_S32_HAL)
|
||||||
if(CONFIG_NOCACHE_MEMORY)
|
if(CONFIG_NOCACHE_MEMORY)
|
||||||
zephyr_compile_definitions_ifdef(CONFIG_USB_DEVICE_DRIVER DATA_SECTION_IS_CACHEABLE=1)
|
zephyr_compile_definitions_ifdef(CONFIG_USB_DEVICE_DRIVER DATA_SECTION_IS_CACHEABLE=1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
add_subdirectory_ifdef(CONFIG_BT_H4_NXP_CTLR bt_controller)
|
||||||
endif()
|
endif()
|
||||||
|
|
23
modules/hal_nxp/bt_controller/CMakeLists.txt
Normal file
23
modules/hal_nxp/bt_controller/CMakeLists.txt
Normal 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()
|
Loading…
Add table
Add a link
Reference in a new issue