efi_loader: imply FAT, FAT_WRITE
[platform/kernel/u-boot.git] / lib / efi_loader / Kconfig
1 config EFI_LOADER
2         bool "Support running UEFI applications"
3         depends on OF_LIBFDT && ( \
4                 ARM && (SYS_CPU = arm1136 || \
5                         SYS_CPU = arm1176 || \
6                         SYS_CPU = armv7   || \
7                         SYS_CPU = armv8)  || \
8                 X86 || RISCV || SANDBOX)
9         # We need EFI_STUB_64BIT to be set on x86_64 with EFI_STUB
10         depends on !EFI_STUB || !X86_64 || EFI_STUB_64BIT
11         # We need EFI_STUB_32BIT to be set on x86_32 with EFI_STUB
12         depends on !EFI_STUB || !X86 || X86_64 || EFI_STUB_32BIT
13         default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
14         select LIB_UUID
15         select HAVE_BLOCK_DEVICE
16         select REGEX
17         imply CFB_CONSOLE_ANSI
18         imply FAT
19         imply FAT_WRITE
20         imply USB_KEYBOARD_FN_KEYS
21         imply VIDEO_ANSI
22         help
23           Select this option if you want to run UEFI applications (like GNU
24           GRUB or iPXE) on top of U-Boot. If this option is enabled, U-Boot
25           will expose the UEFI API to a loaded application, enabling it to
26           reuse U-Boot's device drivers.
27
28 if EFI_LOADER
29
30 config EFI_GET_TIME
31         bool "GetTime() runtime service"
32         depends on DM_RTC
33         default y
34         help
35           Provide the GetTime() runtime service at boottime. This service
36           can be used by an EFI application to read the real time clock.
37
38 config EFI_SET_TIME
39         bool "SetTime() runtime service"
40         depends on EFI_GET_TIME
41         default n
42         help
43           Provide the SetTime() runtime service at boottime. This service
44           can be used by an EFI application to adjust the real time clock.
45
46 config EFI_DEVICE_PATH_TO_TEXT
47         bool "Device path to text protocol"
48         default y
49         help
50           The device path to text protocol converts device nodes and paths to
51           human readable strings.
52
53 config EFI_LOADER_HII
54         bool "HII protocols"
55         default y
56         help
57           The Human Interface Infrastructure is a complicated framework that
58           allows UEFI applications to draw fancy menus and hook strings using
59           a translation framework.
60
61           U-Boot implements enough of its features to be able to run the UEFI
62           Shell, but not more than that.
63
64 config EFI_UNICODE_COLLATION_PROTOCOL2
65         bool "Unicode collation protocol"
66         default y
67         help
68           The Unicode collation protocol is used for lexical comparisons. It is
69           required to run the UEFI shell.
70
71 if EFI_UNICODE_COLLATION_PROTOCOL2
72
73 config EFI_UNICODE_CAPITALIZATION
74         bool "Support Unicode capitalization"
75         default y
76         help
77           Select this option to enable correct handling of the capitalization of
78           Unicode codepoints in the range 0x0000-0xffff. If this option is not
79           set, only the the correct handling of the letters of the codepage
80           used by the FAT file system is ensured.
81
82 config EFI_UNICODE_COLLATION_PROTOCOL
83         bool "Deprecated version of the Unicode collation protocol"
84         default n
85         help
86           In EFI 1.10 a version of the Unicode collation protocol using ISO
87           639-2 language codes existed. This protocol is not part of the UEFI
88           specification any longer. Unfortunately it is required to run the
89           UEFI Self Certification Test (SCT) II, version 2.6, 2017.
90
91           Choose this option for testing only. It is bound to be removed.
92
93 endif
94
95 config EFI_LOADER_BOUNCE_BUFFER
96         bool "EFI Applications use bounce buffers for DMA operations"
97         depends on ARM64
98         default n
99         help
100           Some hardware does not support DMA to full 64bit addresses. For this
101           hardware we can create a bounce buffer so that payloads don't have to
102           worry about platform details.
103
104 config EFI_PLATFORM_LANG_CODES
105         string "Language codes supported by firmware"
106         default "en-US"
107         help
108           This value is used to initialize the PlatformLangCodes variable. Its
109           value is a semicolon (;) separated list of language codes in native
110           RFC 4646 format, e.g. "en-US;de-DE". The first language code is used
111           to initialize the PlatformLang variable.
112
113 config EFI_HAVE_RUNTIME_RESET
114         # bool "Reset runtime service is available"
115         bool
116         default y
117         depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET || SYSRESET_X86
118
119 config EFI_GRUB_ARM32_WORKAROUND
120         bool "Workaround for GRUB on 32bit ARM"
121         default y
122         depends on ARM && !ARM64
123         help
124           GRUB prior to version 2.04 requires U-Boot to disable caches. This
125           workaround currently is also needed on systems with caches that
126           cannot be managed via CP15.
127
128 config EFI_RNG_PROTOCOL
129         bool "EFI_RNG_PROTOCOL support"
130         depends on DM_RNG
131         default y
132         help
133           Provide a EFI_RNG_PROTOCOL implementation using the hardware random
134           number generator of the platform.
135
136 config EFI_LOAD_FILE2_INITRD
137         bool "EFI_FILE_LOAD2_PROTOCOL for Linux initial ramdisk"
138         default n
139         help
140           Expose a EFI_FILE_LOAD2_PROTOCOL that the Linux UEFI stub can
141           use to load the initial ramdisk. Once this is enabled using
142           initrd=<ramdisk> will stop working.
143
144 config EFI_INITRD_FILESPEC
145         string "initramfs path"
146         default "host 0:1 initrd"
147         depends on EFI_LOAD_FILE2_INITRD
148         help
149           Full path of the initramfs file, e.g. mmc 0:2 initramfs.cpio.gz.
150
151 config EFI_SECURE_BOOT
152         bool "Enable EFI secure boot support"
153         depends on EFI_LOADER
154         select SHA256
155         select RSA
156         select RSA_VERIFY_WITH_PKEY
157         select IMAGE_SIGN_INFO
158         select ASYMMETRIC_KEY_TYPE
159         select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
160         select X509_CERTIFICATE_PARSER
161         select PKCS7_MESSAGE_PARSER
162         default n
163         help
164           Select this option to enable EFI secure boot support.
165           Once SecureBoot mode is enforced, any EFI binary can run only if
166           it is signed with a trusted key. To do that, you need to install,
167           at least, PK, KEK and db.
168
169 config EFI_MM_COMM_TEE
170         bool "UEFI variables storage service via OP-TEE"
171         depends on OPTEE
172         default n
173         help
174           If OP-TEE is present and running StandAloneMM, dispatch all UEFI variable
175           related operations to that. The application will verify, authenticate and
176           store the variables on an RPMB.
177
178 endif