From patchwork Fri Oct 28 15:13:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 79950 Delivered-To: patch@linaro.org Received: by 10.140.97.247 with SMTP id m110csp1228852qge; Fri, 28 Oct 2016 08:13:28 -0700 (PDT) X-Received: by 10.98.80.130 with SMTP id g2mr25506578pfj.179.1477667608137; Fri, 28 Oct 2016 08:13:28 -0700 (PDT) Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id r89si14030818pfj.257.2016.10.28.08.13.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 28 Oct 2016 08:13:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E8FCF81DB7; Fri, 28 Oct 2016 08:13:26 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received: from mail-wm0-x22d.google.com (mail-wm0-x22d.google.com [IPv6:2a00:1450:400c:c09::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0F11481DB5 for ; Fri, 28 Oct 2016 08:13:26 -0700 (PDT) Received: by mail-wm0-x22d.google.com with SMTP id p190so17450366wmp.1 for ; Fri, 28 Oct 2016 08:13:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=DMTgJ8SJAn8qDfWNcBuaMti+fOKiYxw8j6OAsY4Xe3Q=; b=cr9TVt10HQ9Hy9booIrV5Ux2vu+uGeSqikZUkJ6HgCX+51ogWNmRiLbG5Mga5OLw9y 2BGmXqwJokq+mfmVtlla617pITUgY4C0mvlRaRfZHuyY0ydk65x8wDWG2q2QAFyQmMnL ITQKl3mectXGl2M95N4vt+yTSHzDz04oMetgg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=DMTgJ8SJAn8qDfWNcBuaMti+fOKiYxw8j6OAsY4Xe3Q=; b=mXkhlcXw8UTZpBIzRxk9KLrjK18wrD9UOgFZAtuo43lw8CaZmTrJOsRdt6O0VVy6YG kSgh3uO4NyLHyLI7wb1K+L/IAhTndUU3eLdQrDT+v0Ni06PObYESBhlJ6mAACQifkHCC Z5MOe0BlLAoCqCs7TYo6fxAeJmmd/+eoUDhoDXnocyeujnqIzqfgCxW61zrjL/YKaPvF qYmdoz1l739MbsT2850r0rspxKQnxJbKbZqkCBimurOH+w9K2fzH4EWCqGMr6EyLmtlZ wnlDESrzKpKHP2IGdjouFw+o1gMH+idAGUqtkIPA2zrz5QLenqbZAIpN66iXtdrBwcst HZKA== X-Gm-Message-State: ABUngvfvWeZ87QrNcg8mbMYySchW2GzPxgolZKVhC6orV8zZEfQf9JNN2JrrHkGxGymdpVvE X-Received: by 10.194.119.66 with SMTP id ks2mr11337177wjb.181.1477667604598; Fri, 28 Oct 2016 08:13:24 -0700 (PDT) Received: from localhost.localdomain ([105.150.227.229]) by smtp.gmail.com with ESMTPSA id 194sm9335108wmj.20.2016.10.28.08.13.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 28 Oct 2016 08:13:23 -0700 (PDT) From: Ard Biesheuvel To: edk2-devel@lists.01.org, leif.lindholm@linaro.org Date: Fri, 28 Oct 2016 16:13:17 +0100 Message-Id: <1477667597-26331-1-git-send-email-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.7.4 Subject: [edk2] [PATCH] ArmPlatformPkg/ArmVExpressFastBootDxe: clean up code and comments X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lersek@redhat.com, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" 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 --- ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c | 79 ++++++++++++++++++-- 1 file changed, 74 insertions(+), 5 deletions(-) -- 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm Acked-by: Laszlo Ersek 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.
+ Copyright (c) 2016, Linaro Ltd. All rights reserved.
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,