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