# 64-bit ARM SoCs from TI
if ARM64

if ARCH_K3

config ARCH_K3_AM6_SOC
	bool "K3 AM6 SoC"
	help
	  Enable support for TI's AM6 SoC Family support

endif

endif

#
# TI SOC drivers
#
menuconfig SOC_TI
	bool "TI SOC drivers support"

if SOC_TI

config KEYSTONE_NAVIGATOR_QMSS
	tristate "Keystone Queue Manager Sub System"
	depends on ARCH_KEYSTONE
	help
	  Say y here to support the Keystone multicore Navigator Queue
	  Manager support. The Queue Manager is a hardware module that
	  is responsible for accelerating management of the packet queues.
	  Packets are queued/de-queued by writing/reading descriptor address
	  to a particular memory mapped location in the Queue Manager module.

	  If unsure, say N.

config KEYSTONE_NAVIGATOR_DMA
	tristate "TI Keystone Navigator Packet DMA support"
	depends on ARCH_KEYSTONE
	help
	  Say y tp enable support for the Keystone Navigator Packet DMA on
	  on Keystone family of devices. It sets up the dma channels for the
	  Queue Manager Sub System.

	  If unsure, say N.

config AMX3_PM
	tristate "AMx3 Power Management"
	depends on SOC_AM33XX || SOC_AM43XX
	depends on WKUP_M3_IPC && TI_EMIF_SRAM && SRAM && RTC_DRV_OMAP
	help
	  Enable power management on AM335x and AM437x. Required for suspend to mem
	  and standby states on both AM335x and AM437x platforms and for deeper cpuidle
	  c-states on AM335x. Also required for rtc and ddr in self-refresh low
	  power mode on AM437x platforms.

config WKUP_M3_IPC
	tristate "TI AMx3 Wkup-M3 IPC Driver"
	depends on WKUP_M3_RPROC
	depends on OMAP2PLUS_MBOX
	help
	  TI AM33XX and AM43XX have a Cortex M3, the Wakeup M3, to handle
	  low power transitions. This IPC driver provides the necessary API
	  to communicate and use the Wakeup M3 for PM features like suspend
	  resume and boots it using wkup_m3_rproc driver.

config TI_SCI_PM_DOMAINS
	tristate "TI SCI PM Domains Driver"
	depends on TI_SCI_PROTOCOL
	depends on PM_GENERIC_DOMAINS
	help
	  Generic power domain implementation for TI device implementing
	  the TI SCI protocol.

	  To compile this as a module, choose M here. The module will be
	  called ti_sci_pm_domains. Note this is needed early in boot before
	  rootfs may be available.

config TI_SCI_INTA_MSI_DOMAIN
	bool
	select GENERIC_MSI_IRQ_DOMAIN
	help
	  Driver to enable Interrupt Aggregator specific MSI Domain.

endif # SOC_TI
