| /** @file | |
| GBL EFI Fastboot Protocol. | |
| Platform-specific helpers for Android Fastboot operations. | |
| Related docs: | |
| https://android.googlesource.com/platform/bootable/libbootloader/+/refs/heads/gbl-mainline/gbl/docs/gbl_efi_fastboot_protocol.md | |
| Copyright (c) 2025, The Android Open Source Project.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #pragma once | |
| #include <Uefi/UefiBaseType.h> | |
| // | |
| // {c67e48a0-5eb8-4127-be89-df2ed93d8a9a} | |
| // | |
| #define GBL_EFI_FASTBOOT_PROTOCOL_GUID \ | |
| { 0xc67e48a0, 0x5eb8, 0x4127, { 0xbe, 0x89, 0xdf, 0x2e, 0xd9, 0x3d, 0x8a, 0x9a } } | |
| #define GBL_EFI_FASTBOOT_PROTOCOL_REVISION 0x00010000 | |
| #define GBL_EFI_FASTBOOT_SERIAL_NUMBER_MAX_LEN_UTF8 32 | |
| #define GBL_EFI_FASTBOOT_PARTITION_TYPE_BUF_LEN 56 | |
| typedef struct _GBL_EFI_FASTBOOT_PROTOCOL GBL_EFI_FASTBOOT_PROTOCOL; | |
| typedef enum { | |
| GblEfiFastbootMessageTypeOkay, | |
| GblEfiFastbootMessageTypeFail, | |
| GblEfiFastbootMessageTypeInfo | |
| } GBL_EFI_FASTBOOT_MESSAGE_TYPE; | |
| typedef enum { | |
| GblEfiFastbootCommandExecResultProhibited, | |
| GblEfiFastbootCommandExecResultDefaultImpl, | |
| GblEfiFastbootCommandExecResultCustomImpl | |
| } GBL_EFI_FASTBOOT_COMMAND_EXEC_RESULT; | |
| typedef | |
| VOID | |
| (EFIAPI *GBL_EFI_FASTBOOT_GET_VAR_ALL_CALLBACK)( | |
| IN VOID *Context, | |
| IN UINTN NumArgs, | |
| IN CONST CHAR8 *CONST *Args, | |
| IN CONST CHAR8 *Value | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *GBL_EFI_FASTBOOT_MESSAGE_SENDER)( | |
| IN VOID *Context, | |
| IN UINT32 MsgType, // GBL_EFI_FASTBOOT_MESSAGE_TYPE | |
| IN UINTN MsgLen, | |
| IN CONST CHAR8 *Msg | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *GBL_EFI_FASTBOOT_GET_VAR)( | |
| IN GBL_EFI_FASTBOOT_PROTOCOL *This, | |
| IN UINTN NumArgs, | |
| IN CONST CHAR8 *CONST *Args, | |
| IN OUT UINTN *BufferSize, | |
| OUT CHAR8 *Buffer | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *GBL_EFI_FASTBOOT_GET_VAR_ALL)( | |
| IN GBL_EFI_FASTBOOT_PROTOCOL *This, | |
| IN VOID *Context, | |
| IN GBL_EFI_FASTBOOT_GET_VAR_ALL_CALLBACK Callback | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *GBL_EFI_FASTBOOT_GET_STAGED)( | |
| IN GBL_EFI_FASTBOOT_PROTOCOL *This, | |
| IN OUT UINTN *BufferSize, | |
| OUT UINTN *BufferRemains, | |
| OUT UINT8 *Buffer | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *GBL_EFI_FASTBOOT_COMMAND_EXEC)( | |
| IN GBL_EFI_FASTBOOT_PROTOCOL *This, | |
| IN UINTN NumArgs, | |
| IN CONST CHAR8 *CONST *Args, | |
| IN UINTN DownloadBufferSize, | |
| IN UINTN DownloadBufferUsedSize, | |
| IN UINT8 *DownloadBuffer, | |
| OUT UINT32 *Implementation, // GBL_EFI_FASTBOOT_COMMAND_EXEC_RESULT | |
| IN GBL_EFI_FASTBOOT_MESSAGE_SENDER Sender, | |
| IN VOID *Context | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *GBL_EFI_FASTBOOT_GET_PARTITION_TYPE)( | |
| IN GBL_EFI_FASTBOOT_PROTOCOL *This, | |
| IN CONST CHAR8 *PartName, | |
| IN OUT UINTN *PartTypeLen, | |
| OUT CHAR8 *PartType | |
| ); | |
| struct _GBL_EFI_FASTBOOT_PROTOCOL { | |
| UINT64 Revision; | |
| CHAR8 SerialNumber[GBL_EFI_FASTBOOT_SERIAL_NUMBER_MAX_LEN_UTF8]; | |
| GBL_EFI_FASTBOOT_GET_VAR GetVar; | |
| GBL_EFI_FASTBOOT_GET_VAR_ALL GetVarAll; | |
| GBL_EFI_FASTBOOT_GET_STAGED GetStaged; | |
| GBL_EFI_FASTBOOT_COMMAND_EXEC CommandExec; | |
| GBL_EFI_FASTBOOT_GET_PARTITION_TYPE GetPartitionType; | |
| }; | |
| extern EFI_GUID gGblEfiFastbootProtocolGuid; |