On Fri, Oct 28, 2016 at 04:13:17PM +0100, Ard Biesheuvel wrote: > This module contains an implementation of the Android Fastboot Platform > protocol. So follow common Tianocore practice, and duplicate the per-method > comment blocks from the interface definition into the implementation. > > In addition, let's make all methods and the procotol struct STATIC, given > that they are never referenced via external linkage. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]> > --- > ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c | > 79 ++++++++++++++++++-- > 1 file changed, 74 insertions(+), 5 deletions(-) > > diff --git > a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c > b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c > index 64b25f8a8c45..a01bf3c671ad 100644 > --- > a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c > +++ > b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c > @@ -1,6 +1,7 @@ > /** @file > > Copyright (c) 2014, ARM Ltd. All rights reserved.<BR> > + Copyright (c) 2016, Linaro 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 > @@ -135,11 +136,13 @@ ReadPartitionEntries ( > > > /* > - Initialise: Open the Android NVM device and find the partitions on it. > Save them in > - a list along with the "PartitionName" fields for their GPT entries. > - We will use these partition names as the key in > - ArmFastbootPlatformFlashPartition. > + 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. > */ > +STATIC > EFI_STATUS > ArmFastbootPlatformInit ( > VOID > @@ -164,6 +167,7 @@ ArmFastbootPlatformInit ( > // > // Get EFI_HANDLES for all the partitions on the block devices pointed to > by > // PcdFastbootFlashDevicePath, also saving their GPT partition labels. > + // We will use these labels as the key in > ArmFastbootPlatformFlashPartition. > // There's no way to find all of a device's children, so we get every > handle > // in the system supporting EFI_BLOCK_IO_PROTOCOL and then filter out ones > // that don't represent partitions on the flash device. > @@ -296,6 +300,11 @@ Exit: > > } > > +/* > + To be called when Fastboot is finished and we aren't rebooting or booting > an > + image. Undo initialisation, free resrouces. > +*/ > +STATIC > VOID > ArmFastbootPlatformUnInit ( > VOID > @@ -304,6 +313,18 @@ ArmFastbootPlatformUnInit ( > FreePartitionList (); > } > > +/* > + 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. > +*/ > +STATIC > EFI_STATUS > ArmFastbootPlatformFlashPartition ( > IN CHAR8 *PartitionName, > @@ -382,6 +403,15 @@ ArmFastbootPlatformFlashPartition ( > return Status; > } > > +/* > + 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. > +*/ > +STATIC > EFI_STATUS > ArmFastbootPlatformErasePartition ( > IN CHAR8 *Partition > @@ -390,6 +420,25 @@ ArmFastbootPlatformErasePartition ( > return EFI_SUCCESS; > } > > +/* > + 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. > +*/ > +STATIC > EFI_STATUS > ArmFastbootPlatformGetVar ( > IN CHAR8 *Name, > @@ -404,6 +453,26 @@ ArmFastbootPlatformGetVar ( > return EFI_SUCCESS; > } > > +/* > + 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. > +*/ > +STATIC > EFI_STATUS > ArmFastbootPlatformOemCommand ( > IN CHAR8 *Command > @@ -425,7 +494,7 @@ ArmFastbootPlatformOemCommand ( > } > } > > -FASTBOOT_PLATFORM_PROTOCOL mPlatformProtocol = { > +STATIC FASTBOOT_PLATFORM_PROTOCOL mPlatformProtocol = { > ArmFastbootPlatformInit, > ArmFastbootPlatformUnInit, > ArmFastbootPlatformFlashPartition, > -- > 2.7.4 > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

