# SPDX-License-Identifier: GPL-2.0-only
menuconfig GOOGLE_FIRMWARE
	bool "Google Firmware Drivers"
	default n
	help
	  These firmware drivers are used by Google servers,
	  Chromebooks and other devices using coreboot firmware.
	  If in doubt, say "N".

if GOOGLE_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 EFI_VARS is also enabled this
	  driver provides an interface for reading and writing NVRAM
	  variables.

config GOOGLE_COREBOOT_TABLE
	tristate "Coreboot Table Access"
	depends on HAS_IOMEM && (ACPI || OF)
	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 GOOGLE_COREBOOT_TABLE_ACPI
	tristate
	select GOOGLE_COREBOOT_TABLE

config GOOGLE_COREBOOT_TABLE_OF
	tristate
	select GOOGLE_COREBOOT_TABLE

config GOOGLE_MEMCONSOLE
	tristate
	depends on GOOGLE_MEMCONSOLE_X86_LEGACY || GOOGLE_MEMCONSOLE_COREBOOT

config GOOGLE_MEMCONSOLE_X86_LEGACY
	tristate "Firmware Memory Console - X86 Legacy support"
	depends on X86 && ACPI && DMI
	select GOOGLE_MEMCONSOLE
	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.

config GOOGLE_FRAMEBUFFER_COREBOOT
	tristate "Coreboot Framebuffer"
	depends on FB_SIMPLE
	depends on GOOGLE_COREBOOT_TABLE
	help
	  This option enables the kernel to search for a framebuffer in
	  the coreboot table.  If found, it is registered with simplefb.

config GOOGLE_MEMCONSOLE_COREBOOT
	tristate "Firmware Memory Console"
	depends on GOOGLE_COREBOOT_TABLE
	select GOOGLE_MEMCONSOLE
	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.

config GOOGLE_VPD
	tristate "Vital Product Data"
	depends on GOOGLE_COREBOOT_TABLE
	help
	  This option enables the kernel to expose the content of Google VPD
	  under /sys/firmware/vpd.

endif # GOOGLE_FIRMWARE
