]> git.proxmox.com Git - mirror_edk2.git/blame - DynamicTablesPkg/Include/ArmNameSpaceObjects.h
DynamicTablesPkg: Fix issues reported by EDKII CI
[mirror_edk2.git] / DynamicTablesPkg / Include / ArmNameSpaceObjects.h
CommitLineData
26147c77
SM
1/** @file\r
2\r
e3f8605a 3 Copyright (c) 2017 - 2020, ARM Limited. All rights reserved.\r
26147c77 4\r
9cd9bdc6 5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
26147c77
SM
6\r
7 @par Glossary:\r
8 - Cm or CM - Configuration Manager\r
9 - Obj or OBJ - Object\r
10 - Std or STD - Standard\r
11**/\r
12\r
13#ifndef ARM_NAMESPACE_OBJECTS_H_\r
14#define ARM_NAMESPACE_OBJECTS_H_\r
15\r
16#include <StandardNameSpaceObjects.h>\r
17\r
18#pragma pack(1)\r
19\r
20/** The EARM_OBJECT_ID enum describes the Object IDs\r
21 in the ARM Namespace\r
22*/\r
23typedef enum ArmObjectID {\r
f413d9be
SM
24 EArmObjReserved, ///< 0 - Reserved\r
25 EArmObjBootArchInfo, ///< 1 - Boot Architecture Info\r
26 EArmObjCpuInfo, ///< 2 - CPU Info\r
27 EArmObjPowerManagementProfileInfo, ///< 3 - Power Management Profile Info\r
28 EArmObjGicCInfo, ///< 4 - GIC CPU Interface Info\r
29 EArmObjGicDInfo, ///< 5 - GIC Distributor Info\r
30 EArmObjGicMsiFrameInfo, ///< 6 - GIC MSI Frame Info\r
31 EArmObjGicRedistributorInfo, ///< 7 - GIC Redistributor Info\r
32 EArmObjGicItsInfo, ///< 8 - GIC ITS Info\r
33 EArmObjSerialConsolePortInfo, ///< 9 - Serial Console Port Info\r
34 EArmObjSerialDebugPortInfo, ///< 10 - Serial Debug Port Info\r
35 EArmObjGenericTimerInfo, ///< 11 - Generic Timer Info\r
36 EArmObjPlatformGTBlockInfo, ///< 12 - Platform GT Block Info\r
37 EArmObjGTBlockTimerFrameInfo, ///< 13 - Generic Timer Block Frame Info\r
38 EArmObjPlatformGenericWatchdogInfo, ///< 14 - Platform Generic Watchdog\r
39 EArmObjPciConfigSpaceInfo, ///< 15 - PCI Configuration Space Info\r
40 EArmObjHypervisorVendorIdentity, ///< 16 - Hypervisor Vendor Id\r
41 EArmObjFixedFeatureFlags, ///< 17 - Fixed feature flags for FADT\r
42 EArmObjItsGroup, ///< 18 - ITS Group\r
43 EArmObjNamedComponent, ///< 19 - Named Component\r
44 EArmObjRootComplex, ///< 20 - Root Complex\r
45 EArmObjSmmuV1SmmuV2, ///< 21 - SMMUv1 or SMMUv2\r
46 EArmObjSmmuV3, ///< 22 - SMMUv3\r
47 EArmObjPmcg, ///< 23 - PMCG\r
48 EArmObjGicItsIdentifierArray, ///< 24 - GIC ITS Identifier Array\r
49 EArmObjIdMappingArray, ///< 25 - ID Mapping Array\r
50 EArmObjSmmuInterruptArray, ///< 26 - SMMU Interrupt Array\r
51 EArmObjProcHierarchyInfo, ///< 27 - Processor Hierarchy Info\r
52 EArmObjCacheInfo, ///< 28 - Cache Info\r
53 EArmObjProcNodeIdInfo, ///< 29 - Processor Node ID Info\r
54 EArmObjCmRef, ///< 30 - CM Object Reference\r
55 EArmObjMemoryAffinityInfo, ///< 31 - Memory Affinity Info\r
56 EArmObjDeviceHandleAcpi, ///< 32 - Device Handle Acpi\r
57 EArmObjDeviceHandlePci, ///< 33 - Device Handle Pci\r
58 EArmObjGenericInitiatorAffinityInfo, ///< 34 - Generic Initiator Affinity\r
26147c77
SM
59 EArmObjMax\r
60} EARM_OBJECT_ID;\r
61\r
62/** A structure that describes the\r
63 ARM Boot Architecture flags.\r
c606f472
SM
64\r
65 ID: EArmObjBootArchInfo\r
26147c77
SM
66*/\r
67typedef struct CmArmBootArchInfo {\r
68 /** This is the ARM_BOOT_ARCH flags field of the FADT Table\r
69 described in the ACPI Table Specification.\r
70 */\r
aa9aff2d 71 UINT16 BootArchFlags;\r
26147c77
SM
72} CM_ARM_BOOT_ARCH_INFO;\r
73\r
26147c77
SM
74/** A structure that describes the\r
75 Power Management Profile Information for the Platform.\r
c606f472
SM
76\r
77 ID: EArmObjPowerManagementProfileInfo\r
26147c77
SM
78*/\r
79typedef struct CmArmPowerManagementProfileInfo {\r
80 /** This is the Preferred_PM_Profile field of the FADT Table\r
81 described in the ACPI Specification\r
82 */\r
83 UINT8 PowerManagementProfile;\r
84} CM_ARM_POWER_MANAGEMENT_PROFILE_INFO;\r
85\r
86/** A structure that describes the\r
87 GIC CPU Interface for the Platform.\r
c606f472
SM
88\r
89 ID: EArmObjGicCInfo\r
26147c77
SM
90*/\r
91typedef struct CmArmGicCInfo {\r
92 /// The GIC CPU Interface number.\r
93 UINT32 CPUInterfaceNumber;\r
94\r
95 /** The ACPI Processor UID. This must match the\r
96 _UID of the CPU Device object information described\r
97 in the DSDT/SSDT for the CPU.\r
98 */\r
99 UINT32 AcpiProcessorUid;\r
100\r
101 /** The flags field as described by the GICC structure\r
102 in the ACPI Specification.\r
103 */\r
104 UINT32 Flags;\r
105\r
106 /** The parking protocol version field as described by\r
107 the GICC structure in the ACPI Specification.\r
108 */\r
109 UINT32 ParkingProtocolVersion;\r
110\r
111 /** The Performance Interrupt field as described by\r
112 the GICC structure in the ACPI Specification.\r
113 */\r
114 UINT32 PerformanceInterruptGsiv;\r
115\r
116 /** The CPU Parked address field as described by\r
117 the GICC structure in the ACPI Specification.\r
118 */\r
119 UINT64 ParkedAddress;\r
120\r
121 /** The base address for the GIC CPU Interface\r
122 as described by the GICC structure in the\r
123 ACPI Specification.\r
124 */\r
125 UINT64 PhysicalBaseAddress;\r
126\r
127 /** The base address for GICV interface\r
128 as described by the GICC structure in the\r
129 ACPI Specification.\r
130 */\r
131 UINT64 GICV;\r
132\r
133 /** The base address for GICH interface\r
134 as described by the GICC structure in the\r
135 ACPI Specification.\r
136 */\r
137 UINT64 GICH;\r
138\r
139 /** The GICV maintenance interrupt\r
140 as described by the GICC structure in the\r
141 ACPI Specification.\r
142 */\r
143 UINT32 VGICMaintenanceInterrupt;\r
144\r
145 /** The base address for GICR interface\r
146 as described by the GICC structure in the\r
147 ACPI Specification.\r
148 */\r
149 UINT64 GICRBaseAddress;\r
150\r
151 /** The MPIDR for the CPU\r
152 as described by the GICC structure in the\r
153 ACPI Specification.\r
154 */\r
155 UINT64 MPIDR;\r
156\r
157 /** The Processor Power Efficiency class\r
158 as described by the GICC structure in the\r
159 ACPI Specification.\r
160 */\r
161 UINT8 ProcessorPowerEfficiencyClass;\r
5506701f
KK
162\r
163 /** Statistical Profiling Extension buffer overflow GSIV. Zero if\r
164 unsupported by this processor. This field was introduced in\r
165 ACPI 6.3 (MADT revision 5) and is therefore ignored when\r
166 generating MADT revision 4 or lower.\r
167 */\r
168 UINT16 SpeOverflowInterrupt;\r
f413d9be
SM
169\r
170 /** The proximity domain to which the logical processor belongs.\r
171 This field is used to populate the GICC affinity structure\r
172 in the SRAT table.\r
173 */\r
174 UINT32 ProximityDomain;\r
175\r
176 /** The clock domain to which the logical processor belongs.\r
177 This field is used to populate the GICC affinity structure\r
178 in the SRAT table.\r
179 */\r
180 UINT32 ClockDomain;\r
181\r
182 /** The GICC Affinity flags field as described by the GICC Affinity structure\r
183 in the SRAT table.\r
184 */\r
185 UINT32 AffinityFlags;\r
26147c77
SM
186} CM_ARM_GICC_INFO;\r
187\r
188/** A structure that describes the\r
189 GIC Distributor information for the Platform.\r
c606f472
SM
190\r
191 ID: EArmObjGicDInfo\r
26147c77
SM
192*/\r
193typedef struct CmArmGicDInfo {\r
26147c77
SM
194 /// The Physical Base address for the GIC Distributor.\r
195 UINT64 PhysicalBaseAddress;\r
196\r
197 /** The global system interrupt\r
198 number where this GIC Distributor's\r
199 interrupt inputs start.\r
200 */\r
201 UINT32 SystemVectorBase;\r
202\r
203 /** The GIC version as described\r
204 by the GICD structure in the\r
205 ACPI Specification.\r
206 */\r
207 UINT8 GicVersion;\r
208} CM_ARM_GICD_INFO;\r
209\r
210/** A structure that describes the\r
211 GIC MSI Frame information for the Platform.\r
c606f472
SM
212\r
213 ID: EArmObjGicMsiFrameInfo\r
26147c77
SM
214*/\r
215typedef struct CmArmGicMsiFrameInfo {\r
216 /// The GIC MSI Frame ID\r
217 UINT32 GicMsiFrameId;\r
218\r
219 /// The Physical base address for the MSI Frame\r
220 UINT64 PhysicalBaseAddress;\r
221\r
222 /** The GIC MSI Frame flags\r
223 as described by the GIC MSI frame\r
224 structure in the ACPI Specification.\r
225 */\r
226 UINT32 Flags;\r
227\r
228 /// SPI Count used by this frame\r
229 UINT16 SPICount;\r
230\r
231 /// SPI Base used by this frame\r
232 UINT16 SPIBase;\r
233} CM_ARM_GIC_MSI_FRAME_INFO;\r
234\r
235/** A structure that describes the\r
236 GIC Redistributor information for the Platform.\r
c606f472
SM
237\r
238 ID: EArmObjGicRedistributorInfo\r
26147c77
SM
239*/\r
240typedef struct CmArmGicRedistInfo {\r
241 /** The physical address of a page range\r
242 containing all GIC Redistributors.\r
243 */\r
244 UINT64 DiscoveryRangeBaseAddress;\r
245\r
246 /// Length of the GIC Redistributor Discovery page range\r
247 UINT32 DiscoveryRangeLength;\r
248} CM_ARM_GIC_REDIST_INFO;\r
249\r
250/** A structure that describes the\r
251 GIC Interrupt Translation Service information for the Platform.\r
c606f472
SM
252\r
253 ID: EArmObjGicItsInfo\r
26147c77
SM
254*/\r
255typedef struct CmArmGicItsInfo {\r
256 /// The GIC ITS ID\r
257 UINT32 GicItsId;\r
258\r
259 /// The physical address for the Interrupt Translation Service\r
260 UINT64 PhysicalBaseAddress;\r
f413d9be
SM
261\r
262 /** The proximity domain to which the logical processor belongs.\r
263 This field is used to populate the GIC ITS affinity structure\r
264 in the SRAT table.\r
265 */\r
266 UINT32 ProximityDomain;\r
26147c77
SM
267} CM_ARM_GIC_ITS_INFO;\r
268\r
269/** A structure that describes the\r
270 Serial Port information for the Platform.\r
c606f472
SM
271\r
272 ID: EArmObjSerialConsolePortInfo or\r
273 EArmObjSerialDebugPortInfo\r
26147c77
SM
274*/\r
275typedef struct CmArmSerialPortInfo {\r
276 /// The physical base address for the serial port\r
277 UINT64 BaseAddress;\r
278\r
279 /// The serial port interrupt\r
280 UINT32 Interrupt;\r
281\r
282 /// The serial port baud rate\r
283 UINT64 BaudRate;\r
284\r
285 /// The serial port clock\r
286 UINT32 Clock;\r
287\r
288 /// Serial Port subtype\r
289 UINT16 PortSubtype;\r
290} CM_ARM_SERIAL_PORT_INFO;\r
291\r
292/** A structure that describes the\r
293 Generic Timer information for the Platform.\r
c606f472
SM
294\r
295 ID: EArmObjGenericTimerInfo\r
26147c77
SM
296*/\r
297typedef struct CmArmGenericTimerInfo {\r
298 /// The physical base address for the counter control frame\r
299 UINT64 CounterControlBaseAddress;\r
300\r
301 /// The physical base address for the counter read frame\r
302 UINT64 CounterReadBaseAddress;\r
303\r
304 /// The secure PL1 timer interrupt\r
305 UINT32 SecurePL1TimerGSIV;\r
306\r
307 /// The secure PL1 timer flags\r
308 UINT32 SecurePL1TimerFlags;\r
309\r
310 /// The non-secure PL1 timer interrupt\r
311 UINT32 NonSecurePL1TimerGSIV;\r
312\r
313 /// The non-secure PL1 timer flags\r
314 UINT32 NonSecurePL1TimerFlags;\r
315\r
316 /// The virtual timer interrupt\r
317 UINT32 VirtualTimerGSIV;\r
318\r
319 /// The virtual timer flags\r
320 UINT32 VirtualTimerFlags;\r
321\r
322 /// The non-secure PL2 timer interrupt\r
323 UINT32 NonSecurePL2TimerGSIV;\r
324\r
325 /// The non-secure PL2 timer flags\r
326 UINT32 NonSecurePL2TimerFlags;\r
e8015f2f
PG
327\r
328 /// GSIV for the virtual EL2 timer\r
329 UINT32 VirtualPL2TimerGSIV;\r
330\r
331 /// Flags for the virtual EL2 timer\r
332 UINT32 VirtualPL2TimerFlags;\r
26147c77
SM
333} CM_ARM_GENERIC_TIMER_INFO;\r
334\r
335/** A structure that describes the\r
336 Platform Generic Block Timer Frame information for the Platform.\r
c606f472
SM
337\r
338 ID: EArmObjGTBlockTimerFrameInfo\r
26147c77
SM
339*/\r
340typedef struct CmArmGTBlockTimerFrameInfo {\r
341 /// The Generic Timer frame number\r
342 UINT8 FrameNumber;\r
343\r
344 /// The physical base address for the CntBase block\r
345 UINT64 PhysicalAddressCntBase;\r
346\r
347 /// The physical base address for the CntEL0Base block\r
348 UINT64 PhysicalAddressCntEL0Base;\r
349\r
350 /// The physical timer interrupt\r
351 UINT32 PhysicalTimerGSIV;\r
352\r
353 /** The physical timer flags as described by the GT Block\r
354 Timer frame Structure in the ACPI Specification.\r
355 */\r
356 UINT32 PhysicalTimerFlags;\r
357\r
358 /// The virtual timer interrupt\r
359 UINT32 VirtualTimerGSIV;\r
360\r
361 /** The virtual timer flags as described by the GT Block\r
362 Timer frame Structure in the ACPI Specification.\r
363 */\r
364 UINT32 VirtualTimerFlags;\r
365\r
366 /** The common timer flags as described by the GT Block\r
367 Timer frame Structure in the ACPI Specification.\r
368 */\r
369 UINT32 CommonFlags;\r
370} CM_ARM_GTBLOCK_TIMER_FRAME_INFO;\r
371\r
372/** A structure that describes the\r
373 Platform Generic Block Timer information for the Platform.\r
c606f472
SM
374\r
375 ID: EArmObjPlatformGTBlockInfo\r
26147c77
SM
376*/\r
377typedef struct CmArmGTBlockInfo {\r
378 /// The physical base address for the GT Block Timer structure\r
379 UINT64 GTBlockPhysicalAddress;\r
380\r
381 /// The number of timer frames implemented in the GT Block\r
382 UINT32 GTBlockTimerFrameCount;\r
383\r
384 /// Reference token for the GT Block timer frame list\r
385 CM_OBJECT_TOKEN GTBlockTimerFrameToken;\r
386} CM_ARM_GTBLOCK_INFO;\r
387\r
388/** A structure that describes the\r
389 SBSA Generic Watchdog information for the Platform.\r
c606f472
SM
390\r
391 ID: EArmObjPlatformGenericWatchdogInfo\r
26147c77
SM
392*/\r
393typedef struct CmArmGenericWatchdogInfo {\r
394 /// The physical base address of the SBSA Watchdog control frame\r
395 UINT64 ControlFrameAddress;\r
396\r
397 /// The physical base address of the SBSA Watchdog refresh frame\r
398 UINT64 RefreshFrameAddress;\r
399\r
400 /// The watchdog interrupt\r
401 UINT32 TimerGSIV;\r
402\r
403 /** The flags for the watchdog as described by the SBSA watchdog\r
404 structure in the ACPI specification.\r
405 */\r
406 UINT32 Flags;\r
407} CM_ARM_GENERIC_WATCHDOG_INFO;\r
408\r
409/** A structure that describes the\r
410 PCI Configuration Space information for the Platform.\r
c606f472
SM
411\r
412 ID: EArmObjPciConfigSpaceInfo\r
26147c77
SM
413*/\r
414typedef struct CmArmPciConfigSpaceInfo {\r
415 /// The physical base address for the PCI segment\r
416 UINT64 BaseAddress;\r
417\r
418 /// The PCI segment group number\r
419 UINT16 PciSegmentGroupNumber;\r
420\r
421 /// The start bus number\r
422 UINT8 StartBusNumber;\r
423\r
424 /// The end bus number\r
425 UINT8 EndBusNumber;\r
426} CM_ARM_PCI_CONFIG_SPACE_INFO;\r
427\r
428/** A structure that describes the\r
429 Hypervisor Vendor ID information for the Platform.\r
c606f472
SM
430\r
431 ID: EArmObjHypervisorVendorIdentity\r
26147c77
SM
432*/\r
433typedef struct CmArmHypervisorVendorId {\r
434 /// The hypervisor Vendor ID\r
435 UINT64 HypervisorVendorId;\r
436} CM_ARM_HYPERVISOR_VENDOR_ID;\r
437\r
438/** A structure that describes the\r
439 Fixed feature flags for the Platform.\r
c606f472
SM
440\r
441 ID: EArmObjFixedFeatureFlags\r
26147c77
SM
442*/\r
443typedef struct CmArmFixedFeatureFlags {\r
444 /// The Fixed feature flags\r
445 UINT32 Flags;\r
446} CM_ARM_FIXED_FEATURE_FLAGS;\r
447\r
448/** A structure that describes the\r
449 ITS Group node for the Platform.\r
c606f472
SM
450\r
451 ID: EArmObjItsGroup\r
26147c77
SM
452*/\r
453typedef struct CmArmItsGroupNode {\r
c606f472 454 /// An unique token used to identify this object\r
26147c77
SM
455 CM_OBJECT_TOKEN Token;\r
456 /// The number of ITS identifiers in the ITS node\r
457 UINT32 ItsIdCount;\r
458 /// Reference token for the ITS identifier array\r
459 CM_OBJECT_TOKEN ItsIdToken;\r
460} CM_ARM_ITS_GROUP_NODE;\r
461\r
462/** A structure that describes the\r
463 GIC ITS Identifiers for an ITS Group node.\r
c606f472
SM
464\r
465 ID: EArmObjGicItsIdentifierArray\r
26147c77
SM
466*/\r
467typedef struct CmArmGicItsIdentifier {\r
468 /// The ITS Identifier\r
469 UINT32 ItsId;\r
470} CM_ARM_ITS_IDENTIFIER;\r
471\r
472/** A structure that describes the\r
473 Named component node for the Platform.\r
c606f472
SM
474\r
475 ID: EArmObjNamedComponent\r
26147c77
SM
476*/\r
477typedef struct CmArmNamedComponentNode {\r
c606f472 478 /// An unique token used to identify this object\r
26147c77
SM
479 CM_OBJECT_TOKEN Token;\r
480 /// Number of ID mappings\r
481 UINT32 IdMappingCount;\r
482 /// Reference token for the ID mapping array\r
483 CM_OBJECT_TOKEN IdMappingToken;\r
484\r
485 /// Flags for the named component\r
486 UINT32 Flags;\r
487\r
488 /// Memory access properties : Cache coherent attributes\r
489 UINT32 CacheCoherent;\r
490 /// Memory access properties : Allocation hints\r
491 UINT8 AllocationHints;\r
492 /// Memory access properties : Memory access flags\r
493 UINT8 MemoryAccessFlags;\r
494\r
495 /// Memory access properties : Address size limit\r
496 UINT8 AddressSizeLimit;\r
497 /** ASCII Null terminated string with the full path to\r
498 the entry in the namespace for this object.\r
499 */\r
500 CHAR8* ObjectName;\r
501} CM_ARM_NAMED_COMPONENT_NODE;\r
502\r
503/** A structure that describes the\r
504 Root complex node for the Platform.\r
c606f472
SM
505\r
506 ID: EArmObjRootComplex\r
26147c77
SM
507*/\r
508typedef struct CmArmRootComplexNode {\r
c606f472 509 /// An unique token used to identify this object\r
26147c77
SM
510 CM_OBJECT_TOKEN Token;\r
511 /// Number of ID mappings\r
512 UINT32 IdMappingCount;\r
513 /// Reference token for the ID mapping array\r
514 CM_OBJECT_TOKEN IdMappingToken;\r
515\r
516 /// Memory access properties : Cache coherent attributes\r
517 UINT32 CacheCoherent;\r
518 /// Memory access properties : Allocation hints\r
519 UINT8 AllocationHints;\r
520 /// Memory access properties : Memory access flags\r
521 UINT8 MemoryAccessFlags;\r
522\r
523 /// ATS attributes\r
524 UINT32 AtsAttribute;\r
525 /// PCI segment number\r
526 UINT32 PciSegmentNumber;\r
527 /// Memory address size limit\r
528 UINT8 MemoryAddressSize;\r
529} CM_ARM_ROOT_COMPLEX_NODE;\r
530\r
531/** A structure that describes the\r
532 SMMUv1 or SMMUv2 node for the Platform.\r
c606f472
SM
533\r
534 ID: EArmObjSmmuV1SmmuV2\r
26147c77
SM
535*/\r
536typedef struct CmArmSmmuV1SmmuV2Node {\r
c606f472 537 /// An unique token used to identify this object\r
26147c77
SM
538 CM_OBJECT_TOKEN Token;\r
539 /// Number of ID mappings\r
540 UINT32 IdMappingCount;\r
541 /// Reference token for the ID mapping array\r
542 CM_OBJECT_TOKEN IdMappingToken;\r
543\r
544 /// SMMU Base Address\r
545 UINT64 BaseAddress;\r
546 /// Length of the memory range covered by the SMMU\r
547 UINT64 Span;\r
548 /// SMMU Model\r
549 UINT32 Model;\r
550 /// SMMU flags\r
551 UINT32 Flags;\r
552\r
553 /// Number of context interrupts\r
554 UINT32 ContextInterruptCount;\r
555 /// Reference token for the context interrupt array\r
556 CM_OBJECT_TOKEN ContextInterruptToken;\r
557\r
558 /// Number of PMU interrupts\r
559 UINT32 PmuInterruptCount;\r
560 /// Reference token for the PMU interrupt array\r
561 CM_OBJECT_TOKEN PmuInterruptToken;\r
562\r
563 /// GSIV of the SMMU_NSgIrpt interrupt\r
564 UINT32 SMMU_NSgIrpt;\r
565 /// SMMU_NSgIrpt interrupt flags\r
566 UINT32 SMMU_NSgIrptFlags;\r
567 /// GSIV of the SMMU_NSgCfgIrpt interrupt\r
568 UINT32 SMMU_NSgCfgIrpt;\r
569 /// SMMU_NSgCfgIrpt interrupt flags\r
570 UINT32 SMMU_NSgCfgIrptFlags;\r
571} CM_ARM_SMMUV1_SMMUV2_NODE;\r
572\r
573/** A structure that describes the\r
574 SMMUv3 node for the Platform.\r
c606f472
SM
575\r
576 ID: EArmObjSmmuV3\r
26147c77
SM
577*/\r
578typedef struct CmArmSmmuV3Node {\r
c606f472 579 /// An unique token used to identify this object\r
26147c77
SM
580 CM_OBJECT_TOKEN Token;\r
581 /// Number of ID mappings\r
582 UINT32 IdMappingCount;\r
583 /// Reference token for the ID mapping array\r
584 CM_OBJECT_TOKEN IdMappingToken;\r
585\r
586 /// SMMU Base Address\r
587 UINT64 BaseAddress;\r
588 /// SMMU flags\r
589 UINT32 Flags;\r
590 /// VATOS address\r
591 UINT64 VatosAddress;\r
592 /// Model\r
593 UINT32 Model;\r
594 /// GSIV of the Event interrupt if SPI based\r
595 UINT32 EventInterrupt;\r
596 /// PRI Interrupt if SPI based\r
597 UINT32 PriInterrupt;\r
598 /// GERR interrupt if GSIV based\r
599 UINT32 GerrInterrupt;\r
600 /// Sync interrupt if GSIV based\r
601 UINT32 SyncInterrupt;\r
602\r
603 /// Proximity domain flag\r
604 UINT32 ProximityDomain;\r
605 /// Index into the array of ID mapping\r
606 UINT32 DeviceIdMappingIndex;\r
607} CM_ARM_SMMUV3_NODE;\r
608\r
609/** A structure that describes the\r
610 PMCG node for the Platform.\r
c606f472
SM
611\r
612 ID: EArmObjPmcg\r
26147c77
SM
613*/\r
614typedef struct CmArmPmcgNode {\r
c606f472 615 /// An unique token used to identify this object\r
26147c77
SM
616 CM_OBJECT_TOKEN Token;\r
617 /// Number of ID mappings\r
618 UINT32 IdMappingCount;\r
619 /// Reference token for the ID mapping array\r
620 CM_OBJECT_TOKEN IdMappingToken;\r
621\r
622 /// Base Address for performance monitor counter group\r
623 UINT64 BaseAddress;\r
624 /// GSIV for the Overflow interrupt\r
625 UINT32 OverflowInterrupt;\r
626 /// Page 1 Base address\r
627 UINT64 Page1BaseAddress;\r
628\r
629 /// Reference token for the IORT node associated with this node\r
630 CM_OBJECT_TOKEN ReferenceToken;\r
631} CM_ARM_PMCG_NODE;\r
632\r
633/** A structure that describes the\r
634 ID Mappings for the Platform.\r
c606f472
SM
635\r
636 ID: EArmObjIdMappingArray\r
26147c77
SM
637*/\r
638typedef struct CmArmIdMapping {\r
639 /// Input base\r
640 UINT32 InputBase;\r
641 /// Number of input IDs\r
642 UINT32 NumIds;\r
643 /// Output Base\r
644 UINT32 OutputBase;\r
645 /// Reference token for the output node\r
646 CM_OBJECT_TOKEN OutputReferenceToken;\r
647 /// Flags\r
648 UINT32 Flags;\r
649} CM_ARM_ID_MAPPING;\r
650\r
651/** A structure that describes the\r
652 SMMU interrupts for the Platform.\r
c606f472
SM
653\r
654 ID: EArmObjSmmuInterruptArray\r
26147c77
SM
655*/\r
656typedef struct CmArmSmmuInterrupt {\r
657 /// Interrupt number\r
658 UINT32 Interrupt;\r
659\r
660 /// Flags\r
661 UINT32 Flags;\r
662} CM_ARM_SMMU_INTERRUPT;\r
663\r
77db1156
KK
664/** A structure that describes the Processor Hierarchy Node (Type 0) in PPTT\r
665\r
666 ID: EArmObjProcHierarchyInfo\r
667*/\r
668typedef struct CmArmProcHierarchyInfo {\r
669 /// A unique token used to identify this object\r
670 CM_OBJECT_TOKEN Token;\r
671 /// Processor structure flags (ACPI 6.3 - January 2019, PPTT, Table 5-155)\r
672 UINT32 Flags;\r
673 /// Token for the parent CM_ARM_PROC_HIERARCHY_INFO object in the processor\r
674 /// topology. A value of CM_NULL_TOKEN means this node has no parent.\r
675 CM_OBJECT_TOKEN ParentToken;\r
676 /// Token of the associated CM_ARM_GICC_INFO object which has the\r
677 /// corresponding ACPI Processor ID. A value of CM_NULL_TOKEN means this\r
678 /// node represents a group of associated processors and it does not have an\r
679 /// associated GIC CPU interface.\r
680 CM_OBJECT_TOKEN GicCToken;\r
681 /// Number of resources private to this Node\r
682 UINT32 NoOfPrivateResources;\r
683 /// Token of the array which contains references to the resources private to\r
684 /// this CM_ARM_PROC_HIERARCHY_INFO instance. This field is ignored if\r
e3f8605a 685 /// the NoOfPrivateResources is 0, in which case it is recommended to set\r
77db1156
KK
686 /// this field to CM_NULL_TOKEN.\r
687 CM_OBJECT_TOKEN PrivateResourcesArrayToken;\r
688} CM_ARM_PROC_HIERARCHY_INFO;\r
689\r
690/** A structure that describes the Cache Type Structure (Type 1) in PPTT\r
691\r
692 ID: EArmObjCacheInfo\r
693*/\r
694typedef struct CmArmCacheInfo {\r
695 /// A unique token used to identify this object\r
696 CM_OBJECT_TOKEN Token;\r
697 /// Reference token for the next level of cache that is private to the same\r
698 /// CM_ARM_PROC_HIERARCHY_INFO instance. A value of CM_NULL_TOKEN means this\r
699 /// entry represents the last cache level appropriate to the processor\r
700 /// hierarchy node structures using this entry.\r
701 CM_OBJECT_TOKEN NextLevelOfCacheToken;\r
702 /// Size of the cache in bytes\r
703 UINT32 Size;\r
704 /// Number of sets in the cache\r
705 UINT32 NumberOfSets;\r
706 /// Integer number of ways. The maximum associativity supported by\r
707 /// ACPI Cache type structure is limited to MAX_UINT8. However,\r
708 /// the maximum number of ways supported by the architecture is\r
709 /// PPTT_ARM_CCIDX_CACHE_ASSOCIATIVITY_MAX. Therfore this field\r
710 /// is 32-bit wide.\r
711 UINT32 Associativity;\r
712 /// Cache attributes (ACPI 6.3 - January 2019, PPTT, Table 5-156)\r
713 UINT8 Attributes;\r
714 /// Line size in bytes\r
715 UINT16 LineSize;\r
716} CM_ARM_CACHE_INFO;\r
717\r
718/** A structure that describes the ID Structure (Type 2) in PPTT\r
719\r
720 ID: EArmObjProcNodeIdInfo\r
721*/\r
722typedef struct CmArmProcNodeIdInfo {\r
723 /// A unique token used to identify this object\r
724 CM_OBJECT_TOKEN Token;\r
725 // Vendor ID (as described in ACPI ID registry)\r
726 UINT32 VendorId;\r
727 /// First level unique node ID\r
728 UINT64 Level1Id;\r
729 /// Second level unique node ID\r
730 UINT64 Level2Id;\r
731 /// Major revision of the node\r
732 UINT16 MajorRev;\r
733 /// Minor revision of the node\r
734 UINT16 MinorRev;\r
735 /// Spin revision of the node\r
736 UINT16 SpinRev;\r
737} CM_ARM_PROC_NODE_ID_INFO;\r
738\r
739/** A structure that describes a reference to another Configuration Manager\r
740 object.\r
741\r
742 This is useful for creating an array of reference tokens. The framework\r
743 can then query the configuration manager for these arrays using the\r
744 object ID EArmObjCmRef.\r
745\r
746 This can be used is to represent one-to-many relationships between objects.\r
747\r
748 ID: EArmObjCmRef\r
749*/\r
750typedef struct CmArmObjRef {\r
751 /// Token of the CM object being referenced\r
752 CM_OBJECT_TOKEN ReferenceToken;\r
753} CM_ARM_OBJ_REF;\r
754\r
f413d9be
SM
755/** A structure that describes the Memory Affinity Structure (Type 1) in SRAT\r
756\r
757 ID: EArmObjMemoryAffinityInfo\r
758*/\r
759typedef struct CmArmMemoryAffinityInfo {\r
760 /// The proximity domain to which the "range of memory" belongs.\r
761 UINT32 ProximityDomain;\r
762\r
763 /// Base Address\r
764 UINT64 BaseAddress;\r
765\r
766 /// Length\r
767 UINT64 Length;\r
768\r
769 /// Flags\r
770 UINT32 Flags;\r
771} CM_ARM_MEMORY_AFFINITY_INFO;\r
772\r
773/** A structure that describes the ACPI Device Handle (Type 0) in the\r
774 Generic Initiator Affinity structure in SRAT\r
775\r
776 ID: EArmObjDeviceHandleAcpi\r
777*/\r
778typedef struct CmArmDeviceHandleAcpi {\r
779 /// Hardware ID\r
780 UINT64 Hid;\r
781\r
782 /// Unique Id\r
783 UINT32 Uid;\r
784} CM_ARM_DEVICE_HANDLE_ACPI;\r
785\r
786/** A structure that describes the PCI Device Handle (Type 1) in the\r
787 Generic Initiator Affinity structure in SRAT\r
788\r
789 ID: EArmObjDeviceHandlePci\r
790*/\r
791typedef struct CmArmDeviceHandlePci {\r
792 /// PCI Segment Number\r
793 UINT16 SegmentNumber;\r
794\r
795 /// PCI Bus Number - Max 256 busses (Bits 15:8 of BDF)\r
796 UINT8 BusNumber;\r
797\r
e3f8605a 798 /// PCI Device Number - Max 32 devices (Bits 7:3 of BDF)\r
f413d9be
SM
799 UINT8 DeviceNumber;\r
800\r
801 /// PCI Function Number - Max 8 functions (Bits 2:0 of BDF)\r
802 UINT8 FunctionNumber;\r
803} CM_ARM_DEVICE_HANDLE_PCI;\r
804\r
805/** A structure that describes the Generic Initiator Affinity structure in SRAT\r
806\r
807 ID: EArmObjGenericInitiatorAffinityInfo\r
808*/\r
809typedef struct CmArmGenericInitiatorAffinityInfo {\r
810 /// The proximity domain to which the generic initiator belongs.\r
811 UINT32 ProximityDomain;\r
812\r
813 /// Flags\r
814 UINT32 Flags;\r
815\r
816 /// Device Handle Type\r
817 UINT8 DeviceHandleType;\r
818\r
819 /// Reference Token for the Device Handle\r
820 CM_OBJECT_TOKEN DeviceHandleToken;\r
821} CM_ARM_GENERIC_INITIATOR_AFFINITY_INFO;\r
822\r
26147c77
SM
823#pragma pack()\r
824\r
825#endif // ARM_NAMESPACE_OBJECTS_H_\r