public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Sahil Kaushal" <sahil.kaushal@arm.com>
To: devel@edk2.groups.io
Cc: "Ard Biesheuvel" <ardb+tianocore@kernel.org>,
	"Leif Lindholm  " <quic_llindhol@quicinc.com>,
	"Sami Mujawar" <sami.mujawar@arm.com>, "sahil  " <sahil@arm.com>
Subject: [edk2-devel] [edk2-platforms][PATCH V3 00/17] Split NorFlashDxe driver and add CadenceQspiNorFlashDeviceLib library
Date: Thu, 23 May 2024 16:24:54 +0530	[thread overview]
Message-ID: <20240523105511.13189-1-Sahil.Kaushal@arm.com> (raw)

From: sahil <sahil@arm.com>

This patch series adds the following changes:

1. Splits the NorFlashDxe driver to introduce a NorFlashDeviceLib that
implements the specifics for the respective flash. This will allow us
to plug different libraries implementing functionality of various NOR
Flash. The flash specific code in NorFlashDxe has been moved to
P30NorFlashDeviceLib library.

2. Adds support for CadenceQspiNorFlashDeviceLib which is used by N1Sdp
platform along with NorFlashDxe driver. N1Sdp uses an emulated variable
storage on DDR memory for the variable storage. But this emulated
variable storage is a volatile memory and so the values of variables
can't persist on next reboot or in power cycle. In N1Sdp platform, the
SoC is connected to IOFPGA which has a Cadence Quad SPI (QSPI)
controller. This QSPI controller manages the flash chip device via QSPI
bus. With these changes we use this NOR flash device for persistent
variable storage.

3. Fixes memory leak in NorFlashCreateInstance() function.

v3:
  - Fixed code review comments
  - Added 3 new patches for the following:
    - Fix memory leak in NorFlashCreateInstance()
    - Make local functions STATIC in NorFlashDxe
    - Remove unimplemented functions from NorFlash.h

v2:
  - Fixed code review comments
  - Split the NorFlashDxe driver and moved flash specific code to
    P30NorFlashDeviceLib
  - Added NOR flash Dxe Driver for N1Sdp as a library instead of a
    driver

Link to branch with the patches in this series -
https://github.com/sah01Kaushal/edk2-platforms/tree/n1sdp_persistent_storage_v3

Links to v2:
https://edk2.groups.io/g/devel/topic/105690949
https://edk2.groups.io/g/devel/topic/105690948
https://edk2.groups.io/g/devel/topic/105690947
https://edk2.groups.io/g/devel/topic/105690946
https://edk2.groups.io/g/devel/topic/105690945
https://edk2.groups.io/g/devel/topic/105690944
https://edk2.groups.io/g/devel/topic/105690943
https://edk2.groups.io/g/devel/topic/105690942
https://edk2.groups.io/g/devel/topic/105690941
https://edk2.groups.io/g/devel/topic/105690940
https://edk2.groups.io/g/devel/topic/105690939
https://edk2.groups.io/g/devel/topic/105690938
https://edk2.groups.io/g/devel/topic/105690937
https://edk2.groups.io/g/devel/topic/105690936
https://edk2.groups.io/g/devel/topic/105690935

https://github.com/sah01Kaushal/edk2-platforms/tree/n1sdp_persistent_storage_v2

Links to v1:
https://edk2.groups.io/g/devel/topic/102625035
https://edk2.groups.io/g/devel/topic/102625033
https://edk2.groups.io/g/devel/topic/102625034
https://edk2.groups.io/g/devel/topic/102625036
https://edk2.groups.io/g/devel/topic/102625037
https://edk2.groups.io/g/devel/topic/102625038

sahil (17):
  Platform/ARM/NorFlashDxe: Move DiskIo related functions out of
    NorFlash.c
  Platform/ARM/NorFlashDxe: Move NorFlashVirtualNotifyEvent
  Platform/ARM/NorFlashDxe: Add NorFlashCommon.h header file
  Platform/ARM/NorFlashDxe: Move flash specific functions to NorFlash.c
  Platform/ARM/NorFlashDxe: Remove unimplemented functions from
    NorFlash.h
  Platform/ARM/NorFlashDxe: Make local functions STATIC
  Platform/ARM: Create NorFlashDeviceLib library interface for flash
    specific functions
  Platform/ARM: Add P30NorFlashDeviceLib Library
  Platform/ARM/NorFlashDxe: Switch from NorFlash.c to NorFlashDeviceLib
  Platform/ARM: Add HostControllerBaseAddress variable
  Platform/ARM/NorFlashDxe: Fix memory leak in NorFlashCreateInstance()
  Platform/ARM: Add optional provision to fetch and print NOR Flash info
  Silicon/ARM/NeoverseN1Soc: Enable SCP QSPI flash region
  Silicon/ARM/NeoverseN1Soc: NOR flash library for N1Sdp
  Platform/ARM: Add CadenceQspiNorFlashDeviceLib for NorFlashDxe
  Platform/ARM/N1Sdp: Persistent storage for N1Sdp
  Platform/ARM/N1Sdp: Enable FaultTolerantWrite Dxe driver for N1Sdp

 Platform/ARM/ARM.dec                                                                                 |    4 +
 Platform/ARM/SgiPkg/SgiPlatform.dsc.inc                                                              |    3 +
 Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc                                                            |    3 +
 Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc                                                         |    3 +
 Platform/ARM/JunoPkg/ArmJuno.dsc                                                                     |    3 +
 Platform/ARM/N1Sdp/N1SdpPlatform.dsc                                                                 |   24 +-
 Platform/ARM/VExpressPkg/PlatformStandaloneMm.dsc                                                    |    3 +
 Platform/ARM/N1Sdp/N1SdpPlatform.fdf                                                                 |    3 +
 Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf                                                     |    8 +-
 Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf                                            |    8 +-
 Platform/ARM/Library/CadenceQspiNorFlashDeviceLib/CadenceQspiNorFlashDeviceLib.inf                   |   32 +
 Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.inf                                   |   35 +
 Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf                                        |   35 +
 Platform/ARM/Drivers/NorFlashDxe/NorFlash.h                                                          |  422 --------
 Platform/ARM/Drivers/NorFlashDxe/NorFlashCommon.h                                                    |  209 ++++
 Platform/ARM/Include/Library/NorFlashDeviceLib.h                                                     |  256 +++++
 Platform/ARM/Library/CadenceQspiNorFlashDeviceLib/CadenceQspiNorFlashDeviceLib.h                     |   46 +
 Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.h                                     |   98 ++
 Silicon/ARM/NeoverseN1Soc/Include/NeoverseN1Soc.h                                                    |    8 +
 Platform/ARM/Drivers/NorFlashDxe/NorFlashBlockIoDxe.c                                                |  131 ++-
 Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c                                                       |  303 +++---
 Platform/ARM/Drivers/NorFlashDxe/NorFlashFvb.c                                                       |    2 +-
 Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c                                              |  196 ++--
 Platform/ARM/Library/CadenceQspiNorFlashDeviceLib/CadenceQspiNorFlashDeviceLib.c                     | 1034 ++++++++++++++++++++
 Platform/ARM/{Drivers/NorFlashDxe/NorFlash.c => Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.c} |  306 +++---
 Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c                                          |   80 ++
 Silicon/ARM/NeoverseN1Soc/Library/PlatformLib/PlatformLibMem.c                                       |    8 +-
 27 files changed, 2369 insertions(+), 894 deletions(-)
 create mode 100644 Platform/ARM/Library/CadenceQspiNorFlashDeviceLib/CadenceQspiNorFlashDeviceLib.inf
 create mode 100644 Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.inf
 create mode 100644 Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.inf
 delete mode 100644 Platform/ARM/Drivers/NorFlashDxe/NorFlash.h
 create mode 100644 Platform/ARM/Drivers/NorFlashDxe/NorFlashCommon.h
 create mode 100644 Platform/ARM/Include/Library/NorFlashDeviceLib.h
 create mode 100644 Platform/ARM/Library/CadenceQspiNorFlashDeviceLib/CadenceQspiNorFlashDeviceLib.h
 create mode 100644 Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.h
 create mode 100644 Platform/ARM/Library/CadenceQspiNorFlashDeviceLib/CadenceQspiNorFlashDeviceLib.c
 rename Platform/ARM/{Drivers/NorFlashDxe/NorFlash.c => Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.c} (77%)
 create mode 100644 Silicon/ARM/NeoverseN1Soc/Library/NorFlashLib/NorFlashLib.c

-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#119142): https://edk2.groups.io/g/devel/message/119142
Mute This Topic: https://groups.io/mt/106260137/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



             reply	other threads:[~2024-05-23 10:55 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-23 10:54 Sahil Kaushal [this message]
2024-05-23 10:54 ` [edk2-devel] [edk2-platforms][PATCH V3 01/17] Platform/ARM/NorFlashDxe: Move DiskIo related functions out of NorFlash.c Sahil Kaushal
2024-05-23 15:39   ` Sami Mujawar
2024-05-23 10:54 ` [edk2-devel] [edk2-platforms][PATCH V3 02/17] Platform/ARM/NorFlashDxe: Move NorFlashVirtualNotifyEvent Sahil Kaushal
2024-05-23 10:54 ` [edk2-devel] [edk2-platforms][PATCH V3 03/17] Platform/ARM/NorFlashDxe: Add NorFlashCommon.h header file Sahil Kaushal
2024-05-23 10:54 ` [edk2-devel] [edk2-platforms][PATCH V3 04/17] Platform/ARM/NorFlashDxe: Move flash specific functions to NorFlash.c Sahil Kaushal
2024-05-23 10:54 ` [edk2-devel] [edk2-platforms][PATCH V3 05/17] Platform/ARM/NorFlashDxe: Remove unimplemented functions from NorFlash.h Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 06/17] Platform/ARM/NorFlashDxe: Make local functions STATIC Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 07/17] Platform/ARM: Create NorFlashDeviceLib library interface for flash specific functions Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 08/17] Platform/ARM: Add P30NorFlashDeviceLib Library Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 09/17] Platform/ARM/NorFlashDxe: Switch from NorFlash.c to NorFlashDeviceLib Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 10/17] Platform/ARM: Add HostControllerBaseAddress variable Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 11/17] Platform/ARM/NorFlashDxe: Fix memory leak in NorFlashCreateInstance() Sahil Kaushal
2024-05-23 15:24   ` Sami Mujawar
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 12/17] Platform/ARM: Add optional provision to fetch and print NOR Flash info Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 13/17] Silicon/ARM/NeoverseN1Soc: Enable SCP QSPI flash region Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 14/17] Silicon/ARM/NeoverseN1Soc: NOR flash library for N1Sdp Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 15/17] Platform/ARM: Add CadenceQspiNorFlashDeviceLib for NorFlashDxe Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 16/17] Platform/ARM/N1Sdp: Persistent storage for N1Sdp Sahil Kaushal
2024-05-23 10:55 ` [edk2-devel] [edk2-platforms][PATCH V3 17/17] Platform/ARM/N1Sdp: Enable FaultTolerantWrite Dxe driver " Sahil Kaushal

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=20240523105511.13189-1-Sahil.Kaushal@arm.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