]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpress.c
ARM Packages: Fixed missing braces (the warning was disabled by GCC)
[mirror_edk2.git] / ArmPlatformPkg / ArmVExpressPkg / Library / NorFlashArmVExpressLib / NorFlashArmVExpress.c
CommitLineData
d5e12da4 1/** @file\r
2\r
b0fdce95 3 Copyright (c) 2011-2014, ARM Ltd. All rights reserved.<BR>\r
68dda854 4\r
d5e12da4 5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13 **/\r
14\r
15#include <PiDxe.h>\r
16#include <Library/DebugLib.h>\r
17#include <Library/IoLib.h>\r
18#include <Library/NorFlashPlatformLib.h>\r
19#include <ArmPlatform.h>\r
20\r
21#define NOR_FLASH_DEVICE_COUNT 4\r
22\r
23NOR_FLASH_DESCRIPTION mNorFlashDevices[NOR_FLASH_DEVICE_COUNT] = {\r
24 { // BootMon\r
68dda854 25 ARM_VE_SMB_NOR0_BASE,\r
d5e12da4 26 ARM_VE_SMB_NOR0_BASE,\r
27 SIZE_256KB * 255,\r
28 SIZE_256KB,\r
b0fdce95 29 { 0xE7223039, 0x5836, 0x41E1, { 0xB5, 0x42, 0xD7, 0xEC, 0x73, 0x6C, 0x5E, 0x59 } }\r
d5e12da4 30 },\r
31 { // BootMon non-volatile storage\r
68dda854 32 ARM_VE_SMB_NOR0_BASE,\r
d5e12da4 33 ARM_VE_SMB_NOR0_BASE + SIZE_256KB * 255,\r
34 SIZE_64KB * 4,\r
35 SIZE_64KB,\r
b0fdce95 36 { 0x02118005, 0x9DA7, 0x443A, { 0x92, 0xD5, 0x78, 0x1F, 0x02, 0x2A, 0xED, 0xBB } }\r
d5e12da4 37 },\r
38 { // UEFI\r
68dda854 39 ARM_VE_SMB_NOR1_BASE,\r
d5e12da4 40 ARM_VE_SMB_NOR1_BASE,\r
41 SIZE_256KB * 255,\r
42 SIZE_256KB,\r
b0fdce95 43 { 0x1F15DA3C, 0x37FF, 0x4070, { 0xB4, 0x71, 0xBB, 0x4A, 0xF1, 0x2A, 0x72, 0x4A } }\r
d5e12da4 44 },\r
45 { // UEFI Variable Services non-volatile storage\r
68dda854 46 ARM_VE_SMB_NOR1_BASE,\r
d5e12da4 47 ARM_VE_SMB_NOR1_BASE + SIZE_256KB * 255,\r
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\r
49 SIZE_64KB,\r
b0fdce95 50 { 0xCC2CBF29, 0x1498, 0x4CDD, { 0x81, 0x71, 0xF8, 0xB6, 0xB4, 0x1D, 0x09, 0x09 } }\r
d5e12da4 51 }\r
52};\r
53\r
54EFI_STATUS\r
55NorFlashPlatformInitialization (\r
56 VOID\r
57 )\r
58{\r
59 // Everything seems ok so far, so now we need to disable the platform-specific\r
60 // flash write protection for Versatile Express\r
61 if ((MmioRead32 (ARM_VE_SYS_FLASH) & 0x1) == 0) {\r
62 // Writing to NOR FLASH is disabled, so enable it\r
63 MmioWrite32 (ARM_VE_SYS_FLASH,1);\r
64 DEBUG((DEBUG_BLKIO, "NorFlashWriteBlocks: informational - Had to enable HSYS_FLASH flag.\n" ));\r
65 }\r
66\r
67 return EFI_SUCCESS;\r
68}\r
69\r
70EFI_STATUS\r
71NorFlashPlatformGetDevices (\r
72 OUT NOR_FLASH_DESCRIPTION **NorFlashDevices,\r
73 OUT UINT32 *Count\r
74 )\r
75{\r
76 if ((NorFlashDevices == NULL) || (Count == NULL)) {\r
77 return EFI_INVALID_PARAMETER;\r
78 }\r
79\r
80 *NorFlashDevices = mNorFlashDevices;\r
81 *Count = NOR_FLASH_DEVICE_COUNT;\r
82\r
83 return EFI_SUCCESS;\r
84}\r