1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44#ifndef __ACTBL2_H__
45#define __ACTBL2_H__
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64#define ACPI_SIG_ASF "ASF!"
65#define ACPI_SIG_BOOT "BOOT"
66#define ACPI_SIG_DBGP "DBGP"
67#define ACPI_SIG_DMAR "DMAR"
68#define ACPI_SIG_HPET "HPET"
69#define ACPI_SIG_IBFT "IBFT"
70#define ACPI_SIG_IVRS "IVRS"
71#define ACPI_SIG_MCFG "MCFG"
72#define ACPI_SIG_MCHI "MCHI"
73#define ACPI_SIG_SLIC "SLIC"
74#define ACPI_SIG_SPCR "SPCR"
75#define ACPI_SIG_SPMI "SPMI"
76#define ACPI_SIG_TCPA "TCPA"
77#define ACPI_SIG_UEFI "UEFI"
78#define ACPI_SIG_WAET "WAET"
79#define ACPI_SIG_WDAT "WDAT"
80#define ACPI_SIG_WDDT "WDDT"
81#define ACPI_SIG_WDRT "WDRT"
82
83#ifdef ACPI_UNDEFINED_TABLES
84
85
86
87#define ACPI_SIG_ATKG "ATKG"
88#define ACPI_SIG_GSCI "GSCI"
89#define ACPI_SIG_IEIT "IEIT"
90#endif
91
92
93
94
95
96#pragma pack(1)
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113struct acpi_table_asf {
114 struct acpi_table_header header;
115};
116
117
118
119struct acpi_asf_header {
120 u8 type;
121 u8 reserved;
122 u16 length;
123};
124
125
126
127enum acpi_asf_type {
128 ACPI_ASF_TYPE_INFO = 0,
129 ACPI_ASF_TYPE_ALERT = 1,
130 ACPI_ASF_TYPE_CONTROL = 2,
131 ACPI_ASF_TYPE_BOOT = 3,
132 ACPI_ASF_TYPE_ADDRESS = 4,
133 ACPI_ASF_TYPE_RESERVED = 5
134};
135
136
137
138
139
140
141
142struct acpi_asf_info {
143 struct acpi_asf_header header;
144 u8 min_reset_value;
145 u8 min_poll_interval;
146 u16 system_id;
147 u32 mfg_id;
148 u8 flags;
149 u8 reserved2[3];
150};
151
152
153
154#define ACPI_ASF_SMBUS_PROTOCOLS (1)
155
156
157
158struct acpi_asf_alert {
159 struct acpi_asf_header header;
160 u8 assert_mask;
161 u8 deassert_mask;
162 u8 alerts;
163 u8 data_length;
164};
165
166struct acpi_asf_alert_data {
167 u8 address;
168 u8 command;
169 u8 mask;
170 u8 value;
171 u8 sensor_type;
172 u8 type;
173 u8 offset;
174 u8 source_type;
175 u8 severity;
176 u8 sensor_number;
177 u8 entity;
178 u8 instance;
179};
180
181
182
183struct acpi_asf_remote {
184 struct acpi_asf_header header;
185 u8 controls;
186 u8 data_length;
187 u16 reserved2;
188};
189
190struct acpi_asf_control_data {
191 u8 function;
192 u8 address;
193 u8 command;
194 u8 value;
195};
196
197
198
199struct acpi_asf_rmcp {
200 struct acpi_asf_header header;
201 u8 capabilities[7];
202 u8 completion_code;
203 u32 enterprise_id;
204 u8 command;
205 u16 parameter;
206 u16 boot_options;
207 u16 oem_parameters;
208};
209
210
211
212struct acpi_asf_address {
213 struct acpi_asf_header header;
214 u8 eprom_address;
215 u8 devices;
216};
217
218
219
220
221
222
223
224
225
226
227struct acpi_table_boot {
228 struct acpi_table_header header;
229 u8 cmos_index;
230 u8 reserved[3];
231};
232
233
234
235
236
237
238
239
240
241
242struct acpi_table_dbgp {
243 struct acpi_table_header header;
244 u8 type;
245 u8 reserved[3];
246 struct acpi_generic_address debug_port;
247};
248
249
250
251
252
253
254
255
256
257
258
259struct acpi_table_dmar {
260 struct acpi_table_header header;
261 u8 width;
262 u8 flags;
263 u8 reserved[10];
264};
265
266
267
268#define ACPI_DMAR_INTR_REMAP (1)
269
270
271
272struct acpi_dmar_header {
273 u16 type;
274 u16 length;
275};
276
277
278
279enum acpi_dmar_type {
280 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
281 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
282 ACPI_DMAR_TYPE_ATSR = 2,
283 ACPI_DMAR_HARDWARE_AFFINITY = 3,
284 ACPI_DMAR_TYPE_RESERVED = 4
285};
286
287
288
289struct acpi_dmar_device_scope {
290 u8 entry_type;
291 u8 length;
292 u16 reserved;
293 u8 enumeration_id;
294 u8 bus;
295};
296
297
298
299enum acpi_dmar_scope_type {
300 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
301 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
302 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
303 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
304 ACPI_DMAR_SCOPE_TYPE_HPET = 4,
305 ACPI_DMAR_SCOPE_TYPE_RESERVED = 5
306};
307
308struct acpi_dmar_pci_path {
309 u8 dev;
310 u8 fn;
311};
312
313
314
315
316
317
318
319struct acpi_dmar_hardware_unit {
320 struct acpi_dmar_header header;
321 u8 flags;
322 u8 reserved;
323 u16 segment;
324 u64 address;
325};
326
327
328
329#define ACPI_DMAR_INCLUDE_ALL (1)
330
331
332
333struct acpi_dmar_reserved_memory {
334 struct acpi_dmar_header header;
335 u16 reserved;
336 u16 segment;
337 u64 base_address;
338 u64 end_address;
339};
340
341
342
343#define ACPI_DMAR_ALLOW_ALL (1)
344
345
346
347struct acpi_dmar_atsr {
348 struct acpi_dmar_header header;
349 u8 flags;
350 u8 reserved;
351 u16 segment;
352};
353
354
355
356#define ACPI_DMAR_ALL_PORTS (1)
357
358
359
360struct acpi_dmar_rhsa {
361 struct acpi_dmar_header header;
362 u32 reserved;
363 u64 base_address;
364 u32 proximity_domain;
365};
366
367
368
369
370
371
372
373
374
375
376
377struct acpi_table_hpet {
378 struct acpi_table_header header;
379 u32 id;
380 struct acpi_generic_address address;
381 u8 sequence;
382 u16 minimum_tick;
383 u8 flags;
384};
385
386
387
388#define ACPI_HPET_PAGE_PROTECT_MASK (3)
389
390
391
392enum acpi_hpet_page_protect {
393 ACPI_HPET_NO_PAGE_PROTECT = 0,
394 ACPI_HPET_PAGE_PROTECT4 = 1,
395 ACPI_HPET_PAGE_PROTECT64 = 2
396};
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411struct acpi_table_ibft {
412 struct acpi_table_header header;
413 u8 reserved[12];
414};
415
416
417
418struct acpi_ibft_header {
419 u8 type;
420 u8 version;
421 u16 length;
422 u8 index;
423 u8 flags;
424};
425
426
427
428enum acpi_ibft_type {
429 ACPI_IBFT_TYPE_NOT_USED = 0,
430 ACPI_IBFT_TYPE_CONTROL = 1,
431 ACPI_IBFT_TYPE_INITIATOR = 2,
432 ACPI_IBFT_TYPE_NIC = 3,
433 ACPI_IBFT_TYPE_TARGET = 4,
434 ACPI_IBFT_TYPE_EXTENSIONS = 5,
435 ACPI_IBFT_TYPE_RESERVED = 6
436};
437
438
439
440struct acpi_ibft_control {
441 struct acpi_ibft_header header;
442 u16 extensions;
443 u16 initiator_offset;
444 u16 nic0_offset;
445 u16 target0_offset;
446 u16 nic1_offset;
447 u16 target1_offset;
448};
449
450struct acpi_ibft_initiator {
451 struct acpi_ibft_header header;
452 u8 sns_server[16];
453 u8 slp_server[16];
454 u8 primary_server[16];
455 u8 secondary_server[16];
456 u16 name_length;
457 u16 name_offset;
458};
459
460struct acpi_ibft_nic {
461 struct acpi_ibft_header header;
462 u8 ip_address[16];
463 u8 subnet_mask_prefix;
464 u8 origin;
465 u8 gateway[16];
466 u8 primary_dns[16];
467 u8 secondary_dns[16];
468 u8 dhcp[16];
469 u16 vlan;
470 u8 mac_address[6];
471 u16 pci_address;
472 u16 name_length;
473 u16 name_offset;
474};
475
476struct acpi_ibft_target {
477 struct acpi_ibft_header header;
478 u8 target_ip_address[16];
479 u16 target_ip_socket;
480 u8 target_boot_lun[8];
481 u8 chap_type;
482 u8 nic_association;
483 u16 target_name_length;
484 u16 target_name_offset;
485 u16 chap_name_length;
486 u16 chap_name_offset;
487 u16 chap_secret_length;
488 u16 chap_secret_offset;
489 u16 reverse_chap_name_length;
490 u16 reverse_chap_name_offset;
491 u16 reverse_chap_secret_length;
492 u16 reverse_chap_secret_offset;
493};
494
495
496
497
498
499
500
501
502
503
504
505struct acpi_table_ivrs {
506 struct acpi_table_header header;
507 u32 info;
508 u64 reserved;
509};
510
511
512
513#define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00
514#define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000
515#define ACPI_IVRS_ATS_RESERVED 0x00400000
516
517
518
519struct acpi_ivrs_header {
520 u8 type;
521 u8 flags;
522 u16 length;
523 u16 device_id;
524};
525
526
527
528enum acpi_ivrs_type {
529 ACPI_IVRS_TYPE_HARDWARE = 0x10,
530 ACPI_IVRS_TYPE_MEMORY1 = 0x20,
531 ACPI_IVRS_TYPE_MEMORY2 = 0x21,
532 ACPI_IVRS_TYPE_MEMORY3 = 0x22
533};
534
535
536
537#define ACPI_IVHD_TT_ENABLE (1)
538#define ACPI_IVHD_PASS_PW (1<<1)
539#define ACPI_IVHD_RES_PASS_PW (1<<2)
540#define ACPI_IVHD_ISOC (1<<3)
541#define ACPI_IVHD_IOTLB (1<<4)
542
543
544
545#define ACPI_IVMD_UNITY (1)
546#define ACPI_IVMD_READ (1<<1)
547#define ACPI_IVMD_WRITE (1<<2)
548#define ACPI_IVMD_EXCLUSION_RANGE (1<<3)
549
550
551
552
553
554
555
556struct acpi_ivrs_hardware {
557 struct acpi_ivrs_header header;
558 u16 capability_offset;
559 u64 base_address;
560 u16 pci_segment_group;
561 u16 info;
562 u32 reserved;
563};
564
565
566
567#define ACPI_IVHD_MSI_NUMBER_MASK 0x001F
568#define ACPI_IVHD_UNIT_ID_MASK 0x1F00
569
570
571
572
573
574
575
576struct acpi_ivrs_de_header {
577 u8 type;
578 u16 id;
579 u8 data_setting;
580};
581
582
583
584#define ACPI_IVHD_ENTRY_LENGTH 0xC0
585
586
587
588enum acpi_ivrs_device_entry_type {
589
590
591 ACPI_IVRS_TYPE_PAD4 = 0,
592 ACPI_IVRS_TYPE_ALL = 1,
593 ACPI_IVRS_TYPE_SELECT = 2,
594 ACPI_IVRS_TYPE_START = 3,
595 ACPI_IVRS_TYPE_END = 4,
596
597
598
599 ACPI_IVRS_TYPE_PAD8 = 64,
600 ACPI_IVRS_TYPE_NOT_USED = 65,
601 ACPI_IVRS_TYPE_ALIAS_SELECT = 66,
602 ACPI_IVRS_TYPE_ALIAS_START = 67,
603 ACPI_IVRS_TYPE_EXT_SELECT = 70,
604 ACPI_IVRS_TYPE_EXT_START = 71,
605 ACPI_IVRS_TYPE_SPECIAL = 72
606};
607
608
609
610#define ACPI_IVHD_INIT_PASS (1)
611#define ACPI_IVHD_EINT_PASS (1<<1)
612#define ACPI_IVHD_NMI_PASS (1<<2)
613#define ACPI_IVHD_SYSTEM_MGMT (3<<4)
614#define ACPI_IVHD_LINT0_PASS (1<<6)
615#define ACPI_IVHD_LINT1_PASS (1<<7)
616
617
618
619struct acpi_ivrs_device4 {
620 struct acpi_ivrs_de_header header;
621};
622
623
624
625struct acpi_ivrs_device8a {
626 struct acpi_ivrs_de_header header;
627 u8 reserved1;
628 u16 used_id;
629 u8 reserved2;
630};
631
632
633
634struct acpi_ivrs_device8b {
635 struct acpi_ivrs_de_header header;
636 u32 extended_data;
637};
638
639
640
641#define ACPI_IVHD_ATS_DISABLED (1<<31)
642
643
644
645struct acpi_ivrs_device8c {
646 struct acpi_ivrs_de_header header;
647 u8 handle;
648 u16 used_id;
649 u8 variety;
650};
651
652
653
654#define ACPI_IVHD_IOAPIC 1
655#define ACPI_IVHD_HPET 2
656
657
658
659struct acpi_ivrs_memory {
660 struct acpi_ivrs_header header;
661 u16 aux_data;
662 u64 reserved;
663 u64 start_address;
664 u64 memory_length;
665};
666
667
668
669
670
671
672
673
674
675
676struct acpi_table_mcfg {
677 struct acpi_table_header header;
678 u8 reserved[8];
679};
680
681
682
683struct acpi_mcfg_allocation {
684 u64 address;
685 u16 pci_segment;
686 u8 start_bus_number;
687 u8 end_bus_number;
688 u32 reserved;
689};
690
691
692
693
694
695
696
697
698
699
700
701struct acpi_table_mchi {
702 struct acpi_table_header header;
703 u8 interface_type;
704 u8 protocol;
705 u64 protocol_data;
706 u8 interrupt_type;
707 u8 gpe;
708 u8 pci_device_flag;
709 u32 global_interrupt;
710 struct acpi_generic_address control_register;
711 u8 pci_segment;
712 u8 pci_bus;
713 u8 pci_device;
714 u8 pci_function;
715};
716
717
718
719
720
721
722
723
724
725
726
727
728
729struct acpi_table_slic {
730 struct acpi_table_header header;
731};
732
733
734
735struct acpi_slic_header {
736 u32 type;
737 u32 length;
738};
739
740
741
742enum acpi_slic_type {
743 ACPI_SLIC_TYPE_PUBLIC_KEY = 0,
744 ACPI_SLIC_TYPE_WINDOWS_MARKER = 1,
745 ACPI_SLIC_TYPE_RESERVED = 2
746};
747
748
749
750
751
752
753
754struct acpi_slic_key {
755 struct acpi_slic_header header;
756 u8 key_type;
757 u8 version;
758 u16 reserved;
759 u32 algorithm;
760 char magic[4];
761 u32 bit_length;
762 u32 exponent;
763 u8 modulus[128];
764};
765
766
767
768struct acpi_slic_marker {
769 struct acpi_slic_header header;
770 u32 version;
771 char oem_id[ACPI_OEM_ID_SIZE];
772 char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
773 char windows_flag[8];
774 u32 slic_version;
775 u8 reserved[16];
776 u8 signature[128];
777};
778
779
780
781
782
783
784
785
786
787
788
789struct acpi_table_spcr {
790 struct acpi_table_header header;
791 u8 interface_type;
792 u8 reserved[3];
793 struct acpi_generic_address serial_port;
794 u8 interrupt_type;
795 u8 pc_interrupt;
796 u32 interrupt;
797 u8 baud_rate;
798 u8 parity;
799 u8 stop_bits;
800 u8 flow_control;
801 u8 terminal_type;
802 u8 reserved1;
803 u16 pci_device_id;
804 u16 pci_vendor_id;
805 u8 pci_bus;
806 u8 pci_device;
807 u8 pci_function;
808 u32 pci_flags;
809 u8 pci_segment;
810 u32 reserved2;
811};
812
813
814
815#define ACPI_SPCR_DO_NOT_DISABLE (1)
816
817
818
819
820
821
822
823
824
825
826
827
828struct acpi_table_spmi {
829 struct acpi_table_header header;
830 u8 interface_type;
831 u8 reserved;
832 u16 spec_revision;
833 u8 interrupt_type;
834 u8 gpe_number;
835 u8 reserved1;
836 u8 pci_device_flag;
837 u32 interrupt;
838 struct acpi_generic_address ipmi_register;
839 u8 pci_segment;
840 u8 pci_bus;
841 u8 pci_device;
842 u8 pci_function;
843 u8 reserved2;
844};
845
846
847
848enum acpi_spmi_interface_types {
849 ACPI_SPMI_NOT_USED = 0,
850 ACPI_SPMI_KEYBOARD = 1,
851 ACPI_SPMI_SMI = 2,
852 ACPI_SPMI_BLOCK_TRANSFER = 3,
853 ACPI_SPMI_SMBUS = 4,
854 ACPI_SPMI_RESERVED = 5
855};
856
857
858
859
860
861
862
863
864
865
866
867struct acpi_table_tcpa {
868 struct acpi_table_header header;
869 u16 reserved;
870 u32 max_log_length;
871 u64 log_address;
872};
873
874
875
876
877
878
879
880
881
882
883
884struct acpi_table_uefi {
885 struct acpi_table_header header;
886 u8 identifier[16];
887 u16 data_offset;
888};
889
890
891
892
893
894
895
896
897
898
899struct acpi_table_waet {
900 struct acpi_table_header header;
901 u32 flags;
902};
903
904
905
906#define ACPI_WAET_RTC_NO_ACK (1)
907#define ACPI_WAET_TIMER_ONE_READ (1<<1)
908
909
910
911
912
913
914
915
916
917
918
919struct acpi_table_wdat {
920 struct acpi_table_header header;
921 u32 header_length;
922 u16 pci_segment;
923 u8 pci_bus;
924 u8 pci_device;
925 u8 pci_function;
926 u8 reserved[3];
927 u32 timer_period;
928 u32 max_count;
929 u32 min_count;
930 u8 flags;
931 u8 reserved2[3];
932 u32 entries;
933};
934
935
936
937#define ACPI_WDAT_ENABLED (1)
938#define ACPI_WDAT_STOPPED 0x80
939
940
941
942struct acpi_wdat_entry {
943 u8 action;
944 u8 instruction;
945 u16 reserved;
946 struct acpi_generic_address register_region;
947 u32 value;
948 u32 mask;
949};
950
951
952
953enum acpi_wdat_actions {
954 ACPI_WDAT_RESET = 1,
955 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
956 ACPI_WDAT_GET_COUNTDOWN = 5,
957 ACPI_WDAT_SET_COUNTDOWN = 6,
958 ACPI_WDAT_GET_RUNNING_STATE = 8,
959 ACPI_WDAT_SET_RUNNING_STATE = 9,
960 ACPI_WDAT_GET_STOPPED_STATE = 10,
961 ACPI_WDAT_SET_STOPPED_STATE = 11,
962 ACPI_WDAT_GET_REBOOT = 16,
963 ACPI_WDAT_SET_REBOOT = 17,
964 ACPI_WDAT_GET_SHUTDOWN = 18,
965 ACPI_WDAT_SET_SHUTDOWN = 19,
966 ACPI_WDAT_GET_STATUS = 32,
967 ACPI_WDAT_SET_STATUS = 33,
968 ACPI_WDAT_ACTION_RESERVED = 34
969};
970
971
972
973enum acpi_wdat_instructions {
974 ACPI_WDAT_READ_VALUE = 0,
975 ACPI_WDAT_READ_COUNTDOWN = 1,
976 ACPI_WDAT_WRITE_VALUE = 2,
977 ACPI_WDAT_WRITE_COUNTDOWN = 3,
978 ACPI_WDAT_INSTRUCTION_RESERVED = 4,
979 ACPI_WDAT_PRESERVE_REGISTER = 0x80
980};
981
982
983
984
985
986
987
988
989
990
991
992struct acpi_table_wddt {
993 struct acpi_table_header header;
994 u16 spec_version;
995 u16 table_version;
996 u16 pci_vendor_id;
997 struct acpi_generic_address address;
998 u16 max_count;
999 u16 min_count;
1000 u16 period;
1001 u16 status;
1002 u16 capability;
1003};
1004
1005
1006
1007#define ACPI_WDDT_AVAILABLE (1)
1008#define ACPI_WDDT_ACTIVE (1<<1)
1009#define ACPI_WDDT_TCO_OS_OWNED (1<<2)
1010#define ACPI_WDDT_USER_RESET (1<<11)
1011#define ACPI_WDDT_WDT_RESET (1<<12)
1012#define ACPI_WDDT_POWER_FAIL (1<<13)
1013#define ACPI_WDDT_UNKNOWN_RESET (1<<14)
1014
1015
1016
1017#define ACPI_WDDT_AUTO_RESET (1)
1018#define ACPI_WDDT_ALERT_SUPPORT (1<<1)
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030struct acpi_table_wdrt {
1031 struct acpi_table_header header;
1032 struct acpi_generic_address control_register;
1033 struct acpi_generic_address count_register;
1034 u16 pci_device_id;
1035 u16 pci_vendor_id;
1036 u8 pci_bus;
1037 u8 pci_device;
1038 u8 pci_function;
1039 u8 pci_segment;
1040 u16 max_count;
1041 u8 units;
1042};
1043
1044
1045
1046#pragma pack()
1047
1048#endif
1049