#
# Copyright 2023-2024 NXP
#
# SPDX-License-Identifier: Apache-2.0
#

config HCI_NXP_ENABLE_AUTO_SLEEP
	bool "BLE Controller auto sleep mode"
	help
	  If enabled, the Controller auto sleep mode will be configured and enabled during HCI init.
	  Auto sleep mode means the Controller will handle its low power state automatically.
	  Enabling this feature will allow to save power at the cost of some latency when sending a HCI
	  message to the Controller as the Host will need to wake it up.

config HCI_NXP_SET_CAL_DATA
	bool "BLE Controller calibration data"
	help
	  If enabled, the Host will send calibration data to the BLE Controller during HCI init.

config HCI_NXP_SET_CAL_DATA_ANNEX100
	bool "BLE Controller calibration data annex 100"
	help
	  If enabled, the Host will send calibration data annex 100 to the BLE Controller during HCI
	  init.

config HCI_NXP_RX_THREAD
	bool "Process RX buffers in a dedicated thread"
	help
	  Some platforms receive the HCI RX buffers in ISR context.
	  If enabled, the HCI RX message is queued by the ISR, and the message is processed
	  in a dedicated thread.

if HCI_NXP_RX_THREAD

config HCI_NXP_RX_STACK_SIZE
	int "HCI RX stack size"
	default 512

config HCI_NXP_RX_MSG_QUEUE_SIZE
	int "HCI RX message queue size"
	default 4

config HEAP_MEM_POOL_ADD_SIZE_BT_NXP_RX_THREAD
	int
	default 768

endif

if BT_NXP

config BT_DIS_MANUF
	default "NXP"

config BT_HCI_ACL_FLOW_CONTROL
	default n

config BT_BUF_EVT_DISCARDABLE_SIZE
	default 84

config HEAP_MEM_POOL_ADD_SIZE_BT_NXP
	int
	default 256

config FLASH
	default y

endif # BT_NXP

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
