VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h

Last change on this file was 108795, checked in by vboxsync, 3 weeks ago

Devices/EFI/FirmwareNew: Merge edk2-stable202502 from the vendor branch and make it build for the important platforms, bugref:4643 [scm fixes]

  • Property svn:eol-style set to native
File size: 23.0 KB
Line 
1/** @file
2
3 Copyright (c) 2024, Arm Limited. All rights reserved.<BR>
4 Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.<BR>
5 Copyright (c) 2024 Advanced Micro Devices, Inc. All rights reserved.
6
7 SPDX-License-Identifier: BSD-2-Clause-Patent
8
9 @par Glossary:
10 - Cm or CM - Configuration Manager
11 - Obj or OBJ - Object
12 - Std or STD - Standard
13**/
14
15#ifndef ARCH_COMMON_NAMESPACE_OBJECTS_H_
16#define ARCH_COMMON_NAMESPACE_OBJECTS_H_
17
18#include <AcpiObjects.h>
19#include <StandardNameSpaceObjects.h>
20
21#include <IndustryStandard/Tpm2Acpi.h>
22
23/** The EARCH_COMMON_OBJECT_ID enum describes the Object IDs
24 in the Arch Common Namespace
25*/
26typedef enum ArchCommonObjectID {
27 EArchCommonObjReserved, ///< 0 - Reserved
28 EArchCommonObjPowerManagementProfileInfo, ///< 1 - Power Management Profile Info
29 EArchCommonObjSerialPortInfo, ///< 2 - Generic Serial Port Info
30 EArchCommonObjConsolePortInfo, ///< 3 - Serial Console Port Info
31 EArchCommonObjSerialDebugPortInfo, ///< 4 - Serial Debug Port Info
32 EArchCommonObjHypervisorVendorIdentity, ///< 5 - Hypervisor Vendor Id
33 EArchCommonObjFixedFeatureFlags, ///< 6 - Fixed feature flags for FADT
34 EArchCommonObjCmRef, ///< 7 - CM Object Reference
35 EArchCommonObjPciConfigSpaceInfo, ///< 8 - PCI Configuration Space Info
36 EArchCommonObjPciAddressMapInfo, ///< 9 - Pci Address Map Info
37 EArchCommonObjPciInterruptMapInfo, ///< 10 - Pci Interrupt Map Info
38 EArchCommonObjMemoryAffinityInfo, ///< 11 - Memory Affinity Info
39 EArchCommonObjDeviceHandleAcpi, ///< 12 - Device Handle Acpi
40 EArchCommonObjDeviceHandlePci, ///< 13 - Device Handle Pci
41 EArchCommonObjGenericInitiatorAffinityInfo, ///< 14 - Generic Initiator Affinity
42 EArchCommonObjLpiInfo, ///< 15 - Lpi Info
43 EArchCommonObjProcHierarchyInfo, ///< 16 - Processor Hierarchy Info
44 EArchCommonObjCacheInfo, ///< 17 - Cache Info
45 EArchCommonObjCpcInfo, ///< 18 - Continuous Performance Control Info
46 EArchCommonObjPccSubspaceType0Info, ///< 19 - Pcc Subspace Type 0 Info
47 EArchCommonObjPccSubspaceType1Info, ///< 20 - Pcc Subspace Type 1 Info
48 EArchCommonObjPccSubspaceType2Info, ///< 21 - Pcc Subspace Type 2 Info
49 EArchCommonObjPccSubspaceType3Info, ///< 22 - Pcc Subspace Type 3 Info
50 EArchCommonObjPccSubspaceType4Info, ///< 23 - Pcc Subspace Type 4 Info
51 EArchCommonObjPccSubspaceType5Info, ///< 24 - Pcc Subspace Type 5 Info
52 EArchCommonObjPsdInfo, ///< 25 - P-State Dependency (PSD) Info
53 EArchCommonObjTpm2InterfaceInfo, ///< 26 - TPM Interface Info
54 EArchCommonObjSpmiInterfaceInfo, ///< 27 - SPMI Interface Info
55 EArchCommonObjSpmiInterruptDeviceInfo, ///< 28 - SPMI Interrupt and Device Info
56 EArchCommonObjMax
57} EARCH_COMMON_OBJECT_ID;
58
59#pragma pack(1)
60
61/** A structure that describes the
62 Power Management Profile Information for the Platform.
63
64 ID: EArchCommonObjPowerManagementProfileInfo
65*/
66typedef struct CmArchCommonPowerManagementProfileInfo {
67 /** This is the Preferred_PM_Profile field of the FADT Table
68 described in the ACPI Specification
69 */
70 UINT8 PowerManagementProfile;
71} CM_ARCH_COMMON_POWER_MANAGEMENT_PROFILE_INFO;
72
73/** A structure that describes the
74 Serial Port information for the Platform.
75
76 ID: EArchCommonObjConsolePortInfo or
77 EArchCommonObjSerialDebugPortInfo or
78 EArchCommonObjSerialPortInfo
79*/
80typedef struct EArchCommonSerialPortInfo {
81 /// The physical base address for the serial port
82 UINT64 BaseAddress;
83
84 /** The serial port interrupt.
85 0 indicates that the serial port does not
86 have an interrupt wired.
87 */
88 UINT32 Interrupt;
89
90 /// The serial port baud rate
91 UINT64 BaudRate;
92
93 /// The serial port clock
94 UINT32 Clock;
95
96 /// Serial Port subtype
97 UINT16 PortSubtype;
98
99 /// The Base address length
100 UINT64 BaseAddressLength;
101
102 /// The access size
103 UINT8 AccessSize;
104} CM_ARCH_COMMON_SERIAL_PORT_INFO;
105
106/** A structure that describes the
107 Hypervisor Vendor ID information for the Platform.
108
109 ID: EArchCommonObjHypervisorVendorIdentity
110*/
111typedef struct CmArchCommonHypervisorVendorIdentity {
112 /// The hypervisor Vendor ID
113 UINT64 HypervisorVendorId;
114} CM_ARCH_COMMON_HYPERVISOR_VENDOR_ID;
115
116/** A structure that describes the
117 Fixed feature flags for the Platform.
118
119 ID: EArchCommonObjFixedFeatureFlags
120*/
121typedef struct CmArchCommonFixedFeatureFlags {
122 /// The Fixed feature flags
123 UINT32 Flags;
124} CM_ARCH_COMMON_FIXED_FEATURE_FLAGS;
125
126/** A structure that describes a reference to another Configuration Manager
127 object.
128
129 This is useful for creating an array of reference tokens. The framework
130 can then query the configuration manager for these arrays using the
131 object ID EArchCommonObjCmRef.
132
133 This can be used is to represent one-to-many relationships between objects.
134
135 ID: EArchCommonObjCmRef
136*/
137typedef struct CmArchCommonObjRef {
138 /// Token of the CM object being referenced
139 CM_OBJECT_TOKEN ReferenceToken;
140} CM_ARCH_COMMON_OBJ_REF;
141
142/** A structure that describes the
143 PCI Configuration Space information for the Platform.
144
145 ID: EArchCommonObjPciConfigSpaceInfo
146*/
147typedef struct CmArchCommonPciConfigSpaceInfo {
148 /// The physical base address for the PCI segment
149 UINT64 BaseAddress;
150
151 /// The PCI segment group number
152 UINT16 PciSegmentGroupNumber;
153
154 /// The start bus number
155 UINT8 StartBusNumber;
156
157 /// The end bus number
158 UINT8 EndBusNumber;
159
160 /// Optional field: Reference Token for address mapping.
161 /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure.
162 CM_OBJECT_TOKEN AddressMapToken;
163
164 /// Optional field: Reference Token for interrupt mapping.
165 /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure.
166 CM_OBJECT_TOKEN InterruptMapToken;
167} CM_ARCH_COMMON_PCI_CONFIG_SPACE_INFO;
168
169/** A structure that describes a PCI Address Map.
170
171 The memory-ranges used by the PCI bus are described by this object.
172
173 ID: EArchCommonObjPciAddressMapInfo
174*/
175typedef struct CmArchCommonPciAddressMapInfo {
176 /** Pci address space code
177
178 Available values are:
179 - 0: Configuration Space
180 - 1: I/O Space
181 - 2: 32-bit-address Memory Space
182 - 3: 64-bit-address Memory Space
183 */
184 UINT8 SpaceCode;
185
186 /// PCI address
187 UINT64 PciAddress;
188
189 /// Cpu address
190 UINT64 CpuAddress;
191
192 /// Address size
193 UINT64 AddressSize;
194} CM_ARCH_COMMON_PCI_ADDRESS_MAP_INFO;
195
196/** A structure that describes the
197 Generic Interrupts.
198*/
199typedef struct CmArchCommonGenericInterrupt {
200 /// Interrupt number
201 UINT32 Interrupt;
202
203 /// Flags
204 /// BIT0: 0: Interrupt is Level triggered
205 /// 1: Interrupt is Edge triggered
206 /// BIT1: 0: Interrupt is Active high
207 /// 1: Interrupt is Active low
208 UINT32 Flags;
209} CM_ARCH_COMMON_GENERIC_INTERRUPT;
210
211/** A structure that describes a PCI Interrupt Map.
212
213 The legacy PCI interrupts used by PCI devices are described by this object.
214
215 Cf Devicetree Specification - Release v0.3
216 s2.4.3 "Interrupt Nexus Properties"
217
218 ID: EArchCommonObjPciInterruptMapInfo
219*/
220typedef struct CmArchCommonPciInterruptMapInfo {
221 /// Pci Bus.
222 /// Value on 8 bits (max 255).
223 UINT8 PciBus;
224
225 /// Pci Device.
226 /// Value on 5 bits (max 31).
227 UINT8 PciDevice;
228
229 /** PCI interrupt
230
231 ACPI bindings are used:
232 Cf. ACPI 6.4, s6.2.13 _PRT (PCI Routing Table):
233 "0-INTA, 1-INTB, 2-INTC, 3-INTD"
234
235 Device-tree bindings are shifted by 1:
236 "INTA=1, INTB=2, INTC=3, INTD=4"
237 */
238 UINT8 PciInterrupt;
239
240 /** Interrupt controller interrupt.
241
242 Cf Devicetree Specification - Release v0.3
243 s2.4.3 "Interrupt Nexus Properties": "parent interrupt specifier"
244 */
245 CM_ARCH_COMMON_GENERIC_INTERRUPT IntcInterrupt;
246} CM_ARCH_COMMON_PCI_INTERRUPT_MAP_INFO;
247
248/** A structure that describes the Memory Affinity Structure (Type 1) in SRAT
249
250 ID: EArchCommonObjMemoryAffinityInfo
251*/
252typedef struct CmArchCommonMemoryAffinityInfo {
253 /// The proximity domain to which the "range of memory" belongs.
254 UINT32 ProximityDomain;
255
256 /// Base Address
257 UINT64 BaseAddress;
258
259 /// Length
260 UINT64 Length;
261
262 /// Flags
263 UINT32 Flags;
264} CM_ARCH_COMMON_MEMORY_AFFINITY_INFO;
265
266/** A structure that describes the ACPI Device Handle (Type 0) in the
267 Generic Initiator Affinity structure in SRAT
268
269 ID: EArchCommonObjDeviceHandleAcpi
270*/
271typedef struct CmArchCommonDeviceHandleAcpi {
272 /// Hardware ID
273 UINT64 Hid;
274
275 /// Unique Id
276 UINT32 Uid;
277} CM_ARCH_COMMON_DEVICE_HANDLE_ACPI;
278
279/** A structure that describes the PCI Device Handle (Type 1) in the
280 Generic Initiator Affinity structure in SRAT
281
282 ID: EArchCommonObjDeviceHandlePci
283*/
284typedef struct CmArchCommonDeviceHandlePci {
285 /// PCI Segment Number
286 UINT16 SegmentNumber;
287
288 /// PCI Bus Number - Max 256 busses (Bits 15:8 of BDF)
289 UINT8 BusNumber;
290
291 /// PCI Device Number - Max 32 devices (Bits 7:3 of BDF)
292 UINT8 DeviceNumber;
293
294 /// PCI Function Number - Max 8 functions (Bits 2:0 of BDF)
295 UINT8 FunctionNumber;
296} CM_ARCH_COMMON_DEVICE_HANDLE_PCI;
297
298/** A structure that describes the Generic Initiator Affinity structure in SRAT
299
300 ID: EArchCommonObjGenericInitiatorAffinityInfo
301*/
302typedef struct CmArchCommonGenericInitiatorAffinityInfo {
303 /// The proximity domain to which the generic initiator belongs.
304 UINT32 ProximityDomain;
305
306 /// Flags
307 UINT32 Flags;
308
309 /// Device Handle Type
310 UINT8 DeviceHandleType;
311
312 /// Reference Token for the Device Handle
313 CM_OBJECT_TOKEN DeviceHandleToken;
314} CM_ARCH_COMMON_GENERIC_INITIATOR_AFFINITY_INFO;
315
316/** A structure that describes the Lpi information.
317
318 The Low Power Idle states are described in DSDT/SSDT and associated
319 to cpus/clusters in the cpu topology.
320
321 ID: EArchCommonObjLpiInfo
322*/
323typedef struct CmArchCommonLpiInfo {
324 /** Minimum Residency. Time in microseconds after which a
325 state becomes more energy efficient than any shallower state.
326 */
327 UINT32 MinResidency;
328
329 /** Worst case time in microseconds from a wake interrupt
330 being asserted to the return to a running state
331 */
332 UINT32 WorstCaseWakeLatency;
333
334 /** Flags.
335 */
336 UINT32 Flags;
337
338 /** Architecture specific context loss flags.
339 */
340 UINT32 ArchFlags;
341
342 /** Residency counter frequency in cycles-per-second (Hz).
343 */
344 UINT32 ResCntFreq;
345
346 /** Every shallower power state in the parent is also enabled.
347 */
348 UINT32 EnableParentState;
349
350 /** The EntryMethod _LPI field can be described as an integer
351 or in a Register resource data descriptor.
352
353 If IsInteger is TRUE, the IntegerEntryMethod field is used.
354 If IsInteger is FALSE, the RegisterEntryMethod field is used.
355 */
356 BOOLEAN IsInteger;
357
358 /** EntryMethod described as an Integer.
359 */
360 UINT64 IntegerEntryMethod;
361
362 /** EntryMethod described as a EFI_ACPI_GENERIC_REGISTER_DESCRIPTOR.
363 */
364 EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE RegisterEntryMethod;
365
366 /** Residency counter register.
367 */
368 EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE ResidencyCounterRegister;
369
370 /** Usage counter register.
371 */
372 EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE UsageCounterRegister;
373
374 /** String representing the Lpi state
375 */
376 CHAR8 StateName[16];
377} CM_ARCH_COMMON_LPI_INFO;
378
379/** A structure that describes the Processor Hierarchy Node (Type 0) in PPTT
380
381 ID: EArchCommonObjProcHierarchyInfo
382*/
383typedef struct CmArchCommonProcHierarchyInfo {
384 /// A unique token used to identify this object
385 CM_OBJECT_TOKEN Token;
386 /// Processor structure flags (ACPI 6.3 - January 2019, PPTT, Table 5-155)
387 UINT32 Flags;
388 /// Token for the parent CM_ARCH_COMMON_PROC_HIERARCHY_INFO object in the processor
389 /// topology. A value of CM_NULL_TOKEN means this node has no parent.
390 CM_OBJECT_TOKEN ParentToken;
391 /// Token of the associated object which has the corresponding ACPI Processor
392 /// ID, e.g. for Arm systems this is a reference to CM_ARM_GICC_INFO object.
393 /// A value of CM_NULL_TOKEN means this node represents a group of associated
394 /// processors and it does not have an associated CPU interface.
395 CM_OBJECT_TOKEN AcpiIdObjectToken;
396 /// Number of resources private to this Node
397 UINT32 NoOfPrivateResources;
398 /// Token of the array which contains references to the resources private to
399 /// this CM_ARCH_COMMON_PROC_HIERARCHY_INFO instance. This field is ignored if
400 /// the NoOfPrivateResources is 0, in which case it is recommended to set
401 /// this field to CM_NULL_TOKEN.
402 CM_OBJECT_TOKEN PrivateResourcesArrayToken;
403 /// Optional field: Reference Token for the Lpi state of this processor.
404 /// Token identifying a CM_ARCH_COMMON_OBJ_REF structure, itself referencing
405 /// CM_ARCH_COMMON_LPI_INFO objects.
406 CM_OBJECT_TOKEN LpiToken;
407 /// Set to TRUE if UID should override index for name and _UID
408 /// for processor container nodes and name of processors.
409 /// This should be consistently set for containers or processors to avoid
410 /// duplicate values
411 BOOLEAN OverrideNameUidEnabled;
412 /// If OverrideNameUidEnabled is TRUE then this value will be used for name of
413 /// processors and processor containers.
414 UINT16 OverrideName;
415 /// If OverrideNameUidEnabled is TRUE then this value will be used for
416 /// the UID of processor containers.
417 UINT32 OverrideUid;
418} CM_ARCH_COMMON_PROC_HIERARCHY_INFO;
419
420/** A structure that describes the Cache Type Structure (Type 1) in PPTT
421
422 ID: EArchCommonObjCacheInfo
423*/
424typedef struct CmArchCommonCacheInfo {
425 /// A unique token used to identify this object
426 CM_OBJECT_TOKEN Token;
427 /// Reference token for the next level of cache that is private to the same
428 /// CM_ARCH_COMMON_PROC_HIERARCHY_INFO instance. A value of CM_NULL_TOKEN
429 /// means this entry represents the last cache level appropriate to the
430 /// processor hierarchy node structures using this entry.
431 CM_OBJECT_TOKEN NextLevelOfCacheToken;
432 /// Size of the cache in bytes
433 UINT32 Size;
434 /// Number of sets in the cache
435 UINT32 NumberOfSets;
436 /// Integer number of ways. The maximum associativity supported by
437 /// ACPI Cache type structure is limited to MAX_UINT8. However,
438 /// the maximum number of ways supported by the architecture is
439 /// PPTT_ARM_CCIDX_CACHE_ASSOCIATIVITY_MAX. Therfore this field
440 /// is 32-bit wide.
441 UINT32 Associativity;
442 /// Cache attributes (ACPI 6.4 - January 2021, PPTT, Table 5.140)
443 UINT8 Attributes;
444 /// Line size in bytes
445 UINT16 LineSize;
446 /// Unique ID for the cache
447 UINT32 CacheId;
448} CM_ARCH_COMMON_CACHE_INFO;
449
450/** A structure that describes the Cpc information.
451
452 Continuous Performance Control is described in DSDT/SSDT and associated
453 to cpus/clusters in the cpu topology.
454
455 Unsupported Optional registers should be encoded with NULL resource
456 Register {(SystemMemory, 0, 0, 0, 0)}
457
458 For values that support Integer or Buffer, integer will be used
459 if buffer is NULL resource.
460 If resource is not NULL then Integer must be 0
461
462 Cf. ACPI 6.4, s8.4.7.1 _CPC (Continuous Performance Control)
463
464 ID: EArchCommonObjCpcInfo
465*/
466typedef AML_CPC_INFO CM_ARCH_COMMON_CPC_INFO;
467
468/** A structure that describes a
469 PCC Mailbox Register.
470*/
471typedef struct PccMailboxRegisterInfo {
472 /// GAS describing the Register.
473 EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE Register;
474
475 /** Mask of bits to preserve when writing.
476
477 This mask is also used for registers. The Register is only read
478 and there is no write mask required. E.g.:
479 - Error Status mask (Cf. PCC Subspace types 3/4/5).
480 - Command Complete Check mask (Cf. PCC Subspace types 3/4/5).
481 */
482 UINT64 PreserveMask;
483
484 /// Mask of bits to set when writing.
485 UINT64 WriteMask;
486} PCC_MAILBOX_REGISTER_INFO;
487
488/** A structure that describes the
489 PCC Subspace CHannel Timings.
490*/
491typedef struct PccSubspaceChannelTimingInfo {
492 /// Expected latency to process a command, in microseconds.
493 UINT32 NominalLatency;
494
495 /** Maximum number of periodic requests that the subspace channel can
496 support, reported in commands per minute. 0 indicates no limitation.
497
498 This field is ignored for the PCC Subspace type 5 (HW Registers based).
499 */
500 UINT32 MaxPeriodicAccessRate;
501
502 /** Minimum amount of time that OSPM must wait after the completion
503 of a command before issuing the next command, in microseconds.
504 */
505 UINT16 MinRequestTurnaroundTime;
506} PCC_SUBSPACE_CHANNEL_TIMING_INFO;
507
508/** A structure that describes a
509 Generic PCC Subspace (Type 0).
510*/
511typedef struct PccSubspaceGenericInfo {
512 /** Subspace Id.
513
514 Cf. ACPI 6.4, s14.7 Referencing the PCC address space
515 Cf. s14.1.2 Platform Communications Channel Subspace Structures
516 The subspace ID of a PCC subspace is its index in the array of
517 subspace structures, starting with subspace 0.
518
519 At most 256 subspaces are supported.
520 */
521 UINT8 SubspaceId;
522
523 /// Table type (or subspace).
524 UINT8 Type;
525
526 /// Base address of the shared memory range.
527 /// This field is ignored for the PCC Subspace type 5 (HW Registers based).
528 UINT64 BaseAddress;
529
530 /// Address length.
531 UINT64 AddressLength;
532
533 /// Doorbell Register.
534 PCC_MAILBOX_REGISTER_INFO DoorbellReg;
535
536 /// Mailbox Timings.
537 PCC_SUBSPACE_CHANNEL_TIMING_INFO ChannelTiming;
538} PCC_SUBSPACE_GENERIC_INFO;
539
540/** A structure that describes a
541 PCC Subspace of type 0 (Generic).
542
543 ID: EArchCommonObjPccSubspaceType0Info
544*/
545typedef PCC_SUBSPACE_GENERIC_INFO CM_ARCH_COMMON_PCC_SUBSPACE_TYPE0_INFO;
546
547/** A structure that describes a
548 PCC Subspace of type 1 (HW-Reduced).
549
550 ID: EArchCommonObjPccSubspaceType1Info
551*/
552typedef struct CmArchCommonPccSubspaceType1Info {
553 /** Generic Pcc information.
554
555 The Subspace of Type0 contains information that can be re-used
556 in other Subspace types.
557 */
558 PCC_SUBSPACE_GENERIC_INFO GenericPccInfo;
559
560 /// Platform Interrupt.
561 CM_ARCH_COMMON_GENERIC_INTERRUPT PlatIrq;
562} CM_ARCH_COMMON_PCC_SUBSPACE_TYPE1_INFO;
563
564/** A structure that describes a
565 PCC Subspace of type 2 (HW-Reduced).
566
567 ID: EArchCommonObjPccSubspaceType2Info
568*/
569typedef struct CmArchCommonPccSubspaceType2Info {
570 /** Generic Pcc information.
571
572 The Subspace of Type0 contains information that can be re-used
573 in other Subspace types.
574 */
575 PCC_SUBSPACE_GENERIC_INFO GenericPccInfo;
576
577 /// Platform Interrupt.
578 CM_ARCH_COMMON_GENERIC_INTERRUPT PlatIrq;
579
580 /// Platform Interrupt Register.
581 PCC_MAILBOX_REGISTER_INFO PlatIrqAckReg;
582} CM_ARCH_COMMON_PCC_SUBSPACE_TYPE2_INFO;
583
584/** A structure that describes a
585 PCC Subspace of type 3 (Extended)
586
587 ID: EArchCommonObjPccSubspaceType3Info
588*/
589typedef struct CmArchCommonPccSubspaceType3Info {
590 /** Generic Pcc information.
591
592 The Subspace of Type0 contains information that can be re-used
593 in other Subspace types.
594 */
595 PCC_SUBSPACE_GENERIC_INFO GenericPccInfo;
596
597 /// Platform Interrupt.
598 CM_ARCH_COMMON_GENERIC_INTERRUPT PlatIrq;
599
600 /// Platform Interrupt Register.
601 PCC_MAILBOX_REGISTER_INFO PlatIrqAckReg;
602
603 /// Command Complete Check Register.
604 /// The WriteMask field is not used.
605 PCC_MAILBOX_REGISTER_INFO CmdCompleteCheckReg;
606
607 /// Command Complete Update Register.
608 PCC_MAILBOX_REGISTER_INFO CmdCompleteUpdateReg;
609
610 /// Error Status Register.
611 /// The WriteMask field is not used.
612 PCC_MAILBOX_REGISTER_INFO ErrorStatusReg;
613} CM_ARCH_COMMON_PCC_SUBSPACE_TYPE3_INFO;
614
615/** A structure that describes a
616 PCC Subspace of type 4 (Extended)
617
618 ID: EArchCommonObjPccSubspaceType4Info
619*/
620typedef CM_ARCH_COMMON_PCC_SUBSPACE_TYPE3_INFO CM_ARCH_COMMON_PCC_SUBSPACE_TYPE4_INFO;
621
622/** A structure that describes a
623 PCC Subspace of type 5 (HW-Registers).
624
625 ID: EArchCommonObjPccSubspaceType5Info
626*/
627typedef struct CmArchCommonPccSubspaceType5Info {
628 /** Generic Pcc information.
629
630 The Subspace of Type0 contains information that can be re-used
631 in other Subspace types.
632
633 MaximumPeriodicAccessRate doesn't need to be populated for
634 this structure.
635 */
636 PCC_SUBSPACE_GENERIC_INFO GenericPccInfo;
637
638 /// Version.
639 UINT16 Version;
640
641 /// Platform Interrupt.
642 CM_ARCH_COMMON_GENERIC_INTERRUPT PlatIrq;
643
644 /// Command Complete Check Register.
645 /// The WriteMask field is not used.
646 PCC_MAILBOX_REGISTER_INFO CmdCompleteCheckReg;
647
648 /// Error Status Register.
649 /// The WriteMask field is not used.
650 PCC_MAILBOX_REGISTER_INFO ErrorStatusReg;
651} CM_ARCH_COMMON_PCC_SUBSPACE_TYPE5_INFO;
652
653/** A structure that describes a
654 P-State Dependency (PSD) Info.
655
656 Cf. ACPI 6.5, s8.4.5.5 _PSD (P-State Dependency).
657
658 ID: EArchCommonObjPsdInfo
659*/
660typedef AML_PSD_INFO CM_ARCH_COMMON_PSD_INFO;
661
662/** A structure that describes TPM interface and access method.
663
664 TCG ACPI Specification 2.0
665
666 ID: EArchCommonObjTpm2InterfaceInfo
667*/
668typedef struct CmArchCommonTpm2InterfaceInfo {
669 /** Platform Class
670 0: Client platform
671 1: Server platform
672 */
673 UINT16 PlatformClass;
674
675 /** Physical address of the Control Area */
676 UINT64 AddressOfControlArea;
677
678 /** The Start Method selector determines which mechanism the
679 device driver uses to notify the TPM 2.0 device that a
680 command is available for processing.
681 */
682 UINT32 StartMethod;
683
684 /** The number of bytes stored in StartMethodParameters[] */
685 UINT8 StartMethodParametersSize;
686
687 /** Start method specific parameters */
688 UINT8 StartMethodParameters[EFI_TPM2_ACPI_TABLE_START_METHOD_SPECIFIC_PARAMETERS_MAX_SIZE];
689
690 /** Log Area Minimum Length */
691 UINT32 Laml;
692
693 /** Log Area Start Address */
694 UINT64 Lasa;
695} CM_ARCH_COMMON_TPM2_INTERFACE_INFO;
696
697/** A structure that describes the
698 SPMI (Service Processor Management Interface) Info.
699
700 ID: EArchCommonObjSpmiInterfaceInfo
701*/
702typedef struct CmArchCommonObjSpmiInterfaceInfo {
703 /** Interface type */
704 UINT8 InterfaceType;
705
706 /** Base address */
707 EFI_ACPI_6_5_GENERIC_ADDRESS_STRUCTURE BaseAddress;
708} CM_ARCH_COMMON_SPMI_INTERFACE_INFO;
709
710/** A structure that describes the
711 SPMI (Service Processor Management Interface) Interrupt and Device Info.
712
713 ID: EArchCommonObjSpmiInterruptDeviceInfo
714*/
715typedef struct CmArchCommonObjSpmiInterruptDeviceInfo {
716 /** Interrupt type */
717 UINT8 InterruptType;
718
719 /** GPE number */
720 UINT8 Gpe;
721
722 /** PCI device flag */
723 UINT8 PciDeviceFlag;
724
725 /** GSI number */
726 UINT32 GlobalSystemInterrupt;
727
728 /** Uid of the device */
729 UINT32 DeviceId;
730} CM_ARCH_COMMON_SPMI_INTERRUPT_DEVICE_INFO;
731#pragma pack()
732
733#endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette