123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- /** @file
- Copyright (c) 2014, ARM Ltd. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef __ANDROID_FASTBOOT_PLATFORM_H__
- #define __ANDROID_FASTBOOT_PLATFORM_H__
- extern EFI_GUID gAndroidFastbootPlatformProtocolGuid;
- /*
- Protocol for platform-specific operations initiated by Android Fastboot.
- Based on Fastboot Protocol version 0.4. See
- system/core/fastboot/fastboot_protocol.txt in the AOSP source tree for more
- info.
- Doesn't support image verification.
- */
- /*
- Do any initialisation that needs to be done in order to be able to respond to
- commands.
- @retval EFI_SUCCESS Initialised successfully.
- @retval !EFI_SUCCESS Error in initialisation.
- */
- typedef
- EFI_STATUS
- (*FASTBOOT_PLATFORM_INIT) (
- VOID
- );
- /*
- To be called when Fastboot is finished and we aren't rebooting or booting an
- image. Undo initialisation, free resources.
- */
- typedef
- VOID
- (*FASTBOOT_PLATFORM_UN_INIT) (
- VOID
- );
- /*
- Flash the partition named (according to a platform-specific scheme)
- PartitionName, with the image pointed to by Buffer, whose size is BufferSize.
- @param[in] PartitionName Null-terminated name of partition to write.
- @param[in] BufferSize Size of Buffer in bytes.
- @param[in] Buffer Data to write to partition.
- @retval EFI_NOT_FOUND No such partition.
- @retval EFI_DEVICE_ERROR Flashing failed.
- */
- typedef
- EFI_STATUS
- (*FASTBOOT_PLATFORM_FLASH) (
- IN CHAR8 *PartitionName,
- IN UINTN BufferSize,
- IN VOID *Buffer
- );
- /*
- Erase the partition named PartitionName.
- @param[in] PartitionName Null-terminated name of partition to erase.
- @retval EFI_NOT_FOUND No such partition.
- @retval EFI_DEVICE_ERROR Erasing failed.
- */
- typedef
- EFI_STATUS
- (*FASTBOOT_PLATFORM_ERASE) (
- IN CHAR8 *PartitionName
- );
- /*
- If the variable referred to by Name exists, copy it (as a null-terminated
- string) into Value. If it doesn't exist, put the Empty string in Value.
- Variable names and values may not be larger than 60 bytes, excluding the
- terminal null character. This is a limitation of the Fastboot protocol.
- The Fastboot application will handle platform-nonspecific variables
- (Currently "version" is the only one of these.)
- @param[in] Name Null-terminated name of Fastboot variable to retrieve.
- @param[out] Value Caller-allocated buffer for null-terminated value of
- variable.
- @retval EFI_SUCCESS The variable was retrieved, or it doesn't exist.
- @retval EFI_DEVICE_ERROR There was an error looking up the variable. This
- does _not_ include the variable not existing.
- */
- typedef
- EFI_STATUS
- (*FASTBOOT_PLATFORM_GETVAR) (
- IN CHAR8 *Name,
- OUT CHAR8 *Value
- );
- /*
- React to an OEM-specific command.
- Future versions of this function might want to allow the platform to do some
- extra communication with the host. A way to do this would be to add a function
- to the FASTBOOT_TRANSPORT_PROTOCOL that allows the implementation of
- DoOemCommand to replace the ReceiveEvent with its own, and to restore the old
- one when it's finished.
- However at the moment although the specification allows it, the AOSP fastboot
- host application doesn't handle receiving any data from the client, and it
- doesn't support a data phase for OEM commands.
- @param[in] Command Null-terminated command string.
- @retval EFI_SUCCESS The command executed successfully.
- @retval EFI_NOT_FOUND The command wasn't recognised.
- @retval EFI_DEVICE_ERROR There was an error executing the command.
- */
- typedef
- EFI_STATUS
- (*FASTBOOT_PLATFORM_OEM_COMMAND) (
- IN CHAR8 *Command
- );
- typedef struct _FASTBOOT_PLATFORM_PROTOCOL {
- FASTBOOT_PLATFORM_INIT Init;
- FASTBOOT_PLATFORM_UN_INIT UnInit;
- FASTBOOT_PLATFORM_FLASH FlashPartition;
- FASTBOOT_PLATFORM_ERASE ErasePartition;
- FASTBOOT_PLATFORM_GETVAR GetVar;
- FASTBOOT_PLATFORM_OEM_COMMAND DoOemCommand;
- } FASTBOOT_PLATFORM_PROTOCOL;
- #endif
|