public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "levi.yun" <yeoreum.yun@arm.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	Sahil Kaushal <Sahil.Kaushal@arm.com>
Cc: "Ard Biesheuvel" <ardb+tianocore@kernel.org>,
	"Leif Lindholm  " <quic_llindhol@quicinc.com>,
	"Sami Mujawar" <Sami.Mujawar@arm.com>
Subject: Re: [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 08/14] Platform/ARM: Add HostRegisterBaseAddress variable
Date: Wed, 24 Apr 2024 09:50:37 +0000	[thread overview]
Message-ID: <AM0PR08MB4289A58FC5E1708BF5F0CAECFB102@AM0PR08MB4289.eurprd08.prod.outlook.com> (raw)
In-Reply-To: <20240423055638.1271531-9-Sahil.Kaushal@arm.com>

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

________________________________________
From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Sahil Kaushal via groups.io <sahil.kaushal=arm.com@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 <sahil@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 <sahil@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+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [yeoreum.yun@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/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  reply	other threads:[~2024-04-24  9:50 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-23  5:56 [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 00/14] Split NorFlashDxe driver and add CadenceQspiNorFlashDeviceLib library Sahil Kaushal
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 01/14] Platform/ARM/NorFlashDxe: Move DiskIo related functions out of NorFlash.c Sahil Kaushal
2024-04-24  9:49   ` levi.yun
2024-05-16 15:17   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 02/14] Platform/ARM/NorFlashDxe: Move NorFlashVirtualNotifyEvent Sahil Kaushal
2024-05-16 15:17   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 03/14] Platform/ARM/NorFlashDxe: Add NorFlashCommon.h header file Sahil Kaushal
2024-04-24  9:49   ` levi.yun
2024-05-16 15:17   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 04/14] Platform/ARM/NorFlashDxe: Move flash specific functions to NorFlash.c Sahil Kaushal
2024-04-24  9:49   ` levi.yun
2024-05-16 15:17   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 05/14] Platform/ARM: Create NorFlashDeviceLib library interface for flash specific functions Sahil Kaushal
2024-04-24  9:50   ` levi.yun
2024-05-16 15:18   ` Sami Mujawar
2024-05-21  8:37     ` sahil
2024-05-21 14:05       ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 06/14] Platform/ARM: Add P30NorFlashDeviceLib Library Sahil Kaushal
2024-04-24  9:49   ` levi.yun
2024-05-16 15:18   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 07/14] Platform/ARM/NorFlashDxe: Switch from NorFlash.c to NorFlashDeviceLib Sahil Kaushal
2024-04-24  9:50   ` levi.yun
2024-05-16 15:18   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 08/14] Platform/ARM: Add HostRegisterBaseAddress variable Sahil Kaushal
2024-04-24  9:50   ` levi.yun [this message]
2024-05-16 15:22   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 09/14] Platform/ARM: Add optional provision to fetch and print NOR Flash info Sahil Kaushal
2024-04-24  9:51   ` levi.yun
2024-05-16 15:23   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 10/14] Silicon/ARM/NeoverseN1Soc: Enable SCP QSPI flash region Sahil Kaushal
2024-04-24  9:50   ` levi.yun
2024-05-16 15:23   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 11/14] Silicon/ARM/NeoverseN1Soc: NOR flash library for N1Sdp Sahil Kaushal
2024-04-24  9:50   ` levi.yun
2024-05-16 15:23   ` Sami Mujawar
2024-05-21  9:24     ` sahil
2024-05-21 12:59       ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 12/14] Platform/ARM: Add CadenceQspiNorFlashDeviceLib for NorFlashDxe Sahil Kaushal
2024-04-24  9:55   ` levi.yun
2024-05-02 13:17   ` PierreGondois
2024-05-09  6:25     ` sahil
2024-05-16 15:25       ` Sami Mujawar
2024-05-16 15:24   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 13/14] Platform/ARM/N1Sdp: Persistent storage for N1Sdp Sahil Kaushal
2024-04-24  9:55   ` levi.yun
2024-05-16 15:24   ` Sami Mujawar
2024-04-23  5:56 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 14/14] Platform/ARM/N1Sdp: Enable FaultTolerantWrite Dxe driver " Sahil Kaushal
2024-04-24  9:51   ` levi.yun
2024-05-16 15:24   ` Sami Mujawar
2024-05-02 13:16 ` [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 00/14] Split NorFlashDxe driver and add CadenceQspiNorFlashDeviceLib library PierreGondois

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=AM0PR08MB4289A58FC5E1708BF5F0CAECFB102@AM0PR08MB4289.eurprd08.prod.outlook.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