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>
---
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
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#58382): https://edk2.groups.io/g/devel/message/58382
Mute This Topic: https://groups.io/mt/73370135/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
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
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#58700): https://edk2.groups.io/g/devel/message/58700
Mute This Topic: https://groups.io/mt/73370135/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2026 Red Hat, Inc.