# SPDX-License-Identifier: GPL-2.0-only
#
# AMD PMC Driver
#

config AMD_PMC
	tristate "AMD SoC PMC driver"
	depends on ACPI && PCI && RTC_CLASS && AMD_NB
	depends on SUSPEND
	select SERIO
	help
	  The driver provides support for AMD Power Management Controller
	  primarily responsible for S2Idle transactions that are driven from
	  a platform firmware running on SMU. This driver also provides a debug
	  mechanism to investigate the S2Idle transactions and failures.

	  Say Y or M here if you have a notebook powered by AMD RYZEN CPU/APU.

	  If you choose to compile this driver as a module the module will be
	  called amd-pmc.

config AMD_MP2_STB
	bool "AMD SoC MP2 STB function"
	depends on AMD_PMC
	default AMD_PMC
	help
	  AMD MP2 STB function provides a data buffer used to log debug
	  information about the system execution during S2Idle suspend/resume.
	  A data buffer known as the STB (Smart Trace Buffer) is a circular
	  buffer which is a low-level log for the SoC which is used to debug
	  any hangs/stalls during S2Idle suspend/resume.

	  Creates debugfs to get STB, a userspace daemon can access STB log of
	  last S2Idle suspend/resume which can help to debug if hangs/stalls
	  during S2Idle suspend/resume.
