# Kconfig.defconfig.series - 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 TI_CCFG_PRESENT
	bool
	default y

config CC13X2_CC26X2_RTC_TIMER
	default y

if PINMUX

config PINMUX_CC13XX_CC26XX
	default y

endif # PINMUX

if GPIO

config GPIO_CC13XX_CC26XX
	default y

endif # GPIO

if ENTROPY_GENERATOR

config ENTROPY_CC13XX_CC26XX_RNG
	default y

endif # ENTROPY_GENERATOR

if SERIAL

config UART_CC13XX_CC26XX
	default y

endif # SERIAL

if I2C

config I2C_CC13XX_CC26XX
	default y

endif # I2C

if SPI

config SPI_CC13XX_CC26XX
	default y

endif # SPI

if IEEE802154

config IEEE802154_CC13XX_CC26XX
	default y

config NET_CONFIG_IEEE802154_DEV_NAME
	default IEEE802154_CC13XX_CC26XX_DRV_NAME

endif # IEEE802154

endif # SOC_SERIES_CC13X2_CC26X2
