mirror of https://github.com/acidanthera/audk.git
146 lines
4.4 KiB
C
146 lines
4.4 KiB
C
|
/** @file
|
||
|
|
||
|
Copyright (c) 2014, ARM Ltd. All rights reserved.<BR>
|
||
|
|
||
|
This program and the accompanying materials
|
||
|
are licensed and made available under the terms and conditions of the BSD License
|
||
|
which accompanies this distribution. The full text of the license may be found at
|
||
|
http://opensource.org/licenses/bsd-license.php
|
||
|
|
||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||
|
|
||
|
**/
|
||
|
|
||
|
#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 resrouces.
|
||
|
*/
|
||
|
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 byets.
|
||
|
@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
|