3 Copyright (c) 2011-2012, ARM Ltd. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #include <Library/DebugLib.h>
17 #include <Library/IoLib.h>
18 #include <Library/NorFlashPlatformLib.h>
19 #include <ArmPlatform.h>
21 #define NOR_FLASH_DEVICE_COUNT 4
23 NOR_FLASH_DESCRIPTION mNorFlashDevices
[NOR_FLASH_DEVICE_COUNT
] = {
29 {0xE7223039, 0x5836, 0x41E1, 0xB5, 0x42, 0xD7, 0xEC, 0x73, 0x6C, 0x5E, 0x59}
31 { // BootMon non-volatile storage
33 ARM_VE_SMB_NOR0_BASE
+ SIZE_256KB
* 255,
36 {0x02118005, 0x9DA7, 0x443A, 0x92, 0xD5, 0x78, 0x1F, 0x02, 0x2A, 0xED, 0xBB}
43 {0x1F15DA3C, 0x37FF, 0x4070, 0xB4, 0x71, 0xBB, 0x4A, 0xF1, 0x2A, 0x72, 0x4A}
45 { // UEFI Variable Services non-volatile storage
47 ARM_VE_SMB_NOR1_BASE
+ SIZE_256KB
* 255,
48 SIZE_64KB
* 3, //FIXME: Set 3 blocks because I did not succeed to copy 4 blocks into the ARM Versatile Express NOR Flash in the last NOR Flash. It should be 4 blocks
50 {0xCC2CBF29, 0x1498, 0x4CDD, 0x81, 0x71, 0xF8, 0xB6, 0xB4, 0x1D, 0x09, 0x09}
55 NorFlashPlatformInitialization (
59 // Everything seems ok so far, so now we need to disable the platform-specific
60 // flash write protection for Versatile Express
61 if ((MmioRead32 (ARM_VE_SYS_FLASH
) & 0x1) == 0) {
62 // Writing to NOR FLASH is disabled, so enable it
63 MmioWrite32 (ARM_VE_SYS_FLASH
,1);
64 DEBUG((DEBUG_BLKIO
, "NorFlashWriteBlocks: informational - Had to enable HSYS_FLASH flag.\n" ));
71 NorFlashPlatformGetDevices (
72 OUT NOR_FLASH_DESCRIPTION
**NorFlashDevices
,
76 if ((NorFlashDevices
== NULL
) || (Count
== NULL
)) {
77 return EFI_INVALID_PARAMETER
;
80 *NorFlashDevices
= mNorFlashDevices
;
81 *Count
= NOR_FLASH_DEVICE_COUNT
;