1The EFI application of GBL requires certain EFI protocols in order to boot,
2and can require other protocols for certain targets or to enable optional features.
3
4### Required Protocols
5
6#### BlockIoProtocol
7
8The BlockIo protocol is required for loading system images from disk.
9If a target supports Fastboot mode, it is also used for writing images to disk.
10
11#### SimpleTextOutputProtocol
12
13The SimpleTextOutput protocol is used for logging
14and the text-based interface of Fastboot.
15On systems where there is no output functionality,
16this can be implemented as a series of no-op functions.
17
18### Conditionally Required Protocols
19
20#### RiscvBootProtocol
21
22Determines the boot hart ID which is then passed to the kernel.
23Only required for RISC-V targets.
24
25### Optional Protocols
26
27#### AndroidBootProtocol
28
29This is a custom protocol intended to provide
30specific functionality needed to boot Android.
31A full description is available [here](./EFI_ANDROID_BOOT_PROTOCOL.md).
32
33#### DevicePathProtocol
34
35The DevicePath protocol is a variable length binary structure
36made of variable length Device Path nodes.
37A handle representing a hardware resource is mapped
38to the protocol and provides specific data about that resource.
39
40If all three of DevicePath protocol, DevicePathToText protocol,
41and LoadedImage protocol are present, the GBL image path is logged
42to the console on load.
43
44This is a useful proof of concept for development to demonstrate
45that GBL is running and can interact with the UEFI environment.
46
47#### DevicePathToTextProtocol
48
49The DevicePathToText protocol converts device paths and nodes to text.
50
51#### LoadedImageProtocol
52
53The LoadedImage protocol can be used on the handle of an image to provide
54information about the image, including its device handle and device path.
55
56#### SimpleNetworkProtocol
57
58If present, the SimpleNetwork protocol is used to provide Fastboot over TCP.
59No other EFI protocols are required: GBL wraps SimpleNetwork to provide TCP.
60
61Note: for security reasons, Fastboot over TCP is only available in dev builds.
62
63#### SimpleTextInputProtocol
64
65TODO: remove this protocol
66