Warning, cross-references for /kernel/include/drivers/acpi/actbl1.h need to be fixed.
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 #ifndef __ACTBL1_H__
0117 #define __ACTBL1_H__
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134 #define ACPI_SIG_ASF "ASF!"
0135 #define ACPI_SIG_BERT "BERT"
0136 #define ACPI_SIG_BOOT "BOOT"
0137 #define ACPI_SIG_CPEP "CPEP"
0138 #define ACPI_SIG_DBGP "DBGP"
0139 #define ACPI_SIG_DMAR "DMAR"
0140 #define ACPI_SIG_ECDT "ECDT"
0141 #define ACPI_SIG_EINJ "EINJ"
0142 #define ACPI_SIG_ERST "ERST"
0143 #define ACPI_SIG_HEST "HEST"
0144 #define ACPI_SIG_HPET "HPET"
0145 #define ACPI_SIG_IBFT "IBFT"
0146 #define ACPI_SIG_MADT "APIC"
0147 #define ACPI_SIG_MCFG "MCFG"
0148 #define ACPI_SIG_SBST "SBST"
0149 #define ACPI_SIG_SLIC "SLIC"
0150 #define ACPI_SIG_SLIT "SLIT"
0151 #define ACPI_SIG_SPCR "SPCR"
0152 #define ACPI_SIG_SPMI "SPMI"
0153 #define ACPI_SIG_SRAT "SRAT"
0154 #define ACPI_SIG_TCPA "TCPA"
0155 #define ACPI_SIG_UEFI "UEFI"
0156 #define ACPI_SIG_WDAT "WDAT"
0157 #define ACPI_SIG_WDRT "WDRT"
0158
0159
0160
0161
0162
0163
0164 #pragma pack(1)
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175 typedef struct acpi_subtable_header
0176 {
0177 UINT8 Type;
0178 UINT8 Length;
0179
0180 } ACPI_SUBTABLE_HEADER;
0181
0182
0183
0184
0185 typedef struct acpi_whea_header
0186 {
0187 UINT8 Action;
0188 UINT8 Instruction;
0189 UINT8 Flags;
0190 UINT8 Reserved;
0191 ACPI_GENERIC_ADDRESS RegisterRegion;
0192 UINT64 Value;
0193 UINT64 Mask;
0194
0195 } ACPI_WHEA_HEADER;
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206 typedef struct acpi_table_asf
0207 {
0208 ACPI_TABLE_HEADER Header;
0209
0210 } ACPI_TABLE_ASF;
0211
0212
0213
0214
0215 typedef struct acpi_asf_header
0216 {
0217 UINT8 Type;
0218 UINT8 Reserved;
0219 UINT16 Length;
0220
0221 } ACPI_ASF_HEADER;
0222
0223
0224
0225
0226 enum AcpiAsfType
0227 {
0228 ACPI_ASF_TYPE_INFO = 0,
0229 ACPI_ASF_TYPE_ALERT = 1,
0230 ACPI_ASF_TYPE_CONTROL = 2,
0231 ACPI_ASF_TYPE_BOOT = 3,
0232 ACPI_ASF_TYPE_ADDRESS = 4,
0233 ACPI_ASF_TYPE_RESERVED = 5
0234 };
0235
0236
0237
0238
0239
0240
0241
0242 typedef struct acpi_asf_info
0243 {
0244 ACPI_ASF_HEADER Header;
0245 UINT8 MinResetValue;
0246 UINT8 MinPollInterval;
0247 UINT16 SystemId;
0248 UINT32 MfgId;
0249 UINT8 Flags;
0250 UINT8 Reserved2[3];
0251
0252 } ACPI_ASF_INFO;
0253
0254
0255
0256 typedef struct acpi_asf_alert
0257 {
0258 ACPI_ASF_HEADER Header;
0259 UINT8 AssertMask;
0260 UINT8 DeassertMask;
0261 UINT8 Alerts;
0262 UINT8 DataLength;
0263
0264 } ACPI_ASF_ALERT;
0265
0266 typedef struct acpi_asf_alert_data
0267 {
0268 UINT8 Address;
0269 UINT8 Command;
0270 UINT8 Mask;
0271 UINT8 Value;
0272 UINT8 SensorType;
0273 UINT8 Type;
0274 UINT8 Offset;
0275 UINT8 SourceType;
0276 UINT8 Severity;
0277 UINT8 SensorNumber;
0278 UINT8 Entity;
0279 UINT8 Instance;
0280
0281 } ACPI_ASF_ALERT_DATA;
0282
0283
0284
0285 typedef struct acpi_asf_remote
0286 {
0287 ACPI_ASF_HEADER Header;
0288 UINT8 Controls;
0289 UINT8 DataLength;
0290 UINT16 Reserved2;
0291
0292 } ACPI_ASF_REMOTE;
0293
0294 typedef struct acpi_asf_control_data
0295 {
0296 UINT8 Function;
0297 UINT8 Address;
0298 UINT8 Command;
0299 UINT8 Value;
0300
0301 } ACPI_ASF_CONTROL_DATA;
0302
0303
0304
0305 typedef struct acpi_asf_rmcp
0306 {
0307 ACPI_ASF_HEADER Header;
0308 UINT8 Capabilities[7];
0309 UINT8 CompletionCode;
0310 UINT32 EnterpriseId;
0311 UINT8 Command;
0312 UINT16 Parameter;
0313 UINT16 BootOptions;
0314 UINT16 OemParameters;
0315
0316 } ACPI_ASF_RMCP;
0317
0318
0319
0320 typedef struct acpi_asf_address
0321 {
0322 ACPI_ASF_HEADER Header;
0323 UINT8 EpromAddress;
0324 UINT8 Devices;
0325
0326 } ACPI_ASF_ADDRESS;
0327
0328
0329
0330
0331
0332
0333
0334
0335 typedef struct acpi_table_bert
0336 {
0337 ACPI_TABLE_HEADER Header;
0338 UINT32 RegionLength;
0339 UINT64 Address;
0340
0341 } ACPI_TABLE_BERT;
0342
0343
0344
0345
0346 typedef struct acpi_bert_region
0347 {
0348 UINT32 BlockStatus;
0349 UINT32 RawDataOffset;
0350 UINT32 RawDataLength;
0351 UINT32 DataLength;
0352 UINT32 ErrorSeverity;
0353
0354 } ACPI_BERT_REGION;
0355
0356
0357
0358 #define ACPI_BERT_UNCORRECTABLE (1)
0359 #define ACPI_BERT_CORRECTABLE (2)
0360 #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (4)
0361 #define ACPI_BERT_MULTIPLE_CORRECTABLE (8)
0362
0363
0364
0365
0366
0367
0368
0369
0370 typedef struct acpi_table_boot
0371 {
0372 ACPI_TABLE_HEADER Header;
0373 UINT8 CmosIndex;
0374 UINT8 Reserved[3];
0375
0376 } ACPI_TABLE_BOOT;
0377
0378
0379
0380
0381
0382
0383
0384
0385 typedef struct acpi_table_cpep
0386 {
0387 ACPI_TABLE_HEADER Header;
0388 UINT64 Reserved;
0389
0390 } ACPI_TABLE_CPEP;
0391
0392
0393
0394
0395 typedef struct acpi_cpep_polling
0396 {
0397 UINT8 Type;
0398 UINT8 Length;
0399 UINT8 Id;
0400 UINT8 Eid;
0401 UINT32 Interval;
0402
0403 } ACPI_CPEP_POLLING;
0404
0405
0406
0407
0408
0409
0410
0411
0412 typedef struct acpi_table_dbgp
0413 {
0414 ACPI_TABLE_HEADER Header;
0415 UINT8 Type;
0416 UINT8 Reserved[3];
0417 ACPI_GENERIC_ADDRESS DebugPort;
0418
0419 } ACPI_TABLE_DBGP;
0420
0421
0422
0423
0424
0425
0426
0427
0428
0429 typedef struct acpi_table_dmar
0430 {
0431 ACPI_TABLE_HEADER Header;
0432 UINT8 Width;
0433 UINT8 Flags;
0434 UINT8 Reserved[10];
0435
0436 } ACPI_TABLE_DMAR;
0437
0438
0439
0440 #define ACPI_DMAR_INTR_REMAP (1)
0441
0442
0443
0444 typedef struct acpi_dmar_header
0445 {
0446 UINT16 Type;
0447 UINT16 Length;
0448
0449 } ACPI_DMAR_HEADER;
0450
0451
0452
0453 enum AcpiDmarType
0454 {
0455 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
0456 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
0457 ACPI_DMAR_TYPE_ATSR = 2,
0458 ACPI_DMAR_TYPE_RESERVED = 3
0459 };
0460
0461 typedef struct acpi_dmar_device_scope
0462 {
0463 UINT8 EntryType;
0464 UINT8 Length;
0465 UINT16 Reserved;
0466 UINT8 EnumerationId;
0467 UINT8 Bus;
0468
0469 } ACPI_DMAR_DEVICE_SCOPE;
0470
0471
0472
0473 enum AcpiDmarScopeType
0474 {
0475 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
0476 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
0477 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
0478 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
0479 ACPI_DMAR_SCOPE_TYPE_HPET = 4,
0480 ACPI_DMAR_SCOPE_TYPE_RESERVED = 5
0481 };
0482
0483 typedef struct acpi_dmar_pci_path
0484 {
0485 UINT8 Device;
0486 UINT8 Function;
0487
0488 } ACPI_DMAR_PCI_PATH;
0489
0490
0491
0492
0493
0494
0495
0496 typedef struct acpi_dmar_hardware_unit
0497 {
0498 ACPI_DMAR_HEADER Header;
0499 UINT8 Flags;
0500 UINT8 Reserved;
0501 UINT16 Segment;
0502 UINT64 Address;
0503
0504 } ACPI_DMAR_HARDWARE_UNIT;
0505
0506
0507
0508 #define ACPI_DMAR_INCLUDE_ALL (1)
0509
0510
0511
0512 typedef struct acpi_dmar_reserved_memory
0513 {
0514 ACPI_DMAR_HEADER Header;
0515 UINT16 Reserved;
0516 UINT16 Segment;
0517 UINT64 BaseAddress;
0518 UINT64 EndAddress;
0519
0520 } ACPI_DMAR_RESERVED_MEMORY;
0521
0522
0523
0524 #define ACPI_DMAR_ALLOW_ALL (1)
0525
0526
0527
0528 typedef struct acpi_dmar_atsr
0529 {
0530 ACPI_DMAR_HEADER Header;
0531 UINT8 Flags;
0532 UINT8 Reserved;
0533 UINT16 Segment;
0534
0535 } ACPI_DMAR_ATSR;
0536
0537
0538
0539 #define ACPI_DMAR_ALL_PORTS (1)
0540
0541
0542
0543
0544
0545
0546
0547
0548 typedef struct acpi_table_ecdt
0549 {
0550 ACPI_TABLE_HEADER Header;
0551 ACPI_GENERIC_ADDRESS Control;
0552 ACPI_GENERIC_ADDRESS Data;
0553 UINT32 Uid;
0554 UINT8 Gpe;
0555 UINT8 Id[1];
0556
0557 } ACPI_TABLE_ECDT;
0558
0559
0560
0561
0562
0563
0564
0565
0566 typedef struct acpi_table_einj
0567 {
0568 ACPI_TABLE_HEADER Header;
0569 UINT32 HeaderLength;
0570 UINT32 Reserved;
0571 UINT32 Entries;
0572
0573 } ACPI_TABLE_EINJ;
0574
0575
0576
0577 typedef struct acpi_einj_entry
0578 {
0579 ACPI_WHEA_HEADER WheaHeader;
0580
0581 } ACPI_EINJ_ENTRY;
0582
0583
0584
0585 enum AcpiEinjActions
0586 {
0587 ACPI_EINJ_BEGIN_OPERATION = 0,
0588 ACPI_EINJ_GET_TRIGGER_TABLE = 1,
0589 ACPI_EINJ_SET_ERROR_TYPE = 2,
0590 ACPI_EINJ_GET_ERROR_TYPE = 3,
0591 ACPI_EINJ_END_OPERATION = 4,
0592 ACPI_EINJ_EXECUTE_OPERATION = 5,
0593 ACPI_EINJ_CHECK_BUSY_STATUS = 6,
0594 ACPI_EINJ_GET_COMMAND_STATUS = 7,
0595 ACPI_EINJ_ACTION_RESERVED = 8,
0596 ACPI_EINJ_TRIGGER_ERROR = 0xFF
0597 };
0598
0599
0600
0601 enum AcpiEinjInstructions
0602 {
0603 ACPI_EINJ_READ_REGISTER = 0,
0604 ACPI_EINJ_READ_REGISTER_VALUE = 1,
0605 ACPI_EINJ_WRITE_REGISTER = 2,
0606 ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
0607 ACPI_EINJ_NOOP = 4,
0608 ACPI_EINJ_INSTRUCTION_RESERVED = 5
0609 };
0610
0611
0612
0613 typedef struct acpi_einj_trigger
0614 {
0615 UINT32 HeaderSize;
0616 UINT32 Revision;
0617 UINT32 TableSize;
0618 UINT32 EntryCount;
0619
0620 } ACPI_EINJ_TRIGGER;
0621
0622
0623
0624
0625
0626
0627
0628
0629 typedef struct acpi_table_erst
0630 {
0631 ACPI_TABLE_HEADER Header;
0632 UINT32 HeaderLength;
0633 UINT32 Reserved;
0634 UINT32 Entries;
0635
0636 } ACPI_TABLE_ERST;
0637
0638
0639
0640 typedef struct acpi_erst_entry
0641 {
0642 ACPI_WHEA_HEADER WheaHeader;
0643
0644 } ACPI_ERST_ENTRY;
0645
0646
0647
0648 enum AcpiErstActions
0649 {
0650 ACPI_ERST_BEGIN_WRITE_OPERATION = 0,
0651 ACPI_ERST_BEGIN_READ_OPERATION = 1,
0652 ACPI_ERST_BETGIN_CLEAR_OPERATION= 2,
0653 ACPI_ERST_END_OPERATION = 3,
0654 ACPI_ERST_SET_RECORD_OFFSET = 4,
0655 ACPI_ERST_EXECUTE_OPERATION = 5,
0656 ACPI_ERST_CHECK_BUSY_STATUS = 6,
0657 ACPI_ERST_GET_COMMAND_STATUS = 7,
0658 ACPI_ERST_GET_RECORD_IDENTIFIER = 8,
0659 ACPI_ERST_SET_RECORD_IDENTIFIER = 9,
0660 ACPI_ERST_GET_RECORD_COUNT = 10,
0661 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
0662 ACPI_ERST_NOT_USED = 12,
0663 ACPI_ERST_GET_ERROR_RANGE = 13,
0664 ACPI_ERST_GET_ERROR_LENGTH = 14,
0665 ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
0666 ACPI_ERST_ACTION_RESERVED = 16
0667 };
0668
0669
0670
0671 enum AcpiErstInstructions
0672 {
0673 ACPI_ERST_READ_REGISTER = 0,
0674 ACPI_ERST_READ_REGISTER_VALUE = 1,
0675 ACPI_ERST_WRITE_REGISTER = 2,
0676 ACPI_ERST_WRITE_REGISTER_VALUE = 3,
0677 ACPI_ERST_NOOP = 4,
0678 ACPI_ERST_LOAD_VAR1 = 5,
0679 ACPI_ERST_LOAD_VAR2 = 6,
0680 ACPI_ERST_STORE_VAR1 = 7,
0681 ACPI_ERST_ADD = 8,
0682 ACPI_ERST_SUBTRACT = 9,
0683 ACPI_ERST_ADD_VALUE = 10,
0684 ACPI_ERST_SUBTRACT_VALUE = 11,
0685 ACPI_ERST_STALL = 12,
0686 ACPI_ERST_STALL_WHILE_TRUE = 13,
0687 ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
0688 ACPI_ERST_GOTO = 15,
0689 ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
0690 ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
0691 ACPI_ERST_MOVE_DATA = 18,
0692 ACPI_ERST_INSTRUCTION_RESERVED = 19
0693 };
0694
0695
0696
0697
0698
0699
0700
0701
0702 typedef struct acpi_table_hest
0703 {
0704 ACPI_TABLE_HEADER Header;
0705 UINT32 ErrorSourceCount;
0706
0707 } ACPI_TABLE_HEST;
0708
0709
0710
0711
0712 typedef struct acpi_hest_header
0713 {
0714 UINT16 Type;
0715
0716 } ACPI_HEST_HEADER;
0717
0718
0719
0720
0721 enum AcpiHestTypes
0722 {
0723 ACPI_HEST_TYPE_XPF_MACHINE_CHECK = 0,
0724 ACPI_HEST_TYPE_XPF_CORRECTED_MACHINE_CHECK = 1,
0725 ACPI_HEST_TYPE_XPF_UNUSED = 2,
0726 ACPI_HEST_TYPE_XPF_NON_MASKABLE_INTERRUPT = 3,
0727 ACPI_HEST_TYPE_IPF_CORRECTED_MACHINE_CHECK = 4,
0728 ACPI_HEST_TYPE_IPF_CORRECTED_PLATFORM_ERROR = 5,
0729 ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
0730 ACPI_HEST_TYPE_AER_ENDPOINT = 7,
0731 ACPI_HEST_TYPE_AER_BRIDGE = 8,
0732 ACPI_HEST_TYPE_GENERIC_HARDWARE_ERROR_SOURCE = 9,
0733 ACPI_HEST_TYPE_RESERVED = 10
0734 };
0735
0736
0737
0738
0739
0740
0741
0742
0743 typedef struct acpi_hest_xpf_error_bank
0744 {
0745 UINT8 BankNumber;
0746 UINT8 ClearStatusOnInit;
0747 UINT8 StatusFormat;
0748 UINT8 ConfigWriteEnable;
0749 UINT32 ControlRegister;
0750 UINT64 ControlInitData;
0751 UINT32 StatusRegister;
0752 UINT32 AddressRegister;
0753 UINT32 MiscRegister;
0754
0755 } ACPI_HEST_XPF_ERROR_BANK;
0756
0757
0758
0759
0760 typedef struct acpi_hest_generic_status
0761 {
0762 UINT32 BlockStatus;
0763 UINT32 RawDataOffset;
0764 UINT32 RawDataLength;
0765 UINT32 DataLength;
0766 UINT32 ErrorSeverity;
0767
0768 } ACPI_HEST_GENERIC_STATUS;
0769
0770
0771
0772
0773 typedef struct acpi_hest_generic_data
0774 {
0775 UINT8 SectionType[16];
0776 UINT32 ErrorSeverity;
0777 UINT16 Revision;
0778 UINT8 ValidationBits;
0779 UINT8 Flags;
0780 UINT32 ErrorDataLength;
0781 UINT8 FruId[16];
0782 UINT8 FruText[20];
0783
0784 } ACPI_HEST_GENERIC_DATA;
0785
0786
0787
0788
0789 typedef struct acpi_hest_aer_common
0790 {
0791 UINT16 SourceId;
0792 UINT16 ConfigWriteEnable;
0793 UINT8 Flags;
0794 UINT8 Enabled;
0795 UINT32 RecordsToPreAllocate;
0796 UINT32 MaxSectionsPerRecord;
0797 UINT32 Bus;
0798 UINT16 Device;
0799 UINT16 Function;
0800 UINT16 DeviceControl;
0801 UINT16 Reserved;
0802 UINT32 UncorrectableErrorMask;
0803 UINT32 UncorrectableErrorSeverity;
0804 UINT32 CorrectableErrorMask;
0805 UINT32 AdvancedErrorCapabilities;
0806
0807 } ACPI_HEST_AER_COMMON;
0808
0809
0810
0811
0812 typedef struct acpi_hest_notify
0813 {
0814 UINT8 Type;
0815 UINT8 Length;
0816 UINT16 ConfigWriteEnable;
0817 UINT32 PollInterval;
0818 UINT32 Vector;
0819 UINT32 PollingThresholdValue;
0820 UINT32 PollingThresholdWindow;
0821 UINT32 ErrorThresholdValue;
0822 UINT32 ErrorThresholdWindow;
0823
0824 } ACPI_HEST_NOTIFY;
0825
0826
0827
0828 enum AcpiHestNotifyTypes
0829 {
0830 ACPI_HEST_NOTIFY_POLLED = 0,
0831 ACPI_HEST_NOTIFY_EXTERNAL = 1,
0832 ACPI_HEST_NOTIFY_LOCAL = 2,
0833 ACPI_HEST_NOTIFY_SCI = 3,
0834 ACPI_HEST_NOTIFY_NMI = 4,
0835 ACPI_HEST_NOTIFY_RESERVED = 5
0836 };
0837
0838
0839
0840
0841
0842
0843
0844
0845
0846
0847
0848
0849 typedef struct acpi_hest_xpf_machine_check
0850 {
0851 ACPI_HEST_HEADER Header;
0852 UINT16 SourceId;
0853 UINT16 ConfigWriteEnable;
0854 UINT8 Flags;
0855 UINT8 Reserved1;
0856 UINT32 RecordsToPreAllocate;
0857 UINT32 MaxSectionsPerRecord;
0858 UINT64 GlobalCapabilityData;
0859 UINT64 GlobalControlData;
0860 UINT8 NumHardwareBanks;
0861 UINT8 Reserved2[7];
0862
0863 } ACPI_HEST_XPF_MACHINE_CHECK;
0864
0865
0866
0867
0868 typedef struct acpi_table_hest_xpf_corrected
0869 {
0870 ACPI_HEST_HEADER Header;
0871 UINT16 SourceId;
0872 UINT16 ConfigWriteEnable;
0873 UINT8 Flags;
0874 UINT8 Enabled;
0875 UINT32 RecordsToPreAllocate;
0876 UINT32 MaxSectionsPerRecord;
0877 ACPI_HEST_NOTIFY Notify;
0878 UINT8 NumHardwareBanks;
0879 UINT8 Reserved[3];
0880
0881 } ACPI_HEST_XPF_CORRECTED;
0882
0883
0884
0885
0886 typedef struct acpi_hest_xpf_nmi
0887 {
0888 ACPI_HEST_HEADER Header;
0889 UINT16 SourceId;
0890 UINT32 Reserved;
0891 UINT32 RecordsToPreAllocate;
0892 UINT32 MaxSectionsPerRecord;
0893 UINT32 MaxRawDataLength;
0894
0895 } ACPI_HEST_XPF_NMI;
0896
0897
0898
0899
0900 typedef struct acpi_hest_ipf_corrected
0901 {
0902 ACPI_HEST_HEADER Header;
0903 UINT8 Enabled;
0904 UINT8 Reserved;
0905
0906 } ACPI_HEST_IPF_CORRECTED;
0907
0908
0909
0910
0911 typedef struct acpi_hest_ipf_corrected_platform
0912 {
0913 ACPI_HEST_HEADER Header;
0914 UINT8 Enabled;
0915 UINT8 Reserved;
0916
0917 } ACPI_HEST_IPF_CORRECTED_PLATFORM;
0918
0919
0920
0921
0922 typedef struct acpi_hest_aer_root
0923 {
0924 ACPI_HEST_HEADER Header;
0925 ACPI_HEST_AER_COMMON Aer;
0926 UINT32 RootErrorCommand;
0927
0928 } ACPI_HEST_AER_ROOT;
0929
0930
0931
0932
0933 typedef struct acpi_hest_aer
0934 {
0935 ACPI_HEST_HEADER Header;
0936 ACPI_HEST_AER_COMMON Aer;
0937
0938 } ACPI_HEST_AER;
0939
0940
0941
0942
0943 typedef struct acpi_hest_aer_bridge
0944 {
0945 ACPI_HEST_HEADER Header;
0946 ACPI_HEST_AER_COMMON Aer;
0947 UINT32 SecondaryUncorrectableErrorMask;
0948 UINT32 SecondaryUncorrectableErrorSeverity;
0949 UINT32 SecondaryAdvancedCapabilities;
0950
0951 } ACPI_HEST_AER_BRIDGE;
0952
0953
0954
0955
0956 typedef struct acpi_hest_generic
0957 {
0958 ACPI_HEST_HEADER Header;
0959 UINT16 SourceId;
0960 UINT16 RelatedSourceId;
0961 UINT8 ConfigWriteEnable;
0962 UINT8 Enabled;
0963 UINT32 RecordsToPreAllocate;
0964 UINT32 MaxSectionsPerRecord;
0965 UINT32 MaxRawDataLength;
0966 ACPI_GENERIC_ADDRESS ErrorStatusAddress;
0967 ACPI_HEST_NOTIFY Notify;
0968 UINT32 ErrorStatusBlockLength;
0969
0970 } ACPI_HEST_GENERIC;
0971
0972
0973
0974
0975
0976
0977
0978
0979 typedef struct acpi_table_hpet
0980 {
0981 ACPI_TABLE_HEADER Header;
0982 UINT32 Id;
0983 ACPI_GENERIC_ADDRESS Address;
0984 UINT8 Sequence;
0985 UINT16 MinimumTick;
0986 UINT8 Flags;
0987
0988 } ACPI_TABLE_HPET;
0989
0990
0991
0992 #define ACPI_HPET_PAGE_PROTECT (1)
0993 #define ACPI_HPET_PAGE_PROTECT_4 (1<<1)
0994 #define ACPI_HPET_PAGE_PROTECT_64 (1<<2)
0995
0996
0997
0998
0999
1000
1001
1002
1003
1004
1005 typedef struct acpi_table_ibft
1006 {
1007 ACPI_TABLE_HEADER Header;
1008 UINT8 Reserved[12];
1009
1010 } ACPI_TABLE_IBFT;
1011
1012
1013
1014
1015 typedef struct acpi_ibft_header
1016 {
1017 UINT8 Type;
1018 UINT8 Version;
1019 UINT16 Length;
1020 UINT8 Index;
1021 UINT8 Flags;
1022
1023 } ACPI_IBFT_HEADER;
1024
1025
1026
1027
1028 enum AcpiIbftType
1029 {
1030 ACPI_IBFT_TYPE_NOT_USED = 0,
1031 ACPI_IBFT_TYPE_CONTROL = 1,
1032 ACPI_IBFT_TYPE_INITIATOR = 2,
1033 ACPI_IBFT_TYPE_NIC = 3,
1034 ACPI_IBFT_TYPE_TARGET = 4,
1035 ACPI_IBFT_TYPE_EXTENSIONS = 5,
1036 ACPI_IBFT_TYPE_RESERVED = 6
1037 };
1038
1039
1040
1041
1042 typedef struct acpi_ibft_control
1043 {
1044 ACPI_IBFT_HEADER Header;
1045 UINT16 Extensions;
1046 UINT16 InitiatorOffset;
1047 UINT16 Nic0Offset;
1048 UINT16 Target0Offset;
1049 UINT16 Nic1Offset;
1050 UINT16 Target1Offset;
1051
1052 } ACPI_IBFT_CONTROL;
1053
1054 typedef struct acpi_ibft_initiator
1055 {
1056 ACPI_IBFT_HEADER Header;
1057 UINT8 SnsServer[16];
1058 UINT8 SlpServer[16];
1059 UINT8 PrimaryServer[16];
1060 UINT8 SecondaryServer[16];
1061 UINT16 NameLength;
1062 UINT16 NameOffset;
1063
1064 } ACPI_IBFT_INITIATOR;
1065
1066 typedef struct acpi_ibft_nic
1067 {
1068 ACPI_IBFT_HEADER Header;
1069 UINT8 IpAddress[16];
1070 UINT8 SubnetMaskPrefix;
1071 UINT8 Origin;
1072 UINT8 Gateway[16];
1073 UINT8 PrimaryDns[16];
1074 UINT8 SecondaryDns[16];
1075 UINT8 Dhcp[16];
1076 UINT16 Vlan;
1077 UINT8 MacAddress[6];
1078 UINT16 PciAddress;
1079 UINT16 NameLength;
1080 UINT16 NameOffset;
1081
1082 } ACPI_IBFT_NIC;
1083
1084 typedef struct acpi_ibft_target
1085 {
1086 ACPI_IBFT_HEADER Header;
1087 UINT8 TargetIpAddress[16];
1088 UINT16 TargetIpSocket;
1089 UINT8 TargetBootLun[8];
1090 UINT8 ChapType;
1091 UINT8 NicAssociation;
1092 UINT16 TargetNameLength;
1093 UINT16 TargetNameOffset;
1094 UINT16 ChapNameLength;
1095 UINT16 ChapNameOffset;
1096 UINT16 ChapSecretLength;
1097 UINT16 ChapSecretOffset;
1098 UINT16 ReverseChapNameLength;
1099 UINT16 ReverseChapNameOffset;
1100 UINT16 ReverseChapSecretLength;
1101 UINT16 ReverseChapSecretOffset;
1102
1103 } ACPI_IBFT_TARGET;
1104
1105
1106
1107
1108
1109
1110
1111
1112 typedef struct acpi_table_madt
1113 {
1114 ACPI_TABLE_HEADER Header;
1115 UINT32 Address;
1116 UINT32 Flags;
1117
1118 } ACPI_TABLE_MADT;
1119
1120
1121
1122 #define ACPI_MADT_PCAT_COMPAT (1)
1123
1124
1125
1126 #define ACPI_MADT_DUAL_PIC 0
1127 #define ACPI_MADT_MULTIPLE_APIC 1
1128
1129
1130
1131
1132 enum AcpiMadtType
1133 {
1134 ACPI_MADT_TYPE_LOCAL_APIC = 0,
1135 ACPI_MADT_TYPE_IO_APIC = 1,
1136 ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2,
1137 ACPI_MADT_TYPE_NMI_SOURCE = 3,
1138 ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4,
1139 ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5,
1140 ACPI_MADT_TYPE_IO_SAPIC = 6,
1141 ACPI_MADT_TYPE_LOCAL_SAPIC = 7,
1142 ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8,
1143 ACPI_MADT_TYPE_LOCAL_X2APIC = 9,
1144 ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10,
1145 ACPI_MADT_TYPE_RESERVED = 11
1146 };
1147
1148
1149
1150
1151
1152
1153
1154
1155 typedef struct acpi_madt_local_apic
1156 {
1157 ACPI_SUBTABLE_HEADER Header;
1158 UINT8 ProcessorId;
1159 UINT8 Id;
1160 UINT32 LapicFlags;
1161
1162 } ACPI_MADT_LOCAL_APIC;
1163
1164
1165
1166 typedef struct acpi_madt_io_apic
1167 {
1168 ACPI_SUBTABLE_HEADER Header;
1169 UINT8 Id;
1170 UINT8 Reserved;
1171 UINT32 Address;
1172 UINT32 GlobalIrqBase;
1173
1174 } ACPI_MADT_IO_APIC;
1175
1176
1177
1178 typedef struct acpi_madt_interrupt_override
1179 {
1180 ACPI_SUBTABLE_HEADER Header;
1181 UINT8 Bus;
1182 UINT8 SourceIrq;
1183 UINT32 GlobalIrq;
1184 UINT16 IntiFlags;
1185
1186 } ACPI_MADT_INTERRUPT_OVERRIDE;
1187
1188
1189
1190 typedef struct acpi_madt_nmi_source
1191 {
1192 ACPI_SUBTABLE_HEADER Header;
1193 UINT16 IntiFlags;
1194 UINT32 GlobalIrq;
1195
1196 } ACPI_MADT_NMI_SOURCE;
1197
1198
1199
1200 typedef struct acpi_madt_local_apic_nmi
1201 {
1202 ACPI_SUBTABLE_HEADER Header;
1203 UINT8 ProcessorId;
1204 UINT16 IntiFlags;
1205 UINT8 Lint;
1206
1207 } ACPI_MADT_LOCAL_APIC_NMI;
1208
1209
1210
1211 typedef struct acpi_madt_local_apic_override
1212 {
1213 ACPI_SUBTABLE_HEADER Header;
1214 UINT16 Reserved;
1215 UINT64 Address;
1216
1217 } ACPI_MADT_LOCAL_APIC_OVERRIDE;
1218
1219
1220
1221 typedef struct acpi_madt_io_sapic
1222 {
1223 ACPI_SUBTABLE_HEADER Header;
1224 UINT8 Id;
1225 UINT8 Reserved;
1226 UINT32 GlobalIrqBase;
1227 UINT64 Address;
1228
1229 } ACPI_MADT_IO_SAPIC;
1230
1231
1232
1233 typedef struct acpi_madt_local_sapic
1234 {
1235 ACPI_SUBTABLE_HEADER Header;
1236 UINT8 ProcessorId;
1237 UINT8 Id;
1238 UINT8 Eid;
1239 UINT8 Reserved[3];
1240 UINT32 LapicFlags;
1241 UINT32 Uid;
1242 char UidString[1];
1243
1244 } ACPI_MADT_LOCAL_SAPIC;
1245
1246
1247
1248 typedef struct acpi_madt_interrupt_source
1249 {
1250 ACPI_SUBTABLE_HEADER Header;
1251 UINT16 IntiFlags;
1252 UINT8 Type;
1253 UINT8 Id;
1254 UINT8 Eid;
1255 UINT8 IoSapicVector;
1256 UINT32 GlobalIrq;
1257 UINT32 Flags;
1258
1259 } ACPI_MADT_INTERRUPT_SOURCE;
1260
1261
1262
1263 #define ACPI_MADT_CPEI_OVERRIDE (1)
1264
1265
1266
1267 typedef struct acpi_madt_local_x2apic
1268 {
1269 ACPI_SUBTABLE_HEADER Header;
1270 UINT16 Reserved;
1271 UINT32 LocalApicId;
1272 UINT32 LapicFlags;
1273 UINT32 Uid;
1274
1275 } ACPI_MADT_LOCAL_X2APIC;
1276
1277
1278
1279 typedef struct acpi_madt_local_x2apic_nmi
1280 {
1281 ACPI_SUBTABLE_HEADER Header;
1282 UINT16 IntiFlags;
1283 UINT32 Uid;
1284 UINT8 Lint;
1285 UINT8 Reserved[3];
1286
1287 } ACPI_MADT_LOCAL_X2APIC_NMI;
1288
1289
1290
1291
1292
1293
1294
1295
1296 #define ACPI_MADT_ENABLED (1)
1297
1298
1299
1300 #define ACPI_MADT_POLARITY_MASK (3)
1301 #define ACPI_MADT_TRIGGER_MASK (3<<2)
1302
1303
1304
1305 #define ACPI_MADT_POLARITY_CONFORMS 0
1306 #define ACPI_MADT_POLARITY_ACTIVE_HIGH 1
1307 #define ACPI_MADT_POLARITY_RESERVED 2
1308 #define ACPI_MADT_POLARITY_ACTIVE_LOW 3
1309
1310 #define ACPI_MADT_TRIGGER_CONFORMS (0)
1311 #define ACPI_MADT_TRIGGER_EDGE (1<<2)
1312 #define ACPI_MADT_TRIGGER_RESERVED (2<<2)
1313 #define ACPI_MADT_TRIGGER_LEVEL (3<<2)
1314
1315
1316
1317
1318
1319
1320
1321
1322 typedef struct acpi_table_mcfg
1323 {
1324 ACPI_TABLE_HEADER Header;
1325 UINT8 Reserved[8];
1326
1327 } ACPI_TABLE_MCFG;
1328
1329
1330
1331
1332 typedef struct acpi_mcfg_allocation
1333 {
1334 UINT64 Address;
1335 UINT16 PciSegment;
1336 UINT8 StartBusNumber;
1337 UINT8 EndBusNumber;
1338 UINT32 Reserved;
1339
1340 } ACPI_MCFG_ALLOCATION;
1341
1342
1343
1344
1345
1346
1347
1348
1349 typedef struct acpi_table_sbst
1350 {
1351 ACPI_TABLE_HEADER Header;
1352 UINT32 WarningLevel;
1353 UINT32 LowLevel;
1354 UINT32 CriticalLevel;
1355
1356 } ACPI_TABLE_SBST;
1357
1358
1359
1360
1361
1362
1363
1364
1365 typedef struct acpi_table_slit
1366 {
1367 ACPI_TABLE_HEADER Header;
1368 UINT64 LocalityCount;
1369 UINT8 Entry[1];
1370
1371 } ACPI_TABLE_SLIT;
1372
1373
1374
1375
1376
1377
1378
1379
1380 typedef struct acpi_table_spcr
1381 {
1382 ACPI_TABLE_HEADER Header;
1383 UINT8 InterfaceType;
1384 UINT8 Reserved[3];
1385 ACPI_GENERIC_ADDRESS SerialPort;
1386 UINT8 InterruptType;
1387 UINT8 PcInterrupt;
1388 UINT32 Interrupt;
1389 UINT8 BaudRate;
1390 UINT8 Parity;
1391 UINT8 StopBits;
1392 UINT8 FlowControl;
1393 UINT8 TerminalType;
1394 UINT8 Reserved1;
1395 UINT16 PciDeviceId;
1396 UINT16 PciVendorId;
1397 UINT8 PciBus;
1398 UINT8 PciDevice;
1399 UINT8 PciFunction;
1400 UINT32 PciFlags;
1401 UINT8 PciSegment;
1402 UINT32 Reserved2;
1403
1404 } ACPI_TABLE_SPCR;
1405
1406
1407
1408
1409
1410
1411
1412
1413 typedef struct acpi_table_spmi
1414 {
1415 ACPI_TABLE_HEADER Header;
1416 UINT8 Reserved;
1417 UINT8 InterfaceType;
1418 UINT16 SpecRevision;
1419 UINT8 InterruptType;
1420 UINT8 GpeNumber;
1421 UINT8 Reserved1;
1422 UINT8 PciDeviceFlag;
1423 UINT32 Interrupt;
1424 ACPI_GENERIC_ADDRESS IpmiRegister;
1425 UINT8 PciSegment;
1426 UINT8 PciBus;
1427 UINT8 PciDevice;
1428 UINT8 PciFunction;
1429
1430 } ACPI_TABLE_SPMI;
1431
1432
1433
1434
1435
1436
1437
1438
1439 typedef struct acpi_table_srat
1440 {
1441 ACPI_TABLE_HEADER Header;
1442 UINT32 TableRevision;
1443 UINT64 Reserved;
1444
1445 } ACPI_TABLE_SRAT;
1446
1447
1448
1449 enum AcpiSratType
1450 {
1451 ACPI_SRAT_TYPE_CPU_AFFINITY = 0,
1452 ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
1453 ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
1454 ACPI_SRAT_TYPE_RESERVED = 3
1455 };
1456
1457
1458
1459
1460
1461
1462
1463 typedef struct acpi_srat_cpu_affinity
1464 {
1465 ACPI_SUBTABLE_HEADER Header;
1466 UINT8 ProximityDomainLo;
1467 UINT8 ApicId;
1468 UINT32 Flags;
1469 UINT8 LocalSapicEid;
1470 UINT8 ProximityDomainHi[3];
1471 UINT32 Reserved;
1472
1473 } ACPI_SRAT_CPU_AFFINITY;
1474
1475
1476
1477 typedef struct acpi_srat_mem_affinity
1478 {
1479 ACPI_SUBTABLE_HEADER Header;
1480 UINT32 ProximityDomain;
1481 UINT16 Reserved;
1482 UINT64 BaseAddress;
1483 UINT64 Length;
1484 UINT32 Reserved1;
1485 UINT32 Flags;
1486 UINT64 Reserved2;
1487
1488 } ACPI_SRAT_MEM_AFFINITY;
1489
1490
1491
1492 #define ACPI_SRAT_MEM_ENABLED (1)
1493 #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1)
1494 #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2)
1495
1496
1497
1498 typedef struct acpi_srat_x2apic_cpu_affinity
1499 {
1500 ACPI_SUBTABLE_HEADER Header;
1501 UINT16 Reserved;
1502 UINT32 ProximityDomain;
1503 UINT32 ApicId;
1504 UINT32 Flags;
1505 UINT32 ClockDomain;
1506 UINT32 Reserved2;
1507
1508 } ACPI_SRAT_X2APIC_CPU_AFFINITY;
1509
1510
1511
1512 #define ACPI_SRAT_CPU_ENABLED (1)
1513
1514
1515
1516
1517
1518
1519
1520
1521 typedef struct acpi_table_tcpa
1522 {
1523 ACPI_TABLE_HEADER Header;
1524 UINT16 Reserved;
1525 UINT32 MaxLogLength;
1526 UINT64 LogAddress;
1527
1528 } ACPI_TABLE_TCPA;
1529
1530
1531
1532
1533
1534
1535
1536
1537 typedef struct acpi_table_uefi
1538 {
1539 ACPI_TABLE_HEADER Header;
1540 UINT8 Identifier[16];
1541 UINT16 DataOffset;
1542 UINT8 Data;
1543
1544 } ACPI_TABLE_UEFI;
1545
1546
1547
1548
1549
1550
1551
1552
1553 typedef struct acpi_table_wdat
1554 {
1555 ACPI_TABLE_HEADER Header;
1556 UINT32 HeaderLength;
1557 UINT16 PciSegment;
1558 UINT8 PciBus;
1559 UINT8 PciDevice;
1560 UINT8 PciFunction;
1561 UINT8 Reserved[3];
1562 UINT32 TimerPeriod;
1563 UINT32 MaxCount;
1564 UINT32 MinCount;
1565 UINT8 Flags;
1566 UINT8 Reserved2[3];
1567 UINT32 Entries;
1568
1569 } ACPI_TABLE_WDAT;
1570
1571
1572
1573 typedef struct acpi_wdat_entry
1574 {
1575 ACPI_WHEA_HEADER WheaHeader;
1576
1577 } ACPI_WDAT_ENTRY;
1578
1579
1580
1581 enum AcpiWdatActions
1582 {
1583 ACPI_WDAT_RESET = 1,
1584 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1585 ACPI_WDAT_GET_COUNTDOWN = 5,
1586 ACPI_WDAT_SET_COUNTDOWN = 6,
1587 ACPI_WDAT_GET_RUNNING_STATE = 8,
1588 ACPI_WDAT_SET_RUNNING_STATE = 9,
1589 ACPI_WDAT_GET_STOPPED_STATE = 10,
1590 ACPI_WDAT_SET_STOPPED_STATE = 11,
1591 ACPI_WDAT_GET_REBOOT = 16,
1592 ACPI_WDAT_SET_REBOOT = 17,
1593 ACPI_WDAT_GET_SHUTDOWN = 18,
1594 ACPI_WDAT_SET_SHUTDOWN = 19,
1595 ACPI_WDAT_GET_STATUS = 32,
1596 ACPI_WDAT_SET_STATUS = 33,
1597 ACPI_WDAT_ACTION_RESERVED = 34
1598 };
1599
1600
1601
1602 enum AcpiWdatInstructions
1603 {
1604 ACPI_WDAT_READ_VALUE = 0,
1605 ACPI_WDAT_READ_COUNTDOWN = 1,
1606 ACPI_WDAT_WRITE_VALUE = 2,
1607 ACPI_WDAT_WRITE_COUNTDOWN = 3,
1608 ACPI_WDAT_INSTRUCTION_RESERVED = 4,
1609 ACPI_WDAT_PRESERVE_REGISTER = 0x80
1610 };
1611
1612
1613
1614
1615
1616
1617
1618
1619 typedef struct acpi_table_wdrt
1620 {
1621 ACPI_TABLE_HEADER Header;
1622 UINT32 HeaderLength;
1623 UINT8 PciSegment;
1624 UINT8 PciBus;
1625 UINT8 PciDevice;
1626 UINT8 PciFunction;
1627 UINT32 TimerPeriod;
1628 UINT32 MaxCount;
1629 UINT32 MinCount;
1630 UINT8 Flags;
1631 UINT8 Reserved[3];
1632 UINT32 Entries;
1633
1634 } ACPI_TABLE_WDRT;
1635
1636
1637
1638 #define ACPI_WDRT_TIMER_ENABLED (1)
1639
1640
1641
1642
1643 #pragma pack()
1644
1645 #endif