blob: 4fc18599cec26b2cea8d9746a745e8034ee0cf99 [file] [log] [blame]
/*
* Copyright (c) 2024 The Fuchsia Authors
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// EFI_ANDROID_BOOT_PROTOCOL is a UEFI protocol introduced by Google Generic
// Bootloader for verified booting and Fastboot over USB.
// See https://android.googlesource.com/platform/bootable/libbootloader/+/refs/heads/main/gbl/docs/EFI_ANDROID_BOOT_PROTOCOL.md
// for protocol spec.
#include <efi_api.h>
#define EFI_ANDROID_BOOT_PROTOCOL_REVISION 0x00000000
#define EFI_ANDROID_BOOT_PROTOCOL_GUID \
EFI_GUID(0x6281a893, 0xac23, 0x4ca7, 0xb2, 0x81, 0x34, 0x0e, 0xf8, \
0x16, 0x89, 0x55)
typedef struct efi_android_boot_protocol {
uint64_t revision;
efi_status_t (*fastboot_usb_interface_start)(
struct efi_android_boot_protocol *self,
size_t *max_packet_size);
efi_status_t (*fastboot_usb_interface_stop)(
struct efi_android_boot_protocol *self);
efi_status_t (*fastboot_usb_receive)(
struct efi_android_boot_protocol *self, size_t *buffer_size,
void *buffer);
efi_status_t (*fastboot_usb_send)(struct efi_android_boot_protocol *self,
size_t *buffer_size,
const void *buffer);
struct efi_event *wait_for_send_completion;
} efi_android_boot_protocol;