xref: /aosp_15_r20/external/coreboot/payloads/Kconfig (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1## SPDX-License-Identifier: GPL-2.0-only
2
3menu "Payload"
4
5config PAYLOAD_NONE
6	bool "Don't add a payload"
7	default y if !ARCH_X86
8	help
9	  Select this option if you want to create an "empty" coreboot
10	  ROM image for a certain mainboard, i.e. a coreboot ROM image
11	  which does not yet contain a payload.
12
13	  For such an image to be useful, you have to use 'cbfstool'
14	  to add a payload to the ROM image later.
15
16if !PAYLOAD_NONE
17choice
18	prompt "Payload to add"
19	default PAYLOAD_SEABIOS if ARCH_X86
20
21config PAYLOAD_ELF
22	bool "An ELF executable payload"
23	help
24	  Select this option if you have a payload image (an ELF file)
25	  which coreboot should run as soon as the basic hardware
26	  initialization is completed.
27
28	  You will be able to specify the location and file name of the
29	  payload image later.
30
31config PAYLOAD_FIT
32	bool "A FIT payload"
33	depends on ARCH_ARM64 || ARCH_RISCV || ARCH_ARM
34	select PAYLOAD_FIT_SUPPORT
35	help
36	  Select this option if you have a payload image (a FIT file) which
37	  coreboot should run as soon as the basic hardware initialization
38	  is completed.
39
40	  You will be able to specify the location and file name of the
41	  payload image later.
42
43config PAYLOAD_FLAT_BINARY
44	bool "A flat binary"
45	select PAYLOAD_IS_FLAT_BINARY
46	help
47	  Select this option if you have a flat binary without any
48	  executable format surrounding it which coreboot should run
49	  as soon as the basic hardware initialization is completed.
50
51	  You will be able to specify the location and file name of the
52	  payload image later.
53
54source "payloads/external/*/Kconfig.name"
55
56endchoice
57
58source "payloads/external/*/Kconfig"
59
60config PAYLOAD_FILE
61	string "Payload path and filename"
62	depends on PAYLOAD_ELF || PAYLOAD_FIT || PAYLOAD_FLAT_BINARY
63	default "payload.elf" if PAYLOAD_ELF
64	default "uImage" if PAYLOAD_FIT
65	help
66	  The path and filename of the ELF executable file to use as payload.
67
68choice
69	prompt "Payload compression algorithm"
70	default COMPRESSED_PAYLOAD_LZMA
71	default COMPRESSED_PAYLOAD_NONE if PAYLOAD_LINUX || PAYLOAD_LINUXBOOT || PAYLOAD_FIT
72	depends on !PAYLOAD_LINUX && !PAYLOAD_LINUXBOOT && !PAYLOAD_FIT
73	help
74	  Choose the compression algorithm for the chosen payloads.
75	  You can choose between None, LZMA, or LZ4.
76
77config COMPRESSED_PAYLOAD_NONE
78	bool "Use no compression for payloads"
79	help
80	  Do not compress the payload.
81
82config COMPRESSED_PAYLOAD_LZMA
83	bool "Use LZMA compression for payloads"
84	help
85	  In order to reduce the size payloads take up in the ROM chip
86	  coreboot can compress them using the LZMA algorithm.
87
88config COMPRESSED_PAYLOAD_LZ4
89	bool "Use LZ4 compression for payloads"
90	help
91	  In order to reduce the size payloads take up in the ROM chip
92	  coreboot can compress them using the LZ4 algorithm.
93endchoice
94
95config PAYLOAD_OPTIONS
96	string "Additional cbfstool options" if PAYLOAD_FLAT_BINARY
97	default ""
98	depends on PAYLOAD_IS_FLAT_BINARY
99	help
100	  Additional cbfstool options for the payload
101
102config PAYLOAD_IS_FLAT_BINARY
103	bool
104	default n
105
106config PAYLOAD_FIT_SUPPORT
107	bool "FIT support"
108	default n
109	default y if PAYLOAD_LINUX && (ARCH_ARM || ARCH_ARM64 || ARCH_RISCV)
110	depends on ARCH_ARM64 || ARCH_RISCV || ARCH_ARM
111	select FLATTENED_DEVICE_TREE
112	help
113	  Select this option if your payload is of type FIT.
114	  Enables FIT parser and devicetree patching. The FIT is non
115	  self-extracting and needs to have a compatible compression format.
116
117config COMPRESS_SECONDARY_PAYLOAD
118	bool "Use LZMA compression for secondary payloads"
119	default y
120	help
121	  In order to reduce the size secondary payloads take up in the
122	  ROM chip they can be compressed using the LZMA algorithm.
123
124menu "Secondary Payloads"
125
126config COREINFO_SECONDARY_PAYLOAD
127	bool "Load coreinfo as a secondary payload"
128	default n
129	depends on ARCH_X86
130	help
131	  coreinfo can be loaded as a secondary payload under SeaBIOS, GRUB,
132	  or any other payload that can load additional payloads.
133
134config GRUB2_SECONDARY_PAYLOAD
135	bool "Load GRUB2 as a secondary payload"
136	default n
137	depends on !PAYLOAD_GRUB2
138	select PAYLOAD_BUILD_GRUB2
139	help
140	  GRUB2 can be loaded as a secondary payload under SeaBIOS or any
141	  other payload that can load additional payloads.
142
143config MEMTEST_SECONDARY_PAYLOAD
144	bool "Load Memtest86+ as a secondary payload"
145	default n
146	depends on ARCH_X86
147	help
148	  Memtest86+ can be loaded as a secondary payload under SeaBIOS, GRUB,
149	  or any other payload that can load additional payloads.
150
151config NVRAMCUI_SECONDARY_PAYLOAD
152	bool "Load nvramcui as a secondary payload"
153	default n
154	depends on ARCH_X86 && HAVE_OPTION_TABLE
155	help
156	  nvramcui can be loaded as a secondary payload under SeaBIOS, GRUB,
157	  or any other payload that can load additional payloads.
158
159config SEABIOS_SECONDARY_PAYLOAD
160	bool "Load SeaBIOS as a secondary payload"
161	default n
162	depends on ARCH_X86
163	depends on !PAYLOAD_SEABIOS
164	depends on !PAYLOAD_SEAGRUB
165	select PAYLOAD_BUILD_SEABIOS
166	help
167	  SeaBIOS can be loaded as a secondary payload under GRUB or any
168	  other payload that can load additional payloads.
169
170config TINT_SECONDARY_PAYLOAD
171	bool "Load tint as a secondary payload"
172	default n
173	depends on ARCH_X86
174	help
175	  tint can be loaded as a secondary payload under SeaBIOS, GRUB,
176	  or any other payload that can load additional payloads.
177
178config COREDOOM_SECONDARY_PAYLOAD
179	bool "Load coreDOOM as a secondary payload"
180	default n
181	depends on ARCH_X86
182	help
183	  coreDOOM can be loaded as a secondary payload under SeaBIOS, GRUB,
184	  or any other payload that can load additional payloads. Requires a
185	  linear framebuffer. If built as a secondary payload for SeaBIOS, the
186	  generated VGA BIOS option rom is also required.
187
188source "payloads/external/*/Kconfig.secondary"
189
190endmenu # "Secondary Payloads"
191
192endif # !PAYLOAD_NONE
193
194endmenu
195