#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

config IEEE80211_BROADCOM_FULLMAC
	bool
	default n

config IEEE80211_BROADCOM_HAVE_CLM
	bool
	default n

config IEEE80211_BROADCOM_BCM4301X
	bool "Broadcom 4301x chip support"
	depends on IEEE80211_BROADCOM_FULLMAC
	default n
	select IEEE80211_BROADCOM_HAVE_CLM

config IEEE80211_BROADCOM_BCM43362
	bool "Broadcom 43362 chip support"
	depends on IEEE80211_BROADCOM_FULLMAC
	default n

config IEEE80211_BROADCOM_BCM43438
	bool "Broadcom 43438 chip support"
	depends on IEEE80211_BROADCOM_FULLMAC
	default n
	select IEEE80211_BROADCOM_HAVE_CLM

config IEEE80211_BROADCOM_BCM43455
	bool "Broadcom 43455 chip support"
	depends on IEEE80211_BROADCOM_FULLMAC
	default n
	select IEEE80211_BROADCOM_HAVE_CLM

config IEEE80211_INFINEON_CYW43439
	bool "Infineon 43439 chip support"
	depends on IEEE80211_BROADCOM_FULLMAC
	default n
	select IEEE80211_BROADCOM_HAVE_CLM

config IEEE80211_BROADCOM_FWFILES
	bool "Firmware files"
	default y
	depends on IEEE80211_BROADCOM_BCM4301X || \
               IEEE80211_BROADCOM_BCM43362 || \
               IEEE80211_BROADCOM_BCM43438 || \
               IEEE80211_BROADCOM_BCM43455
	---help---
		By default, firmware and CLM files are provided in memory.
		This selection enables an option to load the firmware and CLM
		files from a mounted file system.

		A snapshot of file for the BCM43362 are available in the tools
		repository:  https://bitbucket.org/nuttx/tools/src/master/bcm43438/

		The latest files from Cypress are available in the Linux kernel:
		https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/brcm
		The 43438 is a variant of the 43430 and will even identify itself as
		such.  The calibration file used in the past is called:
		brcmfmac43430-sdio.AP6212.txt. The firmware is brcmfmac43430-sdio.bin

		If not defined, then your board support logic will have to
		to provide the firmware files (and CLM files for the CBM43438)
		in board/src directory.  For the BCM43362, the following would
		need to be provided:

		  const uint8_t bcm43362_firmware_image[];
		  const unsigned int bcm43362_firmware_image_len;

		For the BCM43438, the following would need to be provided.

		  const uint8_t ap6212_firmware_image[];
		  const unsigned int ap6212_firmware_len;

		  const uint8_t ap6212_clm_blob[];
		  const unsigned int ap6212_clm_blob_len;

		NVRAM files are currently only supported from memory.  The following
		must be provided all configurations.  For the BCM43362:

		  const char bcm43362_nvram_image[];
		  const unsigned int bcm43362_nvram_image_len;

		And for the BCM43438:

		  const char ap6212_nvram_image[];
		  const unsigned int ap6212_nvram_image_len;

config IEEE80211_BROADCOM_FWFILENAME
	string "Firmware file"
	default "/mnt/sdcard/firmware.bin"
	depends on IEEE80211_BROADCOM_FWFILES
	---help---
		If firmware files are provided on a file system, then this option
		provides the full path to the file on a mounted file system where
		the firmware can be found.

config IEEE80211_BROADCOM_NVFILENAME
	string "Firmware file"
	default "/mnt/sdcard/nvram.bin"
	depends on IEEE80211_BROADCOM_FWFILES
	---help---
		If firmware files are provided on a file system, then this option
		provides the full path to the file on a mounted file system where
		the firmware can be found.

config IEEE80211_BROADCOM_FWCLMNAME
	string "CLM file"
	default "/mnt/sdcard/blob.bin"
	depends on IEEE80211_BROADCOM_FWFILES && IEEE80211_BROADCOM_HAVE_CLM
	---help---
		If firmware files are provided on a file system, then this option
		provides the full path to the file on a mounted file system where
		the CLM blob can be found.

config IEEE80211_BROADCOM_FULLMAC_SDIO
	bool "Broadcom FullMAC driver on SDIO bus"
	depends on ARCH_HAVE_SDIO
	select IEEE80211_BROADCOM_FULLMAC
	default n
	---help---
		This selection enables support for broadcom
		FullMAC-compliant devices using SDIO bus.

config IEEE80211_BROADCOM_FULLMAC_GSPI
	bool "Broadcom FullMAC driver on gSPI bus"
	select IEEE80211_BROADCOM_FULLMAC
	default n
	---help---
		This selection enables support for broadcom
		FullMAC-compliant devices using gSPI bus.

config IEEE80211_BROADCOM_FULLMAC_GSPI_MAX_FRAME
	int "Broadcom FullMAC driver on gSPI bus"
	default 2048
	depends on IEEE80211_BROADCOM_FULLMAC_GSPI
	---help---
		This is the maximum frame size for data transfers
		with the chip.

config IEEE80211_BROADCOM_SCHED_PRIORITY
	int "Broadcom BCMF daemon thread schedule priority"
	depends on IEEE80211_BROADCOM_FULLMAC
	default SCHED_HPWORKPRIORITY if SCHED_HPWORK
	default 255
	---help---
		This parameter should be set the bcmf daemon thread
		schedule priority

config IEEE80211_BROADCOM_SCAN_RESULT_ENTRIES
	int "Broadcom BCMF escan result entries"
	depends on IEEE80211_BROADCOM_FULLMAC
	default 10
	---help---
		This parameter should be set the bcmf escan result buffer entries

config IEEE80211_BROADCOM_PTA_PRIORITY
	bool "Broadcom BCMF Packet Traffic Arbitration priority"
	default n
	---help---
		This parameter should be enable the bcmf PTA priority feature

config IEEE80211_BROADCOM_LOWPOWER
	bool "Broadcom BCMF lower power"
	depends on IEEE80211_BROADCOM_FULLMAC
	default n
	---help---
		This parameter should be enable the bcmf lower power mode

config IEEE80211_BROADCOM_DEFAULT_COUNTRY
	string "Broadcom BCMF default country code"
	depends on IEEE80211_BROADCOM_FULLMAC
	default ""
	---help---
		This parameter should be set the default country code

if IEEE80211_BROADCOM_LOWPOWER

config IEEE80211_BROADCOM_LP_DTIM_TIMEOUT
	int "Broadcom BCMF lower power timeout(second)"
	default 10
	---help---
		This parameter should be enable the bcmf lower power timeout

config IEEE80211_BROADCOM_LP_DTIM_INTERVAL
	int "Broadcom BCMF listen interval dtim(millisecond)"
	default 500
	---help---
		This parameter should be set the listen interval dtim in milliseconds

config IEEE80211_BROADCOM_LP_IFDOWN_TIMEOUT
	int "Broadcom BCMF lower power if down timeout(second)"
	default 600
	---help---
		This parameter should be enable the bcmf lower power if down timeout

endif # IEEE80211_BROADCOM_LOWPOWER

if IEEE80211_BROADCOM_FULLMAC

config IEEE80211_BROADCOM_NINTERFACES
	int "Number of Broadcom FullMAC interfaces"
	default 1
	depends on EXPERIMENTAL

config IEEE80211_BROADCOM_DMABUF_ALIGNMENT
	int "DMA buffer address alignment boundary"
	default 4
	range 4 64
	---help---
		This parameter should be set depending on
		the used SOC DMA configuration.

config IEEE80211_BROADCOM_FRAME_POOL_SIZE
	int "SDPCM frame pool size"
	default 8
	---help---
		This parameter sets the size of the shared SDPCM frame pool
		used for both RX and TX transfers.

config IEEE80211_BROADCOM_SDIO_EHS_MODE
	bool "High-Speed Mode over SDIO"
	default n
	---help---
		This selection enables High-Speed timing mode
		with a clock rate up to 50MHz.

endif # IEEE80211_BROADCOM_FULLMAC
