# 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
