# SPDX-License-Identifier: GPL-2.0-only
#
# Intel Platform Monitoring Technology drivers
#

config INTEL_PMT_CLASS
	tristate
	help
	  The Intel Platform Monitoring Technology (PMT) class driver provides
	  the basic sysfs interface and file hierarchy used by PMT devices.

	  For more information, see:
	  <file:Documentation/ABI/testing/sysfs-class-intel_pmt>

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

config INTEL_PMT_TELEMETRY
	tristate "Intel Platform Monitoring Technology (PMT) Telemetry driver"
	depends on INTEL_VSEC
	select INTEL_PMT_CLASS
	help
	  The Intel Platform Monitory Technology (PMT) Telemetry driver provides
	  access to hardware telemetry metrics on devices that support the
	  feature.

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

config INTEL_PMT_CRASHLOG
	tristate "Intel Platform Monitoring Technology (PMT) Crashlog driver"
	depends on INTEL_VSEC
	select INTEL_PMT_CLASS
	help
	  The Intel Platform Monitoring Technology (PMT) crashlog driver provides
	  access to hardware crashlog capabilities on devices that support the
	  feature.

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