Subversion Repositories Kolibri OS

Rev

Rev 6591 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /******************************************************************************
  2.  *
  3.  * Name: actbl3.h - ACPI Table Definitions
  4.  *
  5.  *****************************************************************************/
  6.  
  7. /*
  8.  * Copyright (C) 2000 - 2016, 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 __ACTBL3_H__
  45. #define __ACTBL3_H__
  46.  
  47. /*******************************************************************************
  48.  *
  49.  * Additional ACPI Tables (3)
  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.  * In general, the tables in this file are fully defined within the ACPI
  55.  * specification.
  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_BGRT           "BGRT"  /* Boot Graphics Resource Table */
  65. #define ACPI_SIG_DRTM           "DRTM"  /* Dynamic Root of Trust for Measurement table */
  66. #define ACPI_SIG_FPDT           "FPDT"  /* Firmware Performance Data Table */
  67. #define ACPI_SIG_GTDT           "GTDT"  /* Generic Timer Description Table */
  68. #define ACPI_SIG_MPST           "MPST"  /* Memory Power State Table */
  69. #define ACPI_SIG_PCCT           "PCCT"  /* Platform Communications Channel Table */
  70. #define ACPI_SIG_PMTT           "PMTT"  /* Platform Memory Topology Table */
  71. #define ACPI_SIG_RASF           "RASF"  /* RAS Feature table */
  72. #define ACPI_SIG_STAO           "STAO"  /* Status Override table */
  73. #define ACPI_SIG_WPBT           "WPBT"  /* Windows Platform Binary Table */
  74. #define ACPI_SIG_XENV           "XENV"  /* Xen Environment table */
  75.  
  76. #define ACPI_SIG_S3PT           "S3PT"  /* S3 Performance (sub)Table */
  77. #define ACPI_SIG_PCCS           "PCC"   /* PCC Shared Memory Region */
  78.  
  79. /* Reserved table signatures */
  80.  
  81. #define ACPI_SIG_MATR           "MATR"  /* Memory Address Translation Table */
  82. #define ACPI_SIG_MSDM           "MSDM"  /* Microsoft Data Management Table */
  83.  
  84. /*
  85.  * All tables must be byte-packed to match the ACPI specification, since
  86.  * the tables are provided by the system BIOS.
  87.  */
  88. #pragma pack(1)
  89.  
  90. /*
  91.  * Note: C bitfields are not used for this reason:
  92.  *
  93.  * "Bitfields are great and easy to read, but unfortunately the C language
  94.  * does not specify the layout of bitfields in memory, which means they are
  95.  * essentially useless for dealing with packed data in on-disk formats or
  96.  * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
  97.  * this decision was a design error in C. Ritchie could have picked an order
  98.  * and stuck with it." Norman Ramsey.
  99.  * See http://stackoverflow.com/a/1053662/41661
  100.  */
  101.  
  102. /*******************************************************************************
  103.  *
  104.  * BGRT - Boot Graphics Resource Table (ACPI 5.0)
  105.  *        Version 1
  106.  *
  107.  ******************************************************************************/
  108.  
  109. struct acpi_table_bgrt {
  110.         struct acpi_table_header header;        /* Common ACPI table header */
  111.         u16 version;
  112.         u8 status;
  113.         u8 image_type;
  114.         u64 image_address;
  115.         u32 image_offset_x;
  116.         u32 image_offset_y;
  117. };
  118.  
  119. /*******************************************************************************
  120.  *
  121.  * DRTM - Dynamic Root of Trust for Measurement table
  122.  * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
  123.  * Table version 1
  124.  *
  125.  ******************************************************************************/
  126.  
  127. struct acpi_table_drtm {
  128.         struct acpi_table_header header;        /* Common ACPI table header */
  129.         u64 entry_base_address;
  130.         u64 entry_length;
  131.         u32 entry_address32;
  132.         u64 entry_address64;
  133.         u64 exit_address;
  134.         u64 log_area_address;
  135.         u32 log_area_length;
  136.         u64 arch_dependent_address;
  137.         u32 flags;
  138. };
  139.  
  140. /* Flag Definitions for above */
  141.  
  142. #define ACPI_DRTM_ACCESS_ALLOWED            (1)
  143. #define ACPI_DRTM_ENABLE_GAP_CODE           (1<<1)
  144. #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS   (1<<2)
  145. #define ACPI_DRTM_AUTHORITY_ORDER           (1<<3)
  146.  
  147. /* 1) Validated Tables List (64-bit addresses) */
  148.  
  149. struct acpi_drtm_vtable_list {
  150.         u32 validated_table_count;
  151.         u64 validated_tables[1];
  152. };
  153.  
  154. /* 2) Resources List (of Resource Descriptors) */
  155.  
  156. /* Resource Descriptor */
  157.  
  158. struct acpi_drtm_resource {
  159.         u8 size[7];
  160.         u8 type;
  161.         u64 address;
  162. };
  163.  
  164. struct acpi_drtm_resource_list {
  165.         u32 resource_count;
  166.         struct acpi_drtm_resource resources[1];
  167. };
  168.  
  169. /* 3) Platform-specific Identifiers List */
  170.  
  171. struct acpi_drtm_dps_id {
  172.         u32 dps_id_length;
  173.         u8 dps_id[16];
  174. };
  175.  
  176. /*******************************************************************************
  177.  *
  178.  * FPDT - Firmware Performance Data Table (ACPI 5.0)
  179.  *        Version 1
  180.  *
  181.  ******************************************************************************/
  182.  
  183. struct acpi_table_fpdt {
  184.         struct acpi_table_header header;        /* Common ACPI table header */
  185. };
  186.  
  187. /* FPDT subtable header */
  188.  
  189. struct acpi_fpdt_header {
  190.         u16 type;
  191.         u8 length;
  192.         u8 revision;
  193. };
  194.  
  195. /* Values for Type field above */
  196.  
  197. enum acpi_fpdt_type {
  198.         ACPI_FPDT_TYPE_BOOT = 0,
  199.         ACPI_FPDT_TYPE_S3PERF = 1
  200. };
  201.  
  202. /*
  203.  * FPDT subtables
  204.  */
  205.  
  206. /* 0: Firmware Basic Boot Performance Record */
  207.  
  208. struct acpi_fpdt_boot {
  209.         struct acpi_fpdt_header header;
  210.         u8 reserved[4];
  211.         u64 reset_end;
  212.         u64 load_start;
  213.         u64 startup_start;
  214.         u64 exit_services_entry;
  215.         u64 exit_services_exit;
  216. };
  217.  
  218. /* 1: S3 Performance Table Pointer Record */
  219.  
  220. struct acpi_fpdt_s3pt_ptr {
  221.         struct acpi_fpdt_header header;
  222.         u8 reserved[4];
  223.         u64 address;
  224. };
  225.  
  226. /*
  227.  * S3PT - S3 Performance Table. This table is pointed to by the
  228.  * FPDT S3 Pointer Record above.
  229.  */
  230. struct acpi_table_s3pt {
  231.         u8 signature[4];        /* "S3PT" */
  232.         u32 length;
  233. };
  234.  
  235. /*
  236.  * S3PT Subtables
  237.  */
  238. struct acpi_s3pt_header {
  239.         u16 type;
  240.         u8 length;
  241.         u8 revision;
  242. };
  243.  
  244. /* Values for Type field above */
  245.  
  246. enum acpi_s3pt_type {
  247.         ACPI_S3PT_TYPE_RESUME = 0,
  248.         ACPI_S3PT_TYPE_SUSPEND = 1
  249. };
  250.  
  251. struct acpi_s3pt_resume {
  252.         struct acpi_s3pt_header header;
  253.         u32 resume_count;
  254.         u64 full_resume;
  255.         u64 average_resume;
  256. };
  257.  
  258. struct acpi_s3pt_suspend {
  259.         struct acpi_s3pt_header header;
  260.         u64 suspend_start;
  261.         u64 suspend_end;
  262. };
  263.  
  264. /*******************************************************************************
  265.  *
  266.  * GTDT - Generic Timer Description Table (ACPI 5.1)
  267.  *        Version 2
  268.  *
  269.  ******************************************************************************/
  270.  
  271. struct acpi_table_gtdt {
  272.         struct acpi_table_header header;        /* Common ACPI table header */
  273.         u64 counter_block_addresss;
  274.         u32 reserved;
  275.         u32 secure_el1_interrupt;
  276.         u32 secure_el1_flags;
  277.         u32 non_secure_el1_interrupt;
  278.         u32 non_secure_el1_flags;
  279.         u32 virtual_timer_interrupt;
  280.         u32 virtual_timer_flags;
  281.         u32 non_secure_el2_interrupt;
  282.         u32 non_secure_el2_flags;
  283.         u64 counter_read_block_address;
  284.         u32 platform_timer_count;
  285.         u32 platform_timer_offset;
  286. };
  287.  
  288. /* Flag Definitions: Timer Block Physical Timers and Virtual timers */
  289.  
  290. #define ACPI_GTDT_INTERRUPT_MODE        (1)
  291. #define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
  292. #define ACPI_GTDT_ALWAYS_ON             (1<<2)
  293.  
  294. /* Common GTDT subtable header */
  295.  
  296. struct acpi_gtdt_header {
  297.         u8 type;
  298.         u16 length;
  299. };
  300.  
  301. /* Values for GTDT subtable type above */
  302.  
  303. enum acpi_gtdt_type {
  304.         ACPI_GTDT_TYPE_TIMER_BLOCK = 0,
  305.         ACPI_GTDT_TYPE_WATCHDOG = 1,
  306.         ACPI_GTDT_TYPE_RESERVED = 2     /* 2 and greater are reserved */
  307. };
  308.  
  309. /* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */
  310.  
  311. /* 0: Generic Timer Block */
  312.  
  313. struct acpi_gtdt_timer_block {
  314.         struct acpi_gtdt_header header;
  315.         u8 reserved;
  316.         u64 block_address;
  317.         u32 timer_count;
  318.         u32 timer_offset;
  319. };
  320.  
  321. /* Timer Sub-Structure, one per timer */
  322.  
  323. struct acpi_gtdt_timer_entry {
  324.         u8 frame_number;
  325.         u8 reserved[3];
  326.         u64 base_address;
  327.         u64 el0_base_address;
  328.         u32 timer_interrupt;
  329.         u32 timer_flags;
  330.         u32 virtual_timer_interrupt;
  331.         u32 virtual_timer_flags;
  332.         u32 common_flags;
  333. };
  334.  
  335. /* Flag Definitions: timer_flags and virtual_timer_flags above */
  336.  
  337. #define ACPI_GTDT_GT_IRQ_MODE               (1)
  338. #define ACPI_GTDT_GT_IRQ_POLARITY           (1<<1)
  339.  
  340. /* Flag Definitions: common_flags above */
  341.  
  342. #define ACPI_GTDT_GT_IS_SECURE_TIMER        (1)
  343. #define ACPI_GTDT_GT_ALWAYS_ON              (1<<1)
  344.  
  345. /* 1: SBSA Generic Watchdog Structure */
  346.  
  347. struct acpi_gtdt_watchdog {
  348.         struct acpi_gtdt_header header;
  349.         u8 reserved;
  350.         u64 refresh_frame_address;
  351.         u64 control_frame_address;
  352.         u32 timer_interrupt;
  353.         u32 timer_flags;
  354. };
  355.  
  356. /* Flag Definitions: timer_flags above */
  357.  
  358. #define ACPI_GTDT_WATCHDOG_IRQ_MODE         (1)
  359. #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY     (1<<1)
  360. #define ACPI_GTDT_WATCHDOG_SECURE           (1<<2)
  361.  
  362. /*******************************************************************************
  363.  *
  364.  * MPST - Memory Power State Table (ACPI 5.0)
  365.  *        Version 1
  366.  *
  367.  ******************************************************************************/
  368.  
  369. #define ACPI_MPST_CHANNEL_INFO \
  370.         u8                              channel_id; \
  371.         u8                              reserved1[3]; \
  372.         u16                             power_node_count; \
  373.         u16                             reserved2;
  374.  
  375. /* Main table */
  376.  
  377. struct acpi_table_mpst {
  378.         struct acpi_table_header header;        /* Common ACPI table header */
  379.          ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */
  380. };
  381.  
  382. /* Memory Platform Communication Channel Info */
  383.  
  384. struct acpi_mpst_channel {
  385.         ACPI_MPST_CHANNEL_INFO  /* Platform Communication Channel */
  386. };
  387.  
  388. /* Memory Power Node Structure */
  389.  
  390. struct acpi_mpst_power_node {
  391.         u8 flags;
  392.         u8 reserved1;
  393.         u16 node_id;
  394.         u32 length;
  395.         u64 range_address;
  396.         u64 range_length;
  397.         u32 num_power_states;
  398.         u32 num_physical_components;
  399. };
  400.  
  401. /* Values for Flags field above */
  402.  
  403. #define ACPI_MPST_ENABLED               1
  404. #define ACPI_MPST_POWER_MANAGED         2
  405. #define ACPI_MPST_HOT_PLUG_CAPABLE      4
  406.  
  407. /* Memory Power State Structure (follows POWER_NODE above) */
  408.  
  409. struct acpi_mpst_power_state {
  410.         u8 power_state;
  411.         u8 info_index;
  412. };
  413.  
  414. /* Physical Component ID Structure (follows POWER_STATE above) */
  415.  
  416. struct acpi_mpst_component {
  417.         u16 component_id;
  418. };
  419.  
  420. /* Memory Power State Characteristics Structure (follows all POWER_NODEs) */
  421.  
  422. struct acpi_mpst_data_hdr {
  423.         u16 characteristics_count;
  424.         u16 reserved;
  425. };
  426.  
  427. struct acpi_mpst_power_data {
  428.         u8 structure_id;
  429.         u8 flags;
  430.         u16 reserved1;
  431.         u32 average_power;
  432.         u32 power_saving;
  433.         u64 exit_latency;
  434.         u64 reserved2;
  435. };
  436.  
  437. /* Values for Flags field above */
  438.  
  439. #define ACPI_MPST_PRESERVE              1
  440. #define ACPI_MPST_AUTOENTRY             2
  441. #define ACPI_MPST_AUTOEXIT              4
  442.  
  443. /* Shared Memory Region (not part of an ACPI table) */
  444.  
  445. struct acpi_mpst_shared {
  446.         u32 signature;
  447.         u16 pcc_command;
  448.         u16 pcc_status;
  449.         u32 command_register;
  450.         u32 status_register;
  451.         u32 power_state_id;
  452.         u32 power_node_id;
  453.         u64 energy_consumed;
  454.         u64 average_power;
  455. };
  456.  
  457. /*******************************************************************************
  458.  *
  459.  * PCCT - Platform Communications Channel Table (ACPI 5.0)
  460.  *        Version 1
  461.  *
  462.  ******************************************************************************/
  463.  
  464. struct acpi_table_pcct {
  465.         struct acpi_table_header header;        /* Common ACPI table header */
  466.         u32 flags;
  467.         u64 reserved;
  468. };
  469.  
  470. /* Values for Flags field above */
  471.  
  472. #define ACPI_PCCT_DOORBELL              1
  473.  
  474. /* Values for subtable type in struct acpi_subtable_header */
  475.  
  476. enum acpi_pcct_type {
  477.         ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0,
  478.         ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1,
  479.         ACPI_PCCT_TYPE_RESERVED = 2     /* 2 and greater are reserved */
  480. };
  481.  
  482. /*
  483.  * PCCT Subtables, correspond to Type in struct acpi_subtable_header
  484.  */
  485.  
  486. /* 0: Generic Communications Subspace */
  487.  
  488. struct acpi_pcct_subspace {
  489.         struct acpi_subtable_header header;
  490.         u8 reserved[6];
  491.         u64 base_address;
  492.         u64 length;
  493.         struct acpi_generic_address doorbell_register;
  494.         u64 preserve_mask;
  495.         u64 write_mask;
  496.         u32 latency;
  497.         u32 max_access_rate;
  498.         u16 min_turnaround_time;
  499. };
  500.  
  501. /* 1: HW-reduced Communications Subspace (ACPI 5.1) */
  502.  
  503. struct acpi_pcct_hw_reduced {
  504.         struct acpi_subtable_header header;
  505.         u32 doorbell_interrupt;
  506.         u8 flags;
  507.         u8 reserved;
  508.         u64 base_address;
  509.         u64 length;
  510.         struct acpi_generic_address doorbell_register;
  511.         u64 preserve_mask;
  512.         u64 write_mask;
  513.         u32 latency;
  514.         u32 max_access_rate;
  515.         u16 min_turnaround_time;
  516. };
  517.  
  518. /* Values for doorbell flags above */
  519.  
  520. #define ACPI_PCCT_INTERRUPT_POLARITY    (1)
  521. #define ACPI_PCCT_INTERRUPT_MODE        (1<<1)
  522.  
  523. /*
  524.  * PCC memory structures (not part of the ACPI table)
  525.  */
  526.  
  527. /* Shared Memory Region */
  528.  
  529. struct acpi_pcct_shared_memory {
  530.         u32 signature;
  531.         u16 command;
  532.         u16 status;
  533. };
  534.  
  535. /*******************************************************************************
  536.  *
  537.  * PMTT - Platform Memory Topology Table (ACPI 5.0)
  538.  *        Version 1
  539.  *
  540.  ******************************************************************************/
  541.  
  542. struct acpi_table_pmtt {
  543.         struct acpi_table_header header;        /* Common ACPI table header */
  544.         u32 reserved;
  545. };
  546.  
  547. /* Common header for PMTT subtables that follow main table */
  548.  
  549. struct acpi_pmtt_header {
  550.         u8 type;
  551.         u8 reserved1;
  552.         u16 length;
  553.         u16 flags;
  554.         u16 reserved2;
  555. };
  556.  
  557. /* Values for Type field above */
  558.  
  559. #define ACPI_PMTT_TYPE_SOCKET           0
  560. #define ACPI_PMTT_TYPE_CONTROLLER       1
  561. #define ACPI_PMTT_TYPE_DIMM             2
  562. #define ACPI_PMTT_TYPE_RESERVED         3       /* 0x03-0xFF are reserved */
  563.  
  564. /* Values for Flags field above */
  565.  
  566. #define ACPI_PMTT_TOP_LEVEL             0x0001
  567. #define ACPI_PMTT_PHYSICAL              0x0002
  568. #define ACPI_PMTT_MEMORY_TYPE           0x000C
  569.  
  570. /*
  571.  * PMTT subtables, correspond to Type in struct acpi_pmtt_header
  572.  */
  573.  
  574. /* 0: Socket Structure */
  575.  
  576. struct acpi_pmtt_socket {
  577.         struct acpi_pmtt_header header;
  578.         u16 socket_id;
  579.         u16 reserved;
  580. };
  581.  
  582. /* 1: Memory Controller subtable */
  583.  
  584. struct acpi_pmtt_controller {
  585.         struct acpi_pmtt_header header;
  586.         u32 read_latency;
  587.         u32 write_latency;
  588.         u32 read_bandwidth;
  589.         u32 write_bandwidth;
  590.         u16 access_width;
  591.         u16 alignment;
  592.         u16 reserved;
  593.         u16 domain_count;
  594. };
  595.  
  596. /* 1a: Proximity Domain substructure */
  597.  
  598. struct acpi_pmtt_domain {
  599.         u32 proximity_domain;
  600. };
  601.  
  602. /* 2: Physical Component Identifier (DIMM) */
  603.  
  604. struct acpi_pmtt_physical_component {
  605.         struct acpi_pmtt_header header;
  606.         u16 component_id;
  607.         u16 reserved;
  608.         u32 memory_size;
  609.         u32 bios_handle;
  610. };
  611.  
  612. /*******************************************************************************
  613.  *
  614.  * RASF - RAS Feature Table (ACPI 5.0)
  615.  *        Version 1
  616.  *
  617.  ******************************************************************************/
  618.  
  619. struct acpi_table_rasf {
  620.         struct acpi_table_header header;        /* Common ACPI table header */
  621.         u8 channel_id[12];
  622. };
  623.  
  624. /* RASF Platform Communication Channel Shared Memory Region */
  625.  
  626. struct acpi_rasf_shared_memory {
  627.         u32 signature;
  628.         u16 command;
  629.         u16 status;
  630.         u16 version;
  631.         u8 capabilities[16];
  632.         u8 set_capabilities[16];
  633.         u16 num_parameter_blocks;
  634.         u32 set_capabilities_status;
  635. };
  636.  
  637. /* RASF Parameter Block Structure Header */
  638.  
  639. struct acpi_rasf_parameter_block {
  640.         u16 type;
  641.         u16 version;
  642.         u16 length;
  643. };
  644.  
  645. /* RASF Parameter Block Structure for PATROL_SCRUB */
  646.  
  647. struct acpi_rasf_patrol_scrub_parameter {
  648.         struct acpi_rasf_parameter_block header;
  649.         u16 patrol_scrub_command;
  650.         u64 requested_address_range[2];
  651.         u64 actual_address_range[2];
  652.         u16 flags;
  653.         u8 requested_speed;
  654. };
  655.  
  656. /* Masks for Flags and Speed fields above */
  657.  
  658. #define ACPI_RASF_SCRUBBER_RUNNING      1
  659. #define ACPI_RASF_SPEED                 (7<<1)
  660. #define ACPI_RASF_SPEED_SLOW            (0<<1)
  661. #define ACPI_RASF_SPEED_MEDIUM          (4<<1)
  662. #define ACPI_RASF_SPEED_FAST            (7<<1)
  663.  
  664. /* Channel Commands */
  665.  
  666. enum acpi_rasf_commands {
  667.         ACPI_RASF_EXECUTE_RASF_COMMAND = 1
  668. };
  669.  
  670. /* Platform RAS Capabilities */
  671.  
  672. enum acpi_rasf_capabiliities {
  673.         ACPI_HW_PATROL_SCRUB_SUPPORTED = 0,
  674.         ACPI_SW_PATROL_SCRUB_EXPOSED = 1
  675. };
  676.  
  677. /* Patrol Scrub Commands */
  678.  
  679. enum acpi_rasf_patrol_scrub_commands {
  680.         ACPI_RASF_GET_PATROL_PARAMETERS = 1,
  681.         ACPI_RASF_START_PATROL_SCRUBBER = 2,
  682.         ACPI_RASF_STOP_PATROL_SCRUBBER = 3
  683. };
  684.  
  685. /* Channel Command flags */
  686.  
  687. #define ACPI_RASF_GENERATE_SCI          (1<<15)
  688.  
  689. /* Status values */
  690.  
  691. enum acpi_rasf_status {
  692.         ACPI_RASF_SUCCESS = 0,
  693.         ACPI_RASF_NOT_VALID = 1,
  694.         ACPI_RASF_NOT_SUPPORTED = 2,
  695.         ACPI_RASF_BUSY = 3,
  696.         ACPI_RASF_FAILED = 4,
  697.         ACPI_RASF_ABORTED = 5,
  698.         ACPI_RASF_INVALID_DATA = 6
  699. };
  700.  
  701. /* Status flags */
  702.  
  703. #define ACPI_RASF_COMMAND_COMPLETE      (1)
  704. #define ACPI_RASF_SCI_DOORBELL          (1<<1)
  705. #define ACPI_RASF_ERROR                 (1<<2)
  706. #define ACPI_RASF_STATUS                (0x1F<<3)
  707.  
  708. /*******************************************************************************
  709.  *
  710.  * STAO - Status Override Table (_STA override) - ACPI 6.0
  711.  *        Version 1
  712.  *
  713.  * Conforms to "ACPI Specification for Status Override Table"
  714.  * 6 January 2015
  715.  *
  716.  ******************************************************************************/
  717.  
  718. struct acpi_table_stao {
  719.         struct acpi_table_header header;        /* Common ACPI table header */
  720.         u8 ignore_uart;
  721. };
  722.  
  723. /*******************************************************************************
  724.  *
  725.  * WPBT - Windows Platform Environment Table (ACPI 6.0)
  726.  *        Version 1
  727.  *
  728.  * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
  729.  *
  730.  ******************************************************************************/
  731.  
  732. struct acpi_table_wpbt {
  733.         struct acpi_table_header header;        /* Common ACPI table header */
  734.         u32 handoff_size;
  735.         u64 handoff_address;
  736.         u8 layout;
  737.         u8 type;
  738.         u16 arguments_length;
  739. };
  740.  
  741. /*******************************************************************************
  742.  *
  743.  * XENV - Xen Environment Table (ACPI 6.0)
  744.  *        Version 1
  745.  *
  746.  * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
  747.  *
  748.  ******************************************************************************/
  749.  
  750. struct acpi_table_xenv {
  751.         struct acpi_table_header header;        /* Common ACPI table header */
  752.         u64 grant_table_address;
  753.         u64 grant_table_size;
  754.         u32 event_interrupt;
  755.         u8 event_flags;
  756. };
  757.  
  758. /* Reset to default packing */
  759.  
  760. #pragma pack()
  761.  
  762. #endif                          /* __ACTBL3_H__ */
  763.