menuconfig GOOGLE_FIRMWARE
	bool "Google Firmware Drivers"
	default n
	help
	  These firmware drivers are used by Google's servers.  They are
	  only useful if you are working directly on one of their
	  proprietary servers.  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 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
