# Texas Instruments SimpleLink CC13x2 / CC26x2

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

config SOC_SERIES_CC13X2_CC26X2
	bool "TI SimpleLink Family CC13x2 / CC26x2"
	select ARM
	select CPU_CORTEX_M4
	select CPU_HAS_ARM_MPU
	select DYNAMIC_INTERRUPTS
	select CPU_CORTEX_M_HAS_DWT
	select CPU_HAS_FPU
	select SOC_FAMILY_TISIMPLELINK
	select HAS_CC13X2_CC26X2_SDK
	select HAS_TI_CCFG if !BOOTLOADER_MCUBOOT
	select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE
	select HAS_PM
	select HAS_POWEROFF
	help
	  Enable support for TI SimpleLink CC13x2 / CC26x2 SoCs
