# SPDX-License-Identifier: GPL-2.0-only

config ACPI_AMD_HARDWARE_SLEEP_VALUES
	def_bool n
	help
	  Provide common definitions for AMD hardware PM1_CNT register sleep
	  values.

config ACPI_CPU_STRING
	string
	default "\\_SB.CP%02X"
	depends on HAVE_ACPI_TABLES
	help
	  Specifies the ACPI name format string used by the acpigen
	  function to generate the processor scope. Default is \_SB.CPxx.
	  Note that you need to escape the '\' character in the string.
	  The resulting string will be truncated to at most 15 chars.

config ACPI_HAVE_PCAT_8259
	def_bool y if !ACPI_NO_PCAT_8259

config ACPI_INTEL_HARDWARE_SLEEP_VALUES
	def_bool n
	help
	  Provide common definitions for Intel hardware PM1_CNT register sleep
	  values.

config ACPI_SOC_NVS
	bool
	help
	  Set to indicate <soc/nvs.h> exists for the platform with a definition
	  for global_nvs.

config ACPI_NO_MADT
	bool
	help
	  Selected by platforms that don't expose a useful MADT.

config ACPI_NO_PCAT_8259
	bool
	help
	  Selected by platforms that don't expose a PC/AT 8259 PIC pair.

config ACPI_EINJ
	def_bool n
	depends on HAVE_ACPI_TABLES
	help
	  This variable provides control for ACPI error injection table (EINJ)

config HAVE_ACPI_TABLES
	bool
	help
	  This variable specifies whether a given board has ACPI table support.
	  It is usually set in mainboard/*/Kconfig.

config ACPI_LPIT
	bool
	depends on HAVE_ACPI_TABLES
	help
	  Selected by platforms that support and fill Intel Low Power Idle Table.
