xref: /linux/drivers/firmware/coreboot/Kconfig (revision 44e33a5aaa2de3f5cf2701d6f4b0a7c63d4fe602)
1*44e33a5aSSean Rhodes# SPDX-License-Identifier: GPL-2.0-only
2*44e33a5aSSean Rhodesmenuconfig COREBOOT_FIRMWARE
3*44e33a5aSSean Rhodes	bool "coreboot firmware drivers"
4*44e33a5aSSean Rhodes	default GOOGLE_FIRMWARE
5*44e33a5aSSean Rhodes	default n
6*44e33a5aSSean Rhodes	help
7*44e33a5aSSean Rhodes	  These firmware drivers are used by devices running coreboot
8*44e33a5aSSean Rhodes	  firmware, including Chromebooks and some Google servers.
9*44e33a5aSSean Rhodes	  They include shared support for coreboot table entries and
10*44e33a5aSSean Rhodes	  drivers for CBMEM, framebuffer, firmware console and VPD records.
11*44e33a5aSSean Rhodes	  If in doubt, say "N".
12*44e33a5aSSean Rhodes
13*44e33a5aSSean Rhodesif COREBOOT_FIRMWARE
14*44e33a5aSSean Rhodes
15*44e33a5aSSean Rhodesconfig GOOGLE_SMI
16*44e33a5aSSean Rhodes	tristate "SMI interface for Google platforms"
17*44e33a5aSSean Rhodes	depends on X86 && ACPI && DMI
18*44e33a5aSSean Rhodes	help
19*44e33a5aSSean Rhodes	  Say Y here if you want to enable SMI callbacks for Google
20*44e33a5aSSean Rhodes	  platforms.  This provides an interface for writing to and
21*44e33a5aSSean Rhodes	  clearing the event log.  If CONFIG_EFI is also enabled this
22*44e33a5aSSean Rhodes	  driver provides an interface for reading and writing NVRAM
23*44e33a5aSSean Rhodes	  variables.
24*44e33a5aSSean Rhodes
25*44e33a5aSSean Rhodesconfig COREBOOT_CBMEM
26*44e33a5aSSean Rhodes	tristate "CBMEM entries in sysfs"
27*44e33a5aSSean Rhodes	depends on COREBOOT_TABLE
28*44e33a5aSSean Rhodes	default GOOGLE_CBMEM
29*44e33a5aSSean Rhodes	help
30*44e33a5aSSean Rhodes	  CBMEM is a downwards-growing memory region created by the
31*44e33a5aSSean Rhodes	  Coreboot BIOS containing tagged data structures from the
32*44e33a5aSSean Rhodes	  BIOS.  These data structures expose things like the verified
33*44e33a5aSSean Rhodes	  boot firmware variables, flash layout, firmware event log,
34*44e33a5aSSean Rhodes	  and more.
35*44e33a5aSSean Rhodes
36*44e33a5aSSean Rhodes	  This option enables the cbmem module, which causes the
37*44e33a5aSSean Rhodes	  kernel to search for Coreboot CBMEM entries, and expose the
38*44e33a5aSSean Rhodes	  memory for each entry in sysfs under
39*44e33a5aSSean Rhodes	  /sys/bus/coreboot/devices/cbmem-<id>.
40*44e33a5aSSean Rhodes
41*44e33a5aSSean Rhodesconfig COREBOOT_TABLE
42*44e33a5aSSean Rhodes	tristate "Coreboot Table Access"
43*44e33a5aSSean Rhodes	depends on HAS_IOMEM && (ACPI || OF)
44*44e33a5aSSean Rhodes	default GOOGLE_COREBOOT_TABLE
45*44e33a5aSSean Rhodes	help
46*44e33a5aSSean Rhodes	  This option enables the coreboot_table module, which provides other
47*44e33a5aSSean Rhodes	  firmware modules access to the coreboot table. The coreboot table
48*44e33a5aSSean Rhodes	  pointer is accessed through the ACPI "GOOGCB00" object or the
49*44e33a5aSSean Rhodes	  device tree node /firmware/coreboot.
50*44e33a5aSSean Rhodes	  If unsure say N.
51*44e33a5aSSean Rhodes
52*44e33a5aSSean Rhodesconfig COREBOOT_MEMCONSOLE_COMMON
53*44e33a5aSSean Rhodes	tristate
54*44e33a5aSSean Rhodes	depends on GOOGLE_MEMCONSOLE_X86_LEGACY || COREBOOT_MEMCONSOLE
55*44e33a5aSSean Rhodes	default GOOGLE_MEMCONSOLE
56*44e33a5aSSean Rhodes
57*44e33a5aSSean Rhodesconfig GOOGLE_MEMCONSOLE_X86_LEGACY
58*44e33a5aSSean Rhodes	tristate "Firmware Memory Console - X86 Legacy support"
59*44e33a5aSSean Rhodes	depends on X86 && ACPI && DMI
60*44e33a5aSSean Rhodes	select COREBOOT_MEMCONSOLE_COMMON
61*44e33a5aSSean Rhodes	help
62*44e33a5aSSean Rhodes	  This option enables the kernel to search for a firmware log in
63*44e33a5aSSean Rhodes	  the EBDA on Google servers.  If found, this log is exported to
64*44e33a5aSSean Rhodes	  userland in the file /sys/firmware/log.
65*44e33a5aSSean Rhodes	  This driver is limited to x86 systems that expose the legacy
66*44e33a5aSSean Rhodes	  Google EBDA console format.
67*44e33a5aSSean Rhodes
68*44e33a5aSSean Rhodesconfig COREBOOT_FRAMEBUFFER
69*44e33a5aSSean Rhodes	tristate "Coreboot Framebuffer"
70*44e33a5aSSean Rhodes	depends on COREBOOT_TABLE
71*44e33a5aSSean Rhodes	default GOOGLE_FRAMEBUFFER_COREBOOT
72*44e33a5aSSean Rhodes	help
73*44e33a5aSSean Rhodes	  This option enables the kernel to search for a framebuffer in
74*44e33a5aSSean Rhodes	  the coreboot table.  If found, it is registered with a platform
75*44e33a5aSSean Rhodes	  device of type coreboot-framebuffer. Using the old device of
76*44e33a5aSSean Rhodes	  type simple-framebuffer is deprecated.
77*44e33a5aSSean Rhodes
78*44e33a5aSSean Rhodesconfig COREBOOT_MEMCONSOLE
79*44e33a5aSSean Rhodes	tristate "Firmware Memory Console"
80*44e33a5aSSean Rhodes	depends on COREBOOT_TABLE
81*44e33a5aSSean Rhodes	select COREBOOT_MEMCONSOLE_COMMON
82*44e33a5aSSean Rhodes	default GOOGLE_MEMCONSOLE_COREBOOT
83*44e33a5aSSean Rhodes	help
84*44e33a5aSSean Rhodes	  This option enables the kernel to search for a firmware log in
85*44e33a5aSSean Rhodes	  the coreboot table.  If found, this log is exported to userland
86*44e33a5aSSean Rhodes	  in the file /sys/firmware/log.
87*44e33a5aSSean Rhodes	  This is the coreboot-table backed variant of the firmware memory
88*44e33a5aSSean Rhodes	  console driver.
89*44e33a5aSSean Rhodes
90*44e33a5aSSean Rhodesconfig GOOGLE_VPD
91*44e33a5aSSean Rhodes	tristate "Vital Product Data"
92*44e33a5aSSean Rhodes	depends on COREBOOT_TABLE
93*44e33a5aSSean Rhodes	help
94*44e33a5aSSean Rhodes	  This option enables the kernel to expose the content of Google VPD
95*44e33a5aSSean Rhodes	  under /sys/firmware/vpd.
96*44e33a5aSSean Rhodes	  VPD records carry firmware-provided key/value data used by
97*44e33a5aSSean Rhodes	  Google devices.
98*44e33a5aSSean Rhodes
99*44e33a5aSSean Rhodesendif # COREBOOT_FIRMWARE
100*44e33a5aSSean Rhodes
101*44e33a5aSSean Rhodesconfig GOOGLE_FIRMWARE
102*44e33a5aSSean Rhodes	bool
103*44e33a5aSSean Rhodes	transitional
104*44e33a5aSSean Rhodes
105*44e33a5aSSean Rhodesconfig GOOGLE_CBMEM
106*44e33a5aSSean Rhodes	tristate
107*44e33a5aSSean Rhodes	transitional
108*44e33a5aSSean Rhodes
109*44e33a5aSSean Rhodesconfig GOOGLE_COREBOOT_TABLE
110*44e33a5aSSean Rhodes	tristate
111*44e33a5aSSean Rhodes	transitional
112*44e33a5aSSean Rhodes
113*44e33a5aSSean Rhodesconfig GOOGLE_MEMCONSOLE
114*44e33a5aSSean Rhodes	tristate
115*44e33a5aSSean Rhodes	transitional
116*44e33a5aSSean Rhodes
117*44e33a5aSSean Rhodesconfig GOOGLE_FRAMEBUFFER_COREBOOT
118*44e33a5aSSean Rhodes	tristate
119*44e33a5aSSean Rhodes	transitional
120*44e33a5aSSean Rhodes
121*44e33a5aSSean Rhodesconfig GOOGLE_MEMCONSOLE_COREBOOT
122*44e33a5aSSean Rhodes	tristate
123*44e33a5aSSean Rhodes	transitional
124