# Kconfig.mcr20a - NXP MCR20A configuration options
#
#
# Copyright (c) 2017 PHYTEC Messtechnik GmbH
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig  IEEE802154_MCR20A
	bool "NXP MCR20A Driver support"
	depends on NETWORKING && SPI
	default n

if IEEE802154_MCR20A

config IEEE802154_MCR20A_DRV_NAME
	string "NXP MCR20A Driver's name"
	default "mcr20a"
	help
	This option sets the driver name

config IEEE802154_MCR20A_SPI_DRV_NAME
	string "SPI driver's name to use to access MCR20A"
	default SPI_0_NAME
	help
	This option is mandatory to set which SPI controller to use in order
	to actually control the MCR20A chip.

config IEEE802154_MCR20A_SPI_FREQ
	int "SPI system frequency"
	default 4000000
	help
	This option sets the SPI controller's frequency. Beware this value
	depends on the SPI controller being used and also on the system
	clock.

config IEEE802154_MCR20A_SPI_SLAVE
	int "SPI slave linked to MCR20A"
	default 0
	help
	This option sets the SPI slave number SPI controller has to switch
	to when dealing with MCR20A chip.

config MCR20A_GPIO_IRQ_B_NAME
	string "GPIO device used for IRQ_B output of MCR20A"
	default GPIO_MCUX_PORTB_NAME

config MCR20A_GPIO_IRQ_B_PIN
	int "GPIO pin connected to IRQ_B output of MCR20A"
	default 9

config MCR20A_GPIO_RESET_NAME
	string "GPIO device used for RESET input of MCR20A"
	default GPIO_MCUX_PORTA_NAME

config MCR20A_GPIO_RESET_PIN
	int "GPIO pin connected to RESET input of MCR20A"
	default 2

config MCR20A_IS_PART_OF_KW2XD_SIP
	bool "MCR20A device is part of KW2xD SiP"
	default n
	help
	If this option is set, the driver does not perform a hardware
	reset and the CLK_OUT frequency is not set, instead these settings
	are performed during the initialization of the SoC.

choice
	prompt "CLK_OUT frequency"
	default MCR20A_CLK_OUT_4MHZ if MCR20A_IS_PART_OF_KW2XD_SIP
	default MCR20A_CLK_OUT_DISABLED
	help
	Configuration of the MCR20A clock output pin.

config MCR20A_CLK_OUT_DISABLED
	bool "Disabled"

config MCR20A_CLK_OUT_32MHZ
	bool "32 MHz"

config MCR20A_CLK_OUT_16MHZ
	bool "16 MHz"

config MCR20A_CLK_OUT_8MHZ
	bool "8 MHz"

config MCR20A_CLK_OUT_4MHZ
	bool "4 MHz"

config MCR20A_CLK_OUT_1MHZ
	bool "1 MHz"

config MCR20A_CLK_OUT_250KHZ
	bool "250 kHz"

config MCR20A_CLK_OUT_62500HZ
	bool "62500 Hz"

config MCR20A_CLK_OUT_32768HZ
	bool "32768 Hz"

endchoice

config IEEE802154_MCR20A_RX_STACK_SIZE
	int "Driver's internal RX thread stack size"
	default 800
	help
	This option sets the driver's stack size for its internal RX thread.
	The default value should be sufficient, but in case it proves to be
	a too little one, this option makes it easy to play with the size.

config IEEE802154_MCR20A_INIT_PRIO
	int "MCR20A initialization priority"
	default 80
	help
	Set the initialization priority number. Do not mess with it unless
	you know what you are doing. Beware mcr20a requires gpio and spi to
	be ready first (and sometime gpio should be the very first as spi
	might need it too). And of course it has to start before the net stack.


endif
