summaryrefslogtreecommitdiff
path: root/DynamicTablesPkg/Include/LoongArch64NameSpaceObjects.h
blob: f017ae630a1a862cd0c9d62511ff16a6840e4338 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/** @file

  Copyright (c) 2026, Loongson Technology Corporation Limited. All rights reserved.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

  @par Glossary:
    - Cm or CM   - Configuration Manager
    - Obj or OBJ - Object
**/

#pragma once

#include <AcpiObjects.h>
#include <StandardNameSpaceObjects.h>

#pragma pack(1)

/** The ELOONGARCH64_OBJECT_ID enum describes the Object IDs
    in the LoongArch64 Namespace.
*/
typedef enum LoongArch64ObjectID {
  ELoongArch64ObjReserved,     ///< 0 - Reserved
  ELoongArch64ObjMadtInfo,     ///< 1 - MADT table information
  ELoongArch64ObjCorePicInfo,  ///< 2 - Core Programmable Interrupt Controller Info
  ELoongArch64ObjLioPicInfo,   ///< 3 - Legacy I/O Programmable Interrupt Controller Info
  ELoongArch64ObjHtPicInfo,    ///< 4 - HyperTransport Programmable Interrupt Controller Info
  ELoongArch64ObjEioPicInfo,   ///< 5 - Extend I/O Programmable Interrupt Controller Info
  ELoongArch64ObjMsiPicInfo,   ///< 6 - MSI Programmable Interrupt Controller Info
  ELoongArch64ObjBioPicInfo,   ///< 7 - Bridge I/O Programmable Interrupt Controller Info
  ELoongArch64ObjLpcPicInfo,   ///< 8 - Low Pin Count Programmable Interrupt Controller Info
  ELoongArch64ObjMax
} ELOONGARCH64_OBJECT_ID;

/** A structure that describes MADT table-wide LoongArch64 information.

    ID: ELoongArch64ObjMadtInfo
*/
typedef struct CmLoongArch64MadtInfo {
  /// Address of the local interrupt controller.
  UINT32    LocalApicAddress;

  /// MADT flags.
  UINT32    Flags;
} CM_LOONGARCH64_MADT_INFO;

/** A structure that describes a Core PIC.

    ID: ELoongArch64ObjCorePicInfo
*/
typedef struct CmLoongArch64CorePicInfo {
  /// PIC structure version. Currently, ACPI defines only version 1.
  UINT8     Version;

  /// ACPI processor UID matching the processor device's _UID.
  UINT32    AcpiProcessorUid;

  /// Physical processor ID. MAX_UINT32 is only valid for a disabled processor.
  UINT32    CoreId;

  /// CORE PIC flags. BIT0 is Enabled; all other bits are reserved.
  UINT32    Flags;
} CM_LOONGARCH64_CORE_PIC_INFO;

/** A structure that describes a LIO PIC.

    ID: ELoongArch64ObjLioPicInfo
*/
typedef struct CmLoongArch64LioPicInfo {
  /// PIC structure version. Currently, ACPI defines only version 1.
  UINT8     Version;

  /// Base address
  UINT64    Address;

  /// Register space size
  UINT16    Size;

  /// Cascade vector
  UINT8     Cascade[2];

  /// Cascade map
  UINT32    CascadeMap[2];
} CM_LOONGARCH64_LIO_PIC_INFO;

/** A structure that describes a HT PIC.

    ID: ELoongArch64ObjHtPicInfo
*/
typedef struct CmLoongArch64HtPicInfo {
  /// PIC structure version. Currently, ACPI defines only version 1.
  UINT8     Version;

  /// Base address
  UINT64    Address;

  /// Register space size
  UINT16    Size;

  /// Cascade vector
  UINT8     Cascade[8];
} CM_LOONGARCH64_HT_PIC_INFO;

/** A structure that describes an EIO PIC.

    ID: ELoongArch64ObjEioPicInfo
*/
typedef struct CmLoongArch64EioPicInfo {
  /// PIC structure version. Currently, ACPI defines only version 1.
  UINT8     Version;

  /// Cascade vector
  UINT8     Cascade;

  /// Node ID
  UINT8     Node;

  /// Node map
  UINT64    NodeMap;
} CM_LOONGARCH64_EIO_PIC_INFO;

/** A structure that describes a MSI PIC.

    ID: ELoongArch64ObjMsiPicInfo
*/
typedef struct CmLoongArch64MsiPicInfo {
  /// PIC structure version. Currently, ACPI defines only version 1.
  UINT8     Version;

  /// MSI message address
  UINT64    MsgAddress;

  /// MSI vector base
  UINT32    Start;

  /// MSI vector count
  UINT32    Count;
} CM_LOONGARCH64_MSI_PIC_INFO;

/** A structure that describes a BIO PIC.

    ID: ELoongArch64ObjBioPicInfo
*/
typedef struct CmLoongArch64BioPicInfo {
  /// PIC structure version. Currently, ACPI defines only version 1.
  UINT8     Version;

  /// Base address
  UINT64    Address;

  /// Register space size
  UINT16    Size;

  /// Controller ID
  UINT16    Id;

  /// GSI base
  UINT16    GsiBase;
} CM_LOONGARCH64_BIO_PIC_INFO;

/** A structure that describes a LPC PIC.

    ID: ELoongArch64ObjLpcPicInfo
*/
typedef struct CmLoongArch64LpcPicInfo {
  /// PIC structure version. Currently, ACPI defines only version 1.
  UINT8     Version;

  /// Base address
  UINT64    Address;

  /// Register space size
  UINT16    Size;

  /// Cascade vector
  UINT8     Cascade;
} CM_LOONGARCH64_LPC_PIC_INFO;

#pragma pack()