public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Leif Lindholm" <leif@nuviainc.com>
To: Pankaj Bansal <pankaj.bansal@oss.nxp.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>,
	Michael D Kinney <michael.d.kinney@intel.com>,
	devel@edk2.groups.io, Varun Sethi <V.Sethi@nxp.com>,
	Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>,
	Jon Nettleton <jon@solid-run.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH edk2-platforms v4 15/24] Silicon: NXP: Remove direct calls to SwapMmio* APIs
Date: Wed, 6 May 2020 11:48:15 +0100	[thread overview]
Message-ID: <20200506104815.GM21486@vanye> (raw)
In-Reply-To: <20200501054955.13025-16-pankaj.bansal@oss.nxp.com>

On Fri, May 01, 2020 at 11:19:46 +0530, Pankaj Bansal wrote:
> From: Pankaj Bansal <pankaj.bansal@nxp.com>
> 
> The SwapMmio** APIs are supposed to be called indirectly via
> GetMmioOperations** APIs.
> Therefore, remove the SwapMmio** APIs from IoAccessLib.h and make
> these APIs STATIC to IoAccessLib.c, so that no accidental call can
> be made to these.
> 
> Signed-off-by: Pankaj Bansal <pankaj.bansal@nxp.com>

Reviewed-by: Leif Lindholm <leif@nuviainc.com>

> ---
> 
> Notes:
>     V4:
>     - Use GetMmioOperations in place of GetMmioOperations32
>     - Use MMIO_OPERATIONS in place of MMIO_OPERATIONS_32
>     
>     V3:
>     - New commit
> 
>  Silicon/NXP/Include/Library/IoAccessLib.h     | 236 +-------------------
>  Silicon/NXP/Library/IoAccessLib/IoAccessLib.c |  17 +-
>  Silicon/NXP/Library/SocLib/Chassis.c          |  10 +-
>  3 files changed, 22 insertions(+), 241 deletions(-)
> 
> diff --git a/Silicon/NXP/Include/Library/IoAccessLib.h b/Silicon/NXP/Include/Library/IoAccessLib.h
> index 0f5b19dcf149..3dbb35d2ce5a 100644
> --- a/Silicon/NXP/Include/Library/IoAccessLib.h
> +++ b/Silicon/NXP/Include/Library/IoAccessLib.h
> @@ -1,6 +1,6 @@
>  /** @file
>   *
> - *  Copyright 2017-2019 NXP
> + *  Copyright 2017-2020 NXP
>   *
>   * SPDX-License-Identifier: BSD-2-Clause-Patent
>   *
> @@ -47,238 +47,4 @@ GetMmioOperations  (
>    IN  BOOLEAN  Swap
>    );
>  
> -/**
> -  MmioRead16 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to read.
> -
> -  @return The value read.
> -
> -**/
> -UINT16
> -EFIAPI
> -SwapMmioRead16 (
> -  IN  UINTN     Address
> -  );
> -
> -/**
> -  MmioRead32 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to read.
> -
> -  @return The value read.
> -
> -**/
> -UINT32
> -EFIAPI
> -SwapMmioRead32 (
> -  IN  UINTN     Address
> -  );
> -
> -/**
> -  MmioRead64 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to read.
> -
> -  @return The value read.
> -
> -**/
> -UINT64
> -EFIAPI
> -SwapMmioRead64 (
> -  IN  UINTN     Address
> -  );
> -
> -/**
> -  MmioWrite16 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  Value   The value to write to the MMIO register.
> -
> -**/
> -UINT16
> -EFIAPI
> -SwapMmioWrite16 (
> -  IN  UINTN     Address,
> -  IN  UINT16    Value
> -  );
> -
> -/**
> -  MmioWrite32 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  Value   The value to write to the MMIO register.
> -
> -**/
> -UINT32
> -EFIAPI
> -SwapMmioWrite32 (
> -  IN  UINTN     Address,
> -  IN  UINT32    Value
> -  );
> -
> -/**
> -  MmioWrite64 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  Value   The value to write to the MMIO register.
> -
> -**/
> -UINT64
> -EFIAPI
> -SwapMmioWrite64 (
> -  IN  UINTN     Address,
> -  IN  UINT64    Value
> -  );
> -
> -/**
> -  MmioAndThenOr16 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  AndData The value to AND with the read value from the MMIO register.
> -  @param  OrData  The value to OR with the result of the AND operation.
> -
> -  @return The value written back to the MMIO register.
> -
> -**/
> -UINT16
> -EFIAPI
> -SwapMmioAndThenOr16 (
> -  IN  UINTN     Address,
> -  IN  UINT16    AndData,
> -  IN  UINT16    OrData
> -  );
> -
> -/**
> -  MmioAndThenOr32 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  AndData The value to AND with the read value from the MMIO register.
> -  @param  OrData  The value to OR with the result of the AND operation.
> -
> -  @return The value written back to the MMIO register.
> -
> -**/
> -UINT32
> -EFIAPI
> -SwapMmioAndThenOr32 (
> -  IN  UINTN     Address,
> -  IN  UINT32    AndData,
> -  IN  UINT32    OrData
> -  );
> -
> -/**
> -  MmioAndThenOr64 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  AndData The value to AND with the read value from the MMIO register.
> -  @param  OrData  The value to OR with the result of the AND operation.
> -
> -  @return The value written back to the MMIO register.
> -
> -**/
> -UINT64
> -EFIAPI
> -SwapMmioAndThenOr64 (
> -  IN  UINTN     Address,
> -  IN  UINT64    AndData,
> -  IN  UINT64    OrData
> -  );
> -
> -/**
> -  MmioOr16 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  OrData  The value to OR with the read value from the MMIO register.
> -
> -  @return The value written back to the MMIO register.
> -
> -**/
> -UINT16
> -EFIAPI
> -SwapMmioOr16 (
> -  IN  UINTN     Address,
> -  IN  UINT16    OrData
> -  );
> -
> -/**
> -  MmioOr32 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  OrData  The value to OR with the read value from the MMIO register.
> -
> -  @return The value written back to the MMIO register.
> -
> -**/
> -UINT32
> -EFIAPI
> -SwapMmioOr32 (
> -  IN  UINTN     Address,
> -  IN  UINT32    OrData
> -  );
> -
> -/**
> -  MmioOr64 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  OrData  The value to OR with the read value from the MMIO register.
> -
> -  @return The value written back to the MMIO register.
> -
> -**/
> -UINT64
> -EFIAPI
> -SwapMmioOr64 (
> -  IN  UINTN     Address,
> -  IN  UINT64    OrData
> -  );
> -
> -/**
> -  MmioAnd16 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  AndData The value to AND with the read value from the MMIO register.
> -
> -  @return The value written back to the MMIO register.
> -
> -**/
> -UINT16
> -EFIAPI
> -SwapMmioAnd16 (
> -  IN  UINTN     Address,
> -  IN  UINT16    AndData
> -  );
> -
> -/**
> -  MmioAnd32 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  AndData The value to AND with the read value from the MMIO register.
> -
> -  @return The value written back to the MMIO register.
> -
> -**/
> -UINT32
> -EFIAPI
> -SwapMmioAnd32 (
> -  IN  UINTN     Address,
> -  IN  UINT32    AndData
> -  );
> -
> -/**
> -  MmioAnd64 for Big-Endian modules.
> -
> -  @param  Address The MMIO register to write.
> -  @param  AndData The value to AND with the read value from the MMIO register.
> -
> -  @return The value written back to the MMIO register.
> -
> -**/
> -UINT64
> -EFIAPI
> -SwapMmioAnd64 (
> -  IN  UINTN     Address,
> -  IN  UINT64    AndData
> -  );
> -
>  #endif /* IO_ACCESS_LIB_H_ */
> diff --git a/Silicon/NXP/Library/IoAccessLib/IoAccessLib.c b/Silicon/NXP/Library/IoAccessLib/IoAccessLib.c
> index 33039afda40f..2c6160e8acef 100644
> --- a/Silicon/NXP/Library/IoAccessLib/IoAccessLib.c
> +++ b/Silicon/NXP/Library/IoAccessLib/IoAccessLib.c
> @@ -2,7 +2,7 @@
>  
>    Provide MMIO APIs for BE modules.
>  
> -  Copyright 2017-2019 NXP
> +  Copyright 2017-2020 NXP
>  
>    SPDX-License-Identifier: BSD-2-Clause-Patent
>  
> @@ -21,6 +21,7 @@
>    @return The value read.
>  
>  **/
> +STATIC
>  UINT16
>  EFIAPI
>  SwapMmioRead16 (
> @@ -38,6 +39,7 @@ SwapMmioRead16 (
>    @return The value read.
>  
>  **/
> +STATIC
>  UINT32
>  EFIAPI
>  SwapMmioRead32 (
> @@ -55,6 +57,7 @@ SwapMmioRead32 (
>    @return The value read.
>  
>  **/
> +STATIC
>  UINT64
>  EFIAPI
>  SwapMmioRead64 (
> @@ -71,6 +74,7 @@ SwapMmioRead64 (
>    @param  Value   The value to write to the MMIO register.
>  
>  **/
> +STATIC
>  UINT16
>  EFIAPI
>  SwapMmioWrite16 (
> @@ -88,6 +92,7 @@ SwapMmioWrite16 (
>    @param  Value   The value to write to the MMIO register.
>  
>  **/
> +STATIC
>  UINT32
>  EFIAPI
>  SwapMmioWrite32 (
> @@ -105,6 +110,7 @@ SwapMmioWrite32 (
>    @param  Value   The value to write to the MMIO register.
>  
>  **/
> +STATIC
>  UINT64
>  EFIAPI
>  SwapMmioWrite64 (
> @@ -125,6 +131,7 @@ SwapMmioWrite64 (
>    @return The value written back to the MMIO register.
>  
>  **/
> +STATIC
>  UINT16
>  EFIAPI
>  SwapMmioAndThenOr16 (
> @@ -149,6 +156,7 @@ SwapMmioAndThenOr16 (
>    @return The value written back to the MMIO register.
>  
>  **/
> +STATIC
>  UINT32
>  EFIAPI
>  SwapMmioAndThenOr32 (
> @@ -173,6 +181,7 @@ SwapMmioAndThenOr32 (
>    @return The value written back to the MMIO register.
>  
>  **/
> +STATIC
>  UINT64
>  EFIAPI
>  SwapMmioAndThenOr64 (
> @@ -196,6 +205,7 @@ SwapMmioAndThenOr64 (
>    @return The value written back to the MMIO register.
>  
>  **/
> +STATIC
>  UINT16
>  EFIAPI
>  SwapMmioOr16 (
> @@ -215,6 +225,7 @@ SwapMmioOr16 (
>    @return The value written back to the MMIO register.
>  
>  **/
> +STATIC
>  UINT32
>  EFIAPI
>  SwapMmioOr32 (
> @@ -234,6 +245,7 @@ SwapMmioOr32 (
>    @return The value written back to the MMIO register.
>  
>  **/
> +STATIC
>  UINT64
>  EFIAPI
>  SwapMmioOr64 (
> @@ -253,6 +265,7 @@ SwapMmioOr64 (
>    @return The value written back to the MMIO register.
>  
>  **/
> +STATIC
>  UINT16
>  EFIAPI
>  SwapMmioAnd16 (
> @@ -272,6 +285,7 @@ SwapMmioAnd16 (
>    @return The value written back to the MMIO register.
>  
>  **/
> +STATIC
>  UINT32
>  EFIAPI
>  SwapMmioAnd32 (
> @@ -291,6 +305,7 @@ SwapMmioAnd32 (
>    @return The value written back to the MMIO register.
>  
>  **/
> +STATIC
>  UINT64
>  EFIAPI
>  SwapMmioAnd64 (
> diff --git a/Silicon/NXP/Library/SocLib/Chassis.c b/Silicon/NXP/Library/SocLib/Chassis.c
> index 90677f0f36ca..05c5462446a4 100644
> --- a/Silicon/NXP/Library/SocLib/Chassis.c
> +++ b/Silicon/NXP/Library/SocLib/Chassis.c
> @@ -30,11 +30,11 @@ GurRead (
>    IN  UINTN     Address
>    )
>  {
> -  if (FixedPcdGetBool (PcdGurBigEndian)) {
> -    return SwapMmioRead32 (Address);
> -  } else {
> -    return MmioRead32 (Address);
> -  }
> +  MMIO_OPERATIONS  *GurOps;
> +
> +  GurOps = GetMmioOperations (FixedPcdGetBool (PcdGurBigEndian));
> +
> +  return GurOps->Read32 (Address);
>  }
>  
>  /*
> -- 
> 2.17.1
> 

  reply	other threads:[~2020-05-06 10:48 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-01  5:49 [PATCH edk2-platforms v4 00/24] Add PEI phase to LS1043ARDB Platform Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 01/24] Silicon/NXP: Add I2c lib Pankaj Bansal
2020-05-05 15:11   ` Leif Lindholm
2020-05-01  5:49 ` [PATCH edk2-platforms v4 02/24] Silicon/NXP: changes to use I2clib in i2cdxe Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 03/24] Silicon/NXP/I2cDxe: Fix I2c Timeout with RTC Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 04/24] Silicon/Maxim: Fix bug in RtcWrite in Ds1307RtcLib Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 05/24] Silicon/Maxim: Add comments " Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 06/24] NXP/LS1043aRdb: Move Soc specific components to soc files Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 07/24] Silicon/NXP: remove print information from Soc lib Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 08/24] Silicon/NXP: remove not needed components Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 09/24] Silicon/NXP: Remove unnecessary PCDs Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 10/24] Silicon/NXP: Move dsc file Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 11/24] Platform/NXP: rename the ArmPlatformLib as per ArmPlatformPkg Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 12/24] Silicon/NXP: Move RAM retrieval from SocLib Pankaj Bansal
2020-05-06 10:44   ` Leif Lindholm
2020-05-07  7:28     ` Pankaj Bansal
2020-05-07 10:15       ` Leif Lindholm
2020-05-08  5:31         ` Pankaj Bansal
2020-05-11 10:27           ` Leif Lindholm
2020-05-01  5:49 ` [PATCH edk2-platforms v4 13/24] Platform/NXP/LS1043aRdbPkg: Add Clock retrieval APIs Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 14/24] Silicon/NXP: Use Clock retrieval PPI in modules Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 15/24] Silicon: NXP: Remove direct calls to SwapMmio* APIs Pankaj Bansal
2020-05-06 10:48   ` Leif Lindholm [this message]
2020-05-01  5:49 ` [PATCH edk2-platforms v4 16/24] Silicon/NXP: Add Chassis2 Package Pankaj Bansal
2020-05-06 10:52   ` Leif Lindholm
2020-05-01  5:49 ` [PATCH edk2-platforms v4 17/24] Silicon/NXP/LS1043A: Use ChassisLib from Chassis2 Pkg Pankaj Bansal
2020-05-06 10:54   ` Leif Lindholm
2020-05-01  5:49 ` [PATCH edk2-platforms v4 18/24] Silicon/NXP/LS1043A: Move SocLib to Soc Package Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 19/24] NXP/LS1043aRdbPkg/ArmPlatformLib: Remove extern SocInit Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 20/24] NXP: LS1043aRdbPkg: Use ArmPlatformHelper.S from ArmPlatformPkg Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 21/24] Platform/NXP: Use FV rules from ArmVirtPkg Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 22/24] Platform/NXP/LS1043aRdbPkg: Add VarStore Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 23/24] Silicon/NXP: move MemoryInitPeiLib as per PEIM structures Pankaj Bansal
2020-05-01  5:49 ` [PATCH edk2-platforms v4 24/24] Platform/NXP/LS1043aRdbPkg: Add PEI Phase Pankaj Bansal
2020-05-06 10:57   ` Leif Lindholm

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=20200506104815.GM21486@vanye \
    --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