# Texas Instruments SimpleLink CC13x2 / CC26x2
# Copyright (c) 2022 Vaishnav Achath
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_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/soc_legacy/arm/ti_simplelink/cc13x2_cc26x2/power.c
	select PM

config IEEE802154_CC13XX_CC26XX_SUB_GHZ
	# required for linking with PowerCC26X2_config in
	# soc/soc_legacy/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
