# SPDX-License-Identifier: GPL-2.0-only
menuconfig COREBOOT_FIRMWARE
	bool "coreboot firmware drivers"
	default GOOGLE_FIRMWARE
	default n
	help
	  These firmware drivers are used by devices running coreboot
	  firmware, including Chromebooks and some Google servers.
	  They include shared support for coreboot table entries and
	  drivers for CBMEM, framebuffer, firmware console and VPD records.
	  If in doubt, say "N".

if COREBOOT_FIRMWARE

config GOOGLE_SMI
	tristate "SMI interface for Google platforms"
	depends on X86 && ACPI && DMI
	help
	  Say Y here if you want to enable SMI callbacks for Google
	  platforms.  This provides an interface for writing to and
	  clearing the event log.  If CONFIG_EFI is also enabled this
	  driver provides an interface for reading and writing NVRAM
	  variables.

config COREBOOT_CBMEM
	tristate "CBMEM entries in sysfs"
	depends on COREBOOT_TABLE
	default GOOGLE_CBMEM
	help
	  CBMEM is a downwards-growing memory region created by the
	  Coreboot BIOS containing tagged data structures from the
	  BIOS.  These data structures expose things like the verified
	  boot firmware variables, flash layout, firmware event log,
	  and more.

	  This option enables the cbmem module, which causes the
	  kernel to search for Coreboot CBMEM entries, and expose the
	  memory for each entry in sysfs under
	  /sys/bus/coreboot/devices/cbmem-<id>.

config COREBOOT_TABLE
	tristate "Coreboot Table Access"
	depends on HAS_IOMEM && (ACPI || OF)
	default GOOGLE_COREBOOT_TABLE
	help
	  This option enables the coreboot_table module, which provides other
	  firmware modules access to the coreboot table. The coreboot table
	  pointer is accessed through the ACPI "GOOGCB00" object or the
	  device tree node /firmware/coreboot.
	  If unsure say N.

config COREBOOT_MEMCONSOLE_COMMON
	tristate
	depends on GOOGLE_MEMCONSOLE_X86_LEGACY || COREBOOT_MEMCONSOLE
	default GOOGLE_MEMCONSOLE

config GOOGLE_MEMCONSOLE_X86_LEGACY
	tristate "Firmware Memory Console - X86 Legacy support"
	depends on X86 && ACPI && DMI
	select COREBOOT_MEMCONSOLE_COMMON
	help
	  This option enables the kernel to search for a firmware log in
	  the EBDA on Google servers.  If found, this log is exported to
	  userland in the file /sys/firmware/log.
	  This driver is limited to x86 systems that expose the legacy
	  Google EBDA console format.

config COREBOOT_FRAMEBUFFER
	tristate "Coreboot Framebuffer"
	depends on COREBOOT_TABLE
	default GOOGLE_FRAMEBUFFER_COREBOOT
	help
	  This option enables the kernel to search for a framebuffer in
	  the coreboot table.  If found, it is registered with a platform
	  device of type coreboot-framebuffer. Using the old device of
	  type simple-framebuffer is deprecated.

config COREBOOT_MEMCONSOLE
	tristate "Firmware Memory Console"
	depends on COREBOOT_TABLE
	select COREBOOT_MEMCONSOLE_COMMON
	default GOOGLE_MEMCONSOLE_COREBOOT
	help
	  This option enables the kernel to search for a firmware log in
	  the coreboot table.  If found, this log is exported to userland
	  in the file /sys/firmware/log.
	  This is the coreboot-table backed variant of the firmware memory
	  console driver.

config GOOGLE_VPD
	tristate "Vital Product Data"
	depends on COREBOOT_TABLE
	help
	  This option enables the kernel to expose the content of Google VPD
	  under /sys/firmware/vpd.
	  VPD records carry firmware-provided key/value data used by
	  Google devices.

endif # COREBOOT_FIRMWARE

config GOOGLE_FIRMWARE
	bool
	transitional

config GOOGLE_CBMEM
	tristate
	transitional

config GOOGLE_COREBOOT_TABLE
	tristate
	transitional

config GOOGLE_MEMCONSOLE
	tristate
	transitional

config GOOGLE_FRAMEBUFFER_COREBOOT
	tristate
	transitional

config GOOGLE_MEMCONSOLE_COREBOOT
	tristate
	transitional
