# SPDX-License-Identifier: GPL-2.0-only
#
# Coresight configuration
#
menuconfig CORESIGHT
	tristate "CoreSight Tracing Support"
	depends on ARM || ARM64
	depends on OF || ACPI
	select ARM_AMBA
	select PERF_EVENTS
	select CONFIGFS_FS
	help
	  This framework provides a kernel interface for the CoreSight debug
	  and trace drivers to register themselves with. It's intended to build
	  a topological view of the CoreSight components based on a DT
	  specification and configure the right series of components when a
	  trace source gets enabled.

	  To compile this driver as a module, choose M here: the
	  module will be called coresight.

if CORESIGHT
config CORESIGHT_LINKS_AND_SINKS
	tristate "CoreSight Link and Sink drivers"
	help
	  This enables support for CoreSight link and sink drivers that are
	  responsible for transporting and collecting the trace data
	  respectively.  Link and sinks are dynamically aggregated with a trace
	  entity at run time to form a complete trace path.

	  To compile these drivers as modules, choose M here: the
	  modules will be called coresight-funnel and coresight-replicator.

config CORESIGHT_LINK_AND_SINK_TMC
	tristate "Coresight generic TMC driver"

	depends on CORESIGHT_LINKS_AND_SINKS
	help
	  This enables support for the Trace Memory Controller driver.
	  Depending on its configuration the device can act as a link (embedded
	  trace router - ETR) or sink (embedded trace FIFO).  The driver
	  complies with the generic implementation of the component without
	  special enhancement or added features.

	  To compile this driver as a module, choose M here: the
	  module will be called coresight-tmc.

config CORESIGHT_CATU
	tristate "Coresight Address Translation Unit (CATU) driver"
	depends on CORESIGHT_LINK_AND_SINK_TMC
	help
	   Enable support for the Coresight Address Translation Unit (CATU).
	   CATU supports a scatter gather table of 4K pages, with forward/backward
	   lookup. CATU helps TMC ETR to use a large physically non-contiguous trace
	   buffer by translating the addresses used by ETR to the physical address
	   by looking up the provided table. CATU can also be used in pass-through
	   mode where the address is not translated.

	   To compile this driver as a module, choose M here: the
	   module will be called coresight-catu.

config CORESIGHT_SINK_TPIU
	tristate "Coresight generic TPIU driver"
	depends on CORESIGHT_LINKS_AND_SINKS
	help
	  This enables support for the Trace Port Interface Unit driver,
	  responsible for bridging the gap between the on-chip coresight
	  components and a trace for bridging the gap between the on-chip
	  coresight components and a trace port collection engine, typically
	  connected to an external host for use case capturing more traces than
	  the on-board coresight memory can handle.

	  To compile this driver as a module, choose M here: the
	  module will be called coresight-tpiu.

config CORESIGHT_SINK_ETBV10
	tristate "Coresight ETBv1.0 driver"
	depends on CORESIGHT_LINKS_AND_SINKS
	help
	  This enables support for the Embedded Trace Buffer version 1.0 driver
	  that complies with the generic implementation of the component without
	  special enhancement or added features.

	  To compile this driver as a module, choose M here: the
	  module will be called coresight-etb10.

config CORESIGHT_SOURCE_ETM3X
	tristate "CoreSight Embedded Trace Macrocell 3.x driver"
	depends on !ARM64
	select CORESIGHT_LINKS_AND_SINKS
	help
	  This driver provides support for processor ETM3.x and PTM1.x modules,
	  which allows tracing the instructions that a processor is executing
	  This is primarily useful for instruction level tracing.  Depending
	  the ETM version data tracing may also be available.

	  To compile this driver as a module, choose M here: the
	  module will be called coresight-etm3x.

config CORESIGHT_SOURCE_ETM4X
	tristate "CoreSight ETMv4.x / ETE driver"
	depends on ARM64
	select CORESIGHT_LINKS_AND_SINKS
	select PID_IN_CONTEXTIDR
	help
	  This driver provides support for the CoreSight Embedded Trace Macrocell
	  version 4.x and the Embedded Trace Extensions (ETE). Both are CPU tracer
	  modules, tracing the instructions that a processor is executing. This is
	  primarily useful for instruction level tracing.

	  To compile this driver as a module, choose M here: the
	  module will be called coresight-etm4x.

config ETM4X_IMPDEF_FEATURE
	bool "Control implementation defined overflow support in ETM 4.x driver"
	depends on CORESIGHT_SOURCE_ETM4X
	help
	  This control provides implementation define control for CoreSight
	  ETM 4.x tracer module that can't reduce commit rate automatically.
	  This avoids overflow between the ETM tracer module and the cpu core.

config CORESIGHT_STM
	tristate "CoreSight System Trace Macrocell driver"
	depends on (ARM && !(CPU_32v3 || CPU_32v4 || CPU_32v4T)) || ARM64
	select CORESIGHT_LINKS_AND_SINKS
	select STM
	help
	  This driver provides support for hardware assisted software
	  instrumentation based tracing. This is primarily used for
	  logging useful software events or data coming from various entities
	  in the system, possibly running different OSs

	  To compile this driver as a module, choose M here: the
	  module will be called coresight-stm.

config CORESIGHT_CPU_DEBUG
	tristate "CoreSight CPU Debug driver"
	depends on ARM || ARM64
	depends on DEBUG_FS
	help
	  This driver provides support for coresight debugging module. This
	  is primarily used to dump sample-based profiling registers when
	  system triggers panic, the driver will parse context registers so
	  can quickly get to know program counter (PC), secure state,
	  exception level, etc. Before use debugging functionality, platform
	  needs to ensure the clock domain and power domain are enabled
	  properly, please refer Documentation/trace/coresight/coresight-cpu-debug.rst
	  for detailed description and the example for usage.

	  To compile this driver as a module, choose M here: the
	  module will be called coresight-cpu-debug.

config CORESIGHT_CPU_DEBUG_DEFAULT_ON
	bool "Enable CoreSight CPU Debug by default"
	depends on CORESIGHT_CPU_DEBUG
	help
	  Say Y here to enable the CoreSight Debug panic-debug by default. This
	  can also be enabled via debugfs, but this ensures the debug feature
	  is enabled as early as possible.

	  Has the same effect as setting coresight_cpu_debug.enable=1 on the
	  kernel command line.

	  Say N if unsure.

config CORESIGHT_CTI
	tristate "CoreSight Cross Trigger Interface (CTI) driver"
	depends on ARM || ARM64
	help
	  This driver provides support for CoreSight CTI and CTM components.
	  These provide hardware triggering events between CoreSight trace
	  source and sink components. These can be used to halt trace or
	  inject events into the trace stream. CTI also provides a software
	  control to trigger the same halt events. This can provide fast trace
	  halt compared to disabling sources and sinks normally in driver
	  software.

	  To compile this driver as a module, choose M here: the
	  module will be called coresight-cti.

config CORESIGHT_CTI_INTEGRATION_REGS
	bool "Access CTI CoreSight Integration Registers"
	depends on CORESIGHT_CTI
	help
	  This option adds support for the CoreSight integration registers on
	  this device. The integration registers allow the exploration of the
	  CTI trigger connections between this and other devices.These
	  registers are not used in normal operation and can leave devices in
	  an inconsistent state.

config CORESIGHT_TRBE
	tristate "Trace Buffer Extension (TRBE) driver"
	depends on ARM64 && CORESIGHT_SOURCE_ETM4X
	help
	  This driver provides support for percpu Trace Buffer Extension (TRBE).
	  TRBE always needs to be used along with it's corresponding percpu ETE
	  component. ETE generates trace data which is then captured with TRBE.
	  Unlike traditional sink devices, TRBE is a CPU feature accessible via
	  system registers. But it's explicit dependency with trace unit (ETE)
	  requires it to be plugged in as a coresight sink device.

	  To compile this driver as a module, choose M here: the module will be
	  called coresight-trbe.
endif
