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