Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/acpi/actbl3.h
26278 views
1
/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
2
/******************************************************************************
3
*
4
* Name: actbl3.h - ACPI Table Definitions
5
*
6
* Copyright (C) 2000 - 2025, Intel Corp.
7
*
8
*****************************************************************************/
9
10
#ifndef __ACTBL3_H__
11
#define __ACTBL3_H__
12
13
/*******************************************************************************
14
*
15
* Additional ACPI Tables
16
*
17
* These tables are not consumed directly by the ACPICA subsystem, but are
18
* included here to support device drivers and the AML disassembler.
19
*
20
******************************************************************************/
21
22
/*
23
* Values for description table header signatures for tables defined in this
24
* file. Useful because they make it more difficult to inadvertently type in
25
* the wrong signature.
26
*/
27
#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */
28
#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */
29
#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
30
#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
31
#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */
32
#define ACPI_SIG_STAO "STAO" /* Status Override table */
33
#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
34
#define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */
35
#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
36
#define ACPI_SIG_VIOT "VIOT" /* Virtual I/O Translation Table */
37
#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
38
#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
39
#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */
40
#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
41
#define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */
42
#define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Mitigations Table */
43
#define ACPI_SIG_XENV "XENV" /* Xen Environment table */
44
#define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */
45
46
/*
47
* All tables must be byte-packed to match the ACPI specification, since
48
* the tables are provided by the system BIOS.
49
*/
50
#pragma pack(1)
51
52
/*
53
* Note: C bitfields are not used for this reason:
54
*
55
* "Bitfields are great and easy to read, but unfortunately the C language
56
* does not specify the layout of bitfields in memory, which means they are
57
* essentially useless for dealing with packed data in on-disk formats or
58
* binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
59
* this decision was a design error in C. Ritchie could have picked an order
60
* and stuck with it." Norman Ramsey.
61
* See http://stackoverflow.com/a/1053662/41661
62
*/
63
64
/*******************************************************************************
65
*
66
* SLIC - Software Licensing Description Table
67
*
68
* Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
69
* November 29, 2011. Copyright 2011 Microsoft
70
*
71
******************************************************************************/
72
73
/* Basic SLIC table is only the common ACPI header */
74
75
struct acpi_table_slic {
76
struct acpi_table_header header; /* Common ACPI table header */
77
};
78
79
/*******************************************************************************
80
*
81
* SLIT - System Locality Distance Information Table
82
* Version 1
83
*
84
******************************************************************************/
85
86
struct acpi_table_slit {
87
struct acpi_table_header header; /* Common ACPI table header */
88
u64 locality_count;
89
u8 entry[]; /* Real size = localities^2 */
90
};
91
92
/*******************************************************************************
93
*
94
* SPCR - Serial Port Console Redirection table
95
* Version 4
96
*
97
* Conforms to "Serial Port Console Redirection Table",
98
* Version 1.10, Jan 5, 2023
99
*
100
******************************************************************************/
101
102
struct acpi_table_spcr {
103
struct acpi_table_header header; /* Common ACPI table header */
104
u8 interface_type; /* 0=full 16550, 1=subset of 16550 */
105
u8 reserved[3];
106
struct acpi_generic_address serial_port;
107
u8 interrupt_type;
108
u8 pc_interrupt;
109
u32 interrupt;
110
u8 baud_rate;
111
u8 parity;
112
u8 stop_bits;
113
u8 flow_control;
114
u8 terminal_type;
115
u8 language;
116
u16 pci_device_id;
117
u16 pci_vendor_id;
118
u8 pci_bus;
119
u8 pci_device;
120
u8 pci_function;
121
u32 pci_flags;
122
u8 pci_segment;
123
u32 uart_clk_freq;
124
u32 precise_baudrate;
125
u16 name_space_string_length;
126
u16 name_space_string_offset;
127
char name_space_string[];
128
};
129
130
/* Masks for pci_flags field above */
131
132
#define ACPI_SPCR_DO_NOT_DISABLE (1)
133
134
/* Values for Interface Type: See the definition of the DBG2 table */
135
136
/*******************************************************************************
137
*
138
* SPMI - Server Platform Management Interface table
139
* Version 5
140
*
141
* Conforms to "Intelligent Platform Management Interface Specification
142
* Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
143
* June 12, 2009 markup.
144
*
145
******************************************************************************/
146
147
struct acpi_table_spmi {
148
struct acpi_table_header header; /* Common ACPI table header */
149
u8 interface_type;
150
u8 reserved; /* Must be 1 */
151
u16 spec_revision; /* Version of IPMI */
152
u8 interrupt_type;
153
u8 gpe_number; /* GPE assigned */
154
u8 reserved1;
155
u8 pci_device_flag;
156
u32 interrupt;
157
struct acpi_generic_address ipmi_register;
158
u8 pci_segment;
159
u8 pci_bus;
160
u8 pci_device;
161
u8 pci_function;
162
u8 reserved2;
163
};
164
165
/* Values for interface_type above */
166
167
enum acpi_spmi_interface_types {
168
ACPI_SPMI_NOT_USED = 0,
169
ACPI_SPMI_KEYBOARD = 1,
170
ACPI_SPMI_SMI = 2,
171
ACPI_SPMI_BLOCK_TRANSFER = 3,
172
ACPI_SPMI_SMBUS = 4,
173
ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */
174
};
175
176
/*******************************************************************************
177
*
178
* SRAT - System Resource Affinity Table
179
* Version 3
180
*
181
******************************************************************************/
182
183
struct acpi_table_srat {
184
struct acpi_table_header header; /* Common ACPI table header */
185
u32 table_revision; /* Must be value '1' */
186
u64 reserved; /* Reserved, must be zero */
187
};
188
189
/* Values for subtable type in struct acpi_subtable_header */
190
191
enum acpi_srat_type {
192
ACPI_SRAT_TYPE_CPU_AFFINITY = 0,
193
ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
194
ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
195
ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
196
ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
197
ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5, /* ACPI 6.3 */
198
ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6, /* ACPI 6.4 */
199
ACPI_SRAT_TYPE_RINTC_AFFINITY = 7, /* ACPI 6.6 */
200
ACPI_SRAT_TYPE_RESERVED = 8 /* 8 and greater are reserved */
201
};
202
203
/*
204
* SRAT Subtables, correspond to Type in struct acpi_subtable_header
205
*/
206
207
/* 0: Processor Local APIC/SAPIC Affinity */
208
209
struct acpi_srat_cpu_affinity {
210
struct acpi_subtable_header header;
211
u8 proximity_domain_lo;
212
u8 apic_id;
213
u32 flags;
214
u8 local_sapic_eid;
215
u8 proximity_domain_hi[3];
216
u32 clock_domain;
217
};
218
219
/* Flags */
220
221
#define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */
222
223
/* 1: Memory Affinity */
224
225
struct acpi_srat_mem_affinity {
226
struct acpi_subtable_header header;
227
u32 proximity_domain;
228
u16 reserved; /* Reserved, must be zero */
229
u64 base_address;
230
u64 length;
231
u32 reserved1;
232
u32 flags;
233
u64 reserved2; /* Reserved, must be zero */
234
};
235
236
/* Flags */
237
238
#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */
239
#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */
240
#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */
241
242
/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
243
244
struct acpi_srat_x2apic_cpu_affinity {
245
struct acpi_subtable_header header;
246
u16 reserved; /* Reserved, must be zero */
247
u32 proximity_domain;
248
u32 apic_id;
249
u32 flags;
250
u32 clock_domain;
251
u32 reserved2;
252
};
253
254
/* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */
255
256
#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */
257
258
/* 3: GICC Affinity (ACPI 5.1) */
259
260
struct acpi_srat_gicc_affinity {
261
struct acpi_subtable_header header;
262
u32 proximity_domain;
263
u32 acpi_processor_uid;
264
u32 flags;
265
u32 clock_domain;
266
};
267
268
/* Flags for struct acpi_srat_gicc_affinity */
269
270
#define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */
271
272
/* 4: GIC ITS Affinity (ACPI 6.2) */
273
274
struct acpi_srat_gic_its_affinity {
275
struct acpi_subtable_header header;
276
u32 proximity_domain;
277
u16 reserved;
278
u32 its_id;
279
};
280
281
/*
282
* Common structure for SRAT subtable types:
283
* 5: ACPI_SRAT_TYPE_GENERIC_AFFINITY
284
* 6: ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY
285
*/
286
287
#define ACPI_SRAT_DEVICE_HANDLE_SIZE 16
288
289
struct acpi_srat_generic_affinity {
290
struct acpi_subtable_header header;
291
u8 reserved;
292
u8 device_handle_type;
293
u32 proximity_domain;
294
u8 device_handle[ACPI_SRAT_DEVICE_HANDLE_SIZE];
295
u32 flags;
296
u32 reserved1;
297
};
298
299
/* Flags for struct acpi_srat_generic_affinity */
300
301
#define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */
302
#define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS (1<<1) /* ACPI 6.4 */
303
304
/* 7: RINTC Affinity Structure(ACPI 6.6) */
305
306
struct acpi_srat_rintc_affinity {
307
struct acpi_subtable_header header;
308
u16 reserved;
309
u32 proximity_domain;
310
u32 acpi_processor_uid;
311
u32 flags;
312
u32 clock_domain;
313
};
314
315
/* Flags for struct acpi_srat_rintc_affinity */
316
317
#define ACPI_SRAT_RINTC_ENABLED (1) /* 00: Use affinity structure */
318
319
/*******************************************************************************
320
*
321
* STAO - Status Override Table (_STA override) - ACPI 6.0
322
* Version 1
323
*
324
* Conforms to "ACPI Specification for Status Override Table"
325
* 6 January 2015
326
*
327
******************************************************************************/
328
329
struct acpi_table_stao {
330
struct acpi_table_header header; /* Common ACPI table header */
331
u8 ignore_uart;
332
};
333
334
/*******************************************************************************
335
*
336
* TCPA - Trusted Computing Platform Alliance table
337
* Version 2
338
*
339
* TCG Hardware Interface Table for TPM 1.2 Clients and Servers
340
*
341
* Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
342
* Version 1.2, Revision 8
343
* February 27, 2017
344
*
345
* NOTE: There are two versions of the table with the same signature --
346
* the client version and the server version. The common platform_class
347
* field is used to differentiate the two types of tables.
348
*
349
******************************************************************************/
350
351
struct acpi_table_tcpa_hdr {
352
struct acpi_table_header header; /* Common ACPI table header */
353
u16 platform_class;
354
};
355
356
/*
357
* Values for platform_class above.
358
* This is how the client and server subtables are differentiated
359
*/
360
#define ACPI_TCPA_CLIENT_TABLE 0
361
#define ACPI_TCPA_SERVER_TABLE 1
362
363
struct acpi_table_tcpa_client {
364
u32 minimum_log_length; /* Minimum length for the event log area */
365
u64 log_address; /* Address of the event log area */
366
};
367
368
struct acpi_table_tcpa_server {
369
u16 reserved;
370
u64 minimum_log_length; /* Minimum length for the event log area */
371
u64 log_address; /* Address of the event log area */
372
u16 spec_revision;
373
u8 device_flags;
374
u8 interrupt_flags;
375
u8 gpe_number;
376
u8 reserved2[3];
377
u32 global_interrupt;
378
struct acpi_generic_address address;
379
u32 reserved3;
380
struct acpi_generic_address config_address;
381
u8 group;
382
u8 bus; /* PCI Bus/Segment/Function numbers */
383
u8 device;
384
u8 function;
385
};
386
387
/* Values for device_flags above */
388
389
#define ACPI_TCPA_PCI_DEVICE (1)
390
#define ACPI_TCPA_BUS_PNP (1<<1)
391
#define ACPI_TCPA_ADDRESS_VALID (1<<2)
392
393
/* Values for interrupt_flags above */
394
395
#define ACPI_TCPA_INTERRUPT_MODE (1)
396
#define ACPI_TCPA_INTERRUPT_POLARITY (1<<1)
397
#define ACPI_TCPA_SCI_VIA_GPE (1<<2)
398
#define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3)
399
400
/*******************************************************************************
401
*
402
* TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
403
* Version 4
404
*
405
* TCG Hardware Interface Table for TPM 2.0 Clients and Servers
406
*
407
* Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
408
* Version 1.2, Revision 8
409
* February 27, 2017
410
*
411
******************************************************************************/
412
413
/* Revision 3 */
414
415
struct acpi_table_tpm23 {
416
struct acpi_table_header header; /* Common ACPI table header */
417
u32 reserved;
418
u64 control_address;
419
u32 start_method;
420
};
421
422
/* Value for start_method above */
423
424
#define ACPI_TPM23_ACPI_START_METHOD 2
425
426
/*
427
* Optional trailer for revision 3. If start method is 2, there is a 4 byte
428
* reserved area of all zeros.
429
*/
430
struct acpi_tmp23_trailer {
431
u32 reserved;
432
};
433
434
/* Revision 4 */
435
436
struct acpi_table_tpm2 {
437
struct acpi_table_header header; /* Common ACPI table header */
438
u16 platform_class;
439
u16 reserved;
440
u64 control_address;
441
u32 start_method;
442
443
/* Platform-specific data follows */
444
};
445
446
/* Optional trailer for revision 4 holding platform-specific data */
447
struct acpi_tpm2_phy {
448
u8 start_method_specific[12];
449
u32 log_area_minimum_length;
450
u64 log_area_start_address;
451
};
452
453
/* Values for start_method above */
454
455
#define ACPI_TPM2_NOT_ALLOWED 0
456
#define ACPI_TPM2_RESERVED1 1
457
#define ACPI_TPM2_START_METHOD 2
458
#define ACPI_TPM2_RESERVED3 3
459
#define ACPI_TPM2_RESERVED4 4
460
#define ACPI_TPM2_RESERVED5 5
461
#define ACPI_TPM2_MEMORY_MAPPED 6
462
#define ACPI_TPM2_COMMAND_BUFFER 7
463
#define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8
464
#define ACPI_TPM2_RESERVED9 9
465
#define ACPI_TPM2_RESERVED10 10
466
#define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */
467
#define ACPI_TPM2_RESERVED 12
468
#define ACPI_TPM2_COMMAND_BUFFER_WITH_PLUTON 13
469
#define ACPI_TPM2_CRB_WITH_ARM_FFA 15
470
471
/* Optional trailer appears after any start_method subtables */
472
473
struct acpi_tpm2_trailer {
474
u8 method_parameters[12];
475
u32 minimum_log_length; /* Minimum length for the event log area */
476
u64 log_address; /* Address of the event log area */
477
};
478
479
/*
480
* Subtables (start_method-specific)
481
*/
482
483
/* 11: Start Method for ARM SMC (V1.2 Rev 8) */
484
485
struct acpi_tpm2_arm_smc {
486
u32 global_interrupt;
487
u8 interrupt_flags;
488
u8 operation_flags;
489
u16 reserved;
490
u32 function_id;
491
};
492
493
/* Values for interrupt_flags above */
494
495
#define ACPI_TPM2_INTERRUPT_SUPPORT (1)
496
497
/* Values for operation_flags above */
498
499
#define ACPI_TPM2_IDLE_SUPPORT (1)
500
501
/*******************************************************************************
502
*
503
* UEFI - UEFI Boot optimization Table
504
* Version 1
505
*
506
* Conforms to "Unified Extensible Firmware Interface Specification",
507
* Version 2.3, May 8, 2009
508
*
509
******************************************************************************/
510
511
struct acpi_table_uefi {
512
struct acpi_table_header header; /* Common ACPI table header */
513
u8 identifier[16]; /* UUID identifier */
514
u16 data_offset; /* Offset of remaining data in table */
515
};
516
517
/*******************************************************************************
518
*
519
* VIOT - Virtual I/O Translation Table
520
* Version 1
521
*
522
******************************************************************************/
523
524
struct acpi_table_viot {
525
struct acpi_table_header header; /* Common ACPI table header */
526
u16 node_count;
527
u16 node_offset;
528
u8 reserved[8];
529
};
530
531
/* VIOT subtable header */
532
533
struct acpi_viot_header {
534
u8 type;
535
u8 reserved;
536
u16 length;
537
};
538
539
/* Values for Type field above */
540
541
enum acpi_viot_node_type {
542
ACPI_VIOT_NODE_PCI_RANGE = 0x01,
543
ACPI_VIOT_NODE_MMIO = 0x02,
544
ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI = 0x03,
545
ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO = 0x04,
546
ACPI_VIOT_RESERVED = 0x05
547
};
548
549
/* VIOT subtables */
550
551
struct acpi_viot_pci_range {
552
struct acpi_viot_header header;
553
u32 endpoint_start;
554
u16 segment_start;
555
u16 segment_end;
556
u16 bdf_start;
557
u16 bdf_end;
558
u16 output_node;
559
u8 reserved[6];
560
};
561
562
struct acpi_viot_mmio {
563
struct acpi_viot_header header;
564
u32 endpoint;
565
u64 base_address;
566
u16 output_node;
567
u8 reserved[6];
568
};
569
570
struct acpi_viot_virtio_iommu_pci {
571
struct acpi_viot_header header;
572
u16 segment;
573
u16 bdf;
574
u8 reserved[8];
575
};
576
577
struct acpi_viot_virtio_iommu_mmio {
578
struct acpi_viot_header header;
579
u8 reserved[4];
580
u64 base_address;
581
};
582
583
/*******************************************************************************
584
*
585
* WAET - Windows ACPI Emulated devices Table
586
* Version 1
587
*
588
* Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
589
*
590
******************************************************************************/
591
592
struct acpi_table_waet {
593
struct acpi_table_header header; /* Common ACPI table header */
594
u32 flags;
595
};
596
597
/* Masks for Flags field above */
598
599
#define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */
600
#define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */
601
602
/*******************************************************************************
603
*
604
* WDAT - Watchdog Action Table
605
* Version 1
606
*
607
* Conforms to "Hardware Watchdog Timers Design Specification",
608
* Copyright 2006 Microsoft Corporation.
609
*
610
******************************************************************************/
611
612
struct acpi_table_wdat {
613
struct acpi_table_header header; /* Common ACPI table header */
614
u32 header_length; /* Watchdog Header Length */
615
u16 pci_segment; /* PCI Segment number */
616
u8 pci_bus; /* PCI Bus number */
617
u8 pci_device; /* PCI Device number */
618
u8 pci_function; /* PCI Function number */
619
u8 reserved[3];
620
u32 timer_period; /* Period of one timer count (msec) */
621
u32 max_count; /* Maximum counter value supported */
622
u32 min_count; /* Minimum counter value */
623
u8 flags;
624
u8 reserved2[3];
625
u32 entries; /* Number of watchdog entries that follow */
626
};
627
628
/* Masks for Flags field above */
629
630
#define ACPI_WDAT_ENABLED (1)
631
#define ACPI_WDAT_STOPPED 0x80
632
633
/* WDAT Instruction Entries (actions) */
634
635
struct acpi_wdat_entry {
636
u8 action;
637
u8 instruction;
638
u16 reserved;
639
struct acpi_generic_address register_region;
640
u32 value; /* Value used with Read/Write register */
641
u32 mask; /* Bitmask required for this register instruction */
642
};
643
644
/* Values for Action field above */
645
646
enum acpi_wdat_actions {
647
ACPI_WDAT_RESET = 1,
648
ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
649
ACPI_WDAT_GET_COUNTDOWN = 5,
650
ACPI_WDAT_SET_COUNTDOWN = 6,
651
ACPI_WDAT_GET_RUNNING_STATE = 8,
652
ACPI_WDAT_SET_RUNNING_STATE = 9,
653
ACPI_WDAT_GET_STOPPED_STATE = 10,
654
ACPI_WDAT_SET_STOPPED_STATE = 11,
655
ACPI_WDAT_GET_REBOOT = 16,
656
ACPI_WDAT_SET_REBOOT = 17,
657
ACPI_WDAT_GET_SHUTDOWN = 18,
658
ACPI_WDAT_SET_SHUTDOWN = 19,
659
ACPI_WDAT_GET_STATUS = 32,
660
ACPI_WDAT_SET_STATUS = 33,
661
ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */
662
};
663
664
/* Values for Instruction field above */
665
666
enum acpi_wdat_instructions {
667
ACPI_WDAT_READ_VALUE = 0,
668
ACPI_WDAT_READ_COUNTDOWN = 1,
669
ACPI_WDAT_WRITE_VALUE = 2,
670
ACPI_WDAT_WRITE_COUNTDOWN = 3,
671
ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */
672
ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */
673
};
674
675
/*******************************************************************************
676
*
677
* WDDT - Watchdog Descriptor Table
678
* Version 1
679
*
680
* Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
681
* Version 001, September 2002
682
*
683
******************************************************************************/
684
685
struct acpi_table_wddt {
686
struct acpi_table_header header; /* Common ACPI table header */
687
u16 spec_version;
688
u16 table_version;
689
u16 pci_vendor_id;
690
struct acpi_generic_address address;
691
u16 max_count; /* Maximum counter value supported */
692
u16 min_count; /* Minimum counter value supported */
693
u16 period;
694
u16 status;
695
u16 capability;
696
};
697
698
/* Flags for Status field above */
699
700
#define ACPI_WDDT_AVAILABLE (1)
701
#define ACPI_WDDT_ACTIVE (1<<1)
702
#define ACPI_WDDT_TCO_OS_OWNED (1<<2)
703
#define ACPI_WDDT_USER_RESET (1<<11)
704
#define ACPI_WDDT_WDT_RESET (1<<12)
705
#define ACPI_WDDT_POWER_FAIL (1<<13)
706
#define ACPI_WDDT_UNKNOWN_RESET (1<<14)
707
708
/* Flags for Capability field above */
709
710
#define ACPI_WDDT_AUTO_RESET (1)
711
#define ACPI_WDDT_ALERT_SUPPORT (1<<1)
712
713
/*******************************************************************************
714
*
715
* WDRT - Watchdog Resource Table
716
* Version 1
717
*
718
* Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
719
* Version 1.01, August 28, 2006
720
*
721
******************************************************************************/
722
723
struct acpi_table_wdrt {
724
struct acpi_table_header header; /* Common ACPI table header */
725
struct acpi_generic_address control_register;
726
struct acpi_generic_address count_register;
727
u16 pci_device_id;
728
u16 pci_vendor_id;
729
u8 pci_bus; /* PCI Bus number */
730
u8 pci_device; /* PCI Device number */
731
u8 pci_function; /* PCI Function number */
732
u8 pci_segment; /* PCI Segment number */
733
u16 max_count; /* Maximum counter value supported */
734
u8 units;
735
};
736
737
/*******************************************************************************
738
*
739
* WPBT - Windows Platform Environment Table (ACPI 6.0)
740
* Version 1
741
*
742
* Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
743
*
744
******************************************************************************/
745
746
struct acpi_table_wpbt {
747
struct acpi_table_header header; /* Common ACPI table header */
748
u32 handoff_size;
749
u64 handoff_address;
750
u8 layout;
751
u8 type;
752
u16 arguments_length;
753
};
754
755
struct acpi_wpbt_unicode {
756
u16 *unicode_string;
757
};
758
759
/*******************************************************************************
760
*
761
* WSMT - Windows SMM Security Mitigations Table
762
* Version 1
763
*
764
* Conforms to "Windows SMM Security Mitigations Table",
765
* Version 1.0, April 18, 2016
766
*
767
******************************************************************************/
768
769
struct acpi_table_wsmt {
770
struct acpi_table_header header; /* Common ACPI table header */
771
u32 protection_flags;
772
};
773
774
/* Flags for protection_flags field above */
775
776
#define ACPI_WSMT_FIXED_COMM_BUFFERS (1)
777
#define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2)
778
#define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION (4)
779
780
/*******************************************************************************
781
*
782
* XENV - Xen Environment Table (ACPI 6.0)
783
* Version 1
784
*
785
* Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
786
*
787
******************************************************************************/
788
789
struct acpi_table_xenv {
790
struct acpi_table_header header; /* Common ACPI table header */
791
u64 grant_table_address;
792
u64 grant_table_size;
793
u32 event_interrupt;
794
u8 event_flags;
795
};
796
797
/* Reset to default packing */
798
799
#pragma pack()
800
801
#endif /* __ACTBL3_H__ */
802
803