# Texas Instruments SimpleLink CC13x2 / CC26x2

# Copyright (c) 2019 Brett Witherspoon
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_CC13X2_CC26X2

source "soc/arm/ti_simplelink/cc13x2_cc26x2/Kconfig.defconfig.cc*"

config SOC_SERIES
	default "cc13x2_cc26x2"

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 32768

# Note that when using the RTC as system clock, this needs to be 32768
# to reduce truncation errors from accumulating due to conversion to/from
# time, ticks, and HW cycles
config SYS_CLOCK_TICKS_PER_SEC
	default 32768

config NUM_IRQS
	default 38

config CC13X2_CC26X2_RTC_TIMER
	default y

config GPIO_CC13XX_CC26XX
	default y
	depends on GPIO

config ENTROPY_CC13XX_CC26XX_RNG
	default y
	depends on ENTROPY_GENERATOR

config UART_CC13XX_CC26XX
	default y
	depends on SERIAL

config I2C_CC13XX_CC26XX
	default y
	depends on I2C

config SPI_CC13XX_CC26XX
	default y
	depends on SPI

if IEEE802154

config IEEE802154_CC13XX_CC26XX
	default y
	# required for linking with PowerCC26X2_config in
	# soc/arm/ti_simplelink/cc13x2_cc26x2/power.c
	select PM

config IEEE802154_CC13XX_CC26XX_SUB_GHZ
	default y
	# required for linking with PowerCC26X2_config in
	# soc/arm/ti_simplelink/cc13x2_cc26x2/power.c
	select PM

config NET_CONFIG_IEEE802154_DEV_NAME
	default IEEE802154_CC13XX_CC26XX_DRV_NAME

endif # IEEE802154

if BT

config BLE_CC13XX_CC26XX
	bool
	default y

endif # BT

endif # SOC_SERIES_CC13X2_CC26X2
