File indexing completed on 2025-05-11 08:23:42
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152 #ifndef __ACTBL1_H__
0153 #define __ACTBL1_H__
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171 #define ACPI_SIG_AEST "AEST"
0172 #define ACPI_SIG_ASF "ASF!"
0173 #define ACPI_SIG_ASPT "ASPT"
0174 #define ACPI_SIG_BERT "BERT"
0175 #define ACPI_SIG_BGRT "BGRT"
0176 #define ACPI_SIG_BOOT "BOOT"
0177 #define ACPI_SIG_CEDT "CEDT"
0178 #define ACPI_SIG_CPEP "CPEP"
0179 #define ACPI_SIG_CSRT "CSRT"
0180 #define ACPI_SIG_DBG2 "DBG2"
0181 #define ACPI_SIG_DBGP "DBGP"
0182 #define ACPI_SIG_DMAR "DMAR"
0183 #define ACPI_SIG_DRTM "DRTM"
0184 #define ACPI_SIG_ECDT "ECDT"
0185 #define ACPI_SIG_EINJ "EINJ"
0186 #define ACPI_SIG_ERST "ERST"
0187 #define ACPI_SIG_FPDT "FPDT"
0188 #define ACPI_SIG_GTDT "GTDT"
0189 #define ACPI_SIG_HEST "HEST"
0190 #define ACPI_SIG_HMAT "HMAT"
0191 #define ACPI_SIG_HPET "HPET"
0192 #define ACPI_SIG_IBFT "IBFT"
0193 #define ACPI_SIG_MSCT "MSCT"
0194
0195 #define ACPI_SIG_S3PT "S3PT"
0196 #define ACPI_SIG_PCCS "PCC"
0197
0198
0199
0200
0201 #define ACPI_SIG_MATR "MATR"
0202 #define ACPI_SIG_MSDM "MSDM"
0203
0204
0205
0206
0207 #ifdef ACPI_UNDEFINED_TABLES
0208 #define ACPI_SIG_ATKG "ATKG"
0209 #define ACPI_SIG_GSCI "GSCI"
0210 #define ACPI_SIG_IEIT "IEIT"
0211 #endif
0212
0213
0214
0215
0216
0217 #pragma pack(1)
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238
0239
0240 typedef struct acpi_subtable_header
0241 {
0242 UINT8 Type;
0243 UINT8 Length;
0244
0245 } ACPI_SUBTABLE_HEADER;
0246
0247
0248
0249
0250 typedef struct acpi_whea_header
0251 {
0252 UINT8 Action;
0253 UINT8 Instruction;
0254 UINT8 Flags;
0255 UINT8 Reserved;
0256 ACPI_GENERIC_ADDRESS RegisterRegion;
0257 UINT64 Value;
0258 UINT64 Mask;
0259
0260 } ACPI_WHEA_HEADER;
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272 typedef struct acpi_table_asf
0273 {
0274 ACPI_TABLE_HEADER Header;
0275
0276 } ACPI_TABLE_ASF;
0277
0278
0279
0280
0281 typedef struct acpi_asf_header
0282 {
0283 UINT8 Type;
0284 UINT8 Reserved;
0285 UINT16 Length;
0286
0287 } ACPI_ASF_HEADER;
0288
0289
0290
0291
0292 enum AcpiAsfType
0293 {
0294 ACPI_ASF_TYPE_INFO = 0,
0295 ACPI_ASF_TYPE_ALERT = 1,
0296 ACPI_ASF_TYPE_CONTROL = 2,
0297 ACPI_ASF_TYPE_BOOT = 3,
0298 ACPI_ASF_TYPE_ADDRESS = 4,
0299 ACPI_ASF_TYPE_RESERVED = 5
0300 };
0301
0302
0303
0304
0305
0306
0307
0308 typedef struct acpi_asf_info
0309 {
0310 ACPI_ASF_HEADER Header;
0311 UINT8 MinResetValue;
0312 UINT8 MinPollInterval;
0313 UINT16 SystemId;
0314 UINT32 MfgId;
0315 UINT8 Flags;
0316 UINT8 Reserved2[3];
0317
0318 } ACPI_ASF_INFO;
0319
0320
0321
0322 #define ACPI_ASF_SMBUS_PROTOCOLS (1)
0323
0324
0325
0326
0327 typedef struct acpi_asf_alert
0328 {
0329 ACPI_ASF_HEADER Header;
0330 UINT8 AssertMask;
0331 UINT8 DeassertMask;
0332 UINT8 Alerts;
0333 UINT8 DataLength;
0334
0335 } ACPI_ASF_ALERT;
0336
0337 typedef struct acpi_asf_alert_data
0338 {
0339 UINT8 Address;
0340 UINT8 Command;
0341 UINT8 Mask;
0342 UINT8 Value;
0343 UINT8 SensorType;
0344 UINT8 Type;
0345 UINT8 Offset;
0346 UINT8 SourceType;
0347 UINT8 Severity;
0348 UINT8 SensorNumber;
0349 UINT8 Entity;
0350 UINT8 Instance;
0351
0352 } ACPI_ASF_ALERT_DATA;
0353
0354
0355
0356
0357 typedef struct acpi_asf_remote
0358 {
0359 ACPI_ASF_HEADER Header;
0360 UINT8 Controls;
0361 UINT8 DataLength;
0362 UINT16 Reserved2;
0363
0364 } ACPI_ASF_REMOTE;
0365
0366 typedef struct acpi_asf_control_data
0367 {
0368 UINT8 Function;
0369 UINT8 Address;
0370 UINT8 Command;
0371 UINT8 Value;
0372
0373 } ACPI_ASF_CONTROL_DATA;
0374
0375
0376
0377
0378 typedef struct acpi_asf_rmcp
0379 {
0380 ACPI_ASF_HEADER Header;
0381 UINT8 Capabilities[7];
0382 UINT8 CompletionCode;
0383 UINT32 EnterpriseId;
0384 UINT8 Command;
0385 UINT16 Parameter;
0386 UINT16 BootOptions;
0387 UINT16 OemParameters;
0388
0389 } ACPI_ASF_RMCP;
0390
0391
0392
0393
0394 typedef struct acpi_asf_address
0395 {
0396 ACPI_ASF_HEADER Header;
0397 UINT8 EpromAddress;
0398 UINT8 Devices;
0399
0400 } ACPI_ASF_ADDRESS;
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412 typedef struct acpi_table_aspt
0413 {
0414 ACPI_TABLE_HEADER Header;
0415 UINT32 NumEntries;
0416
0417 } ACPI_TABLE_ASPT;
0418
0419
0420
0421
0422 typedef struct acpi_aspt_header
0423 {
0424 UINT16 Type;
0425 UINT16 Length;
0426
0427 } ACPI_ASPT_HEADER;
0428
0429
0430
0431
0432 enum AcpiAsptType
0433 {
0434 ACPI_ASPT_TYPE_GLOBAL_REGS = 0,
0435 ACPI_ASPT_TYPE_SEV_MBOX_REGS = 1,
0436 ACPI_ASPT_TYPE_ACPI_MBOX_REGS = 2,
0437 ACPI_ASPT_TYPE_UNKNOWN = 3,
0438 };
0439
0440
0441
0442
0443
0444
0445
0446 typedef struct acpi_aspt_global_regs
0447 {
0448 ACPI_ASPT_HEADER Header;
0449 UINT32 Reserved;
0450 UINT64 FeatureRegAddr;
0451 UINT64 IrqEnRegAddr;
0452 UINT64 IrqStRegAddr;
0453
0454 } ACPI_ASPT_GLOBAL_REGS;
0455
0456
0457
0458
0459 typedef struct acpi_aspt_sev_mbox_regs
0460 {
0461 ACPI_ASPT_HEADER Header;
0462 UINT8 MboxIrqId;
0463 UINT8 Reserved[3];
0464 UINT64 CmdRespRegAddr;
0465 UINT64 CmdBufLoRegAddr;
0466 UINT64 CmdBufHiRegAddr;
0467
0468 } ACPI_ASPT_SEV_MBOX_REGS;
0469
0470
0471
0472
0473 typedef struct acpi_aspt_acpi_mbox_regs
0474 {
0475 ACPI_ASPT_HEADER Header;
0476 UINT32 Reserved1;
0477 UINT64 CmdRespRegAddr;
0478 UINT64 Reserved2[2];
0479
0480 } ACPI_ASPT_ACPI_MBOX_REGS;
0481
0482
0483
0484
0485
0486
0487
0488
0489
0490 typedef struct acpi_table_bert
0491 {
0492 ACPI_TABLE_HEADER Header;
0493 UINT32 RegionLength;
0494 UINT64 Address;
0495
0496 } ACPI_TABLE_BERT;
0497
0498
0499
0500
0501 typedef struct acpi_bert_region
0502 {
0503 UINT32 BlockStatus;
0504 UINT32 RawDataOffset;
0505 UINT32 RawDataLength;
0506 UINT32 DataLength;
0507 UINT32 ErrorSeverity;
0508
0509 } ACPI_BERT_REGION;
0510
0511
0512
0513 #define ACPI_BERT_UNCORRECTABLE (1)
0514 #define ACPI_BERT_CORRECTABLE (1<<1)
0515 #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2)
0516 #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3)
0517 #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4)
0518
0519
0520
0521 enum AcpiBertErrorSeverity
0522 {
0523 ACPI_BERT_ERROR_CORRECTABLE = 0,
0524 ACPI_BERT_ERROR_FATAL = 1,
0525 ACPI_BERT_ERROR_CORRECTED = 2,
0526 ACPI_BERT_ERROR_NONE = 3,
0527 ACPI_BERT_ERROR_RESERVED = 4
0528 };
0529
0530
0531
0532
0533
0534
0535
0536
0537
0538
0539
0540
0541
0542
0543 typedef struct acpi_table_bgrt
0544 {
0545 ACPI_TABLE_HEADER Header;
0546 UINT16 Version;
0547 UINT8 Status;
0548 UINT8 ImageType;
0549 UINT64 ImageAddress;
0550 UINT32 ImageOffsetX;
0551 UINT32 ImageOffsetY;
0552
0553 } ACPI_TABLE_BGRT;
0554
0555
0556
0557 #define ACPI_BGRT_DISPLAYED (1)
0558 #define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1)
0559
0560
0561
0562
0563
0564
0565
0566
0567
0568
0569
0570 typedef struct acpi_table_boot
0571 {
0572 ACPI_TABLE_HEADER Header;
0573 UINT8 CmosIndex;
0574 UINT8 Reserved[3];
0575
0576 } ACPI_TABLE_BOOT;
0577
0578
0579
0580
0581
0582
0583
0584
0585
0586
0587
0588
0589 typedef struct acpi_table_cdat
0590 {
0591 UINT32 Length;
0592 UINT8 Revision;
0593 UINT8 Checksum;
0594 UINT8 Reserved[6];
0595 UINT32 Sequence;
0596
0597 } ACPI_TABLE_CDAT;
0598
0599
0600
0601
0602 typedef struct acpi_cdat_header
0603 {
0604 UINT8 Type;
0605 UINT8 Reserved;
0606 UINT16 Length;
0607
0608 } ACPI_CDAT_HEADER;
0609
0610
0611
0612 enum AcpiCdatType
0613 {
0614 ACPI_CDAT_TYPE_DSMAS = 0,
0615 ACPI_CDAT_TYPE_DSLBIS = 1,
0616 ACPI_CDAT_TYPE_DSMSCIS = 2,
0617 ACPI_CDAT_TYPE_DSIS = 3,
0618 ACPI_CDAT_TYPE_DSEMTS = 4,
0619 ACPI_CDAT_TYPE_SSLBIS = 5,
0620 ACPI_CDAT_TYPE_RESERVED = 6
0621 };
0622
0623
0624
0625
0626 typedef struct acpi_cdat_dsmas
0627 {
0628 UINT8 DsmadHandle;
0629 UINT8 Flags;
0630 UINT16 Reserved;
0631 UINT64 DpaBaseAddress;
0632 UINT64 DpaLength;
0633
0634 } ACPI_CDAT_DSMAS;
0635
0636
0637
0638 #define ACPI_CDAT_DSMAS_NON_VOLATILE (1 << 2)
0639
0640
0641
0642
0643 typedef struct acpi_cdat_dslbis
0644 {
0645 UINT8 Handle;
0646 UINT8 Flags;
0647
0648 UINT8 DataType;
0649 UINT8 Reserved;
0650 UINT64 EntryBaseUnit;
0651 UINT16 Entry[3];
0652 UINT16 Reserved2;
0653
0654 } ACPI_CDAT_DSLBIS;
0655
0656
0657
0658
0659 typedef struct acpi_cdat_dsmscis
0660 {
0661 UINT8 DsmasHandle;
0662 UINT8 Reserved[3];
0663 UINT64 SideCacheSize;
0664 UINT32 CacheAttributes;
0665
0666 } ACPI_CDAT_DSMSCIS;
0667
0668
0669
0670
0671 typedef struct acpi_cdat_dsis
0672 {
0673 UINT8 Flags;
0674 UINT8 Handle;
0675 UINT16 Reserved;
0676
0677 } ACPI_CDAT_DSIS;
0678
0679
0680
0681 #define ACPI_CDAT_DSIS_MEM_ATTACHED (1 << 0)
0682
0683
0684
0685
0686 typedef struct acpi_cdat_dsemts
0687 {
0688 UINT8 DsmasHandle;
0689 UINT8 MemoryType;
0690 UINT16 Reserved;
0691 UINT64 DpaOffset;
0692 UINT64 RangeLength;
0693
0694 } ACPI_CDAT_DSEMTS;
0695
0696
0697
0698
0699 typedef struct acpi_cdat_sslbis
0700 {
0701 UINT8 DataType;
0702 UINT8 Reserved[3];
0703 UINT64 EntryBaseUnit;
0704
0705 } ACPI_CDAT_SSLBIS;
0706
0707
0708
0709
0710 typedef struct acpi_cdat_sslbe
0711 {
0712 UINT16 PortxId;
0713 UINT16 PortyId;
0714 UINT16 LatencyOrBandwidth;
0715 UINT16 Reserved;
0716
0717 } ACPI_CDAT_SSLBE;
0718
0719 #define ACPI_CDAT_SSLBIS_US_PORT 0x0100
0720 #define ACPI_CDAT_SSLBIS_ANY_PORT 0xffff
0721
0722
0723
0724
0725
0726
0727
0728
0729
0730
0731 typedef struct acpi_table_cedt
0732 {
0733 ACPI_TABLE_HEADER Header;
0734
0735 } ACPI_TABLE_CEDT;
0736
0737
0738
0739 typedef struct acpi_cedt_header
0740 {
0741 UINT8 Type;
0742 UINT8 Reserved;
0743 UINT16 Length;
0744
0745 } ACPI_CEDT_HEADER;
0746
0747
0748
0749 enum AcpiCedtType
0750 {
0751 ACPI_CEDT_TYPE_CHBS = 0,
0752 ACPI_CEDT_TYPE_CFMWS = 1,
0753 ACPI_CEDT_TYPE_CXIMS = 2,
0754 ACPI_CEDT_TYPE_RDPAS = 3,
0755 ACPI_CEDT_TYPE_RESERVED = 4,
0756 };
0757
0758
0759
0760 #define ACPI_CEDT_CHBS_VERSION_CXL11 (0)
0761 #define ACPI_CEDT_CHBS_VERSION_CXL20 (1)
0762
0763
0764
0765 #define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000)
0766 #define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000)
0767
0768
0769
0770
0771
0772
0773
0774 typedef struct acpi_cedt_chbs
0775 {
0776 ACPI_CEDT_HEADER Header;
0777 UINT32 Uid;
0778 UINT32 CxlVersion;
0779 UINT32 Reserved;
0780 UINT64 Base;
0781 UINT64 Length;
0782
0783 } ACPI_CEDT_CHBS;
0784
0785
0786
0787
0788 typedef struct acpi_cedt_cfmws
0789 {
0790 ACPI_CEDT_HEADER Header;
0791 UINT32 Reserved1;
0792 UINT64 BaseHpa;
0793 UINT64 WindowSize;
0794 UINT8 InterleaveWays;
0795 UINT8 InterleaveArithmetic;
0796 UINT16 Reserved2;
0797 UINT32 Granularity;
0798 UINT16 Restrictions;
0799 UINT16 QtgId;
0800 UINT32 InterleaveTargets[];
0801
0802 } ACPI_CEDT_CFMWS;
0803
0804 typedef struct acpi_cedt_cfmws_target_element
0805 {
0806 UINT32 InterleaveTarget;
0807
0808 } ACPI_CEDT_CFMWS_TARGET_ELEMENT;
0809
0810
0811
0812 #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0)
0813 #define ACPI_CEDT_CFMWS_ARITHMETIC_XOR (1)
0814
0815
0816
0817 #define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1)
0818 #define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1)
0819 #define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2)
0820 #define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)
0821 #define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)
0822
0823
0824
0825 typedef struct acpi_cedt_cxims {
0826 ACPI_CEDT_HEADER Header;
0827 UINT16 Reserved1;
0828 UINT8 Hbig;
0829 UINT8 NrXormaps;
0830 UINT64 XormapList[];
0831 } ACPI_CEDT_CXIMS;
0832
0833 typedef struct acpi_cedt_cxims_target_element
0834 {
0835 UINT64 Xormap;
0836
0837 } ACPI_CEDT_CXIMS_TARGET_ELEMENT;
0838
0839
0840
0841
0842 struct acpi_cedt_rdpas {
0843 ACPI_CEDT_HEADER Header;
0844 UINT16 Segment;
0845 UINT16 Bdf;
0846 UINT8 Protocol;
0847 UINT64 Address;
0848 };
0849
0850
0851 #define ACPI_CEDT_RDPAS_BUS_MASK 0xff00
0852 #define ACPI_CEDT_RDPAS_DEVICE_MASK 0x00f8
0853 #define ACPI_CEDT_RDPAS_FUNCTION_MASK 0x0007
0854
0855 #define ACPI_CEDT_RDPAS_PROTOCOL_IO (0)
0856 #define ACPI_CEDT_RDPAS_PROTOCOL_CACHEMEM (1)
0857
0858
0859
0860
0861
0862
0863
0864
0865 typedef struct acpi_table_cpep
0866 {
0867 ACPI_TABLE_HEADER Header;
0868 UINT64 Reserved;
0869
0870 } ACPI_TABLE_CPEP;
0871
0872
0873
0874
0875 typedef struct acpi_cpep_polling
0876 {
0877 ACPI_SUBTABLE_HEADER Header;
0878 UINT8 Id;
0879 UINT8 Eid;
0880 UINT32 Interval;
0881
0882 } ACPI_CPEP_POLLING;
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894 typedef struct acpi_table_csrt
0895 {
0896 ACPI_TABLE_HEADER Header;
0897
0898 } ACPI_TABLE_CSRT;
0899
0900
0901
0902
0903 typedef struct acpi_csrt_group
0904 {
0905 UINT32 Length;
0906 UINT32 VendorId;
0907 UINT32 SubvendorId;
0908 UINT16 DeviceId;
0909 UINT16 SubdeviceId;
0910 UINT16 Revision;
0911 UINT16 Reserved;
0912 UINT32 SharedInfoLength;
0913
0914
0915
0916 } ACPI_CSRT_GROUP;
0917
0918
0919
0920 typedef struct acpi_csrt_shared_info
0921 {
0922 UINT16 MajorVersion;
0923 UINT16 MinorVersion;
0924 UINT32 MmioBaseLow;
0925 UINT32 MmioBaseHigh;
0926 UINT32 GsiInterrupt;
0927 UINT8 InterruptPolarity;
0928 UINT8 InterruptMode;
0929 UINT8 NumChannels;
0930 UINT8 DmaAddressWidth;
0931 UINT16 BaseRequestLine;
0932 UINT16 NumHandshakeSignals;
0933 UINT32 MaxBlockSize;
0934
0935
0936
0937 } ACPI_CSRT_SHARED_INFO;
0938
0939
0940
0941 typedef struct acpi_csrt_descriptor
0942 {
0943 UINT32 Length;
0944 UINT16 Type;
0945 UINT16 Subtype;
0946 UINT32 Uid;
0947
0948
0949
0950 } ACPI_CSRT_DESCRIPTOR;
0951
0952
0953
0954
0955 #define ACPI_CSRT_TYPE_INTERRUPT 0x0001
0956 #define ACPI_CSRT_TYPE_TIMER 0x0002
0957 #define ACPI_CSRT_TYPE_DMA 0x0003
0958
0959
0960
0961 #define ACPI_CSRT_XRUPT_LINE 0x0000
0962 #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001
0963 #define ACPI_CSRT_TIMER 0x0000
0964 #define ACPI_CSRT_DMA_CHANNEL 0x0000
0965 #define ACPI_CSRT_DMA_CONTROLLER 0x0001
0966
0967
0968
0969
0970
0971
0972
0973
0974
0975
0976
0977 typedef struct acpi_table_dbg2
0978 {
0979 ACPI_TABLE_HEADER Header;
0980 UINT32 InfoOffset;
0981 UINT32 InfoCount;
0982
0983 } ACPI_TABLE_DBG2;
0984
0985
0986 typedef struct acpi_dbg2_header
0987 {
0988 UINT32 InfoOffset;
0989 UINT32 InfoCount;
0990
0991 } ACPI_DBG2_HEADER;
0992
0993
0994
0995
0996 typedef struct acpi_dbg2_device
0997 {
0998 UINT8 Revision;
0999 UINT16 Length;
1000 UINT8 RegisterCount;
1001 UINT16 NamepathLength;
1002 UINT16 NamepathOffset;
1003 UINT16 OemDataLength;
1004 UINT16 OemDataOffset;
1005 UINT16 PortType;
1006 UINT16 PortSubtype;
1007 UINT16 Reserved;
1008 UINT16 BaseAddressOffset;
1009 UINT16 AddressSizeOffset;
1010
1011
1012
1013
1014
1015
1016
1017 } ACPI_DBG2_DEVICE;
1018
1019
1020
1021 #define ACPI_DBG2_SERIAL_PORT 0x8000
1022 #define ACPI_DBG2_1394_PORT 0x8001
1023 #define ACPI_DBG2_USB_PORT 0x8002
1024 #define ACPI_DBG2_NET_PORT 0x8003
1025
1026
1027
1028 #define ACPI_DBG2_16550_COMPATIBLE 0x0000
1029 #define ACPI_DBG2_16550_SUBSET 0x0001
1030 #define ACPI_DBG2_MAX311XE_SPI 0x0002
1031 #define ACPI_DBG2_ARM_PL011 0x0003
1032 #define ACPI_DBG2_MSM8X60 0x0004
1033 #define ACPI_DBG2_16550_NVIDIA 0x0005
1034 #define ACPI_DBG2_TI_OMAP 0x0006
1035 #define ACPI_DBG2_APM88XXXX 0x0008
1036 #define ACPI_DBG2_MSM8974 0x0009
1037 #define ACPI_DBG2_SAM5250 0x000A
1038 #define ACPI_DBG2_INTEL_USIF 0x000B
1039 #define ACPI_DBG2_IMX6 0x000C
1040 #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D
1041 #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E
1042 #define ACPI_DBG2_ARM_DCC 0x000F
1043 #define ACPI_DBG2_BCM2835 0x0010
1044 #define ACPI_DBG2_SDM845_1_8432MHZ 0x0011
1045 #define ACPI_DBG2_16550_WITH_GAS 0x0012
1046 #define ACPI_DBG2_SDM845_7_372MHZ 0x0013
1047 #define ACPI_DBG2_INTEL_LPSS 0x0014
1048 #define ACPI_DBG2_RISCV_SBI_CON 0x0015
1049
1050 #define ACPI_DBG2_1394_STANDARD 0x0000
1051
1052 #define ACPI_DBG2_USB_XHCI 0x0000
1053 #define ACPI_DBG2_USB_EHCI 0x0001
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065 typedef struct acpi_table_dbgp
1066 {
1067 ACPI_TABLE_HEADER Header;
1068 UINT8 Type;
1069 UINT8 Reserved[3];
1070 ACPI_GENERIC_ADDRESS DebugPort;
1071
1072 } ACPI_TABLE_DBGP;
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085 typedef struct acpi_table_dmar
1086 {
1087 ACPI_TABLE_HEADER Header;
1088 UINT8 Width;
1089 UINT8 Flags;
1090 UINT8 Reserved[10];
1091
1092 } ACPI_TABLE_DMAR;
1093
1094
1095
1096 #define ACPI_DMAR_INTR_REMAP (1)
1097 #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1)
1098 #define ACPI_DMAR_X2APIC_MODE (1<<2)
1099
1100
1101
1102
1103 typedef struct acpi_dmar_header
1104 {
1105 UINT16 Type;
1106 UINT16 Length;
1107
1108 } ACPI_DMAR_HEADER;
1109
1110
1111
1112 enum AcpiDmarType
1113 {
1114 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
1115 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
1116 ACPI_DMAR_TYPE_ROOT_ATS = 2,
1117 ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,
1118 ACPI_DMAR_TYPE_NAMESPACE = 4,
1119 ACPI_DMAR_TYPE_SATC = 5,
1120 ACPI_DMAR_TYPE_RESERVED = 6
1121 };
1122
1123
1124
1125
1126 typedef struct acpi_dmar_device_scope
1127 {
1128 UINT8 EntryType;
1129 UINT8 Length;
1130 UINT16 Reserved;
1131 UINT8 EnumerationId;
1132 UINT8 Bus;
1133
1134 } ACPI_DMAR_DEVICE_SCOPE;
1135
1136
1137
1138 enum AcpiDmarScopeType
1139 {
1140 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
1141 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
1142 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
1143 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
1144 ACPI_DMAR_SCOPE_TYPE_HPET = 4,
1145 ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5,
1146 ACPI_DMAR_SCOPE_TYPE_RESERVED = 6
1147 };
1148
1149 typedef struct acpi_dmar_pci_path
1150 {
1151 UINT8 Device;
1152 UINT8 Function;
1153
1154 } ACPI_DMAR_PCI_PATH;
1155
1156
1157
1158
1159
1160
1161
1162
1163 typedef struct acpi_dmar_hardware_unit
1164 {
1165 ACPI_DMAR_HEADER Header;
1166 UINT8 Flags;
1167 UINT8 Reserved;
1168 UINT16 Segment;
1169 UINT64 Address;
1170
1171 } ACPI_DMAR_HARDWARE_UNIT;
1172
1173
1174
1175 #define ACPI_DMAR_INCLUDE_ALL (1)
1176
1177
1178
1179
1180 typedef struct acpi_dmar_reserved_memory
1181 {
1182 ACPI_DMAR_HEADER Header;
1183 UINT16 Reserved;
1184 UINT16 Segment;
1185 UINT64 BaseAddress;
1186 UINT64 EndAddress;
1187
1188 } ACPI_DMAR_RESERVED_MEMORY;
1189
1190
1191
1192 #define ACPI_DMAR_ALLOW_ALL (1)
1193
1194
1195
1196
1197 typedef struct acpi_dmar_atsr
1198 {
1199 ACPI_DMAR_HEADER Header;
1200 UINT8 Flags;
1201 UINT8 Reserved;
1202 UINT16 Segment;
1203
1204 } ACPI_DMAR_ATSR;
1205
1206
1207
1208 #define ACPI_DMAR_ALL_PORTS (1)
1209
1210
1211
1212
1213 typedef struct acpi_dmar_rhsa
1214 {
1215 ACPI_DMAR_HEADER Header;
1216 UINT32 Reserved;
1217 UINT64 BaseAddress;
1218 UINT32 ProximityDomain;
1219
1220 } ACPI_DMAR_RHSA;
1221
1222
1223
1224
1225 typedef struct acpi_dmar_andd
1226 {
1227 ACPI_DMAR_HEADER Header;
1228 UINT8 Reserved[3];
1229 UINT8 DeviceNumber;
1230 union {
1231 char __pad;
1232 ACPI_FLEX_ARRAY(char, DeviceName);
1233 };
1234
1235 } ACPI_DMAR_ANDD;
1236
1237
1238
1239
1240 typedef struct acpi_dmar_satc
1241 {
1242 ACPI_DMAR_HEADER Header;
1243 UINT8 Flags;
1244 UINT8 Reserved;
1245 UINT16 Segment;
1246
1247 } ACPI_DMAR_SATC
1248
1249 ;
1250
1251
1252
1253
1254
1255
1256
1257
1258 typedef struct acpi_table_drtm
1259 {
1260 ACPI_TABLE_HEADER Header;
1261 UINT64 EntryBaseAddress;
1262 UINT64 EntryLength;
1263 UINT32 EntryAddress32;
1264 UINT64 EntryAddress64;
1265 UINT64 ExitAddress;
1266 UINT64 LogAreaAddress;
1267 UINT32 LogAreaLength;
1268 UINT64 ArchDependentAddress;
1269 UINT32 Flags;
1270
1271 } ACPI_TABLE_DRTM;
1272
1273
1274
1275 #define ACPI_DRTM_ACCESS_ALLOWED (1)
1276 #define ACPI_DRTM_ENABLE_GAP_CODE (1<<1)
1277 #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2)
1278 #define ACPI_DRTM_AUTHORITY_ORDER (1<<3)
1279
1280
1281
1282
1283 typedef struct acpi_drtm_vtable_list
1284 {
1285 UINT32 ValidatedTableCount;
1286 UINT64 ValidatedTables[];
1287
1288 } ACPI_DRTM_VTABLE_LIST;
1289
1290
1291
1292
1293
1294 typedef struct acpi_drtm_resource
1295 {
1296 UINT8 Size[7];
1297 UINT8 Type;
1298 UINT64 Address;
1299
1300 } ACPI_DRTM_RESOURCE;
1301
1302 typedef struct acpi_drtm_resource_list
1303 {
1304 UINT32 ResourceCount;
1305 ACPI_DRTM_RESOURCE Resources[];
1306
1307 } ACPI_DRTM_RESOURCE_LIST;
1308
1309
1310
1311 typedef struct acpi_drtm_dps_id
1312 {
1313 UINT32 DpsIdLength;
1314 UINT8 DpsId[16];
1315
1316 } ACPI_DRTM_DPS_ID;
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326 typedef struct acpi_table_ecdt
1327 {
1328 ACPI_TABLE_HEADER Header;
1329 ACPI_GENERIC_ADDRESS Control;
1330 ACPI_GENERIC_ADDRESS Data;
1331 UINT32 Uid;
1332 UINT8 Gpe;
1333 UINT8 Id[];
1334
1335 } ACPI_TABLE_ECDT;
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345 typedef struct acpi_table_einj
1346 {
1347 ACPI_TABLE_HEADER Header;
1348 UINT32 HeaderLength;
1349 UINT8 Flags;
1350 UINT8 Reserved[3];
1351 UINT32 Entries;
1352
1353 } ACPI_TABLE_EINJ;
1354
1355
1356
1357
1358 typedef struct acpi_einj_entry
1359 {
1360 ACPI_WHEA_HEADER WheaHeader;
1361
1362 } ACPI_EINJ_ENTRY;
1363
1364
1365
1366 #define ACPI_EINJ_PRESERVE (1)
1367
1368
1369
1370 enum AcpiEinjActions
1371 {
1372 ACPI_EINJ_BEGIN_OPERATION = 0,
1373 ACPI_EINJ_GET_TRIGGER_TABLE = 1,
1374 ACPI_EINJ_SET_ERROR_TYPE = 2,
1375 ACPI_EINJ_GET_ERROR_TYPE = 3,
1376 ACPI_EINJ_END_OPERATION = 4,
1377 ACPI_EINJ_EXECUTE_OPERATION = 5,
1378 ACPI_EINJ_CHECK_BUSY_STATUS = 6,
1379 ACPI_EINJ_GET_COMMAND_STATUS = 7,
1380 ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8,
1381 ACPI_EINJ_GET_EXECUTE_TIMINGS = 9,
1382 ACPI_EINJ_ACTION_RESERVED = 10,
1383 ACPI_EINJ_TRIGGER_ERROR = 0xFF
1384 };
1385
1386
1387
1388 enum AcpiEinjInstructions
1389 {
1390 ACPI_EINJ_READ_REGISTER = 0,
1391 ACPI_EINJ_READ_REGISTER_VALUE = 1,
1392 ACPI_EINJ_WRITE_REGISTER = 2,
1393 ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
1394 ACPI_EINJ_NOOP = 4,
1395 ACPI_EINJ_FLUSH_CACHELINE = 5,
1396 ACPI_EINJ_INSTRUCTION_RESERVED = 6
1397 };
1398
1399 typedef struct acpi_einj_error_type_with_addr
1400 {
1401 UINT32 ErrorType;
1402 UINT32 VendorStructOffset;
1403 UINT32 Flags;
1404 UINT32 ApicId;
1405 UINT64 Address;
1406 UINT64 Range;
1407 UINT32 PcieId;
1408
1409 } ACPI_EINJ_ERROR_TYPE_WITH_ADDR;
1410
1411 typedef struct acpi_einj_vendor
1412 {
1413 UINT32 Length;
1414 UINT32 PcieId;
1415 UINT16 VendorId;
1416 UINT16 DeviceId;
1417 UINT8 RevisionId;
1418 UINT8 Reserved[3];
1419
1420 } ACPI_EINJ_VENDOR;
1421
1422
1423
1424
1425 typedef struct acpi_einj_trigger
1426 {
1427 UINT32 HeaderSize;
1428 UINT32 Revision;
1429 UINT32 TableSize;
1430 UINT32 EntryCount;
1431
1432 } ACPI_EINJ_TRIGGER;
1433
1434
1435
1436 enum AcpiEinjCommandStatus
1437 {
1438 ACPI_EINJ_SUCCESS = 0,
1439 ACPI_EINJ_FAILURE = 1,
1440 ACPI_EINJ_INVALID_ACCESS = 2,
1441 ACPI_EINJ_STATUS_RESERVED = 3
1442 };
1443
1444
1445
1446
1447 #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)
1448 #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)
1449 #define ACPI_EINJ_PROCESSOR_FATAL (1<<2)
1450 #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)
1451 #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)
1452 #define ACPI_EINJ_MEMORY_FATAL (1<<5)
1453 #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)
1454 #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)
1455 #define ACPI_EINJ_PCIX_FATAL (1<<8)
1456 #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
1457 #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
1458 #define ACPI_EINJ_PLATFORM_FATAL (1<<11)
1459 #define ACPI_EINJ_CXL_CACHE_CORRECTABLE (1<<12)
1460 #define ACPI_EINJ_CXL_CACHE_UNCORRECTABLE (1<<13)
1461 #define ACPI_EINJ_CXL_CACHE_FATAL (1<<14)
1462 #define ACPI_EINJ_CXL_MEM_CORRECTABLE (1<<15)
1463 #define ACPI_EINJ_CXL_MEM_UNCORRECTABLE (1<<16)
1464 #define ACPI_EINJ_CXL_MEM_FATAL (1<<17)
1465 #define ACPI_EINJ_VENDOR_DEFINED (1<<31)
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475 typedef struct acpi_table_erst
1476 {
1477 ACPI_TABLE_HEADER Header;
1478 UINT32 HeaderLength;
1479 UINT32 Reserved;
1480 UINT32 Entries;
1481
1482 } ACPI_TABLE_ERST;
1483
1484
1485
1486
1487 typedef struct acpi_erst_entry
1488 {
1489 ACPI_WHEA_HEADER WheaHeader;
1490
1491 } ACPI_ERST_ENTRY;
1492
1493
1494
1495 #define ACPI_ERST_PRESERVE (1)
1496
1497
1498
1499 enum AcpiErstActions
1500 {
1501 ACPI_ERST_BEGIN_WRITE = 0,
1502 ACPI_ERST_BEGIN_READ = 1,
1503 ACPI_ERST_BEGIN_CLEAR = 2,
1504 ACPI_ERST_END = 3,
1505 ACPI_ERST_SET_RECORD_OFFSET = 4,
1506 ACPI_ERST_EXECUTE_OPERATION = 5,
1507 ACPI_ERST_CHECK_BUSY_STATUS = 6,
1508 ACPI_ERST_GET_COMMAND_STATUS = 7,
1509 ACPI_ERST_GET_RECORD_ID = 8,
1510 ACPI_ERST_SET_RECORD_ID = 9,
1511 ACPI_ERST_GET_RECORD_COUNT = 10,
1512 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
1513 ACPI_ERST_NOT_USED = 12,
1514 ACPI_ERST_GET_ERROR_RANGE = 13,
1515 ACPI_ERST_GET_ERROR_LENGTH = 14,
1516 ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
1517 ACPI_ERST_EXECUTE_TIMINGS = 16,
1518 ACPI_ERST_ACTION_RESERVED = 17
1519 };
1520
1521
1522
1523 enum AcpiErstInstructions
1524 {
1525 ACPI_ERST_READ_REGISTER = 0,
1526 ACPI_ERST_READ_REGISTER_VALUE = 1,
1527 ACPI_ERST_WRITE_REGISTER = 2,
1528 ACPI_ERST_WRITE_REGISTER_VALUE = 3,
1529 ACPI_ERST_NOOP = 4,
1530 ACPI_ERST_LOAD_VAR1 = 5,
1531 ACPI_ERST_LOAD_VAR2 = 6,
1532 ACPI_ERST_STORE_VAR1 = 7,
1533 ACPI_ERST_ADD = 8,
1534 ACPI_ERST_SUBTRACT = 9,
1535 ACPI_ERST_ADD_VALUE = 10,
1536 ACPI_ERST_SUBTRACT_VALUE = 11,
1537 ACPI_ERST_STALL = 12,
1538 ACPI_ERST_STALL_WHILE_TRUE = 13,
1539 ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
1540 ACPI_ERST_GOTO = 15,
1541 ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
1542 ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
1543 ACPI_ERST_MOVE_DATA = 18,
1544 ACPI_ERST_INSTRUCTION_RESERVED = 19
1545 };
1546
1547
1548
1549 enum AcpiErstCommandStatus
1550 {
1551 ACPI_ERST_SUCCESS = 0,
1552 ACPI_ERST_NO_SPACE = 1,
1553 ACPI_ERST_NOT_AVAILABLE = 2,
1554 ACPI_ERST_FAILURE = 3,
1555 ACPI_ERST_RECORD_EMPTY = 4,
1556 ACPI_ERST_NOT_FOUND = 5,
1557 ACPI_ERST_STATUS_RESERVED = 6
1558 };
1559
1560
1561
1562
1563 typedef struct acpi_erst_info
1564 {
1565 UINT16 Signature;
1566 UINT8 Data[48];
1567
1568 } ACPI_ERST_INFO;
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578 typedef struct acpi_table_fpdt
1579 {
1580 ACPI_TABLE_HEADER Header;
1581
1582 } ACPI_TABLE_FPDT;
1583
1584
1585
1586
1587 typedef struct acpi_fpdt_header
1588 {
1589 UINT16 Type;
1590 UINT8 Length;
1591 UINT8 Revision;
1592
1593 } ACPI_FPDT_HEADER;
1594
1595
1596
1597 enum AcpiFpdtType
1598 {
1599 ACPI_FPDT_TYPE_BOOT = 0,
1600 ACPI_FPDT_TYPE_S3PERF = 1
1601 };
1602
1603
1604
1605
1606
1607
1608
1609
1610 typedef struct acpi_fpdt_boot_pointer
1611 {
1612 ACPI_FPDT_HEADER Header;
1613 UINT8 Reserved[4];
1614 UINT64 Address;
1615
1616 } ACPI_FPDT_BOOT_POINTER;
1617
1618
1619
1620
1621 typedef struct acpi_fpdt_s3pt_pointer
1622 {
1623 ACPI_FPDT_HEADER Header;
1624 UINT8 Reserved[4];
1625 UINT64 Address;
1626
1627 } ACPI_FPDT_S3PT_POINTER;
1628
1629
1630
1631
1632
1633
1634 typedef struct acpi_table_s3pt
1635 {
1636 UINT8 Signature[4];
1637 UINT32 Length;
1638
1639 } ACPI_TABLE_S3PT;
1640
1641
1642
1643
1644
1645
1646
1647
1648 enum AcpiS3ptType
1649 {
1650 ACPI_S3PT_TYPE_RESUME = 0,
1651 ACPI_S3PT_TYPE_SUSPEND = 1,
1652 ACPI_FPDT_BOOT_PERFORMANCE = 2
1653 };
1654
1655 typedef struct acpi_s3pt_resume
1656 {
1657 ACPI_FPDT_HEADER Header;
1658 UINT32 ResumeCount;
1659 UINT64 FullResume;
1660 UINT64 AverageResume;
1661
1662 } ACPI_S3PT_RESUME;
1663
1664 typedef struct acpi_s3pt_suspend
1665 {
1666 ACPI_FPDT_HEADER Header;
1667 UINT64 SuspendStart;
1668 UINT64 SuspendEnd;
1669
1670 } ACPI_S3PT_SUSPEND;
1671
1672
1673
1674
1675
1676 typedef struct acpi_fpdt_boot
1677 {
1678 ACPI_FPDT_HEADER Header;
1679 UINT8 Reserved[4];
1680 UINT64 ResetEnd;
1681 UINT64 LoadStart;
1682 UINT64 StartupStart;
1683 UINT64 ExitServicesEntry;
1684 UINT64 ExitServicesExit;
1685
1686 } ACPI_FPDT_BOOT;
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696 typedef struct acpi_table_gtdt
1697 {
1698 ACPI_TABLE_HEADER Header;
1699 UINT64 CounterBlockAddresss;
1700 UINT32 Reserved;
1701 UINT32 SecureEl1Interrupt;
1702 UINT32 SecureEl1Flags;
1703 UINT32 NonSecureEl1Interrupt;
1704 UINT32 NonSecureEl1Flags;
1705 UINT32 VirtualTimerInterrupt;
1706 UINT32 VirtualTimerFlags;
1707 UINT32 NonSecureEl2Interrupt;
1708 UINT32 NonSecureEl2Flags;
1709 UINT64 CounterReadBlockAddress;
1710 UINT32 PlatformTimerCount;
1711 UINT32 PlatformTimerOffset;
1712
1713 } ACPI_TABLE_GTDT;
1714
1715
1716
1717 #define ACPI_GTDT_INTERRUPT_MODE (1)
1718 #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1)
1719 #define ACPI_GTDT_ALWAYS_ON (1<<2)
1720
1721 typedef struct acpi_gtdt_el2
1722 {
1723 UINT32 VirtualEL2TimerGsiv;
1724 UINT32 VirtualEL2TimerFlags;
1725 } ACPI_GTDT_EL2;
1726
1727
1728
1729
1730 typedef struct acpi_gtdt_header
1731 {
1732 UINT8 Type;
1733 UINT16 Length;
1734
1735 } ACPI_GTDT_HEADER;
1736
1737
1738
1739 enum AcpiGtdtType
1740 {
1741 ACPI_GTDT_TYPE_TIMER_BLOCK = 0,
1742 ACPI_GTDT_TYPE_WATCHDOG = 1,
1743 ACPI_GTDT_TYPE_RESERVED = 2
1744 };
1745
1746
1747
1748
1749
1750
1751 typedef struct acpi_gtdt_timer_block
1752 {
1753 ACPI_GTDT_HEADER Header;
1754 UINT8 Reserved;
1755 UINT64 BlockAddress;
1756 UINT32 TimerCount;
1757 UINT32 TimerOffset;
1758
1759 } ACPI_GTDT_TIMER_BLOCK;
1760
1761
1762
1763 typedef struct acpi_gtdt_timer_entry
1764 {
1765 UINT8 FrameNumber;
1766 UINT8 Reserved[3];
1767 UINT64 BaseAddress;
1768 UINT64 El0BaseAddress;
1769 UINT32 TimerInterrupt;
1770 UINT32 TimerFlags;
1771 UINT32 VirtualTimerInterrupt;
1772 UINT32 VirtualTimerFlags;
1773 UINT32 CommonFlags;
1774
1775 } ACPI_GTDT_TIMER_ENTRY;
1776
1777
1778
1779 #define ACPI_GTDT_GT_IRQ_MODE (1)
1780 #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1)
1781
1782
1783
1784 #define ACPI_GTDT_GT_IS_SECURE_TIMER (1)
1785 #define ACPI_GTDT_GT_ALWAYS_ON (1<<1)
1786
1787
1788
1789
1790 typedef struct acpi_gtdt_watchdog
1791 {
1792 ACPI_GTDT_HEADER Header;
1793 UINT8 Reserved;
1794 UINT64 RefreshFrameAddress;
1795 UINT64 ControlFrameAddress;
1796 UINT32 TimerInterrupt;
1797 UINT32 TimerFlags;
1798
1799 } ACPI_GTDT_WATCHDOG;
1800
1801
1802
1803 #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1)
1804 #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1)
1805 #define ACPI_GTDT_WATCHDOG_SECURE (1<<2)
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815 typedef struct acpi_table_hest
1816 {
1817 ACPI_TABLE_HEADER Header;
1818 UINT32 ErrorSourceCount;
1819
1820 } ACPI_TABLE_HEST;
1821
1822
1823
1824
1825 typedef struct acpi_hest_header
1826 {
1827 UINT16 Type;
1828 UINT16 SourceId;
1829
1830 } ACPI_HEST_HEADER;
1831
1832
1833
1834
1835 enum AcpiHestTypes
1836 {
1837 ACPI_HEST_TYPE_IA32_CHECK = 0,
1838 ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
1839 ACPI_HEST_TYPE_IA32_NMI = 2,
1840 ACPI_HEST_TYPE_NOT_USED3 = 3,
1841 ACPI_HEST_TYPE_NOT_USED4 = 4,
1842 ACPI_HEST_TYPE_NOT_USED5 = 5,
1843 ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
1844 ACPI_HEST_TYPE_AER_ENDPOINT = 7,
1845 ACPI_HEST_TYPE_AER_BRIDGE = 8,
1846 ACPI_HEST_TYPE_GENERIC_ERROR = 9,
1847 ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10,
1848 ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11,
1849 ACPI_HEST_TYPE_RESERVED = 12
1850 };
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861 typedef struct acpi_hest_ia_error_bank
1862 {
1863 UINT8 BankNumber;
1864 UINT8 ClearStatusOnInit;
1865 UINT8 StatusFormat;
1866 UINT8 Reserved;
1867 UINT32 ControlRegister;
1868 UINT64 ControlData;
1869 UINT32 StatusRegister;
1870 UINT32 AddressRegister;
1871 UINT32 MiscRegister;
1872
1873 } ACPI_HEST_IA_ERROR_BANK;
1874
1875
1876
1877
1878 typedef struct acpi_hest_aer_common
1879 {
1880 UINT16 Reserved1;
1881 UINT8 Flags;
1882 UINT8 Enabled;
1883 UINT32 RecordsToPreallocate;
1884 UINT32 MaxSectionsPerRecord;
1885 UINT32 Bus;
1886 UINT16 Device;
1887 UINT16 Function;
1888 UINT16 DeviceControl;
1889 UINT16 Reserved2;
1890 UINT32 UncorrectableMask;
1891 UINT32 UncorrectableSeverity;
1892 UINT32 CorrectableMask;
1893 UINT32 AdvancedCapabilities;
1894
1895 } ACPI_HEST_AER_COMMON;
1896
1897
1898
1899 #define ACPI_HEST_FIRMWARE_FIRST (1)
1900 #define ACPI_HEST_GLOBAL (1<<1)
1901 #define ACPI_HEST_GHES_ASSIST (1<<2)
1902
1903
1904
1905
1906
1907
1908 #define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF)
1909 #define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF)
1910
1911
1912
1913
1914 typedef struct acpi_hest_notify
1915 {
1916 UINT8 Type;
1917 UINT8 Length;
1918 UINT16 ConfigWriteEnable;
1919 UINT32 PollInterval;
1920 UINT32 Vector;
1921 UINT32 PollingThresholdValue;
1922 UINT32 PollingThresholdWindow;
1923 UINT32 ErrorThresholdValue;
1924 UINT32 ErrorThresholdWindow;
1925
1926 } ACPI_HEST_NOTIFY;
1927
1928
1929
1930 enum AcpiHestNotifyTypes
1931 {
1932 ACPI_HEST_NOTIFY_POLLED = 0,
1933 ACPI_HEST_NOTIFY_EXTERNAL = 1,
1934 ACPI_HEST_NOTIFY_LOCAL = 2,
1935 ACPI_HEST_NOTIFY_SCI = 3,
1936 ACPI_HEST_NOTIFY_NMI = 4,
1937 ACPI_HEST_NOTIFY_CMCI = 5,
1938 ACPI_HEST_NOTIFY_MCE = 6,
1939 ACPI_HEST_NOTIFY_GPIO = 7,
1940 ACPI_HEST_NOTIFY_SEA = 8,
1941 ACPI_HEST_NOTIFY_SEI = 9,
1942 ACPI_HEST_NOTIFY_GSIV = 10,
1943 ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11,
1944 ACPI_HEST_NOTIFY_RESERVED = 12
1945 };
1946
1947
1948
1949 #define ACPI_HEST_TYPE (1)
1950 #define ACPI_HEST_POLL_INTERVAL (1<<1)
1951 #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)
1952 #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
1953 #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)
1954 #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)
1955
1956
1957
1958
1959
1960
1961
1962
1963 typedef struct acpi_hest_ia_machine_check
1964 {
1965 ACPI_HEST_HEADER Header;
1966 UINT16 Reserved1;
1967 UINT8 Flags;
1968 UINT8 Enabled;
1969 UINT32 RecordsToPreallocate;
1970 UINT32 MaxSectionsPerRecord;
1971 UINT64 GlobalCapabilityData;
1972 UINT64 GlobalControlData;
1973 UINT8 NumHardwareBanks;
1974 UINT8 Reserved3[7];
1975
1976 } ACPI_HEST_IA_MACHINE_CHECK;
1977
1978
1979
1980
1981 typedef struct acpi_hest_ia_corrected
1982 {
1983 ACPI_HEST_HEADER Header;
1984 UINT16 Reserved1;
1985 UINT8 Flags;
1986 UINT8 Enabled;
1987 UINT32 RecordsToPreallocate;
1988 UINT32 MaxSectionsPerRecord;
1989 ACPI_HEST_NOTIFY Notify;
1990 UINT8 NumHardwareBanks;
1991 UINT8 Reserved2[3];
1992
1993 } ACPI_HEST_IA_CORRECTED;
1994
1995
1996
1997
1998 typedef struct acpi_hest_ia_nmi
1999 {
2000 ACPI_HEST_HEADER Header;
2001 UINT32 Reserved;
2002 UINT32 RecordsToPreallocate;
2003 UINT32 MaxSectionsPerRecord;
2004 UINT32 MaxRawDataLength;
2005
2006 } ACPI_HEST_IA_NMI;
2007
2008
2009
2010
2011
2012
2013 typedef struct acpi_hest_aer_root
2014 {
2015 ACPI_HEST_HEADER Header;
2016 ACPI_HEST_AER_COMMON Aer;
2017 UINT32 RootErrorCommand;
2018
2019 } ACPI_HEST_AER_ROOT;
2020
2021
2022
2023
2024 typedef struct acpi_hest_aer
2025 {
2026 ACPI_HEST_HEADER Header;
2027 ACPI_HEST_AER_COMMON Aer;
2028
2029 } ACPI_HEST_AER;
2030
2031
2032
2033
2034 typedef struct acpi_hest_aer_bridge
2035 {
2036 ACPI_HEST_HEADER Header;
2037 ACPI_HEST_AER_COMMON Aer;
2038 UINT32 UncorrectableMask2;
2039 UINT32 UncorrectableSeverity2;
2040 UINT32 AdvancedCapabilities2;
2041
2042 } ACPI_HEST_AER_BRIDGE;
2043
2044
2045
2046
2047 typedef struct acpi_hest_generic
2048 {
2049 ACPI_HEST_HEADER Header;
2050 UINT16 RelatedSourceId;
2051 UINT8 Reserved;
2052 UINT8 Enabled;
2053 UINT32 RecordsToPreallocate;
2054 UINT32 MaxSectionsPerRecord;
2055 UINT32 MaxRawDataLength;
2056 ACPI_GENERIC_ADDRESS ErrorStatusAddress;
2057 ACPI_HEST_NOTIFY Notify;
2058 UINT32 ErrorBlockLength;
2059
2060 } ACPI_HEST_GENERIC;
2061
2062
2063
2064
2065 typedef struct acpi_hest_generic_v2
2066 {
2067 ACPI_HEST_HEADER Header;
2068 UINT16 RelatedSourceId;
2069 UINT8 Reserved;
2070 UINT8 Enabled;
2071 UINT32 RecordsToPreallocate;
2072 UINT32 MaxSectionsPerRecord;
2073 UINT32 MaxRawDataLength;
2074 ACPI_GENERIC_ADDRESS ErrorStatusAddress;
2075 ACPI_HEST_NOTIFY Notify;
2076 UINT32 ErrorBlockLength;
2077 ACPI_GENERIC_ADDRESS ReadAckRegister;
2078 UINT64 ReadAckPreserve;
2079 UINT64 ReadAckWrite;
2080
2081 } ACPI_HEST_GENERIC_V2;
2082
2083
2084
2085
2086 typedef struct acpi_hest_generic_status
2087 {
2088 UINT32 BlockStatus;
2089 UINT32 RawDataOffset;
2090 UINT32 RawDataLength;
2091 UINT32 DataLength;
2092 UINT32 ErrorSeverity;
2093
2094 } ACPI_HEST_GENERIC_STATUS;
2095
2096
2097
2098 #define ACPI_HEST_UNCORRECTABLE (1)
2099 #define ACPI_HEST_CORRECTABLE (1<<1)
2100 #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)
2101 #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)
2102 #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4)
2103
2104
2105
2106
2107 typedef struct acpi_hest_generic_data
2108 {
2109 UINT8 SectionType[16];
2110 UINT32 ErrorSeverity;
2111 UINT16 Revision;
2112 UINT8 ValidationBits;
2113 UINT8 Flags;
2114 UINT32 ErrorDataLength;
2115 UINT8 FruId[16];
2116 UINT8 FruText[20];
2117
2118 } ACPI_HEST_GENERIC_DATA;
2119
2120
2121
2122 typedef struct acpi_hest_generic_data_v300
2123 {
2124 UINT8 SectionType[16];
2125 UINT32 ErrorSeverity;
2126 UINT16 Revision;
2127 UINT8 ValidationBits;
2128 UINT8 Flags;
2129 UINT32 ErrorDataLength;
2130 UINT8 FruId[16];
2131 UINT8 FruText[20];
2132 UINT64 TimeStamp;
2133
2134 } ACPI_HEST_GENERIC_DATA_V300;
2135
2136
2137
2138 #define ACPI_HEST_GEN_ERROR_RECOVERABLE 0
2139 #define ACPI_HEST_GEN_ERROR_FATAL 1
2140 #define ACPI_HEST_GEN_ERROR_CORRECTED 2
2141 #define ACPI_HEST_GEN_ERROR_NONE 3
2142
2143
2144
2145 #define ACPI_HEST_GEN_VALID_FRU_ID (1)
2146 #define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1)
2147 #define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2)
2148
2149
2150
2151
2152 typedef struct acpi_hest_ia_deferred_check
2153 {
2154 ACPI_HEST_HEADER Header;
2155 UINT16 Reserved1;
2156 UINT8 Flags;
2157 UINT8 Enabled;
2158 UINT32 RecordsToPreallocate;
2159 UINT32 MaxSectionsPerRecord;
2160 ACPI_HEST_NOTIFY Notify;
2161 UINT8 NumHardwareBanks;
2162 UINT8 Reserved2[3];
2163
2164 } ACPI_HEST_IA_DEFERRED_CHECK;
2165
2166
2167
2168
2169
2170
2171
2172
2173 typedef struct acpi_table_hmat
2174 {
2175 ACPI_TABLE_HEADER Header;
2176 UINT32 Reserved;
2177
2178 } ACPI_TABLE_HMAT;
2179
2180
2181
2182
2183 enum AcpiHmatType
2184 {
2185 ACPI_HMAT_TYPE_ADDRESS_RANGE = 0,
2186 ACPI_HMAT_TYPE_LOCALITY = 1,
2187 ACPI_HMAT_TYPE_CACHE = 2,
2188 ACPI_HMAT_TYPE_RESERVED = 3
2189 };
2190
2191 typedef struct acpi_hmat_structure
2192 {
2193 UINT16 Type;
2194 UINT16 Reserved;
2195 UINT32 Length;
2196
2197 } ACPI_HMAT_STRUCTURE;
2198
2199
2200
2201
2202
2203
2204
2205
2206 typedef struct acpi_hmat_proximity_domain
2207 {
2208 ACPI_HMAT_STRUCTURE Header;
2209 UINT16 Flags;
2210 UINT16 Reserved1;
2211 UINT32 InitiatorPD;
2212 UINT32 MemoryPD;
2213 UINT32 Reserved2;
2214 UINT64 Reserved3;
2215 UINT64 Reserved4;
2216
2217 } ACPI_HMAT_PROXIMITY_DOMAIN;
2218
2219
2220
2221 #define ACPI_HMAT_INITIATOR_PD_VALID (1)
2222
2223
2224
2225
2226 typedef struct acpi_hmat_locality
2227 {
2228 ACPI_HMAT_STRUCTURE Header;
2229 UINT8 Flags;
2230 UINT8 DataType;
2231 UINT8 MinTransferSize;
2232 UINT8 Reserved1;
2233 UINT32 NumberOfInitiatorPDs;
2234 UINT32 NumberOfTargetPDs;
2235 UINT32 Reserved2;
2236 UINT64 EntryBaseUnit;
2237
2238 } ACPI_HMAT_LOCALITY;
2239
2240
2241
2242 #define ACPI_HMAT_MEMORY_HIERARCHY (0x0F)
2243
2244
2245
2246 #define ACPI_HMAT_MEMORY 0
2247 #define ACPI_HMAT_1ST_LEVEL_CACHE 1
2248 #define ACPI_HMAT_2ND_LEVEL_CACHE 2
2249 #define ACPI_HMAT_3RD_LEVEL_CACHE 3
2250 #define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10
2251 #define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20
2252
2253
2254
2255
2256 #define ACPI_HMAT_ACCESS_LATENCY 0
2257 #define ACPI_HMAT_READ_LATENCY 1
2258 #define ACPI_HMAT_WRITE_LATENCY 2
2259 #define ACPI_HMAT_ACCESS_BANDWIDTH 3
2260 #define ACPI_HMAT_READ_BANDWIDTH 4
2261 #define ACPI_HMAT_WRITE_BANDWIDTH 5
2262
2263
2264
2265
2266 typedef struct acpi_hmat_cache
2267 {
2268 ACPI_HMAT_STRUCTURE Header;
2269 UINT32 MemoryPD;
2270 UINT32 Reserved1;
2271 UINT64 CacheSize;
2272 UINT32 CacheAttributes;
2273 UINT16 Reserved2;
2274 UINT16 NumberOfSMBIOSHandles;
2275
2276 } ACPI_HMAT_CACHE;
2277
2278
2279
2280 #define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F)
2281 #define ACPI_HMAT_CACHE_LEVEL (0x000000F0)
2282 #define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00)
2283 #define ACPI_HMAT_WRITE_POLICY (0x0000F000)
2284 #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)
2285
2286
2287
2288 #define ACPI_HMAT_CA_NONE (0)
2289 #define ACPI_HMAT_CA_DIRECT_MAPPED (1)
2290 #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2)
2291
2292
2293
2294 #define ACPI_HMAT_CP_NONE (0)
2295 #define ACPI_HMAT_CP_WB (1)
2296 #define ACPI_HMAT_CP_WT (2)
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309 typedef struct acpi_table_hpet
2310 {
2311 ACPI_TABLE_HEADER Header;
2312 UINT32 Id;
2313 ACPI_GENERIC_ADDRESS Address;
2314 UINT8 Sequence;
2315 UINT16 MinimumTick;
2316 UINT8 Flags;
2317
2318 } ACPI_TABLE_HPET;
2319
2320
2321
2322 #define ACPI_HPET_PAGE_PROTECT_MASK (3)
2323
2324
2325
2326 enum AcpiHpetPageProtect
2327 {
2328 ACPI_HPET_NO_PAGE_PROTECT = 0,
2329 ACPI_HPET_PAGE_PROTECT4 = 1,
2330 ACPI_HPET_PAGE_PROTECT64 = 2
2331 };
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347 typedef struct acpi_table_ibft
2348 {
2349 ACPI_TABLE_HEADER Header;
2350 UINT8 Reserved[12];
2351
2352 } ACPI_TABLE_IBFT;
2353
2354
2355
2356
2357 typedef struct acpi_ibft_header
2358 {
2359 UINT8 Type;
2360 UINT8 Version;
2361 UINT16 Length;
2362 UINT8 Index;
2363 UINT8 Flags;
2364
2365 } ACPI_IBFT_HEADER;
2366
2367
2368
2369 enum AcpiIbftType
2370 {
2371 ACPI_IBFT_TYPE_NOT_USED = 0,
2372 ACPI_IBFT_TYPE_CONTROL = 1,
2373 ACPI_IBFT_TYPE_INITIATOR = 2,
2374 ACPI_IBFT_TYPE_NIC = 3,
2375 ACPI_IBFT_TYPE_TARGET = 4,
2376 ACPI_IBFT_TYPE_EXTENSIONS = 5,
2377 ACPI_IBFT_TYPE_RESERVED = 6
2378 };
2379
2380
2381
2382
2383 typedef struct acpi_ibft_control
2384 {
2385 ACPI_IBFT_HEADER Header;
2386 UINT16 Extensions;
2387 UINT16 InitiatorOffset;
2388 UINT16 Nic0Offset;
2389 UINT16 Target0Offset;
2390 UINT16 Nic1Offset;
2391 UINT16 Target1Offset;
2392
2393 } ACPI_IBFT_CONTROL;
2394
2395 typedef struct acpi_ibft_initiator
2396 {
2397 ACPI_IBFT_HEADER Header;
2398 UINT8 SnsServer[16];
2399 UINT8 SlpServer[16];
2400 UINT8 PrimaryServer[16];
2401 UINT8 SecondaryServer[16];
2402 UINT16 NameLength;
2403 UINT16 NameOffset;
2404
2405 } ACPI_IBFT_INITIATOR;
2406
2407 typedef struct acpi_ibft_nic
2408 {
2409 ACPI_IBFT_HEADER Header;
2410 UINT8 IpAddress[16];
2411 UINT8 SubnetMaskPrefix;
2412 UINT8 Origin;
2413 UINT8 Gateway[16];
2414 UINT8 PrimaryDns[16];
2415 UINT8 SecondaryDns[16];
2416 UINT8 Dhcp[16];
2417 UINT16 Vlan;
2418 UINT8 MacAddress[6];
2419 UINT16 PciAddress;
2420 UINT16 NameLength;
2421 UINT16 NameOffset;
2422
2423 } ACPI_IBFT_NIC;
2424
2425 typedef struct acpi_ibft_target
2426 {
2427 ACPI_IBFT_HEADER Header;
2428 UINT8 TargetIpAddress[16];
2429 UINT16 TargetIpSocket;
2430 UINT8 TargetBootLun[8];
2431 UINT8 ChapType;
2432 UINT8 NicAssociation;
2433 UINT16 TargetNameLength;
2434 UINT16 TargetNameOffset;
2435 UINT16 ChapNameLength;
2436 UINT16 ChapNameOffset;
2437 UINT16 ChapSecretLength;
2438 UINT16 ChapSecretOffset;
2439 UINT16 ReverseChapNameLength;
2440 UINT16 ReverseChapNameOffset;
2441 UINT16 ReverseChapSecretLength;
2442 UINT16 ReverseChapSecretOffset;
2443
2444 } ACPI_IBFT_TARGET;
2445
2446
2447
2448
2449 #pragma pack()
2450
2451 #endif