]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c
ArmPlatformPkg/ArmJunoLib: use declared PPI rather than module local var
[mirror_edk2.git] / ArmPlatformPkg / ArmJunoPkg / Library / ArmJunoLib / ArmJuno.c
CommitLineData
9f38945f
OM
1/** @file\r
2*\r
3* Copyright (c) 2013-2014, ARM Limited. All rights reserved.\r
4*\r
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 <Library/IoLib.h>\r
16#include <Library/ArmPlatformLib.h>\r
17#include <Library/DebugLib.h>\r
18#include <Library/PcdLib.h>\r
19\r
20#include <Ppi/ArmMpCoreInfo.h>\r
21\r
22#include <ArmPlatform.h>\r
23\r
24ARM_CORE_INFO mJunoInfoTable[] = {\r
25 {\r
26 // Cluster 0, Core 0\r
27 0x0, 0x0,\r
28\r
29 // MP Core MailBox Set/Get/Clear Addresses and Clear Value\r
30 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG,\r
31 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG,\r
32 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG,\r
33 (UINT64)0xFFFFFFFF\r
34 },\r
35 {\r
36 // Cluster 0, Core 1\r
37 0x0, 0x1,\r
38\r
39 // MP Core MailBox Set/Get/Clear Addresses and Clear Value\r
40 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG,\r
41 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG,\r
42 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG,\r
43 (UINT64)0xFFFFFFFF\r
44 },\r
45 {\r
46 // Cluster 1, Core 0\r
47 0x1, 0x0,\r
48\r
49 // MP Core MailBox Set/Get/Clear Addresses and Clear Value\r
50 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG,\r
51 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG,\r
52 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG,\r
53 (UINT64)0xFFFFFFFF\r
54 },\r
55 {\r
56 // Cluster 1, Core 1\r
57 0x1, 0x1,\r
58\r
59 // MP Core MailBox Set/Get/Clear Addresses and Clear Value\r
60 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG,\r
61 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG,\r
62 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG,\r
63 (UINT64)0xFFFFFFFF\r
64 },\r
65 {\r
66 // Cluster 1, Core 2\r
67 0x1, 0x2,\r
68\r
69 // MP Core MailBox Set/Get/Clear Addresses and Clear Value\r
70 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG,\r
71 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG,\r
72 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG,\r
73 (UINT64)0xFFFFFFFF\r
74 },\r
75 {\r
76 // Cluster 1, Core 3\r
77 0x1, 0x3,\r
78\r
79 // MP Core MailBox Set/Get/Clear Addresses and Clear Value\r
80 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG,\r
81 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG,\r
82 (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG,\r
83 (UINT64)0xFFFFFFFF\r
84 }\r
85};\r
86\r
87/**\r
88 Return the current Boot Mode\r
89\r
90 This function returns the boot reason on the platform\r
91\r
92 @return Return the current Boot Mode of the platform\r
93\r
94**/\r
95EFI_BOOT_MODE\r
96ArmPlatformGetBootMode (\r
97 VOID\r
98 )\r
99{\r
100 return BOOT_WITH_FULL_CONFIGURATION;\r
101}\r
102\r
103/**\r
104 Initialize controllers that must setup in the normal world\r
105\r
106 This function is called by the ArmPlatformPkg/Pei or ArmPlatformPkg/Pei/PlatformPeim\r
107 in the PEI phase.\r
108\r
109**/\r
110RETURN_STATUS\r
111ArmPlatformInitialize (\r
112 IN UINTN MpId\r
113 )\r
114{\r
115 return RETURN_SUCCESS;\r
116}\r
117\r
118/**\r
119 Initialize the system (or sometimes called permanent) memory\r
120\r
121 This memory is generally represented by the DRAM.\r
122\r
123**/\r
124VOID\r
125ArmPlatformInitializeSystemMemory (\r
126 VOID\r
127 )\r
128{\r
129}\r
130\r
131EFI_STATUS\r
132PrePeiCoreGetMpCoreInfo (\r
133 OUT UINTN *CoreCount,\r
134 OUT ARM_CORE_INFO **ArmCoreTable\r
135 )\r
136{\r
137 // Only support one cluster\r
138 *CoreCount = sizeof(mJunoInfoTable) / sizeof(ARM_CORE_INFO);\r
139 *ArmCoreTable = mJunoInfoTable;\r
140 return EFI_SUCCESS;\r
141}\r
142\r
9f38945f
OM
143ARM_MP_CORE_INFO_PPI mMpCoreInfoPpi = { PrePeiCoreGetMpCoreInfo };\r
144\r
145EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = {\r
146 {\r
147 EFI_PEI_PPI_DESCRIPTOR_PPI,\r
bb68296f 148 &gArmMpCoreInfoPpiGuid,\r
9f38945f
OM
149 &mMpCoreInfoPpi\r
150 }\r
151};\r
152\r
153VOID\r
154ArmPlatformGetPlatformPpiList (\r
155 OUT UINTN *PpiListSize,\r
156 OUT EFI_PEI_PPI_DESCRIPTOR **PpiList\r
157 )\r
158{\r
159 *PpiListSize = sizeof(gPlatformPpiTable);\r
160 *PpiList = gPlatformPpiTable;\r
161}\r