Browse Source

configs: Move efi variables storage from RAM to flash

Signed-off-by: Yuin Yee Chew <yuinyee.chew@starfivetech.com>
Yuin Yee Chew 10 months ago
parent
commit
802f5722f2

+ 37 - 2
Platform/StarFive/JH7110SeriesPkg/JH7110Board/JH7110.dsc

@@ -102,6 +102,7 @@
   FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
   VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf
   VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf
+  NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.inf
 
 # RISC-V Platform Library
   TimeBaseLib|EmbeddedPkg//Library/TimeBaseLib/TimeBaseLib.inf
@@ -370,6 +371,31 @@
   gDesignWareTokenSpaceGuid.PcdDwPermitObsoleteDrivers|TRUE
   gDesignWareTokenSpaceGuid.PcdDwEmmcDxeFifoDepth|32
 
+  #SPI
+  gJH7110TokenSpaceGuid.PcdSpiFlashRegBase|0x13010000
+  gJH7110TokenSpaceGuid.PcdSpiFlashAhbBase|0x21000000
+  gJH7110TokenSpaceGuid.PcdSpiFlashAhbSize|0x400000
+  gJH7110TokenSpaceGuid.PcdSpiFlashFifoDepth|256
+  gJH7110TokenSpaceGuid.PcdSpiFlashFifoWidth|4
+  gJH7110TokenSpaceGuid.PcdSpiFlashTrigAdd|0
+  gJH7110TokenSpaceGuid.PcdSpiFlashReadDelay|0xFFFF
+  gJH7110TokenSpaceGuid.PcdSpiFlashMaxHz|100000000
+  gJH7110TokenSpaceGuid.PcdSpiFlashRefClkHz|100000000
+  gJH7110TokenSpaceGuid.PcdSpiFlashTshslNs|1
+  gJH7110TokenSpaceGuid.PcdSpiFlashTsd2dNs|1
+  gJH7110TokenSpaceGuid.PcdSpiFlashTchshNs|1
+  gJH7110TokenSpaceGuid.PcdSpiFlashTslchNs|1
+
+  #
+  # Variable store - default values
+  #
+  gJH7110TokenSpaceGuid.PcdSpiMemoryMapped|FALSE
+  gJH7110TokenSpaceGuid.PcdSpiVariableOffset|0x00800000
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize|0x00010000
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize|0x00010000
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize|0x00010000
+
+
 ################################################################################
 #
 # Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
@@ -378,7 +404,9 @@
 
 [PcdsDynamicDefault]
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
-  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0x40800000
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|0x40810000
+  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|0x40820000
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
   gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE
@@ -468,7 +496,7 @@
   # RISC-V Platform module
   #
   Platform/StarFive/JH7110SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.inf
-  Platform/StarFive/JH7110SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
+  #Platform/StarFive/JH7110SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
 
   #
   # RISC-V Core module
@@ -570,6 +598,13 @@
   FatPkg/EnhancedFatDxe/Fat.inf
   MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
 
+  #
+  # QSPI Flash Support
+  #
+  Silicon/StarFive/JH7110/Driver/Spi/SpiDxe/SpiDxe.inf
+  Silicon/StarFive/JH7110/Driver/Spi/SpiFlashDxe/SpiFlashDxe.inf
+  Silicon/StarFive/JH7110/Driver/Spi/FvbDxe/FvbDxe.inf
+
   OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf {
     <PcdsFixedAtBuild>
       gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE

+ 11 - 2
Platform/StarFive/JH7110SeriesPkg/JH7110Board/JH7110.fdf

@@ -127,7 +127,10 @@ READ_LOCK_STATUS   = TRUE
 APRIORI DXE {
   INF  MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
   INF  MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
-  INF  Platform/StarFive/JH7110SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
+  #INF  Platform/StarFive/JH7110SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
+  INF Silicon/StarFive/JH7110/Driver/Spi/SpiDxe/SpiDxe.inf
+  INF Silicon/StarFive/JH7110/Driver/Spi/SpiFlashDxe/SpiFlashDxe.inf
+  INF Silicon/StarFive/JH7110/Driver/Spi/FvbDxe/FvbDxe.inf
 }
 
 #
@@ -146,7 +149,7 @@ INF  MdeModulePkg/Universal/Metronome/Metronome.inf
 INF  EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
 
 # RISC-V Platform Drivers
-INF  Platform/StarFive/JH7110SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
+#INF  Platform/StarFive/JH7110SeriesPkg/Universal/Dxe/RamFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
 
 # RISC-V Core Drivers
 INF  Platform/StarFive/JH7110SeriesPkg/Universal/Dxe/TimerDxe/TimerDxe.inf
@@ -231,6 +234,12 @@ INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
 
 INF  MdeModulePkg/Application/UiApp/UiApp.inf
 
+#
+# QSPI Flash Support
+#
+INF Silicon/StarFive/JH7110/Driver/Spi/SpiDxe/SpiDxe.inf
+INF Silicon/StarFive/JH7110/Driver/Spi/SpiFlashDxe/SpiFlashDxe.inf
+INF Silicon/StarFive/JH7110/Driver/Spi/FvbDxe/FvbDxe.inf
 ################################################################################
 
 [FV.FVMAIN_COMPACT]

+ 23 - 0
Silicon/StarFive/JH7110/JH7110.dec

@@ -26,3 +26,26 @@
   gJH7110TokenSpaceGuid.PcdJH7110PciCpuMmioAdr|0x0|UINT64|0x00000005
 
   gJH7110TokenSpaceGuid.PcdJH7110PciConfigRegBase|0x9c0000000|UINT64|0x00000006
+
+#SPI
+  gJH7110TokenSpaceGuid.PcdSpiFlashRegBase|0|UINT32|0x10000001
+  gJH7110TokenSpaceGuid.PcdSpiFlashAhbBase|0|UINT64|0x10000002
+  gJH7110TokenSpaceGuid.PcdSpiFlashAhbSize|0|UINT32|0x10000013
+  gJH7110TokenSpaceGuid.PcdSpiFlashFifoDepth|0|UINT16|0x10000003
+  gJH7110TokenSpaceGuid.PcdSpiFlashFifoWidth|0|UINT8|0x10000004
+  gJH7110TokenSpaceGuid.PcdSpiFlashTrigAdd|0|UINT32|0x10000005
+  gJH7110TokenSpaceGuid.PcdSpiFlashReadDelay|0xFFFF|UINT16|0x10000006
+  gJH7110TokenSpaceGuid.PcdSpiFlashMaxHz|0|UINT32|0x10000007
+  gJH7110TokenSpaceGuid.PcdSpiFlashRefClkHz|0|UINT32|0x10000008
+  gJH7110TokenSpaceGuid.PcdSpiFlashTshslNs|0|UINT32|0x10000009
+  gJH7110TokenSpaceGuid.PcdSpiFlashTsd2dNs|0|UINT32|0x10000010
+  gJH7110TokenSpaceGuid.PcdSpiFlashTchshNs|0|UINT32|0x10000011
+  gJH7110TokenSpaceGuid.PcdSpiFlashTslchNs|0|UINT32|0x10000012
+
+  gJH7110TokenSpaceGuid.PcdSpiMemoryMapped|TRUE|BOOLEAN|0x3000060
+  gJH7110TokenSpaceGuid.PcdSpiVariableOffset|0|UINT32|0x3000061
+
+[Protocols]
+  gJH7110SpiMasterProtocolGuid = { 0xA33C46E0, 0x4FB6, 0x4AA3, { 0x8E, 0x66, 0x00, 0x06, 0x9F, 0x3A, 0x11, 0x81 }}
+  gJH7110SpiFlashProtocolGuid  = { 0x5ECECDF6, 0x81DA, 0x4E10, { 0x9D, 0x4B, 0x26, 0x65, 0x8C, 0x03, 0xAB, 0xBC }}
+