]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpress.c
4171aae865bfe809f215f181b884fe459d31b184
[mirror_edk2.git] / ArmPlatformPkg / ArmVExpressPkg / Library / NorFlashArmVExpressLib / NorFlashArmVExpress.c
1 /** @file
2
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
8
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.
11
12 **/
13
14 #include <PiDxe.h>
15 #include <Library/DebugLib.h>
16 #include <Library/IoLib.h>
17 #include <Library/NorFlashPlatformLib.h>
18 #include <ArmPlatform.h>
19
20 #define NOR_FLASH_DEVICE_COUNT 4
21
22 NOR_FLASH_DESCRIPTION mNorFlashDevices[NOR_FLASH_DEVICE_COUNT] = {
23 { // BootMon
24 ARM_VE_SMB_NOR0_BASE,
25 SIZE_256KB * 255,
26 SIZE_256KB,
27 {0xE7223039, 0x5836, 0x41E1, 0xB5, 0x42, 0xD7, 0xEC, 0x73, 0x6C, 0x5E, 0x59}
28 },
29 { // BootMon non-volatile storage
30 ARM_VE_SMB_NOR0_BASE + SIZE_256KB * 255,
31 SIZE_64KB * 4,
32 SIZE_64KB,
33 {0x02118005, 0x9DA7, 0x443A, 0x92, 0xD5, 0x78, 0x1F, 0x02, 0x2A, 0xED, 0xBB}
34 },
35 { // UEFI
36 ARM_VE_SMB_NOR1_BASE,
37 SIZE_256KB * 255,
38 SIZE_256KB,
39 {0x1F15DA3C, 0x37FF, 0x4070, 0xB4, 0x71, 0xBB, 0x4A, 0xF1, 0x2A, 0x72, 0x4A}
40 },
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
44 SIZE_64KB,
45 {0xCC2CBF29, 0x1498, 0x4CDD, 0x81, 0x71, 0xF8, 0xB6, 0xB4, 0x1D, 0x09, 0x09}
46 }
47 };
48
49 EFI_STATUS
50 NorFlashPlatformInitialization (
51 VOID
52 )
53 {
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" ));
60 }
61
62 return EFI_SUCCESS;
63 }
64
65 EFI_STATUS
66 NorFlashPlatformGetDevices (
67 OUT NOR_FLASH_DESCRIPTION **NorFlashDevices,
68 OUT UINT32 *Count
69 )
70 {
71 if ((NorFlashDevices == NULL) || (Count == NULL)) {
72 return EFI_INVALID_PARAMETER;
73 }
74
75 *NorFlashDevices = mNorFlashDevices;
76 *Count = NOR_FLASH_DEVICE_COUNT;
77
78 return EFI_SUCCESS;
79 }