1 /** @file
2 *
3 *  Copyright (c) 2011, ARM Limited. All rights reserved.
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 #ifndef __ARM_MP_CORE_INFO_GUID_H_
16 #define __ARM_MP_CORE_INFO_GUID_H_
17 
18 #define MAX_CPUS_PER_MPCORE_SYSTEM    0x04
19 #define SCU_CONFIG_REG_OFFSET         0x04
20 #define MPIDR_U_BIT_MASK              0x40000000
21 
22 typedef struct {
23   UINT32                ClusterId;
24   UINT32                CoreId;
25 
26   // MP Core Mailbox
27   EFI_PHYSICAL_ADDRESS  MailboxSetAddress;
28   EFI_PHYSICAL_ADDRESS  MailboxGetAddress;
29   EFI_PHYSICAL_ADDRESS  MailboxClearAddress;
30   UINT64                MailboxClearValue;
31 } ARM_CORE_INFO;
32 
33 typedef struct{
34         UINT64   Signature;
35         UINT32   Length;
36         UINT32   Revision;
37         UINT64   OemId;
38         UINT64   OemTableId;
39         UINTN    OemRevision;
40         UINTN    CreatorId;
41         UINTN    CreatorRevision;
42         EFI_GUID Identifier;
43         UINTN    DataLen;
44 } ARM_PROCESSOR_TABLE_HEADER;
45 
46 typedef struct {
47         ARM_PROCESSOR_TABLE_HEADER   Header;
48         UINTN                        NumberOfEntries;
49         ARM_CORE_INFO                *ArmCpus;
50 } ARM_PROCESSOR_TABLE;
51 
52 
53 #define ARM_MP_CORE_INFO_GUID \
54   { 0xa4ee0728, 0xe5d7, 0x4ac5,  {0xb2, 0x1e, 0x65, 0x8e, 0xd8, 0x57, 0xe8, 0x34} }
55 
56 #define EFI_ARM_PROCESSOR_TABLE_SIGNATURE        SIGNATURE_64 ('C', 'P', 'U', 'T', 'A', 'B', 'L', 'E')
57 #define EFI_ARM_PROCESSOR_TABLE_REVISION         0x00010000 //1.0
58 #define EFI_ARM_PROCESSOR_TABLE_OEM_ID           SIGNATURE_64('A','R','M',' ', 'L', 't', 'd', ' ')
59 #define EFI_ARM_PROCESSOR_TABLE_OEM_TABLE_ID     SIGNATURE_64('V', 'E', 'R', 'S', 'A', 'T', 'I', 'L')
60 #define EFI_ARM_PROCESSOR_TABLE_OEM_REVISION     0x00000001
61 #define EFI_ARM_PROCESSOR_TABLE_CREATOR_ID       0xA5A5A5A5
62 #define EFI_ARM_PROCESSOR_TABLE_CREATOR_REVISION 0x01000001
63 
64 extern EFI_GUID gArmMpCoreInfoGuid;
65 
66 #endif /* MPCOREINFO_H_ */
67