Reviewed-by: levi.yun <yeoreum....@arm.com>

________________________________________
From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Sahil Kaushal 
via groups.io <sahil.kaushal=arm....@groups.io>
Sent: 23 April 2024 06:56
To: devel@edk2.groups.io
Cc: Ard Biesheuvel; Leif Lindholm  ; Sami Mujawar; Sahil Kaushal
Subject: [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 08/14] 
Platform/ARM: Add HostRegisterBaseAddress variable

From: sahil <sa...@arm.com>

This variable holds the QSPI controller's base address.
It is defined in ARM.dec as well with the default value of 0x0.
In case a platform is not using it, they can just ignore this
variable and the default value of 0x0 will be propogated and
the variable will not be used.

Signed-off-by: sahil <sa...@arm.com>
---
 Platform/ARM/ARM.dec                                      |  3 ++
 Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf          |  3 ++
 Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf |  2 ++
 Platform/ARM/Drivers/NorFlashDxe/NorFlashCommon.h         |  1 +
 Platform/ARM/Include/Library/NorFlashDeviceLib.h          |  1 +
 Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c            | 34 
+++++++++++++++++---
 Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c   | 12 ++++---
 7 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/Platform/ARM/ARM.dec b/Platform/ARM/ARM.dec
index 86d1fcb4878e..a5e28c372903 100644
--- a/Platform/ARM/ARM.dec
+++ b/Platform/ARM/ARM.dec
@@ -26,3 +26,6 @@


 [PcdsFeatureFlag.common]

   
gPlatformArmTokenSpaceGuid.PcdNorFlashCheckBlockLocked|FALSE|BOOLEAN|0x0000001

+

+[PcdsFixedAtBuild.common]

+  gPlatformArmTokenSpaceGuid.PcdNorFlashRegBaseAddress|0x0|UINT32|0x00000002

diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf 
b/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf
index de160025b632..6522968d6c5a 100644
--- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf
+++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf
@@ -65,5 +65,8 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase

   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize



+[FixedPcd]

+  gPlatformArmTokenSpaceGuid.PcdNorFlashRegBaseAddress

+

 [Depex]

   gEfiCpuArchProtocolGuid

diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf 
b/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf
index d9e7de07165c..eb86d423f106 100644
--- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf
+++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf
@@ -59,5 +59,7 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase

   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize



+  gPlatformArmTokenSpaceGuid.PcdNorFlashRegBaseAddress

+

 [Depex]

   TRUE

diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashCommon.h 
b/Platform/ARM/Drivers/NorFlashDxe/NorFlashCommon.h
index 7fcb949843e8..98464e4868b1 100644
--- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashCommon.h
+++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashCommon.h
@@ -34,6 +34,7 @@
 //

 EFI_STATUS

 NorFlashCreateInstance (

+  IN UINTN                HostRegisterBase,

   IN UINTN                NorFlashDeviceBase,

   IN UINTN                NorFlashRegionBase,

   IN UINTN                NorFlashSize,

diff --git a/Platform/ARM/Include/Library/NorFlashDeviceLib.h 
b/Platform/ARM/Include/Library/NorFlashDeviceLib.h
index e5017130a091..29b8b8901525 100644
--- a/Platform/ARM/Include/Library/NorFlashDeviceLib.h
+++ b/Platform/ARM/Include/Library/NorFlashDeviceLib.h
@@ -29,6 +29,7 @@ struct _NOR_FLASH_INSTANCE {
   UINT32                                 Signature;

   EFI_HANDLE                             Handle;



+  UINTN                                  HostRegisterBaseAddress;

   UINTN                                  DeviceBaseAddress;

   UINTN                                  RegionBaseAddress;

   UINTN                                  Size;

diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c 
b/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c
index 1c12572ab663..f5c0dadf84e0 100644
--- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c
+++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c
@@ -1,6 +1,6 @@
 /** @file  NorFlashDxe.c



-  Copyright (c) 2011 - 2021, Arm Limited. All rights reserved.<BR>

+  Copyright (c) 2011 - 2024, Arm Limited. All rights reserved.<BR>



   SPDX-License-Identifier: BSD-2-Clause-Patent



@@ -30,6 +30,7 @@ NOR_FLASH_INSTANCE  mNorFlashInstanceTemplate = {
   NOR_FLASH_SIGNATURE, // Signature

   NULL,                // Handle ... NEED TO BE FILLED



+  0, // HostRegisterBaseAddress  ... NEED TO BE FILLED

   0, // DeviceBaseAddress ... NEED TO BE FILLED

   0, // RegionBaseAddress ... NEED TO BE FILLED

   0, // Size ... NEED TO BE FILLED

@@ -99,6 +100,7 @@ NOR_FLASH_INSTANCE  mNorFlashInstanceTemplate = {


 EFI_STATUS

 NorFlashCreateInstance (

+  IN UINTN                HostRegisterBase,

   IN UINTN                NorFlashDeviceBase,

   IN UINTN                NorFlashRegionBase,

   IN UINTN                NorFlashSize,

@@ -118,9 +120,10 @@ NorFlashCreateInstance (
     return EFI_OUT_OF_RESOURCES;

   }



-  Instance->DeviceBaseAddress = NorFlashDeviceBase;

-  Instance->RegionBaseAddress = NorFlashRegionBase;

-  Instance->Size              = NorFlashSize;

+  Instance->HostRegisterBaseAddress = HostRegisterBase;

+  Instance->DeviceBaseAddress       = NorFlashDeviceBase;

+  Instance->RegionBaseAddress       = NorFlashRegionBase;

+  Instance->Size                    = NorFlashSize;



   Instance->BlockIoProtocol.Media = &Instance->Media;

   Instance->Media.MediaId         = Index;

@@ -184,6 +187,27 @@ NorFlashInitialise (
   UINT32                 Index;

   NOR_FLASH_DESCRIPTION  *NorFlashDevices;

   BOOLEAN                ContainVariableStorage;

+  EFI_PHYSICAL_ADDRESS   HostRegisterBaseAddress;

+

+  // Register host register region if available

+  HostRegisterBaseAddress = PcdGet32 (PcdNorFlashRegBaseAddress);

+

+  if (HostRegisterBaseAddress != 0) {

+    Status = gDS->AddMemorySpace (

+                    EfiGcdMemoryTypeMemoryMappedIo,

+                    HostRegisterBaseAddress,

+                    SIZE_4KB,

+                    EFI_MEMORY_UC | EFI_MEMORY_RUNTIME

+                    );

+    ASSERT_EFI_ERROR (Status);

+

+    Status = gDS->SetMemorySpaceAttributes (

+                    HostRegisterBaseAddress,

+                    SIZE_4KB,

+                    EFI_MEMORY_UC | EFI_MEMORY_RUNTIME

+                    );

+    ASSERT_EFI_ERROR (Status);

+  }



   Status = NorFlashPlatformInitialization ();

   if (EFI_ERROR (Status)) {

@@ -215,6 +239,7 @@ NorFlashInitialise (
     }



     Status = NorFlashCreateInstance (

+               HostRegisterBaseAddress,

                NorFlashDevices[Index].DeviceBaseAddress,

                NorFlashDevices[Index].RegionBaseAddress,

                NorFlashDevices[Index].Size,

@@ -368,6 +393,7 @@ NorFlashVirtualNotifyEvent (
   UINTN  Index;



   for (Index = 0; Index < mNorFlashDeviceCount; Index++) {

+    EfiConvertPointer (0x0, (VOID 
**)&mNorFlashInstances[Index]->HostRegisterBaseAddress);

     EfiConvertPointer (0x0, (VOID 
**)&mNorFlashInstances[Index]->DeviceBaseAddress);

     EfiConvertPointer (0x0, (VOID 
**)&mNorFlashInstances[Index]->RegionBaseAddress);



diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c 
b/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c
index 85198b98e8a8..ef9bed37d140 100644
--- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c
+++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c
@@ -1,6 +1,6 @@
 /** @file  NorFlashStandaloneMm.c



-  Copyright (c) 2011 - 2021, Arm Limited. All rights reserved.<BR>

+  Copyright (c) 2011 - 2024, Arm Limited. All rights reserved.<BR>

   Copyright (c) 2020, Linaro, Ltd. All rights reserved.<BR>



   SPDX-License-Identifier: BSD-2-Clause-Patent

@@ -24,6 +24,7 @@ NOR_FLASH_INSTANCE  mNorFlashInstanceTemplate = {
   NOR_FLASH_SIGNATURE, // Signature

   NULL,                // Handle ... NEED TO BE FILLED



+  0, // HostRegisterBaseAddress  ... NEED TO BE FILLED

   0, // DeviceBaseAddress ... NEED TO BE FILLED

   0, // RegionBaseAddress ... NEED TO BE FILLED

   0, // Size ... NEED TO BE FILLED

@@ -93,6 +94,7 @@ NOR_FLASH_INSTANCE  mNorFlashInstanceTemplate = {


 EFI_STATUS

 NorFlashCreateInstance (

+  IN UINTN                HostRegisterBase,

   IN UINTN                NorFlashDeviceBase,

   IN UINTN                NorFlashRegionBase,

   IN UINTN                NorFlashSize,

@@ -112,9 +114,10 @@ NorFlashCreateInstance (
     return EFI_OUT_OF_RESOURCES;

   }



-  Instance->DeviceBaseAddress = NorFlashDeviceBase;

-  Instance->RegionBaseAddress = NorFlashRegionBase;

-  Instance->Size              = NorFlashSize;

+  Instance->HostRegisterBaseAddress = HostRegisterBase;

+  Instance->DeviceBaseAddress       = NorFlashDeviceBase;

+  Instance->RegionBaseAddress       = NorFlashRegionBase;

+  Instance->Size                    = NorFlashSize;



   Instance->BlockIoProtocol.Media = &Instance->Media;

   Instance->Media.MediaId         = Index;

@@ -194,6 +197,7 @@ NorFlashInitialise (
     }



     Status = NorFlashCreateInstance (

+               PcdGet32 (PcdNorFlashRegBaseAddress),

                NorFlashDevices[Index].DeviceBaseAddress,

                NorFlashDevices[Index].RegionBaseAddress,

                NorFlashDevices[Index].Size,

--
2.25.1



-=-=-=-=-=-=
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#118158): https://edk2.groups.io/g/devel/message/118158
Mute This Topic: https://groups.io/mt/105690943/7717249
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [yeoreum....@arm.com]
-=-=-=-=-=-=


IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#118192): https://edk2.groups.io/g/devel/message/118192
Mute This Topic: https://groups.io/mt/105690943/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to