]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.c
ArmPlatformPkg: Renamed and Invoked earlier ArmPlatformNormalInitialize()
[mirror_edk2.git] / ArmPlatformPkg / Library / ArmPlatformLibNull / ArmPlatformLibNull.c
CommitLineData
12fcdcb8 1/** @file
2*
f437141a 3* Copyright (c) 2011-2012, ARM Limited. All rights reserved.
12fcdcb8 4*
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
9*
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.
12*
13**/
14
15#include <Library/ArmLib.h>
16#include <Library/ArmPlatformLib.h>
17
18#include <Ppi/ArmMpCoreInfo.h>
19
20
21ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = {
22 {
23 // Cluster 0, Core 0
24 0x0, 0x0,
25
26 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
27 (EFI_PHYSICAL_ADDRESS)0,
28 (EFI_PHYSICAL_ADDRESS)0,
29 (EFI_PHYSICAL_ADDRESS)0,
30 (UINT64)0xFFFFFFFF
31 },
32 {
33 // Cluster 0, Core 1
34 0x0, 0x1,
35
36 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
37 (EFI_PHYSICAL_ADDRESS)0,
38 (EFI_PHYSICAL_ADDRESS)0,
39 (EFI_PHYSICAL_ADDRESS)0,
40 (UINT64)0xFFFFFFFF
41 },
42 {
43 // Cluster 0, Core 2
44 0x0, 0x2,
45
46 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
47 (EFI_PHYSICAL_ADDRESS)0,
48 (EFI_PHYSICAL_ADDRESS)0,
49 (EFI_PHYSICAL_ADDRESS)0,
50 (UINT64)0xFFFFFFFF
51 },
52 {
53 // Cluster 0, Core 3
54 0x0, 0x3,
55
56 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
57 (EFI_PHYSICAL_ADDRESS)0,
58 (EFI_PHYSICAL_ADDRESS)0,
59 (EFI_PHYSICAL_ADDRESS)0,
60 (UINT64)0xFFFFFFFF
61 }
62};
63
64// This function should be better located into TimerLib implementation
65RETURN_STATUS
66EFIAPI
67TimerConstructor (
68 VOID
69 )
70{
71 return EFI_SUCCESS;
72}
73
12fcdcb8 74/**
75 Return the current Boot Mode
76
77 This function returns the boot reason on the platform
78
79**/
80EFI_BOOT_MODE
81ArmPlatformGetBootMode (
82 VOID
83 )
84{
85 return BOOT_WITH_FULL_CONFIGURATION;
86}
87
88/**
89 Initialize controllers that must setup in the normal world
90
91 This function is called by the ArmPlatformPkg/PrePi or ArmPlatformPkg/PlatformPei
92 in the PEI phase.
93
94**/
f437141a 95RETURN_STATUS
96ArmPlatformInitialize (
97 IN UINTN MpId
12fcdcb8 98 )
99{
f437141a 100 if (!IS_PRIMARY_CORE(MpId)) {
101 return RETURN_SUCCESS;
102 }
103
12fcdcb8 104 //TODO: Implement me
f437141a 105
106 return RETURN_SUCCESS;
12fcdcb8 107}
108
109/**
110 Initialize the system (or sometimes called permanent) memory
111
112 This memory is generally represented by the DRAM.
113
114**/
115VOID
116ArmPlatformInitializeSystemMemory (
117 VOID
118 )
119{
120 //TODO: Implement me
121}
122
123EFI_STATUS
124PrePeiCoreGetMpCoreInfo (
125 OUT UINTN *CoreCount,
126 OUT ARM_CORE_INFO **ArmCoreTable
127 )
128{
129 if (ArmIsMpCore()) {
130 *CoreCount = sizeof(mArmPlatformNullMpCoreInfoTable) / sizeof(ARM_CORE_INFO);
131 *ArmCoreTable = mArmPlatformNullMpCoreInfoTable;
132 return EFI_SUCCESS;
133 } else {
134 return EFI_UNSUPPORTED;
135 }
136}
137
138// Needs to be declared in the file. Otherwise gArmMpCoreInfoPpiGuid is undefined in the contect of PrePeiCore
139EFI_GUID mArmMpCoreInfoPpiGuid = ARM_MP_CORE_INFO_PPI_GUID;
140ARM_MP_CORE_INFO_PPI mMpCoreInfoPpi = { PrePeiCoreGetMpCoreInfo };
141
142EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = {
143 {
144 EFI_PEI_PPI_DESCRIPTOR_PPI,
145 &mArmMpCoreInfoPpiGuid,
146 &mMpCoreInfoPpi
147 }
148};
149
150VOID
151ArmPlatformGetPlatformPpiList (
152 OUT UINTN *PpiListSize,
153 OUT EFI_PEI_PPI_DESCRIPTOR **PpiList
154 )
155{
156 if (ArmIsMpCore()) {
157 *PpiListSize = sizeof(gPlatformPpiTable);
158 *PpiList = gPlatformPpiTable;
159 } else {
160 *PpiListSize = 0;
161 *PpiList = NULL;
162 }
163}
164