summaryrefslogtreecommitdiff
path: root/payloads/external/tianocore/Kconfig
blob: 1a721427449466ee93bde3ee51baf5004abc157b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
if PAYLOAD_TIANOCORE

config PAYLOAD_FILE
	string "Tianocore binary"
	default "$(obj)/UEFIPAYLOAD.fd"
	help
	  The result of a UefiPayloadPkg build

choice
	prompt "Tianocore payload"
	default TIANOCORE_UEFIPAYLOAD
	help
	  Select which type of payload Tianocore will build (default is UefiPayload)
	  UefiPayload: MrChromebox's customized fork of Tianocore which works on most
	  x86_64 devices
	  Upstream: Use upstream Tianocore payload from https://github.com/tianocore/edk2
	  CorebootPayload: MrChromebox's customized fork of the deprecated CorebootPayloadPkg
	  Tianocore build target. It may work better on some older hardware (eg, x230)
	  which does not work properly with the UefiPayloadPkg options.

config TIANOCORE_UEFIPAYLOAD
	bool "UEFIPayload"
	help
	  Select this option to build using MrChromebox's custom Tianocore fork,
	  which incorporates fixes/improvements from System 76's and 9elements' trees.

config TIANOCORE_UPSTREAM
	bool "Upstream"
	help
	  Select this option if you want to use upstream EDK2 to build Tianocore.

config TIANOCORE_COREBOOTPAYLOAD
	bool "CorebootPayload"
	help
	  Select this option to build using MrChromebox's older (now deprecated)
	  CorebootPayloadPkg-based Tianocore branch

config TIANOCORE_CUSTOM
	bool "Custom"
	help
	  Specify your own edk2 repository and branch to use.

endchoice

config TIANOCORE_REPOSITORY
	string "URL to git repository for edk2"
	default "https://github.com/tianocore/edk2" if TIANOCORE_UPSTREAM
	default "https://github.com/mrchromebox/edk2" if TIANOCORE_UEFIPAYLOAD || TIANOCORE_COREBOOTPAYLOAD
	help
	  coreboot supports an array of build options which can be found below. These options
	  will only have an effect if the relevant options exist in the target repository.

config TIANOCORE_TAG_OR_REV
	string "Insert a commit's SHA-1 or a branch name"
	default "origin/uefipayload_202207" if TIANOCORE_UEFIPAYLOAD
	default "origin/master" if TIANOCORE_UPSTREAM
	default "origin/coreboot_fb" if TIANOCORE_COREBOOTPAYLOAD
	help
	  The commit's SHA-1 or branch name of the revision to use. This must exist in
	  TIANOCORE_REPOSITORY, and in the case of a branch name, prefixed with origin i.e.
	  "origin/uefipayload_202202"

choice
	prompt "Tianocore build"
	default TIANOCORE_RELEASE
	help
	  Select whether to generate a debug or release build for
	  Tianocore; default is to generate a release build.

config TIANOCORE_DEBUG
	bool "Generate Tianocore debug build"
	help
	  Generate a debug build.

config TIANOCORE_RELEASE
	bool "Generate Tianocore release build"
	help
	  Generate a release build.

endchoice

if TIANOCORE_UEFIPAYLOAD || TIANOCORE_CUSTOM || TIANOCORE_UPSTREAM

config TIANOCORE_ABOVE_4G_MEMORY
	bool "Enable above 4G memory"
	default n
	help
	  Select this option to enable Above 4G Decode. This will allow the
	  payload to use all of the memory, rather than an maximum of 4G.

	  Disabling memory above 4G is useful for bootloaders that are not
	  fully 64-bit aware such as Qubes R4.0.4 bootloader.


config TIANOCORE_BOOTSPLASH_FILE
	string "Tianocore Bootsplash path and filename"
	default "Documentation/coreboot_logo.bmp"
	help
	  The path and filename of the file to use as graphical bootsplash
	  image. If this option is not configured, the default
	  coreboot logo (European Brown Hare) will used.

	  You can use any image format supported by imagemagick, a list of which
	  can be found [here](https://imagemagick.org/script/formats.php).

	  The build process will automatically convert this to the format that
	  EDK2 requires, which is an uncompressed BMP, in BMP3 format. It does
	  this using imagemagick (`convert splosh.bmp BMP3:splash.bmp`).

	  The newly formatted file will be the dimensions size as the original
	  one.

	  The build process will automatically do this conversion, so it can
	  be supplied with any format that imagemagick can process (which is
	  pretty much any!).

	  This image will also be used as the BGRT boot image, which may
	  persist through your OS boot process.

	  See ACPI spec 6.3, 5.2.22 Boot Graphics Resource Table (BGRT), and
	  Microsoft's documentation on BGRT positioning:
	  Docs/Windows/Windows Drivers/Bring up guide/Boot screen components

	  Accordingly, the image used should be no taller/wider than 40% of
	  the display panel's native pixel height/width (or resolution set).

	  If an absolute path is not given, the path will assumed to be
	  relative to the coreboot root directory.

config TIANOCORE_BOOT_MANAGER_ESCAPE
	bool "Use Escape key for Boot Manager"
	default n
	help
	  Use Escape as the hot-key to access the Boot Manager. This replaces
	  the default key of F2.

config TIANOCORE_BOOT_TIMEOUT
	int "Set the timeout for boot menu prompt"
	default 2
	help
	  The length of time in seconds for which the boot splash/menu prompt will be displayed.
	  For boards with an internal display, the default value of 2s is generally sufficient.
	  For boards with an external display, a value of 5s is generally sufficient.

config TIANOCORE_CBMEM_LOGGING
	bool "Enable Tianocore logging to CBMEM"
	help
	  Select this option if you want to enable Tianocore logging to CBMEM.
	  You may want to increase the default cbmem buffer size when selecting
	  this option, especially if using a debug (vs release) build.
	  Selecting this option will increase the payload size in CBFS by 0x10000.

config TIANOCORE_FOLLOW_BGRT_SPEC
	bool "Center logo 38.2% from the top of screen"
	default n
	help
	  Follow the BGRT Specification implemented by Microsoft and
	  the Boot Logo 38.2% will be vertically centered 38.2% from
	  the top of the display.

config TIANOCORE_FULL_SCREEN_SETUP
	bool "Use the full screen for the edk2 frontpage"
	default y
	help
	  Allow edk2 to use the full screen to display the frontpage
	  (aka "Boot Menu"). With this option disable, it will be
	  limited to 640x480.

config TIANOCORE_HAVE_EFI_SHELL
	bool "Include EFI Shell"
	default y
	help
	  Include the EFI shell Binary

config TIANOCORE_PRIORITIZE_INTERNAL
	bool "Prioritize internal boot devices"
	default y
	help
	  Prioritize internal boot devices over external devices

config TIANOCORE_PS2_SUPPORT
	bool "Support PS/2 Keyboards"
	default y
	help
	  Include support for PS/2 keyboards

config TIANOCORE_SD_MMC_TIMEOUT
	int "Timeout in ms for initializing SD and eMMC devices"
	default 10
	help
	  The amount of time allowed to initialize the SD Card reader and/or eMMC drive.
	  Most only require 10ms, but certain readers can take 1s.

config TIANOCORE_SERIAL_SUPPORT
	bool "Support serial output"
	default y if TIANOCORE_DEBUG
	default n
	help
	  Enable serial port output in edk2. Serial output limits the performance of edk2's
	  FrontPage.

endif

if TIANOCORE_COREBOOTPAYLOAD

config TIANOCORE_USE_8254_TIMER
	bool "TianoCore 8254 Timer"
	help
	  Use 8254 Timer for legacy support.

endif

config TIANOCORE_CUSTOM_BUILD_PARAMS
	string "TianoCore additional custom build parameters"
	default "-D VARIABLE_SUPPORT=SMMSTORE" if TIANOCORE_UEFIPAYLOAD && SMMSTORE_V2
	help
	  edk2 has build options that are not modified by coreboot, and these can be
	  found in `UefiPayloadPkg/UefiPayloadPkg.dsc`. Forks may also support
	  additional build options that should have been upstreamed but have not.

	  This option can support both macros `-D` and Pcds `--pcd`.

endif