Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git] / include / acpi / actbl2.h
1 /******************************************************************************
2  *
3  * Name: actbl2.h - ACPI Specification Revision 2.0 Tables
4  *
5  *****************************************************************************/
6
7 /*
8  * Copyright (C) 2000 - 2010, 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_SLIC           "SLIC"  /* Software Licensing Description Table */
73 #define ACPI_SIG_SPCR           "SPCR"  /* Serial Port Console Redirection table */
74 #define ACPI_SIG_SPMI           "SPMI"  /* Server Platform Management Interface table */
75 #define ACPI_SIG_TCPA           "TCPA"  /* Trusted Computing Platform Alliance table */
76 #define ACPI_SIG_UEFI           "UEFI"  /* Uefi Boot Optimization Table */
77 #define ACPI_SIG_WAET           "WAET"  /* Windows ACPI Emulated devices Table */
78 #define ACPI_SIG_WDAT           "WDAT"  /* Watchdog Action Table */
79 #define ACPI_SIG_WDRT           "WDRT"  /* Watchdog Resource Table */
80
81 /*
82  * All tables must be byte-packed to match the ACPI specification, since
83  * the tables are provided by the system BIOS.
84  */
85 #pragma pack(1)
86
87 /*
88  * Note about bitfields: The u8 type is used for bitfields in ACPI tables.
89  * This is the only type that is even remotely portable. Anything else is not
90  * portable, so do not use any other bitfield types.
91  */
92
93 /*******************************************************************************
94  *
95  * ASF - Alert Standard Format table (Signature "ASF!")
96  *       Revision 0x10
97  *
98  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
99  *
100  ******************************************************************************/
101
102 struct acpi_table_asf {
103         struct acpi_table_header header;        /* Common ACPI table header */
104 };
105
106 /* ASF subtable header */
107
108 struct acpi_asf_header {
109         u8 type;
110         u8 reserved;
111         u16 length;
112 };
113
114 /* Values for Type field above */
115
116 enum acpi_asf_type {
117         ACPI_ASF_TYPE_INFO = 0,
118         ACPI_ASF_TYPE_ALERT = 1,
119         ACPI_ASF_TYPE_CONTROL = 2,
120         ACPI_ASF_TYPE_BOOT = 3,
121         ACPI_ASF_TYPE_ADDRESS = 4,
122         ACPI_ASF_TYPE_RESERVED = 5
123 };
124
125 /*
126  * ASF subtables
127  */
128
129 /* 0: ASF Information */
130
131 struct acpi_asf_info {
132         struct acpi_asf_header header;
133         u8 min_reset_value;
134         u8 min_poll_interval;
135         u16 system_id;
136         u32 mfg_id;
137         u8 flags;
138         u8 reserved2[3];
139 };
140
141 /* Masks for Flags field above */
142
143 #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
144
145 /* 1: ASF Alerts */
146
147 struct acpi_asf_alert {
148         struct acpi_asf_header header;
149         u8 assert_mask;
150         u8 deassert_mask;
151         u8 alerts;
152         u8 data_length;
153 };
154
155 struct acpi_asf_alert_data {
156         u8 address;
157         u8 command;
158         u8 mask;
159         u8 value;
160         u8 sensor_type;
161         u8 type;
162         u8 offset;
163         u8 source_type;
164         u8 severity;
165         u8 sensor_number;
166         u8 entity;
167         u8 instance;
168 };
169
170 /* 2: ASF Remote Control */
171
172 struct acpi_asf_remote {
173         struct acpi_asf_header header;
174         u8 controls;
175         u8 data_length;
176         u16 reserved2;
177 };
178
179 struct acpi_asf_control_data {
180         u8 function;
181         u8 address;
182         u8 command;
183         u8 value;
184 };
185
186 /* 3: ASF RMCP Boot Options */
187
188 struct acpi_asf_rmcp {
189         struct acpi_asf_header header;
190         u8 capabilities[7];
191         u8 completion_code;
192         u32 enterprise_id;
193         u8 command;
194         u16 parameter;
195         u16 boot_options;
196         u16 oem_parameters;
197 };
198
199 /* 4: ASF Address */
200
201 struct acpi_asf_address {
202         struct acpi_asf_header header;
203         u8 eprom_address;
204         u8 devices;
205 };
206
207 /*******************************************************************************
208  *
209  * BOOT - Simple Boot Flag Table
210  *        Version 1
211  *
212  * Conforms to the "Simple Boot Flag Specification", Version 2.1
213  *
214  ******************************************************************************/
215
216 struct acpi_table_boot {
217         struct acpi_table_header header;        /* Common ACPI table header */
218         u8 cmos_index;          /* Index in CMOS RAM for the boot register */
219         u8 reserved[3];
220 };
221
222 /*******************************************************************************
223  *
224  * DBGP - Debug Port table
225  *        Version 1
226  *
227  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
228  *
229  ******************************************************************************/
230
231 struct acpi_table_dbgp {
232         struct acpi_table_header header;        /* Common ACPI table header */
233         u8 type;                /* 0=full 16550, 1=subset of 16550 */
234         u8 reserved[3];
235         struct acpi_generic_address debug_port;
236 };
237
238 /*******************************************************************************
239  *
240  * DMAR - DMA Remapping table
241  *        Version 1
242  *
243  * Conforms to "Intel Virtualization Technology for Directed I/O",
244  * Version 1.2, Sept. 2008
245  *
246  ******************************************************************************/
247
248 struct acpi_table_dmar {
249         struct acpi_table_header header;        /* Common ACPI table header */
250         u8 width;               /* Host Address Width */
251         u8 flags;
252         u8 reserved[10];
253 };
254
255 /* Masks for Flags field above */
256
257 #define ACPI_DMAR_INTR_REMAP        (1)
258
259 /* DMAR subtable header */
260
261 struct acpi_dmar_header {
262         u16 type;
263         u16 length;
264 };
265
266 /* Values for subtable type in struct acpi_dmar_header */
267
268 enum acpi_dmar_type {
269         ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
270         ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
271         ACPI_DMAR_TYPE_ATSR = 2,
272         ACPI_DMAR_HARDWARE_AFFINITY = 3,
273         ACPI_DMAR_TYPE_RESERVED = 4     /* 4 and greater are reserved */
274 };
275
276 /* DMAR Device Scope structure */
277
278 struct acpi_dmar_device_scope {
279         u8 entry_type;
280         u8 length;
281         u16 reserved;
282         u8 enumeration_id;
283         u8 bus;
284 };
285
286 /* Values for entry_type in struct acpi_dmar_device_scope */
287
288 enum acpi_dmar_scope_type {
289         ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
290         ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
291         ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
292         ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
293         ACPI_DMAR_SCOPE_TYPE_HPET = 4,
294         ACPI_DMAR_SCOPE_TYPE_RESERVED = 5       /* 5 and greater are reserved */
295 };
296
297 struct acpi_dmar_pci_path {
298         u8 dev;
299         u8 fn;
300 };
301
302 /*
303  * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header
304  */
305
306 /* 0: Hardware Unit Definition */
307
308 struct acpi_dmar_hardware_unit {
309         struct acpi_dmar_header header;
310         u8 flags;
311         u8 reserved;
312         u16 segment;
313         u64 address;            /* Register Base Address */
314 };
315
316 /* Masks for Flags field above */
317
318 #define ACPI_DMAR_INCLUDE_ALL       (1)
319
320 /* 1: Reserved Memory Defininition */
321
322 struct acpi_dmar_reserved_memory {
323         struct acpi_dmar_header header;
324         u16 reserved;
325         u16 segment;
326         u64 base_address;       /* 4_k aligned base address */
327         u64 end_address;        /* 4_k aligned limit address */
328 };
329
330 /* Masks for Flags field above */
331
332 #define ACPI_DMAR_ALLOW_ALL         (1)
333
334 /* 2: Root Port ATS Capability Reporting Structure */
335
336 struct acpi_dmar_atsr {
337         struct acpi_dmar_header header;
338         u8 flags;
339         u8 reserved;
340         u16 segment;
341 };
342
343 /* Masks for Flags field above */
344
345 #define ACPI_DMAR_ALL_PORTS         (1)
346
347 /* 3: Remapping Hardware Static Affinity Structure */
348
349 struct acpi_dmar_rhsa {
350         struct acpi_dmar_header header;
351         u32 reserved;
352         u64 base_address;
353         u32 proximity_domain;
354 };
355
356 /*******************************************************************************
357  *
358  * HPET - High Precision Event Timer table
359  *        Version 1
360  *
361  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
362  * Version 1.0a, October 2004
363  *
364  ******************************************************************************/
365
366 struct acpi_table_hpet {
367         struct acpi_table_header header;        /* Common ACPI table header */
368         u32 id;                 /* Hardware ID of event timer block */
369         struct acpi_generic_address address;    /* Address of event timer block */
370         u8 sequence;            /* HPET sequence number */
371         u16 minimum_tick;       /* Main counter min tick, periodic mode */
372         u8 flags;
373 };
374
375 /* Masks for Flags field above */
376
377 #define ACPI_HPET_PAGE_PROTECT_MASK (3)
378
379 /* Values for Page Protect flags */
380
381 enum acpi_hpet_page_protect {
382         ACPI_HPET_NO_PAGE_PROTECT = 0,
383         ACPI_HPET_PAGE_PROTECT4 = 1,
384         ACPI_HPET_PAGE_PROTECT64 = 2
385 };
386
387 /*******************************************************************************
388  *
389  * IBFT - Boot Firmware Table
390  *        Version 1
391  *
392  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
393  * Specification", Version 1.01, March 1, 2007
394  *
395  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
396  * Therefore, it is not currently supported by the disassembler.
397  *
398  ******************************************************************************/
399
400 struct acpi_table_ibft {
401         struct acpi_table_header header;        /* Common ACPI table header */
402         u8 reserved[12];
403 };
404
405 /* IBFT common subtable header */
406
407 struct acpi_ibft_header {
408         u8 type;
409         u8 version;
410         u16 length;
411         u8 index;
412         u8 flags;
413 };
414
415 /* Values for Type field above */
416
417 enum acpi_ibft_type {
418         ACPI_IBFT_TYPE_NOT_USED = 0,
419         ACPI_IBFT_TYPE_CONTROL = 1,
420         ACPI_IBFT_TYPE_INITIATOR = 2,
421         ACPI_IBFT_TYPE_NIC = 3,
422         ACPI_IBFT_TYPE_TARGET = 4,
423         ACPI_IBFT_TYPE_EXTENSIONS = 5,
424         ACPI_IBFT_TYPE_RESERVED = 6     /* 6 and greater are reserved */
425 };
426
427 /* IBFT subtables */
428
429 struct acpi_ibft_control {
430         struct acpi_ibft_header header;
431         u16 extensions;
432         u16 initiator_offset;
433         u16 nic0_offset;
434         u16 target0_offset;
435         u16 nic1_offset;
436         u16 target1_offset;
437 };
438
439 struct acpi_ibft_initiator {
440         struct acpi_ibft_header header;
441         u8 sns_server[16];
442         u8 slp_server[16];
443         u8 primary_server[16];
444         u8 secondary_server[16];
445         u16 name_length;
446         u16 name_offset;
447 };
448
449 struct acpi_ibft_nic {
450         struct acpi_ibft_header header;
451         u8 ip_address[16];
452         u8 subnet_mask_prefix;
453         u8 origin;
454         u8 gateway[16];
455         u8 primary_dns[16];
456         u8 secondary_dns[16];
457         u8 dhcp[16];
458         u16 vlan;
459         u8 mac_address[6];
460         u16 pci_address;
461         u16 name_length;
462         u16 name_offset;
463 };
464
465 struct acpi_ibft_target {
466         struct acpi_ibft_header header;
467         u8 target_ip_address[16];
468         u16 target_ip_socket;
469         u8 target_boot_lun[8];
470         u8 chap_type;
471         u8 nic_association;
472         u16 target_name_length;
473         u16 target_name_offset;
474         u16 chap_name_length;
475         u16 chap_name_offset;
476         u16 chap_secret_length;
477         u16 chap_secret_offset;
478         u16 reverse_chap_name_length;
479         u16 reverse_chap_name_offset;
480         u16 reverse_chap_secret_length;
481         u16 reverse_chap_secret_offset;
482 };
483
484 /*******************************************************************************
485  *
486  * IVRS - I/O Virtualization Reporting Structure
487  *        Version 1
488  *
489  * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
490  * Revision 1.26, February 2009.
491  *
492  ******************************************************************************/
493
494 struct acpi_table_ivrs {
495         struct acpi_table_header header;        /* Common ACPI table header */
496         u32 info;               /* Common virtualization info */
497         u64 reserved;
498 };
499
500 /* Values for Info field above */
501
502 #define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00  /* 7 bits, physical address size */
503 #define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000  /* 7 bits, virtual address size */
504 #define ACPI_IVRS_ATS_RESERVED      0x00400000  /* ATS address translation range reserved */
505
506 /* IVRS subtable header */
507
508 struct acpi_ivrs_header {
509         u8 type;                /* Subtable type */
510         u8 flags;
511         u16 length;             /* Subtable length */
512         u16 device_id;          /* ID of IOMMU */
513 };
514
515 /* Values for subtable Type above */
516
517 enum acpi_ivrs_type {
518         ACPI_IVRS_TYPE_HARDWARE = 0x10,
519         ACPI_IVRS_TYPE_MEMORY1 = 0x20,
520         ACPI_IVRS_TYPE_MEMORY2 = 0x21,
521         ACPI_IVRS_TYPE_MEMORY3 = 0x22
522 };
523
524 /* Masks for Flags field above for IVHD subtable */
525
526 #define ACPI_IVHD_TT_ENABLE         (1)
527 #define ACPI_IVHD_PASS_PW           (1<<1)
528 #define ACPI_IVHD_RES_PASS_PW       (1<<2)
529 #define ACPI_IVHD_ISOC              (1<<3)
530 #define ACPI_IVHD_IOTLB             (1<<4)
531
532 /* Masks for Flags field above for IVMD subtable */
533
534 #define ACPI_IVMD_UNITY             (1)
535 #define ACPI_IVMD_READ              (1<<1)
536 #define ACPI_IVMD_WRITE             (1<<2)
537 #define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
538
539 /*
540  * IVRS subtables, correspond to Type in struct acpi_ivrs_header
541  */
542
543 /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
544
545 struct acpi_ivrs_hardware {
546         struct acpi_ivrs_header header;
547         u16 capability_offset;  /* Offset for IOMMU control fields */
548         u64 base_address;       /* IOMMU control registers */
549         u16 pci_segment_group;
550         u16 info;               /* MSI number and unit ID */
551         u32 reserved;
552 };
553
554 /* Masks for Info field above */
555
556 #define ACPI_IVHD_MSI_NUMBER_MASK   0x001F      /* 5 bits, MSI message number */
557 #define ACPI_IVHD_UNIT_ID_MASK      0x1F00      /* 5 bits, unit_iD */
558
559 /*
560  * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure.
561  * Upper two bits of the Type field are the (encoded) length of the structure.
562  * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
563  * are reserved for future use but not defined.
564  */
565 struct acpi_ivrs_de_header {
566         u8 type;
567         u16 id;
568         u8 data_setting;
569 };
570
571 /* Length of device entry is in the top two bits of Type field above */
572
573 #define ACPI_IVHD_ENTRY_LENGTH      0xC0
574
575 /* Values for device entry Type field above */
576
577 enum acpi_ivrs_device_entry_type {
578         /* 4-byte device entries, all use struct acpi_ivrs_device4 */
579
580         ACPI_IVRS_TYPE_PAD4 = 0,
581         ACPI_IVRS_TYPE_ALL = 1,
582         ACPI_IVRS_TYPE_SELECT = 2,
583         ACPI_IVRS_TYPE_START = 3,
584         ACPI_IVRS_TYPE_END = 4,
585
586         /* 8-byte device entries */
587
588         ACPI_IVRS_TYPE_PAD8 = 64,
589         ACPI_IVRS_TYPE_NOT_USED = 65,
590         ACPI_IVRS_TYPE_ALIAS_SELECT = 66,       /* Uses struct acpi_ivrs_device8a */
591         ACPI_IVRS_TYPE_ALIAS_START = 67,        /* Uses struct acpi_ivrs_device8a */
592         ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */
593         ACPI_IVRS_TYPE_EXT_START = 71,  /* Uses struct acpi_ivrs_device8b */
594         ACPI_IVRS_TYPE_SPECIAL = 72     /* Uses struct acpi_ivrs_device8c */
595 };
596
597 /* Values for Data field above */
598
599 #define ACPI_IVHD_INIT_PASS         (1)
600 #define ACPI_IVHD_EINT_PASS         (1<<1)
601 #define ACPI_IVHD_NMI_PASS          (1<<2)
602 #define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
603 #define ACPI_IVHD_LINT0_PASS        (1<<6)
604 #define ACPI_IVHD_LINT1_PASS        (1<<7)
605
606 /* Types 0-4: 4-byte device entry */
607
608 struct acpi_ivrs_device4 {
609         struct acpi_ivrs_de_header header;
610 };
611
612 /* Types 66-67: 8-byte device entry */
613
614 struct acpi_ivrs_device8a {
615         struct acpi_ivrs_de_header header;
616         u8 reserved1;
617         u16 used_id;
618         u8 reserved2;
619 };
620
621 /* Types 70-71: 8-byte device entry */
622
623 struct acpi_ivrs_device8b {
624         struct acpi_ivrs_de_header header;
625         u32 extended_data;
626 };
627
628 /* Values for extended_data above */
629
630 #define ACPI_IVHD_ATS_DISABLED      (1<<31)
631
632 /* Type 72: 8-byte device entry */
633
634 struct acpi_ivrs_device8c {
635         struct acpi_ivrs_de_header header;
636         u8 handle;
637         u16 used_id;
638         u8 variety;
639 };
640
641 /* Values for Variety field above */
642
643 #define ACPI_IVHD_IOAPIC            1
644 #define ACPI_IVHD_HPET              2
645
646 /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
647
648 struct acpi_ivrs_memory {
649         struct acpi_ivrs_header header;
650         u16 aux_data;
651         u64 reserved;
652         u64 start_address;
653         u64 memory_length;
654 };
655
656 /*******************************************************************************
657  *
658  * MCFG - PCI Memory Mapped Configuration table and sub-table
659  *        Version 1
660  *
661  * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
662  *
663  ******************************************************************************/
664
665 struct acpi_table_mcfg {
666         struct acpi_table_header header;        /* Common ACPI table header */
667         u8 reserved[8];
668 };
669
670 /* Subtable */
671
672 struct acpi_mcfg_allocation {
673         u64 address;            /* Base address, processor-relative */
674         u16 pci_segment;        /* PCI segment group number */
675         u8 start_bus_number;    /* Starting PCI Bus number */
676         u8 end_bus_number;      /* Final PCI Bus number */
677         u32 reserved;
678 };
679
680 /*******************************************************************************
681  *
682  * SPCR - Serial Port Console Redirection table
683  *        Version 1
684  *
685  * Conforms to "Serial Port Console Redirection Table",
686  * Version 1.00, January 11, 2002
687  *
688  ******************************************************************************/
689
690 struct acpi_table_spcr {
691         struct acpi_table_header header;        /* Common ACPI table header */
692         u8 interface_type;      /* 0=full 16550, 1=subset of 16550 */
693         u8 reserved[3];
694         struct acpi_generic_address serial_port;
695         u8 interrupt_type;
696         u8 pc_interrupt;
697         u32 interrupt;
698         u8 baud_rate;
699         u8 parity;
700         u8 stop_bits;
701         u8 flow_control;
702         u8 terminal_type;
703         u8 reserved1;
704         u16 pci_device_id;
705         u16 pci_vendor_id;
706         u8 pci_bus;
707         u8 pci_device;
708         u8 pci_function;
709         u32 pci_flags;
710         u8 pci_segment;
711         u32 reserved2;
712 };
713
714 /* Masks for pci_flags field above */
715
716 #define ACPI_SPCR_DO_NOT_DISABLE    (1)
717
718 /*******************************************************************************
719  *
720  * SPMI - Server Platform Management Interface table
721  *        Version 5
722  *
723  * Conforms to "Intelligent Platform Management Interface Specification
724  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
725  * June 12, 2009 markup.
726  *
727  ******************************************************************************/
728
729 struct acpi_table_spmi {
730         struct acpi_table_header header;        /* Common ACPI table header */
731         u8 interface_type;
732         u8 reserved;            /* Must be 1 */
733         u16 spec_revision;      /* Version of IPMI */
734         u8 interrupt_type;
735         u8 gpe_number;          /* GPE assigned */
736         u8 reserved1;
737         u8 pci_device_flag;
738         u32 interrupt;
739         struct acpi_generic_address ipmi_register;
740         u8 pci_segment;
741         u8 pci_bus;
742         u8 pci_device;
743         u8 pci_function;
744         u8 reserved2;
745 };
746
747 /* Values for interface_type above */
748
749 enum acpi_spmi_interface_types {
750         ACPI_SPMI_NOT_USED = 0,
751         ACPI_SPMI_KEYBOARD = 1,
752         ACPI_SPMI_SMI = 2,
753         ACPI_SPMI_BLOCK_TRANSFER = 3,
754         ACPI_SPMI_SMBUS = 4,
755         ACPI_SPMI_RESERVED = 5  /* 5 and above are reserved */
756 };
757
758 /*******************************************************************************
759  *
760  * TCPA - Trusted Computing Platform Alliance table
761  *        Version 1
762  *
763  * Conforms to "TCG PC Specific Implementation Specification",
764  * Version 1.1, August 18, 2003
765  *
766  ******************************************************************************/
767
768 struct acpi_table_tcpa {
769         struct acpi_table_header header;        /* Common ACPI table header */
770         u16 reserved;
771         u32 max_log_length;     /* Maximum length for the event log area */
772         u64 log_address;        /* Address of the event log area */
773 };
774
775 /*******************************************************************************
776  *
777  * UEFI - UEFI Boot optimization Table
778  *        Version 1
779  *
780  * Conforms to "Unified Extensible Firmware Interface Specification",
781  * Version 2.3, May 8, 2009
782  *
783  ******************************************************************************/
784
785 struct acpi_table_uefi {
786         struct acpi_table_header header;        /* Common ACPI table header */
787         u8 identifier[16];      /* UUID identifier */
788         u16 data_offset;        /* Offset of remaining data in table */
789 };
790
791 /*******************************************************************************
792  *
793  * WAET - Windows ACPI Emulated devices Table
794  *        Version 1
795  *
796  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
797  *
798  ******************************************************************************/
799
800 struct acpi_table_waet {
801         struct acpi_table_header header;        /* Common ACPI table header */
802         u32 flags;
803 };
804
805 /* Masks for Flags field above */
806
807 #define ACPI_WAET_RTC_NO_ACK        (1) /* RTC requires no int acknowledge */
808 #define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
809
810 /*******************************************************************************
811  *
812  * WDAT - Watchdog Action Table
813  *        Version 1
814  *
815  * Conforms to "Hardware Watchdog Timers Design Specification",
816  * Copyright 2006 Microsoft Corporation.
817  *
818  ******************************************************************************/
819
820 struct acpi_table_wdat {
821         struct acpi_table_header header;        /* Common ACPI table header */
822         u32 header_length;      /* Watchdog Header Length */
823         u16 pci_segment;        /* PCI Segment number */
824         u8 pci_bus;             /* PCI Bus number */
825         u8 pci_device;          /* PCI Device number */
826         u8 pci_function;        /* PCI Function number */
827         u8 reserved[3];
828         u32 timer_period;       /* Period of one timer count (msec) */
829         u32 max_count;          /* Maximum counter value supported */
830         u32 min_count;          /* Minimum counter value */
831         u8 flags;
832         u8 reserved2[3];
833         u32 entries;            /* Number of watchdog entries that follow */
834 };
835
836 /* Masks for Flags field above */
837
838 #define ACPI_WDAT_ENABLED           (1)
839 #define ACPI_WDAT_STOPPED           0x80
840
841 /* WDAT Instruction Entries (actions) */
842
843 struct acpi_wdat_entry {
844         u8 action;
845         u8 instruction;
846         u16 reserved;
847         struct acpi_generic_address register_region;
848         u32 value;              /* Value used with Read/Write register */
849         u32 mask;               /* Bitmask required for this register instruction */
850 };
851
852 /* Values for Action field above */
853
854 enum acpi_wdat_actions {
855         ACPI_WDAT_RESET = 1,
856         ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
857         ACPI_WDAT_GET_COUNTDOWN = 5,
858         ACPI_WDAT_SET_COUNTDOWN = 6,
859         ACPI_WDAT_GET_RUNNING_STATE = 8,
860         ACPI_WDAT_SET_RUNNING_STATE = 9,
861         ACPI_WDAT_GET_STOPPED_STATE = 10,
862         ACPI_WDAT_SET_STOPPED_STATE = 11,
863         ACPI_WDAT_GET_REBOOT = 16,
864         ACPI_WDAT_SET_REBOOT = 17,
865         ACPI_WDAT_GET_SHUTDOWN = 18,
866         ACPI_WDAT_SET_SHUTDOWN = 19,
867         ACPI_WDAT_GET_STATUS = 32,
868         ACPI_WDAT_SET_STATUS = 33,
869         ACPI_WDAT_ACTION_RESERVED = 34  /* 34 and greater are reserved */
870 };
871
872 /* Values for Instruction field above */
873
874 enum acpi_wdat_instructions {
875         ACPI_WDAT_READ_VALUE = 0,
876         ACPI_WDAT_READ_COUNTDOWN = 1,
877         ACPI_WDAT_WRITE_VALUE = 2,
878         ACPI_WDAT_WRITE_COUNTDOWN = 3,
879         ACPI_WDAT_INSTRUCTION_RESERVED = 4,     /* 4 and greater are reserved */
880         ACPI_WDAT_PRESERVE_REGISTER = 0x80      /* Except for this value */
881 };
882
883 /*******************************************************************************
884  *
885  * WDRT - Watchdog Resource Table
886  *        Version 1
887  *
888  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
889  * Version 1.01, August 28, 2006
890  *
891  ******************************************************************************/
892
893 struct acpi_table_wdrt {
894         struct acpi_table_header header;        /* Common ACPI table header */
895         struct acpi_generic_address control_register;
896         struct acpi_generic_address count_register;
897         u16 pci_device_id;
898         u16 pci_vendor_id;
899         u8 pci_bus;             /* PCI Bus number */
900         u8 pci_device;          /* PCI Device number */
901         u8 pci_function;        /* PCI Function number */
902         u8 pci_segment;         /* PCI Segment number */
903         u16 max_count;          /* Maximum counter value supported */
904         u8 units;
905 };
906
907 /* Reset to default packing */
908
909 #pragma pack()
910
911 #endif                          /* __ACTBL2_H__ */