]> git.proxmox.com Git - mirror_edk2.git/blame - DynamicTablesPkg/Include/ArmNameSpaceObjects.h
Revert "DynamicTablesPkg: Minor updates and fix typos"
[mirror_edk2.git] / DynamicTablesPkg / Include / ArmNameSpaceObjects.h
CommitLineData
26147c77
SM
1/** @file\r
2\r
d3a15f43 3 Copyright (c) 2017 - 2019, ARM Limited. All rights reserved.\r
26147c77
SM
4\r
5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13 @par Glossary:\r
14 - Cm or CM - Configuration Manager\r
15 - Obj or OBJ - Object\r
16 - Std or STD - Standard\r
17**/\r
18\r
19#ifndef ARM_NAMESPACE_OBJECTS_H_\r
20#define ARM_NAMESPACE_OBJECTS_H_\r
21\r
22#include <StandardNameSpaceObjects.h>\r
23\r
24#pragma pack(1)\r
25\r
26/** The EARM_OBJECT_ID enum describes the Object IDs\r
27 in the ARM Namespace\r
28*/\r
29typedef enum ArmObjectID {\r
30 EArmObjReserved, ///< 0 - Reserved\r
31 EArmObjBootArchInfo, ///< 1 - Boot Architecture Info\r
32 EArmObjCpuInfo, ///< 2 - CPU Info\r
33 EArmObjPowerManagementProfileInfo, ///< 3 - Power Management Profile Info\r
34 EArmObjGicCInfo, ///< 4 - GIC CPU Interface Info\r
35 EArmObjGicDInfo, ///< 5 - GIC Distributor Info\r
36 EArmObjGicMsiFrameInfo, ///< 6 - GIC MSI Frame Info\r
37 EArmObjGicRedistributorInfo, ///< 7 - GIC Redistributor Info\r
38 EArmObjGicItsInfo, ///< 8 - GIC ITS Info\r
39 EArmObjSerialConsolePortInfo, ///< 9 - Serial Console Port Info\r
40 EArmObjSerialDebugPortInfo, ///< 10 - Serial Debug Port Info\r
41 EArmObjGenericTimerInfo, ///< 11 - Generic Timer Info\r
42 EArmObjPlatformGTBlockInfo, ///< 12 - Platform GT Block Info\r
43 EArmObjGTBlockTimerFrameInfo, ///< 13 - Generic Timer Block Frame Info\r
44 EArmObjPlatformGenericWatchdogInfo, ///< 14 - Platform Generic Watchdog\r
45 EArmObjPciConfigSpaceInfo, ///< 15 - PCI Configuration Space Info\r
46 EArmObjHypervisorVendorIdentity, ///< 16 - Hypervisor Vendor Id\r
47 EArmObjFixedFeatureFlags, ///< 17 - Fixed feature flags for FADT\r
48 EArmObjItsGroup, ///< 18 - ITS Group\r
49 EArmObjNamedComponent, ///< 19 - Named Component\r
50 EArmObjRootComplex, ///< 20 - Root Complex\r
51 EArmObjSmmuV1SmmuV2, ///< 21 - SMMUv1 or SMMUv2\r
52 EArmObjSmmuV3, ///< 22 - SMMUv3\r
53 EArmObjPmcg, ///< 23 - PMCG\r
54 EArmObjGicItsIdentifierArray, ///< 24 - GIC ITS Identifier Array\r
1d49a753 55 EArmObjIdMappingArray, ///< 25 - ID Mapping Array\r
26147c77
SM
56 EArmObjSmmuInterruptArray, ///< 26 - SMMU Interrupt Array\r
57 EArmObjMax\r
58} EARM_OBJECT_ID;\r
59\r
60/** A structure that describes the\r
61 ARM Boot Architecture flags.\r
62*/\r
63typedef struct CmArmBootArchInfo {\r
64 /** This is the ARM_BOOT_ARCH flags field of the FADT Table\r
65 described in the ACPI Table Specification.\r
66 */\r
67 UINT32 BootArchFlags;\r
68} CM_ARM_BOOT_ARCH_INFO;\r
69\r
70typedef struct CmArmCpuInfo {\r
71 // Reserved for use when SMBIOS tables are implemented\r
72} CM_ARM_CPU_INFO;\r
73\r
4c20a791
SM
74typedef struct CmArmCpuInfoList {\r
75 UINT32 CpuCount;\r
76 CM_ARM_CPU_INFO * CpuInfo;\r
77} CM_ARM_CPU_INFO_LIST;\r
78\r
26147c77
SM
79/** A structure that describes the\r
80 Power Management Profile Information for the Platform.\r
81*/\r
82typedef struct CmArmPowerManagementProfileInfo {\r
83 /** This is the Preferred_PM_Profile field of the FADT Table\r
84 described in the ACPI Specification\r
85 */\r
86 UINT8 PowerManagementProfile;\r
87} CM_ARM_POWER_MANAGEMENT_PROFILE_INFO;\r
88\r
89/** A structure that describes the\r
90 GIC CPU Interface for the Platform.\r
91*/\r
92typedef struct CmArmGicCInfo {\r
93 /// The GIC CPU Interface number.\r
94 UINT32 CPUInterfaceNumber;\r
95\r
96 /** The ACPI Processor UID. This must match the\r
97 _UID of the CPU Device object information described\r
98 in the DSDT/SSDT for the CPU.\r
99 */\r
100 UINT32 AcpiProcessorUid;\r
101\r
102 /** The flags field as described by the GICC structure\r
103 in the ACPI Specification.\r
104 */\r
105 UINT32 Flags;\r
106\r
107 /** The parking protocol version field as described by\r
108 the GICC structure in the ACPI Specification.\r
109 */\r
110 UINT32 ParkingProtocolVersion;\r
111\r
112 /** The Performance Interrupt field as described by\r
113 the GICC structure in the ACPI Specification.\r
114 */\r
115 UINT32 PerformanceInterruptGsiv;\r
116\r
117 /** The CPU Parked address field as described by\r
118 the GICC structure in the ACPI Specification.\r
119 */\r
120 UINT64 ParkedAddress;\r
121\r
122 /** The base address for the GIC CPU Interface\r
123 as described by the GICC structure in the\r
124 ACPI Specification.\r
125 */\r
126 UINT64 PhysicalBaseAddress;\r
127\r
128 /** The base address for GICV interface\r
129 as described by the GICC structure in the\r
130 ACPI Specification.\r
131 */\r
132 UINT64 GICV;\r
133\r
134 /** The base address for GICH interface\r
135 as described by the GICC structure in the\r
136 ACPI Specification.\r
137 */\r
138 UINT64 GICH;\r
139\r
140 /** The GICV maintenance interrupt\r
141 as described by the GICC structure in the\r
142 ACPI Specification.\r
143 */\r
144 UINT32 VGICMaintenanceInterrupt;\r
145\r
146 /** The base address for GICR interface\r
147 as described by the GICC structure in the\r
148 ACPI Specification.\r
149 */\r
150 UINT64 GICRBaseAddress;\r
151\r
152 /** The MPIDR for the CPU\r
153 as described by the GICC structure in the\r
154 ACPI Specification.\r
155 */\r
156 UINT64 MPIDR;\r
157\r
158 /** The Processor Power Efficiency class\r
159 as described by the GICC structure in the\r
160 ACPI Specification.\r
161 */\r
162 UINT8 ProcessorPowerEfficiencyClass;\r
163} CM_ARM_GICC_INFO;\r
164\r
165/** A structure that describes the\r
166 GIC Distributor information for the Platform.\r
167*/\r
168typedef struct CmArmGicDInfo {\r
26147c77
SM
169 /// The Physical Base address for the GIC Distributor.\r
170 UINT64 PhysicalBaseAddress;\r
171\r
172 /** The global system interrupt\r
173 number where this GIC Distributor's\r
174 interrupt inputs start.\r
175 */\r
176 UINT32 SystemVectorBase;\r
177\r
178 /** The GIC version as described\r
179 by the GICD structure in the\r
180 ACPI Specification.\r
181 */\r
182 UINT8 GicVersion;\r
183} CM_ARM_GICD_INFO;\r
184\r
185/** A structure that describes the\r
186 GIC MSI Frame information for the Platform.\r
187*/\r
188typedef struct CmArmGicMsiFrameInfo {\r
189 /// The GIC MSI Frame ID\r
190 UINT32 GicMsiFrameId;\r
191\r
192 /// The Physical base address for the MSI Frame\r
193 UINT64 PhysicalBaseAddress;\r
194\r
195 /** The GIC MSI Frame flags\r
196 as described by the GIC MSI frame\r
197 structure in the ACPI Specification.\r
198 */\r
199 UINT32 Flags;\r
200\r
201 /// SPI Count used by this frame\r
202 UINT16 SPICount;\r
203\r
204 /// SPI Base used by this frame\r
205 UINT16 SPIBase;\r
206} CM_ARM_GIC_MSI_FRAME_INFO;\r
207\r
208/** A structure that describes the\r
209 GIC Redistributor information for the Platform.\r
210*/\r
211typedef struct CmArmGicRedistInfo {\r
212 /** The physical address of a page range\r
213 containing all GIC Redistributors.\r
214 */\r
215 UINT64 DiscoveryRangeBaseAddress;\r
216\r
217 /// Length of the GIC Redistributor Discovery page range\r
218 UINT32 DiscoveryRangeLength;\r
219} CM_ARM_GIC_REDIST_INFO;\r
220\r
221/** A structure that describes the\r
222 GIC Interrupt Translation Service information for the Platform.\r
223*/\r
224typedef struct CmArmGicItsInfo {\r
225 /// The GIC ITS ID\r
226 UINT32 GicItsId;\r
227\r
228 /// The physical address for the Interrupt Translation Service\r
229 UINT64 PhysicalBaseAddress;\r
230} CM_ARM_GIC_ITS_INFO;\r
231\r
232/** A structure that describes the\r
233 Serial Port information for the Platform.\r
234*/\r
235typedef struct CmArmSerialPortInfo {\r
236 /// The physical base address for the serial port\r
237 UINT64 BaseAddress;\r
238\r
239 /// The serial port interrupt\r
240 UINT32 Interrupt;\r
241\r
242 /// The serial port baud rate\r
243 UINT64 BaudRate;\r
244\r
245 /// The serial port clock\r
246 UINT32 Clock;\r
247\r
248 /// Serial Port subtype\r
249 UINT16 PortSubtype;\r
250} CM_ARM_SERIAL_PORT_INFO;\r
251\r
252/** A structure that describes the\r
253 Generic Timer information for the Platform.\r
254*/\r
255typedef struct CmArmGenericTimerInfo {\r
256 /// The physical base address for the counter control frame\r
257 UINT64 CounterControlBaseAddress;\r
258\r
259 /// The physical base address for the counter read frame\r
260 UINT64 CounterReadBaseAddress;\r
261\r
262 /// The secure PL1 timer interrupt\r
263 UINT32 SecurePL1TimerGSIV;\r
264\r
265 /// The secure PL1 timer flags\r
266 UINT32 SecurePL1TimerFlags;\r
267\r
268 /// The non-secure PL1 timer interrupt\r
269 UINT32 NonSecurePL1TimerGSIV;\r
270\r
271 /// The non-secure PL1 timer flags\r
272 UINT32 NonSecurePL1TimerFlags;\r
273\r
274 /// The virtual timer interrupt\r
275 UINT32 VirtualTimerGSIV;\r
276\r
277 /// The virtual timer flags\r
278 UINT32 VirtualTimerFlags;\r
279\r
280 /// The non-secure PL2 timer interrupt\r
281 UINT32 NonSecurePL2TimerGSIV;\r
282\r
283 /// The non-secure PL2 timer flags\r
284 UINT32 NonSecurePL2TimerFlags;\r
285} CM_ARM_GENERIC_TIMER_INFO;\r
286\r
287/** A structure that describes the\r
288 Platform Generic Block Timer Frame information for the Platform.\r
289*/\r
290typedef struct CmArmGTBlockTimerFrameInfo {\r
291 /// The Generic Timer frame number\r
292 UINT8 FrameNumber;\r
293\r
294 /// The physical base address for the CntBase block\r
295 UINT64 PhysicalAddressCntBase;\r
296\r
297 /// The physical base address for the CntEL0Base block\r
298 UINT64 PhysicalAddressCntEL0Base;\r
299\r
300 /// The physical timer interrupt\r
301 UINT32 PhysicalTimerGSIV;\r
302\r
303 /** The physical timer flags as described by the GT Block\r
304 Timer frame Structure in the ACPI Specification.\r
305 */\r
306 UINT32 PhysicalTimerFlags;\r
307\r
308 /// The virtual timer interrupt\r
309 UINT32 VirtualTimerGSIV;\r
310\r
311 /** The virtual timer flags as described by the GT Block\r
312 Timer frame Structure in the ACPI Specification.\r
313 */\r
314 UINT32 VirtualTimerFlags;\r
315\r
316 /** The common timer flags as described by the GT Block\r
317 Timer frame Structure in the ACPI Specification.\r
318 */\r
319 UINT32 CommonFlags;\r
320} CM_ARM_GTBLOCK_TIMER_FRAME_INFO;\r
321\r
322/** A structure that describes the\r
323 Platform Generic Block Timer information for the Platform.\r
324*/\r
325typedef struct CmArmGTBlockInfo {\r
326 /// The physical base address for the GT Block Timer structure\r
327 UINT64 GTBlockPhysicalAddress;\r
328\r
329 /// The number of timer frames implemented in the GT Block\r
330 UINT32 GTBlockTimerFrameCount;\r
331\r
332 /// Reference token for the GT Block timer frame list\r
333 CM_OBJECT_TOKEN GTBlockTimerFrameToken;\r
334} CM_ARM_GTBLOCK_INFO;\r
335\r
336/** A structure that describes the\r
337 SBSA Generic Watchdog information for the Platform.\r
338*/\r
339typedef struct CmArmGenericWatchdogInfo {\r
340 /// The physical base address of the SBSA Watchdog control frame\r
341 UINT64 ControlFrameAddress;\r
342\r
343 /// The physical base address of the SBSA Watchdog refresh frame\r
344 UINT64 RefreshFrameAddress;\r
345\r
346 /// The watchdog interrupt\r
347 UINT32 TimerGSIV;\r
348\r
349 /** The flags for the watchdog as described by the SBSA watchdog\r
350 structure in the ACPI specification.\r
351 */\r
352 UINT32 Flags;\r
353} CM_ARM_GENERIC_WATCHDOG_INFO;\r
354\r
355/** A structure that describes the\r
356 PCI Configuration Space information for the Platform.\r
357*/\r
358typedef struct CmArmPciConfigSpaceInfo {\r
359 /// The physical base address for the PCI segment\r
360 UINT64 BaseAddress;\r
361\r
362 /// The PCI segment group number\r
363 UINT16 PciSegmentGroupNumber;\r
364\r
365 /// The start bus number\r
366 UINT8 StartBusNumber;\r
367\r
368 /// The end bus number\r
369 UINT8 EndBusNumber;\r
370} CM_ARM_PCI_CONFIG_SPACE_INFO;\r
371\r
372/** A structure that describes the\r
373 Hypervisor Vendor ID information for the Platform.\r
374*/\r
375typedef struct CmArmHypervisorVendorId {\r
376 /// The hypervisor Vendor ID\r
377 UINT64 HypervisorVendorId;\r
378} CM_ARM_HYPERVISOR_VENDOR_ID;\r
379\r
380/** A structure that describes the\r
381 Fixed feature flags for the Platform.\r
382*/\r
383typedef struct CmArmFixedFeatureFlags {\r
384 /// The Fixed feature flags\r
385 UINT32 Flags;\r
386} CM_ARM_FIXED_FEATURE_FLAGS;\r
387\r
388/** A structure that describes the\r
389 ITS Group node for the Platform.\r
390*/\r
391typedef struct CmArmItsGroupNode {\r
4c20a791 392 /// An unique token used to ideintify this object\r
26147c77
SM
393 CM_OBJECT_TOKEN Token;\r
394 /// The number of ITS identifiers in the ITS node\r
395 UINT32 ItsIdCount;\r
396 /// Reference token for the ITS identifier array\r
397 CM_OBJECT_TOKEN ItsIdToken;\r
398} CM_ARM_ITS_GROUP_NODE;\r
399\r
400/** A structure that describes the\r
401 GIC ITS Identifiers for an ITS Group node.\r
402*/\r
403typedef struct CmArmGicItsIdentifier {\r
404 /// The ITS Identifier\r
405 UINT32 ItsId;\r
406} CM_ARM_ITS_IDENTIFIER;\r
407\r
408/** A structure that describes the\r
409 Named component node for the Platform.\r
410*/\r
411typedef struct CmArmNamedComponentNode {\r
4c20a791 412 /// An unique token used to ideintify this object\r
26147c77
SM
413 CM_OBJECT_TOKEN Token;\r
414 /// Number of ID mappings\r
415 UINT32 IdMappingCount;\r
416 /// Reference token for the ID mapping array\r
417 CM_OBJECT_TOKEN IdMappingToken;\r
418\r
419 /// Flags for the named component\r
420 UINT32 Flags;\r
421\r
422 /// Memory access properties : Cache coherent attributes\r
423 UINT32 CacheCoherent;\r
424 /// Memory access properties : Allocation hints\r
425 UINT8 AllocationHints;\r
426 /// Memory access properties : Memory access flags\r
427 UINT8 MemoryAccessFlags;\r
428\r
429 /// Memory access properties : Address size limit\r
430 UINT8 AddressSizeLimit;\r
431 /** ASCII Null terminated string with the full path to\r
432 the entry in the namespace for this object.\r
433 */\r
434 CHAR8* ObjectName;\r
435} CM_ARM_NAMED_COMPONENT_NODE;\r
436\r
437/** A structure that describes the\r
438 Root complex node for the Platform.\r
439*/\r
440typedef struct CmArmRootComplexNode {\r
4c20a791 441 /// An unique token used to ideintify this object\r
26147c77
SM
442 CM_OBJECT_TOKEN Token;\r
443 /// Number of ID mappings\r
444 UINT32 IdMappingCount;\r
445 /// Reference token for the ID mapping array\r
446 CM_OBJECT_TOKEN IdMappingToken;\r
447\r
448 /// Memory access properties : Cache coherent attributes\r
449 UINT32 CacheCoherent;\r
450 /// Memory access properties : Allocation hints\r
451 UINT8 AllocationHints;\r
452 /// Memory access properties : Memory access flags\r
453 UINT8 MemoryAccessFlags;\r
454\r
455 /// ATS attributes\r
456 UINT32 AtsAttribute;\r
457 /// PCI segment number\r
458 UINT32 PciSegmentNumber;\r
459 /// Memory address size limit\r
460 UINT8 MemoryAddressSize;\r
461} CM_ARM_ROOT_COMPLEX_NODE;\r
462\r
463/** A structure that describes the\r
464 SMMUv1 or SMMUv2 node for the Platform.\r
465*/\r
466typedef struct CmArmSmmuV1SmmuV2Node {\r
4c20a791 467 /// An unique token used to ideintify this object\r
26147c77
SM
468 CM_OBJECT_TOKEN Token;\r
469 /// Number of ID mappings\r
470 UINT32 IdMappingCount;\r
471 /// Reference token for the ID mapping array\r
472 CM_OBJECT_TOKEN IdMappingToken;\r
473\r
474 /// SMMU Base Address\r
475 UINT64 BaseAddress;\r
476 /// Length of the memory range covered by the SMMU\r
477 UINT64 Span;\r
478 /// SMMU Model\r
479 UINT32 Model;\r
480 /// SMMU flags\r
481 UINT32 Flags;\r
482\r
483 /// Number of context interrupts\r
484 UINT32 ContextInterruptCount;\r
485 /// Reference token for the context interrupt array\r
486 CM_OBJECT_TOKEN ContextInterruptToken;\r
487\r
488 /// Number of PMU interrupts\r
489 UINT32 PmuInterruptCount;\r
490 /// Reference token for the PMU interrupt array\r
491 CM_OBJECT_TOKEN PmuInterruptToken;\r
492\r
493 /// GSIV of the SMMU_NSgIrpt interrupt\r
494 UINT32 SMMU_NSgIrpt;\r
495 /// SMMU_NSgIrpt interrupt flags\r
496 UINT32 SMMU_NSgIrptFlags;\r
497 /// GSIV of the SMMU_NSgCfgIrpt interrupt\r
498 UINT32 SMMU_NSgCfgIrpt;\r
499 /// SMMU_NSgCfgIrpt interrupt flags\r
500 UINT32 SMMU_NSgCfgIrptFlags;\r
501} CM_ARM_SMMUV1_SMMUV2_NODE;\r
502\r
503/** A structure that describes the\r
504 SMMUv3 node for the Platform.\r
505*/\r
506typedef struct CmArmSmmuV3Node {\r
4c20a791 507 /// An unique token used to ideintify this object\r
26147c77
SM
508 CM_OBJECT_TOKEN Token;\r
509 /// Number of ID mappings\r
510 UINT32 IdMappingCount;\r
511 /// Reference token for the ID mapping array\r
512 CM_OBJECT_TOKEN IdMappingToken;\r
513\r
514 /// SMMU Base Address\r
515 UINT64 BaseAddress;\r
516 /// SMMU flags\r
517 UINT32 Flags;\r
518 /// VATOS address\r
519 UINT64 VatosAddress;\r
520 /// Model\r
521 UINT32 Model;\r
522 /// GSIV of the Event interrupt if SPI based\r
523 UINT32 EventInterrupt;\r
524 /// PRI Interrupt if SPI based\r
525 UINT32 PriInterrupt;\r
526 /// GERR interrupt if GSIV based\r
527 UINT32 GerrInterrupt;\r
528 /// Sync interrupt if GSIV based\r
529 UINT32 SyncInterrupt;\r
530\r
531 /// Proximity domain flag\r
532 UINT32 ProximityDomain;\r
533 /// Index into the array of ID mapping\r
534 UINT32 DeviceIdMappingIndex;\r
535} CM_ARM_SMMUV3_NODE;\r
536\r
537/** A structure that describes the\r
538 PMCG node for the Platform.\r
539*/\r
540typedef struct CmArmPmcgNode {\r
4c20a791 541 /// An unique token used to ideintify 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 /// Base Address for performance monitor counter group\r
549 UINT64 BaseAddress;\r
550 /// GSIV for the Overflow interrupt\r
551 UINT32 OverflowInterrupt;\r
552 /// Page 1 Base address\r
553 UINT64 Page1BaseAddress;\r
554\r
555 /// Reference token for the IORT node associated with this node\r
556 CM_OBJECT_TOKEN ReferenceToken;\r
557} CM_ARM_PMCG_NODE;\r
558\r
559/** A structure that describes the\r
560 ID Mappings for the Platform.\r
561*/\r
562typedef struct CmArmIdMapping {\r
563 /// Input base\r
564 UINT32 InputBase;\r
565 /// Number of input IDs\r
566 UINT32 NumIds;\r
567 /// Output Base\r
568 UINT32 OutputBase;\r
569 /// Reference token for the output node\r
570 CM_OBJECT_TOKEN OutputReferenceToken;\r
571 /// Flags\r
572 UINT32 Flags;\r
573} CM_ARM_ID_MAPPING;\r
574\r
575/** A structure that describes the\r
576 SMMU interrupts for the Platform.\r
577*/\r
578typedef struct CmArmSmmuInterrupt {\r
579 /// Interrupt number\r
580 UINT32 Interrupt;\r
581\r
582 /// Flags\r
583 UINT32 Flags;\r
584} CM_ARM_SMMU_INTERRUPT;\r
585\r
586#pragma pack()\r
587\r
588#endif // ARM_NAMESPACE_OBJECTS_H_\r