# Texas Instruments SimpleLink CC13x2 / CC26x2

# Copyright (c) 2022 Vaishnav Achath
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_CC13X2X7_CC26X2X7

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

config SOC_SERIES
	default "cc13x2x7_cc26x2x7"

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

if IEEE802154

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

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

endif # IEEE802154

if BT

config BLE_CC13XX_CC26XX
	bool
	default y

endif # BT

endif # SOC_SERIES_CC13X2X7_CC26X2X7
