# 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
	  Sets the ACPI name string in the processor scope as written by
	  the acpigen function. Default is \_SB.CPxx. Note that you need
	  the \ escape character in the string.

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.
