]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.c
UefiPayloadPkg: Add PCI root bridge info hob support for SBL
[mirror_edk2.git] / ArmPlatformPkg / Library / ArmPlatformLibNull / ArmPlatformLibNull.c
1 /** @file
2
3 Copyright (c) 2011-2012, ARM Limited. All rights reserved.
4
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #include <Library/ArmLib.h>
10 #include <Library/ArmPlatformLib.h>
11
12 #include <Ppi/ArmMpCoreInfo.h>
13
14
15 ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = {
16 {
17 // Cluster 0, Core 0
18 0x0, 0x0,
19
20 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
21 (EFI_PHYSICAL_ADDRESS)0,
22 (EFI_PHYSICAL_ADDRESS)0,
23 (EFI_PHYSICAL_ADDRESS)0,
24 (UINT64)0xFFFFFFFF
25 },
26 {
27 // Cluster 0, Core 1
28 0x0, 0x1,
29
30 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
31 (EFI_PHYSICAL_ADDRESS)0,
32 (EFI_PHYSICAL_ADDRESS)0,
33 (EFI_PHYSICAL_ADDRESS)0,
34 (UINT64)0xFFFFFFFF
35 },
36 {
37 // Cluster 0, Core 2
38 0x0, 0x2,
39
40 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
41 (EFI_PHYSICAL_ADDRESS)0,
42 (EFI_PHYSICAL_ADDRESS)0,
43 (EFI_PHYSICAL_ADDRESS)0,
44 (UINT64)0xFFFFFFFF
45 },
46 {
47 // Cluster 0, Core 3
48 0x0, 0x3,
49
50 // MP Core MailBox Set/Get/Clear Addresses and Clear Value
51 (EFI_PHYSICAL_ADDRESS)0,
52 (EFI_PHYSICAL_ADDRESS)0,
53 (EFI_PHYSICAL_ADDRESS)0,
54 (UINT64)0xFFFFFFFF
55 }
56 };
57
58 // This function should be better located into TimerLib implementation
59 RETURN_STATUS
60 EFIAPI
61 TimerConstructor (
62 VOID
63 )
64 {
65 return EFI_SUCCESS;
66 }
67
68 /**
69 Return the current Boot Mode
70
71 This function returns the boot reason on the platform
72
73 **/
74 EFI_BOOT_MODE
75 ArmPlatformGetBootMode (
76 VOID
77 )
78 {
79 return BOOT_WITH_FULL_CONFIGURATION;
80 }
81
82 /**
83 Initialize controllers that must setup in the normal world
84
85 This function is called by the ArmPlatformPkg/PrePi or ArmPlatformPkg/PlatformPei
86 in the PEI phase.
87
88 **/
89 RETURN_STATUS
90 ArmPlatformInitialize (
91 IN UINTN MpId
92 )
93 {
94 if (!ArmPlatformIsPrimaryCore (MpId)) {
95 return RETURN_SUCCESS;
96 }
97
98 //TODO: Implement me
99
100 return RETURN_SUCCESS;
101 }
102
103 EFI_STATUS
104 PrePeiCoreGetMpCoreInfo (
105 OUT UINTN *CoreCount,
106 OUT ARM_CORE_INFO **ArmCoreTable
107 )
108 {
109 if (ArmIsMpCore()) {
110 *CoreCount = sizeof(mArmPlatformNullMpCoreInfoTable) / sizeof(ARM_CORE_INFO);
111 *ArmCoreTable = mArmPlatformNullMpCoreInfoTable;
112 return EFI_SUCCESS;
113 } else {
114 return EFI_UNSUPPORTED;
115 }
116 }
117
118 ARM_MP_CORE_INFO_PPI mMpCoreInfoPpi = { PrePeiCoreGetMpCoreInfo };
119
120 EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = {
121 {
122 EFI_PEI_PPI_DESCRIPTOR_PPI,
123 &gArmMpCoreInfoPpiGuid,
124 &mMpCoreInfoPpi
125 }
126 };
127
128 VOID
129 ArmPlatformGetPlatformPpiList (
130 OUT UINTN *PpiListSize,
131 OUT EFI_PEI_PPI_DESCRIPTOR **PpiList
132 )
133 {
134 if (ArmIsMpCore()) {
135 *PpiListSize = sizeof(gPlatformPpiTable);
136 *PpiList = gPlatformPpiTable;
137 } else {
138 *PpiListSize = 0;
139 *PpiList = NULL;
140 }
141 }
142