public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Yao, Jiewen" <jiewen.yao@intel.com>
To: "Kinney, Michael D" <michael.d.kinney@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [Patch v3 3/3] SignedCapsulePkg/PlatformFlashAccessLib: Add progress API
Date: Mon, 28 May 2018 19:18:04 +0000	[thread overview]
Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503AC127D3@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <20180525061552.19840-4-michael.d.kinney@intel.com>

Reviewed-by: Jiewen.yao@intel.com

> -----Original Message-----
> From: Kinney, Michael D
> Sent: Thursday, May 24, 2018 11:16 PM
> To: edk2-devel@lists.01.org
> Cc: Yao, Jiewen <jiewen.yao@intel.com>
> Subject: [Patch v3 3/3] SignedCapsulePkg/PlatformFlashAccessLib: Add progress
> API
> 
> https://bugzilla.tianocore.org/show_bug.cgi?id=801
> 
> Add a new API to the PlatformFlashAccessLib that passes
> in an optional Progress() function along with a start and
> end percentage to call the Progress() function with.
> If the Progress() function is not NULL, then it is the
> Progress() function that was passed into the Firmware
> Management Protocol SetImage() services and is used
> to update the user on the progress as a firmware device
> is updated with a firmware image.
> 
> Implementations of the PlatformFlashAccessLib are
> recommended to call the Progress() function as work
> is performed to update to contents of a firmware
> storage device.
> 
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> ---
>  .../Include/Library/PlatformFlashAccessLib.h       | 49 ++++++++++++++-
>  .../PlatformFlashAccessLibNull.c                   | 70
> +++++++++++++++++++---
>  2 files changed, 110 insertions(+), 9 deletions(-)
> 
> diff --git a/SignedCapsulePkg/Include/Library/PlatformFlashAccessLib.h
> b/SignedCapsulePkg/Include/Library/PlatformFlashAccessLib.h
> index 0a8858e4c4..e3308251c2 100644
> --- a/SignedCapsulePkg/Include/Library/PlatformFlashAccessLib.h
> +++ b/SignedCapsulePkg/Include/Library/PlatformFlashAccessLib.h
> @@ -1,7 +1,7 @@
>  /** @file
>    Platform flash device access library.
> 
> -  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2016 - 2018, Intel Corporation. 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
> @@ -16,6 +16,8 @@
>  #ifndef __PLATFORM_FLASH_ACCESS_LIB_H__
>  #define __PLATFORM_FLASH_ACCESS_LIB_H__
> 
> +#include <Protocol/FirmwareManagement.h>
> +
>  typedef enum {
>    FlashAddressTypeRelativeAddress,
>    FlashAddressTypeAbsoluteAddress,
> @@ -31,7 +33,7 @@ typedef enum {
>  } PLATFORM_FIRMWARE_TYPE;
> 
>  /**
> -  Perform flash write opreation.
> +  Perform flash write operation.
> 
>    @param[in] FirmwareType      The type of firmware.
>    @param[in] FlashAddress      The address of flash device to be accessed.
> @@ -54,4 +56,47 @@ PerformFlashWrite (
>    IN UINTN                        Length
>    );
> 
> +/**
> +  Perform flash write operation with progress indicator.  The start and end
> +  completion percentage values are passed into this function.  If the
> requested
> +  flash write operation is broken up, then completion percentage between the
> +  start and end values may be passed to the provided Progress function.  The
> +  caller of this function is required to call the Progress function for the
> +  start and end completion percentage values.  This allows the Progress,
> +  StartPercentage, and EndPercentage parameters to be ignored if the
> requested
> +  flash write operation can not be broken up
> +
> +  @param[in] FirmwareType      The type of firmware.
> +  @param[in] FlashAddress      The address of flash device to be accessed.
> +  @param[in] FlashAddressType  The type of flash device address.
> +  @param[in] Buffer            The pointer to the data buffer.
> +  @param[in] Length            The length of data buffer in bytes.
> +  @param[in] Progress          A function used report the progress of the
> +                               firmware update.  This is an optional
> parameter
> +                               that may be NULL.
> +  @param[in] StartPercentage   The start completion percentage value that
> may
> +                               be used to report progress during the flash
> +                               write operation.
> +  @param[in] EndPercentage     The end completion percentage value that
> may
> +                               be used to report progress during the flash
> +                               write operation.
> +
> +  @retval EFI_SUCCESS           The operation returns successfully.
> +  @retval EFI_WRITE_PROTECTED   The flash device is read only.
> +  @retval EFI_UNSUPPORTED       The flash device access is unsupported.
> +  @retval EFI_INVALID_PARAMETER The input parameter is not valid.
> +**/
> +EFI_STATUS
> +EFIAPI
> +PerformFlashWriteWithProgress (
> +  IN PLATFORM_FIRMWARE_TYPE                         FirmwareType,
> +  IN EFI_PHYSICAL_ADDRESS                           FlashAddress,
> +  IN FLASH_ADDRESS_TYPE
> FlashAddressType,
> +  IN VOID                                           *Buffer,
> +  IN UINTN                                          Length,
> +  IN EFI_FIRMWARE_MANAGEMENT_UPDATE_IMAGE_PROGRESS  Progress,
> OPTIONAL
> +  IN UINTN                                          StartPercentage,
> +  IN UINTN                                          EndPercentage
> +  );
> +
>  #endif
> diff --git
> a/SignedCapsulePkg/Library/PlatformFlashAccessLibNull/PlatformFlashAccessLib
> Null.c
> b/SignedCapsulePkg/Library/PlatformFlashAccessLibNull/PlatformFlashAccessLib
> Null.c
> index b34ebbba1e..854f108cf4 100644
> ---
> a/SignedCapsulePkg/Library/PlatformFlashAccessLibNull/PlatformFlashAccessLib
> Null.c
> +++
> b/SignedCapsulePkg/Library/PlatformFlashAccessLibNull/PlatformFlashAccessLib
> Null.c
> @@ -1,7 +1,7 @@
>  /** @file
>    Platform flash device access library NULL instance.
> 
> -  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2016 - 2018, Intel Corporation. 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
> @@ -20,7 +20,57 @@
>  UINT64 mInternalFdAddress;
> 
>  /**
> -  Perform flash write opreation.
> +  Perform flash write operation with progress indicator.  The start and end
> +  completion percentage values are passed into this function.  If the
> requested
> +  flash write operation is broken up, then completion percentage between the
> +  start and end values may be passed to the provided Progress function.  The
> +  caller of this function is required to call the Progress function for the
> +  start and end completion percentage values.  This allows the Progress,
> +  StartPercentage, and EndPercentage parameters to be ignored if the
> requested
> +  flash write operation can not be broken up
> +
> +  @param[in] FirmwareType      The type of firmware.
> +  @param[in] FlashAddress      The address of flash device to be accessed.
> +  @param[in] FlashAddressType  The type of flash device address.
> +  @param[in] Buffer            The pointer to the data buffer.
> +  @param[in] Length            The length of data buffer in bytes.
> +  @param[in] Progress          A function used report the progress of the
> +                               firmware update.  This is an optional
> parameter
> +                               that may be NULL.
> +  @param[in] StartPercentage   The start completion percentage value that
> may
> +                               be used to report progress during the flash
> +                               write operation.
> +  @param[in] EndPercentage     The end completion percentage value that
> may
> +                               be used to report progress during the flash
> +                               write operation.
> +
> +  @retval EFI_SUCCESS           The operation returns successfully.
> +  @retval EFI_WRITE_PROTECTED   The flash device is read only.
> +  @retval EFI_UNSUPPORTED       The flash device access is unsupported.
> +  @retval EFI_INVALID_PARAMETER The input parameter is not valid.
> +**/
> +EFI_STATUS
> +EFIAPI
> +PerformFlashWriteWithProgress (
> +  IN PLATFORM_FIRMWARE_TYPE                         FirmwareType,
> +  IN EFI_PHYSICAL_ADDRESS                           FlashAddress,
> +  IN FLASH_ADDRESS_TYPE
> FlashAddressType,
> +  IN VOID                                           *Buffer,
> +  IN UINTN                                          Length,
> +  IN EFI_FIRMWARE_MANAGEMENT_UPDATE_IMAGE_PROGRESS  Progress,
> OPTIONAL
> +  IN UINTN                                          StartPercentage,
> +  IN UINTN                                          EndPercentage
> +  )
> +{
> +  if (FlashAddressType == FlashAddressTypeRelativeAddress) {
> +    FlashAddress = FlashAddress + mInternalFdAddress;
> +  }
> +  CopyMem((VOID *)(UINTN)(FlashAddress), Buffer, Length);
> +  return EFI_SUCCESS;
> +}
> +
> +/**
> +  Perform flash write operation.
> 
>    @param[in] FirmwareType      The type of firmware.
>    @param[in] FlashAddress      The address of flash device to be accessed.
> @@ -43,9 +93,15 @@ PerformFlashWrite (
>    IN UINTN                        Length
>    )
>  {
> -  if (FlashAddressType == FlashAddressTypeRelativeAddress) {
> -    FlashAddress = FlashAddress + mInternalFdAddress;
> -  }
> -  CopyMem((VOID *)(UINTN)(FlashAddress), Buffer, Length);
> -  return EFI_SUCCESS;
> +  return PerformFlashWriteWithProgress (
> +           FirmwareType,
> +           FlashAddress,
> +           FlashAddressType,
> +           Buffer,
> +           Length,
> +           NULL,
> +           0,
> +           0
> +           );
>  }
> +
> --
> 2.14.2.windows.3



  reply	other threads:[~2018-05-28 19:18 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-25  6:15 [Patch v3 0/3] Add DisplayUpdateProgressLib for capsules Michael D Kinney
2018-05-25  6:15 ` [Patch v3 1/3] MdeModulePkg: Add DisplayUpdateProgressLib class Michael D Kinney
2018-05-25 11:06   ` Zeng, Star
2018-05-25  6:15 ` [Patch v3 2/3] MdeModulePkg: Add DisplayUpdateProgressLib instances Michael D Kinney
2018-05-25 11:10   ` Zeng, Star
2018-05-31 11:09   ` Ard Biesheuvel
2018-06-04 20:24     ` Kinney, Michael D
2018-05-25  6:15 ` [Patch v3 3/3] SignedCapsulePkg/PlatformFlashAccessLib: Add progress API Michael D Kinney
2018-05-28 19:18   ` Yao, Jiewen [this message]
2018-05-28 19:07 ` [Patch v3 0/3] Add DisplayUpdateProgressLib for capsules Yao, Jiewen
2018-05-29  9:51 ` Ard Biesheuvel
2018-05-29  9:51   ` Ard Biesheuvel
2018-05-29 12:43     ` Ard Biesheuvel
2018-05-29 13:05       ` Gao, Liming
2018-05-29 13:08         ` Ard Biesheuvel
2018-05-29 14:31           ` Kinney, Michael D
2018-05-31 11:12             ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=74D8A39837DF1E4DA445A8C0B3885C503AC127D3@shsmsx102.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox