# 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 "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 CPxx.

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_CUSTOM_MADT
	bool
	default n if ACPI_NO_CUSTOM_MADT
	default y
	help
	  Selected by platforms that need to expose custom MADT entries.

config ACPI_NO_CUSTOM_MADT
	bool
	default y if ACPI_COMMON_MADT_LAPIC && ACPI_COMMON_MADT_IOAPIC

config ACPI_COMMON_MADT_LAPIC
	bool

config ACPI_COMMON_MADT_IOAPIC
	bool

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.
