# Kconfig.cc1200 - TI CC1200 configuration options
#

menuconfig IEEE802154_CC1200
	bool "TI CC1200 Driver support"
	depends on NETWORKING
	select NET_L2_IEEE802154_SUB_GHZ
	default n

if IEEE802154_CC1200

config IEEE802154_CC1200_DRV_NAME
	string "TI CC1200 Driver's name"
	default "cc1200"
	help
	  This option sets the driver name

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

config IEEE802154_CC1200_SPI_FREQ
	int "SPI system frequency"
	default 0
	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_CC1200_SPI_SLAVE
	int "SPI slave linked to CC1200"
	default 0
	help
	  This option sets the SPI slave number SPI controller has to switch
	  to when dealing with CC1200 chip.

config IEEE802154_CC1200_GPIO_SPI_CS
	bool "Manage SPI CS through a GPIO pin"
	default n
	help
	  This option is useful if one needs to manage SPI CS through a GPIO
	  pin to by-pass the SPI controller's CS logic.

config IEEE802154_CC1200_GPIO_SPI_CS_DRV_NAME
	string "GPIO driver's name to use to drive SPI CS through"
	default ""
	depends on IEEE802154_CC1200_GPIO_SPI_CS
	help
	  This option is mandatory to set which GPIO controller to use in order
	  to actually emulate the SPI CS.

config IEEE802154_CC1200_GPIO_SPI_CS_PIN
	int "GPIO PIN to use to drive SPI CS through"
	default 0
	depends on IEEE802154_CC1200_GPIO_SPI_CS
	help
	  This option is mandatory to set which GPIO pin to use in order
	  to actually emulate the SPI CS.

config IEEE802154_CC1200_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_CC1200_INIT_PRIO
	int "CC1200 initialization priority"
	default 80
	help
	  Set the initialization priority number. Do not mess with it unless
	  you know what you are doing. Beware cc1200 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.

config IEEE802154_CC1200_RANDOM_MAC
	bool "Random MAC address"
	default y
	help
	  Generate a random MAC address dynamically.

if ! IEEE802154_CC1200_RANDOM_MAC

config IEEE802154_CC1200_MAC4
	hex "MAC Address Byte 4"
	default 0
	range 0 ff
	help
	  This is the byte 4 of the MAC address.

config IEEE802154_CC1200_MAC5
	hex "MAC Address Byte 5"
	default 0
	range 0 ff
	help
	  This is the byte 5 of the MAC address.

config IEEE802154_CC1200_MAC6
	hex "MAC Address Byte 6"
	default 0
	range 0 ff
	help
	  This is the byte 6 of the MAC address.

config IEEE802154_CC1200_MAC7
	hex "MAC Address Byte 7"
	default 0
	range 0 ff
	help
	  This is the byte 7 of the MAC address.

endif # IEEE802154_CC1200_RANDOM_MAC

config IEEE802154_CC1200_XOSC
	int "Value of the Crystal oscillator in kHz"
	default 40000
	help
	  This sets the XOSC value, it must be between 38400 and 40000.
	  This value should follow what has been set in the RF settings via
	  SmartRF tool. Do not touch this unless you know what you are doing.

config IEEE802154_CC1200_RF_PRESET
	bool "Use TI CC1200 RF pre-sets"
	default y

choice
	prompt "TI CC1200 RF preset"
	default IEEE802154_CC1200_RF_SET_0
	depends on IEEE802154_CC1200_RF_PRESET
	help
	  Set the RF preset you want to use.

config IEEE802154_CC1200_RF_SET_0
	bool "868MHz - 50Kbps - 2-GFSK - IEEE 802.15.4g compliant - ETSI"

config IEEE802154_CC1200_RF_SET_1
	bool "920MHz - 50Kbps - 2-GFSK - IEEE 802.15.4g compliant - ARIB"

config IEEE802154_CC1200_RF_SET_2
	bool "434MHz - 50Kbps - 2-GFSK - IEEE 802.15.4g compliant - ETSI"

endchoice

config IEEE802154_CC1200_CCA_THRESHOLD
	int "Value in dbm of the CCA threshold"
	default -91
	help
	  Set the CCA threshold. See datasheet's AGC_CS_THR register for
	  more information. Do not touch this unless you know what you are doing.

config IEEE802154_CC1200_RSSI_OFFSET
	int "Value in dbm of the RSSI offset"
	default -81
	help
	  Set the gain adjustment. See datasheet's AGC_GAIN_ADJUST register for
	  more information. Do not touch this unless you know what you are doing.

# Do no touch below settings unless you know what you are doing
config IEEE802154_CC1200_SETTLING_CFG
	hex
	default 0x03

config IEEE802154_CC1200_PKTCFG0
	hex
	default 0x20

config IEEE802154_CC1200_PKTCFG1
	hex
	default 0x03

config IEEE802154_CC1200_PKTCFG2
	hex
	default 0x00

config IEEE802154_CC1200_RFEND_CFG1
	hex
	default 0x3F

config IEEE802154_CC1200_RFEND_CFG0
	hex
	default 0x00

endif # IEEE802154_CC1200
