Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/include/acpi/actbl2.h
10817 views
1
/******************************************************************************
2
*
3
* Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec)
4
*
5
*****************************************************************************/
6
7
/*
8
* Copyright (C) 2000 - 2011, Intel Corp.
9
* All rights reserved.
10
*
11
* Redistribution and use in source and binary forms, with or without
12
* modification, are permitted provided that the following conditions
13
* are met:
14
* 1. Redistributions of source code must retain the above copyright
15
* notice, this list of conditions, and the following disclaimer,
16
* without modification.
17
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
18
* substantially similar to the "NO WARRANTY" disclaimer below
19
* ("Disclaimer") and any redistribution must be conditioned upon
20
* including a substantially similar Disclaimer requirement for further
21
* binary redistribution.
22
* 3. Neither the names of the above-listed copyright holders nor the names
23
* of any contributors may be used to endorse or promote products derived
24
* from this software without specific prior written permission.
25
*
26
* Alternatively, this software may be distributed under the terms of the
27
* GNU General Public License ("GPL") version 2 as published by the Free
28
* Software Foundation.
29
*
30
* NO WARRANTY
31
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41
* POSSIBILITY OF SUCH DAMAGES.
42
*/
43
44
#ifndef __ACTBL2_H__
45
#define __ACTBL2_H__
46
47
/*******************************************************************************
48
*
49
* Additional ACPI Tables (2)
50
*
51
* These tables are not consumed directly by the ACPICA subsystem, but are
52
* included here to support device drivers and the AML disassembler.
53
*
54
* The tables in this file are defined by third-party specifications, and are
55
* not defined directly by the ACPI specification itself.
56
*
57
******************************************************************************/
58
59
/*
60
* Values for description table header signatures for tables defined in this
61
* file. Useful because they make it more difficult to inadvertently type in
62
* the wrong signature.
63
*/
64
#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
65
#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
66
#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
67
#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
68
#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
69
#define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */
70
#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
71
#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */
72
#define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */
73
#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */
74
#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
75
#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
76
#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
77
#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
78
#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
79
#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
80
#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */
81
#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
82
83
#ifdef ACPI_UNDEFINED_TABLES
84
/*
85
* These tables have been seen in the field, but no definition has been found
86
*/
87
#define ACPI_SIG_ATKG "ATKG"
88
#define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */
89
#define ACPI_SIG_IEIT "IEIT"
90
#endif
91
92
/*
93
* All tables must be byte-packed to match the ACPI specification, since
94
* the tables are provided by the system BIOS.
95
*/
96
#pragma pack(1)
97
98
/*
99
* Note about bitfields: The u8 type is used for bitfields in ACPI tables.
100
* This is the only type that is even remotely portable. Anything else is not
101
* portable, so do not use any other bitfield types.
102
*/
103
104
/*******************************************************************************
105
*
106
* ASF - Alert Standard Format table (Signature "ASF!")
107
* Revision 0x10
108
*
109
* Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
110
*
111
******************************************************************************/
112
113
struct acpi_table_asf {
114
struct acpi_table_header header; /* Common ACPI table header */
115
};
116
117
/* ASF subtable header */
118
119
struct acpi_asf_header {
120
u8 type;
121
u8 reserved;
122
u16 length;
123
};
124
125
/* Values for Type field above */
126
127
enum 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
* ASF subtables
138
*/
139
140
/* 0: ASF Information */
141
142
struct 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
/* Masks for Flags field above */
153
154
#define ACPI_ASF_SMBUS_PROTOCOLS (1)
155
156
/* 1: ASF Alerts */
157
158
struct 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
166
struct 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
/* 2: ASF Remote Control */
182
183
struct acpi_asf_remote {
184
struct acpi_asf_header header;
185
u8 controls;
186
u8 data_length;
187
u16 reserved2;
188
};
189
190
struct acpi_asf_control_data {
191
u8 function;
192
u8 address;
193
u8 command;
194
u8 value;
195
};
196
197
/* 3: ASF RMCP Boot Options */
198
199
struct 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
/* 4: ASF Address */
211
212
struct acpi_asf_address {
213
struct acpi_asf_header header;
214
u8 eprom_address;
215
u8 devices;
216
};
217
218
/*******************************************************************************
219
*
220
* BOOT - Simple Boot Flag Table
221
* Version 1
222
*
223
* Conforms to the "Simple Boot Flag Specification", Version 2.1
224
*
225
******************************************************************************/
226
227
struct acpi_table_boot {
228
struct acpi_table_header header; /* Common ACPI table header */
229
u8 cmos_index; /* Index in CMOS RAM for the boot register */
230
u8 reserved[3];
231
};
232
233
/*******************************************************************************
234
*
235
* DBGP - Debug Port table
236
* Version 1
237
*
238
* Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
239
*
240
******************************************************************************/
241
242
struct acpi_table_dbgp {
243
struct acpi_table_header header; /* Common ACPI table header */
244
u8 type; /* 0=full 16550, 1=subset of 16550 */
245
u8 reserved[3];
246
struct acpi_generic_address debug_port;
247
};
248
249
/*******************************************************************************
250
*
251
* DMAR - DMA Remapping table
252
* Version 1
253
*
254
* Conforms to "Intel Virtualization Technology for Directed I/O",
255
* Version 1.2, Sept. 2008
256
*
257
******************************************************************************/
258
259
struct acpi_table_dmar {
260
struct acpi_table_header header; /* Common ACPI table header */
261
u8 width; /* Host Address Width */
262
u8 flags;
263
u8 reserved[10];
264
};
265
266
/* Masks for Flags field above */
267
268
#define ACPI_DMAR_INTR_REMAP (1)
269
270
/* DMAR subtable header */
271
272
struct acpi_dmar_header {
273
u16 type;
274
u16 length;
275
};
276
277
/* Values for subtable type in struct acpi_dmar_header */
278
279
enum 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 /* 4 and greater are reserved */
285
};
286
287
/* DMAR Device Scope structure */
288
289
struct acpi_dmar_device_scope {
290
u8 entry_type;
291
u8 length;
292
u16 reserved;
293
u8 enumeration_id;
294
u8 bus;
295
};
296
297
/* Values for entry_type in struct acpi_dmar_device_scope */
298
299
enum 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 /* 5 and greater are reserved */
306
};
307
308
struct acpi_dmar_pci_path {
309
u8 dev;
310
u8 fn;
311
};
312
313
/*
314
* DMAR Sub-tables, correspond to Type in struct acpi_dmar_header
315
*/
316
317
/* 0: Hardware Unit Definition */
318
319
struct acpi_dmar_hardware_unit {
320
struct acpi_dmar_header header;
321
u8 flags;
322
u8 reserved;
323
u16 segment;
324
u64 address; /* Register Base Address */
325
};
326
327
/* Masks for Flags field above */
328
329
#define ACPI_DMAR_INCLUDE_ALL (1)
330
331
/* 1: Reserved Memory Defininition */
332
333
struct acpi_dmar_reserved_memory {
334
struct acpi_dmar_header header;
335
u16 reserved;
336
u16 segment;
337
u64 base_address; /* 4_k aligned base address */
338
u64 end_address; /* 4_k aligned limit address */
339
};
340
341
/* Masks for Flags field above */
342
343
#define ACPI_DMAR_ALLOW_ALL (1)
344
345
/* 2: Root Port ATS Capability Reporting Structure */
346
347
struct acpi_dmar_atsr {
348
struct acpi_dmar_header header;
349
u8 flags;
350
u8 reserved;
351
u16 segment;
352
};
353
354
/* Masks for Flags field above */
355
356
#define ACPI_DMAR_ALL_PORTS (1)
357
358
/* 3: Remapping Hardware Static Affinity Structure */
359
360
struct 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
* HPET - High Precision Event Timer table
370
* Version 1
371
*
372
* Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
373
* Version 1.0a, October 2004
374
*
375
******************************************************************************/
376
377
struct acpi_table_hpet {
378
struct acpi_table_header header; /* Common ACPI table header */
379
u32 id; /* Hardware ID of event timer block */
380
struct acpi_generic_address address; /* Address of event timer block */
381
u8 sequence; /* HPET sequence number */
382
u16 minimum_tick; /* Main counter min tick, periodic mode */
383
u8 flags;
384
};
385
386
/* Masks for Flags field above */
387
388
#define ACPI_HPET_PAGE_PROTECT_MASK (3)
389
390
/* Values for Page Protect flags */
391
392
enum 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
* IBFT - Boot Firmware Table
401
* Version 1
402
*
403
* Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
404
* Specification", Version 1.01, March 1, 2007
405
*
406
* Note: It appears that this table is not intended to appear in the RSDT/XSDT.
407
* Therefore, it is not currently supported by the disassembler.
408
*
409
******************************************************************************/
410
411
struct acpi_table_ibft {
412
struct acpi_table_header header; /* Common ACPI table header */
413
u8 reserved[12];
414
};
415
416
/* IBFT common subtable header */
417
418
struct acpi_ibft_header {
419
u8 type;
420
u8 version;
421
u16 length;
422
u8 index;
423
u8 flags;
424
};
425
426
/* Values for Type field above */
427
428
enum 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 /* 6 and greater are reserved */
436
};
437
438
/* IBFT subtables */
439
440
struct 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
450
struct 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
460
struct 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
476
struct 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
* IVRS - I/O Virtualization Reporting Structure
498
* Version 1
499
*
500
* Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
501
* Revision 1.26, February 2009.
502
*
503
******************************************************************************/
504
505
struct acpi_table_ivrs {
506
struct acpi_table_header header; /* Common ACPI table header */
507
u32 info; /* Common virtualization info */
508
u64 reserved;
509
};
510
511
/* Values for Info field above */
512
513
#define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */
514
#define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */
515
#define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */
516
517
/* IVRS subtable header */
518
519
struct acpi_ivrs_header {
520
u8 type; /* Subtable type */
521
u8 flags;
522
u16 length; /* Subtable length */
523
u16 device_id; /* ID of IOMMU */
524
};
525
526
/* Values for subtable Type above */
527
528
enum 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
/* Masks for Flags field above for IVHD subtable */
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
/* Masks for Flags field above for IVMD subtable */
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
* IVRS subtables, correspond to Type in struct acpi_ivrs_header
552
*/
553
554
/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
555
556
struct acpi_ivrs_hardware {
557
struct acpi_ivrs_header header;
558
u16 capability_offset; /* Offset for IOMMU control fields */
559
u64 base_address; /* IOMMU control registers */
560
u16 pci_segment_group;
561
u16 info; /* MSI number and unit ID */
562
u32 reserved;
563
};
564
565
/* Masks for Info field above */
566
567
#define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */
568
#define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_iD */
569
570
/*
571
* Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure.
572
* Upper two bits of the Type field are the (encoded) length of the structure.
573
* Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
574
* are reserved for future use but not defined.
575
*/
576
struct acpi_ivrs_de_header {
577
u8 type;
578
u16 id;
579
u8 data_setting;
580
};
581
582
/* Length of device entry is in the top two bits of Type field above */
583
584
#define ACPI_IVHD_ENTRY_LENGTH 0xC0
585
586
/* Values for device entry Type field above */
587
588
enum acpi_ivrs_device_entry_type {
589
/* 4-byte device entries, all use struct acpi_ivrs_device4 */
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
/* 8-byte device entries */
598
599
ACPI_IVRS_TYPE_PAD8 = 64,
600
ACPI_IVRS_TYPE_NOT_USED = 65,
601
ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */
602
ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */
603
ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */
604
ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */
605
ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */
606
};
607
608
/* Values for Data field above */
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
/* Types 0-4: 4-byte device entry */
618
619
struct acpi_ivrs_device4 {
620
struct acpi_ivrs_de_header header;
621
};
622
623
/* Types 66-67: 8-byte device entry */
624
625
struct acpi_ivrs_device8a {
626
struct acpi_ivrs_de_header header;
627
u8 reserved1;
628
u16 used_id;
629
u8 reserved2;
630
};
631
632
/* Types 70-71: 8-byte device entry */
633
634
struct acpi_ivrs_device8b {
635
struct acpi_ivrs_de_header header;
636
u32 extended_data;
637
};
638
639
/* Values for extended_data above */
640
641
#define ACPI_IVHD_ATS_DISABLED (1<<31)
642
643
/* Type 72: 8-byte device entry */
644
645
struct acpi_ivrs_device8c {
646
struct acpi_ivrs_de_header header;
647
u8 handle;
648
u16 used_id;
649
u8 variety;
650
};
651
652
/* Values for Variety field above */
653
654
#define ACPI_IVHD_IOAPIC 1
655
#define ACPI_IVHD_HPET 2
656
657
/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
658
659
struct 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
* MCFG - PCI Memory Mapped Configuration table and sub-table
670
* Version 1
671
*
672
* Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
673
*
674
******************************************************************************/
675
676
struct acpi_table_mcfg {
677
struct acpi_table_header header; /* Common ACPI table header */
678
u8 reserved[8];
679
};
680
681
/* Subtable */
682
683
struct acpi_mcfg_allocation {
684
u64 address; /* Base address, processor-relative */
685
u16 pci_segment; /* PCI segment group number */
686
u8 start_bus_number; /* Starting PCI Bus number */
687
u8 end_bus_number; /* Final PCI Bus number */
688
u32 reserved;
689
};
690
691
/*******************************************************************************
692
*
693
* MCHI - Management Controller Host Interface Table
694
* Version 1
695
*
696
* Conforms to "Management Component Transport Protocol (MCTP) Host
697
* Interface Specification", Revision 1.0.0a, October 13, 2009
698
*
699
******************************************************************************/
700
701
struct acpi_table_mchi {
702
struct acpi_table_header header; /* Common ACPI table 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
* SLIC - Software Licensing Description Table
720
* Version 1
721
*
722
* Conforms to "OEM Activation 2.0 for Windows Vista Operating Systems",
723
* Copyright 2006
724
*
725
******************************************************************************/
726
727
/* Basic SLIC table is only the common ACPI header */
728
729
struct acpi_table_slic {
730
struct acpi_table_header header; /* Common ACPI table header */
731
};
732
733
/* Common SLIC subtable header */
734
735
struct acpi_slic_header {
736
u32 type;
737
u32 length;
738
};
739
740
/* Values for Type field above */
741
742
enum acpi_slic_type {
743
ACPI_SLIC_TYPE_PUBLIC_KEY = 0,
744
ACPI_SLIC_TYPE_WINDOWS_MARKER = 1,
745
ACPI_SLIC_TYPE_RESERVED = 2 /* 2 and greater are reserved */
746
};
747
748
/*
749
* SLIC Sub-tables, correspond to Type in struct acpi_slic_header
750
*/
751
752
/* 0: Public Key Structure */
753
754
struct 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
/* 1: Windows Marker Structure */
767
768
struct acpi_slic_marker {
769
struct acpi_slic_header header;
770
u32 version;
771
char oem_id[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */
772
char oem_table_id[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */
773
char windows_flag[8];
774
u32 slic_version;
775
u8 reserved[16];
776
u8 signature[128];
777
};
778
779
/*******************************************************************************
780
*
781
* SPCR - Serial Port Console Redirection table
782
* Version 1
783
*
784
* Conforms to "Serial Port Console Redirection Table",
785
* Version 1.00, January 11, 2002
786
*
787
******************************************************************************/
788
789
struct acpi_table_spcr {
790
struct acpi_table_header header; /* Common ACPI table header */
791
u8 interface_type; /* 0=full 16550, 1=subset of 16550 */
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
/* Masks for pci_flags field above */
814
815
#define ACPI_SPCR_DO_NOT_DISABLE (1)
816
817
/*******************************************************************************
818
*
819
* SPMI - Server Platform Management Interface table
820
* Version 5
821
*
822
* Conforms to "Intelligent Platform Management Interface Specification
823
* Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
824
* June 12, 2009 markup.
825
*
826
******************************************************************************/
827
828
struct acpi_table_spmi {
829
struct acpi_table_header header; /* Common ACPI table header */
830
u8 interface_type;
831
u8 reserved; /* Must be 1 */
832
u16 spec_revision; /* Version of IPMI */
833
u8 interrupt_type;
834
u8 gpe_number; /* GPE assigned */
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
/* Values for interface_type above */
847
848
enum 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 /* 5 and above are reserved */
855
};
856
857
/*******************************************************************************
858
*
859
* TCPA - Trusted Computing Platform Alliance table
860
* Version 1
861
*
862
* Conforms to "TCG PC Specific Implementation Specification",
863
* Version 1.1, August 18, 2003
864
*
865
******************************************************************************/
866
867
struct acpi_table_tcpa {
868
struct acpi_table_header header; /* Common ACPI table header */
869
u16 reserved;
870
u32 max_log_length; /* Maximum length for the event log area */
871
u64 log_address; /* Address of the event log area */
872
};
873
874
/*******************************************************************************
875
*
876
* UEFI - UEFI Boot optimization Table
877
* Version 1
878
*
879
* Conforms to "Unified Extensible Firmware Interface Specification",
880
* Version 2.3, May 8, 2009
881
*
882
******************************************************************************/
883
884
struct acpi_table_uefi {
885
struct acpi_table_header header; /* Common ACPI table header */
886
u8 identifier[16]; /* UUID identifier */
887
u16 data_offset; /* Offset of remaining data in table */
888
};
889
890
/*******************************************************************************
891
*
892
* WAET - Windows ACPI Emulated devices Table
893
* Version 1
894
*
895
* Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
896
*
897
******************************************************************************/
898
899
struct acpi_table_waet {
900
struct acpi_table_header header; /* Common ACPI table header */
901
u32 flags;
902
};
903
904
/* Masks for Flags field above */
905
906
#define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */
907
#define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */
908
909
/*******************************************************************************
910
*
911
* WDAT - Watchdog Action Table
912
* Version 1
913
*
914
* Conforms to "Hardware Watchdog Timers Design Specification",
915
* Copyright 2006 Microsoft Corporation.
916
*
917
******************************************************************************/
918
919
struct acpi_table_wdat {
920
struct acpi_table_header header; /* Common ACPI table header */
921
u32 header_length; /* Watchdog Header Length */
922
u16 pci_segment; /* PCI Segment number */
923
u8 pci_bus; /* PCI Bus number */
924
u8 pci_device; /* PCI Device number */
925
u8 pci_function; /* PCI Function number */
926
u8 reserved[3];
927
u32 timer_period; /* Period of one timer count (msec) */
928
u32 max_count; /* Maximum counter value supported */
929
u32 min_count; /* Minimum counter value */
930
u8 flags;
931
u8 reserved2[3];
932
u32 entries; /* Number of watchdog entries that follow */
933
};
934
935
/* Masks for Flags field above */
936
937
#define ACPI_WDAT_ENABLED (1)
938
#define ACPI_WDAT_STOPPED 0x80
939
940
/* WDAT Instruction Entries (actions) */
941
942
struct acpi_wdat_entry {
943
u8 action;
944
u8 instruction;
945
u16 reserved;
946
struct acpi_generic_address register_region;
947
u32 value; /* Value used with Read/Write register */
948
u32 mask; /* Bitmask required for this register instruction */
949
};
950
951
/* Values for Action field above */
952
953
enum 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 /* 34 and greater are reserved */
969
};
970
971
/* Values for Instruction field above */
972
973
enum 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, /* 4 and greater are reserved */
979
ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */
980
};
981
982
/*******************************************************************************
983
*
984
* WDDT - Watchdog Descriptor Table
985
* Version 1
986
*
987
* Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
988
* Version 001, September 2002
989
*
990
******************************************************************************/
991
992
struct acpi_table_wddt {
993
struct acpi_table_header header; /* Common ACPI table header */
994
u16 spec_version;
995
u16 table_version;
996
u16 pci_vendor_id;
997
struct acpi_generic_address address;
998
u16 max_count; /* Maximum counter value supported */
999
u16 min_count; /* Minimum counter value supported */
1000
u16 period;
1001
u16 status;
1002
u16 capability;
1003
};
1004
1005
/* Flags for Status field above */
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
/* Flags for Capability field above */
1016
1017
#define ACPI_WDDT_AUTO_RESET (1)
1018
#define ACPI_WDDT_ALERT_SUPPORT (1<<1)
1019
1020
/*******************************************************************************
1021
*
1022
* WDRT - Watchdog Resource Table
1023
* Version 1
1024
*
1025
* Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
1026
* Version 1.01, August 28, 2006
1027
*
1028
******************************************************************************/
1029
1030
struct acpi_table_wdrt {
1031
struct acpi_table_header header; /* Common ACPI table 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; /* PCI Bus number */
1037
u8 pci_device; /* PCI Device number */
1038
u8 pci_function; /* PCI Function number */
1039
u8 pci_segment; /* PCI Segment number */
1040
u16 max_count; /* Maximum counter value supported */
1041
u8 units;
1042
};
1043
1044
/* Reset to default packing */
1045
1046
#pragma pack()
1047
1048
#endif /* __ACTBL2_H__ */
1049
1050