2011-11-16 07:04:00 +04:00
/******************************************************************************
*
* Name : actbl3 . h - ACPI Table Definitions
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
2016-01-15 03:17:03 +03:00
* Copyright ( C ) 2000 - 2016 , Intel Corp .
2011-11-16 07:04:00 +04:00
* All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
* 1. Redistributions of source code must retain the above copyright
* notice , this list of conditions , and the following disclaimer ,
* without modification .
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
* substantially similar to the " NO WARRANTY " disclaimer below
* ( " Disclaimer " ) and any redistribution must be conditioned upon
* including a substantially similar Disclaimer requirement for further
* binary redistribution .
* 3. Neither the names of the above - listed copyright holders nor the names
* of any contributors may be used to endorse or promote products derived
* from this software without specific prior written permission .
*
* Alternatively , this software may be distributed under the terms of the
* GNU General Public License ( " GPL " ) version 2 as published by the Free
* Software Foundation .
*
* NO WARRANTY
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
* LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL , EXEMPLARY , OR CONSEQUENTIAL
* DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION )
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT ,
* STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES .
*/
# ifndef __ACTBL3_H__
# define __ACTBL3_H__
/*******************************************************************************
*
* Additional ACPI Tables ( 3 )
*
* These tables are not consumed directly by the ACPICA subsystem , but are
* included here to support device drivers and the AML disassembler .
*
2015-07-01 09:45:25 +03:00
* In general , the tables in this file are fully defined within the ACPI
* specification .
2011-11-16 07:04:00 +04:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Values for description table header signatures for tables defined in this
* file . Useful because they make it more difficult to inadvertently type in
* the wrong signature .
*/
# define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */
# define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */
# define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */
# define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */
# define ACPI_SIG_MPST "MPST" /* Memory Power State Table */
# define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */
# define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */
# define ACPI_SIG_RASF "RASF" /* RAS Feature table */
2015-05-21 05:30:11 +03:00
# define ACPI_SIG_STAO "STAO" /* Status Override table */
2015-05-21 05:30:44 +03:00
# define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */
2015-05-21 05:30:24 +03:00
# define ACPI_SIG_XENV "XENV" /* Xen Environment table */
2011-11-16 07:04:00 +04:00
# define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */
# define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */
/* Reserved table signatures */
# define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */
# define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */
/*
* All tables must be byte - packed to match the ACPI specification , since
* the tables are provided by the system BIOS .
*/
# pragma pack(1)
/*
2012-08-17 09:07:54 +04:00
* Note : C bitfields are not used for this reason :
*
* " Bitfields are great and easy to read, but unfortunately the C language
* does not specify the layout of bitfields in memory , which means they are
* essentially useless for dealing with packed data in on - disk formats or
* binary wire protocols . " (Or ACPI tables and buffers.) " If you ask me ,
* this decision was a design error in C . Ritchie could have picked an order
* and stuck with it . " Norman Ramsey.
* See http : //stackoverflow.com/a/1053662/41661
2011-11-16 07:04:00 +04:00
*/
/*******************************************************************************
*
* BGRT - Boot Graphics Resource Table ( ACPI 5.0 )
* Version 1
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_bgrt {
struct acpi_table_header header ; /* Common ACPI table header */
u16 version ;
u8 status ;
u8 image_type ;
u64 image_address ;
u32 image_offset_x ;
u32 image_offset_y ;
} ;
/*******************************************************************************
*
* DRTM - Dynamic Root of Trust for Measurement table
2015-05-21 05:31:37 +03:00
* Conforms to " TCG D-RTM Architecture " June 17 2013 , Version 1.0 .0
* Table version 1
2011-11-16 07:04:00 +04:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_drtm {
struct acpi_table_header header ; /* Common ACPI table header */
u64 entry_base_address ;
u64 entry_length ;
u32 entry_address32 ;
u64 entry_address64 ;
u64 exit_address ;
u64 log_area_address ;
u32 log_area_length ;
u64 arch_dependent_address ;
u32 flags ;
} ;
2015-05-21 05:31:37 +03:00
/* Flag Definitions for above */
2011-11-16 07:04:00 +04:00
2015-05-21 05:31:37 +03:00
# define ACPI_DRTM_ACCESS_ALLOWED (1)
# define ACPI_DRTM_ENABLE_GAP_CODE (1<<1)
# define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2)
# define ACPI_DRTM_AUTHORITY_ORDER (1<<3)
/* 1) Validated Tables List (64-bit addresses) */
struct acpi_drtm_vtable_list {
u32 validated_table_count ;
u64 validated_tables [ 1 ] ;
2011-11-16 07:04:00 +04:00
} ;
2015-05-21 05:31:37 +03:00
/* 2) Resources List (of Resource Descriptors) */
/* Resource Descriptor */
struct acpi_drtm_resource {
u8 size [ 7 ] ;
u8 type ;
u64 address ;
} ;
2011-11-16 07:04:00 +04:00
struct acpi_drtm_resource_list {
2015-05-21 05:31:37 +03:00
u32 resource_count ;
struct acpi_drtm_resource resources [ 1 ] ;
2011-11-16 07:04:00 +04:00
} ;
/* 3) Platform-specific Identifiers List */
2015-05-21 05:31:37 +03:00
struct acpi_drtm_dps_id {
u32 dps_id_length ;
u8 dps_id [ 16 ] ;
2011-11-16 07:04:00 +04:00
} ;
/*******************************************************************************
*
* FPDT - Firmware Performance Data Table ( ACPI 5.0 )
* Version 1
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_fpdt {
struct acpi_table_header header ; /* Common ACPI table header */
} ;
2016-03-24 04:39:44 +03:00
/* FPDT subtable header (Performance Record Structure) */
2011-11-16 07:04:00 +04:00
struct acpi_fpdt_header {
u16 type ;
u8 length ;
u8 revision ;
} ;
/* Values for Type field above */
enum acpi_fpdt_type {
ACPI_FPDT_TYPE_BOOT = 0 ,
2013-03-08 13:22:48 +04:00
ACPI_FPDT_TYPE_S3PERF = 1
2011-11-16 07:04:00 +04:00
} ;
/*
* FPDT subtables
*/
/* 0: Firmware Basic Boot Performance Record */
2016-03-24 04:39:44 +03:00
struct acpi_fpdt_boot_pointer {
2011-11-16 07:04:00 +04:00
struct acpi_fpdt_header header ;
u8 reserved [ 4 ] ;
2016-03-24 04:39:44 +03:00
u64 address ;
2011-11-16 07:04:00 +04:00
} ;
/* 1: S3 Performance Table Pointer Record */
2016-03-24 04:39:44 +03:00
struct acpi_fpdt_s3pt_pointer {
2011-11-16 07:04:00 +04:00
struct acpi_fpdt_header header ;
u8 reserved [ 4 ] ;
u64 address ;
} ;
/*
* S3PT - S3 Performance Table . This table is pointed to by the
2016-03-24 04:39:44 +03:00
* S3 Pointer Record above .
2011-11-16 07:04:00 +04:00
*/
struct acpi_table_s3pt {
u8 signature [ 4 ] ; /* "S3PT" */
u32 length ;
} ;
/*
2016-03-24 04:39:44 +03:00
* S3PT Subtables ( Not part of the actual FPDT )
2011-11-16 07:04:00 +04:00
*/
2016-03-24 04:39:44 +03:00
/* Values for Type field in S3PT header */
2011-11-16 07:04:00 +04:00
enum acpi_s3pt_type {
ACPI_S3PT_TYPE_RESUME = 0 ,
2016-03-24 04:39:44 +03:00
ACPI_S3PT_TYPE_SUSPEND = 1 ,
ACPI_FPDT_BOOT_PERFORMANCE = 2
2011-11-16 07:04:00 +04:00
} ;
struct acpi_s3pt_resume {
2016-03-24 04:39:44 +03:00
struct acpi_fpdt_header header ;
2011-11-16 07:04:00 +04:00
u32 resume_count ;
u64 full_resume ;
u64 average_resume ;
} ;
struct acpi_s3pt_suspend {
2016-03-24 04:39:44 +03:00
struct acpi_fpdt_header header ;
2011-11-16 07:04:00 +04:00
u64 suspend_start ;
u64 suspend_end ;
} ;
2016-03-24 04:39:44 +03:00
/*
* FPDT Boot Performance Record ( Not part of the actual FPDT )
*/
struct acpi_fpdt_boot {
struct acpi_fpdt_header header ;
u8 reserved [ 4 ] ;
u64 reset_end ;
u64 load_start ;
u64 startup_start ;
u64 exit_services_entry ;
u64 exit_services_exit ;
} ;
2011-11-16 07:04:00 +04:00
/*******************************************************************************
*
2014-07-30 08:21:58 +04:00
* GTDT - Generic Timer Description Table ( ACPI 5.1 )
* Version 2
2011-11-16 07:04:00 +04:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_gtdt {
struct acpi_table_header header ; /* Common ACPI table header */
2014-07-30 08:21:58 +04:00
u64 counter_block_addresss ;
u32 reserved ;
u32 secure_el1_interrupt ;
u32 secure_el1_flags ;
u32 non_secure_el1_interrupt ;
u32 non_secure_el1_flags ;
2011-11-16 07:04:00 +04:00
u32 virtual_timer_interrupt ;
u32 virtual_timer_flags ;
2014-07-30 08:21:58 +04:00
u32 non_secure_el2_interrupt ;
u32 non_secure_el2_flags ;
u64 counter_read_block_address ;
u32 platform_timer_count ;
u32 platform_timer_offset ;
} ;
/* Flag Definitions: Timer Block Physical Timers and Virtual timers */
# define ACPI_GTDT_INTERRUPT_MODE (1)
# define ACPI_GTDT_INTERRUPT_POLARITY (1<<1)
# define ACPI_GTDT_ALWAYS_ON (1<<2)
/* Common GTDT subtable header */
struct acpi_gtdt_header {
u8 type ;
u16 length ;
} ;
/* Values for GTDT subtable type above */
enum acpi_gtdt_type {
ACPI_GTDT_TYPE_TIMER_BLOCK = 0 ,
ACPI_GTDT_TYPE_WATCHDOG = 1 ,
ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */
2011-11-16 07:04:00 +04:00
} ;
2014-07-30 08:21:58 +04:00
/* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */
/* 0: Generic Timer Block */
2011-11-16 07:04:00 +04:00
2014-07-30 08:21:58 +04:00
struct acpi_gtdt_timer_block {
struct acpi_gtdt_header header ;
u8 reserved ;
u64 block_address ;
u32 timer_count ;
u32 timer_offset ;
} ;
/* Timer Sub-Structure, one per timer */
struct acpi_gtdt_timer_entry {
u8 frame_number ;
u8 reserved [ 3 ] ;
u64 base_address ;
u64 el0_base_address ;
u32 timer_interrupt ;
u32 timer_flags ;
u32 virtual_timer_interrupt ;
u32 virtual_timer_flags ;
u32 common_flags ;
} ;
2014-09-02 04:27:19 +04:00
/* Flag Definitions: timer_flags and virtual_timer_flags above */
# define ACPI_GTDT_GT_IRQ_MODE (1)
# define ACPI_GTDT_GT_IRQ_POLARITY (1<<1)
2014-07-30 08:21:58 +04:00
/* Flag Definitions: common_flags above */
2014-09-02 04:27:19 +04:00
# define ACPI_GTDT_GT_IS_SECURE_TIMER (1)
# define ACPI_GTDT_GT_ALWAYS_ON (1<<1)
2014-07-30 08:21:58 +04:00
/* 1: SBSA Generic Watchdog Structure */
struct acpi_gtdt_watchdog {
struct acpi_gtdt_header header ;
u8 reserved ;
u64 refresh_frame_address ;
u64 control_frame_address ;
u32 timer_interrupt ;
u32 timer_flags ;
} ;
2011-11-16 07:04:00 +04:00
2014-07-30 08:21:58 +04:00
/* Flag Definitions: timer_flags above */
2011-11-16 07:04:00 +04:00
2014-07-30 08:21:58 +04:00
# define ACPI_GTDT_WATCHDOG_IRQ_MODE (1)
# define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1)
# define ACPI_GTDT_WATCHDOG_SECURE (1<<2)
2011-11-16 07:04:00 +04:00
/*******************************************************************************
*
* MPST - Memory Power State Table ( ACPI 5.0 )
* Version 1
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# define ACPI_MPST_CHANNEL_INFO \
u8 channel_id ; \
2012-10-31 06:27:56 +04:00
u8 reserved1 [ 3 ] ; \
u16 power_node_count ; \
u16 reserved2 ;
2011-11-16 07:04:00 +04:00
/* Main table */
struct acpi_table_mpst {
struct acpi_table_header header ; /* Common ACPI table header */
ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */
} ;
/* Memory Platform Communication Channel Info */
struct acpi_mpst_channel {
ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */
} ;
/* Memory Power Node Structure */
struct acpi_mpst_power_node {
u8 flags ;
u8 reserved1 ;
u16 node_id ;
u32 length ;
u64 range_address ;
u64 range_length ;
2012-10-31 06:27:56 +04:00
u32 num_power_states ;
u32 num_physical_components ;
2011-11-16 07:04:00 +04:00
} ;
/* Values for Flags field above */
# define ACPI_MPST_ENABLED 1
# define ACPI_MPST_POWER_MANAGED 2
# define ACPI_MPST_HOT_PLUG_CAPABLE 4
/* Memory Power State Structure (follows POWER_NODE above) */
struct acpi_mpst_power_state {
u8 power_state ;
u8 info_index ;
} ;
/* Physical Component ID Structure (follows POWER_STATE above) */
struct acpi_mpst_component {
u16 component_id ;
} ;
/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */
struct acpi_mpst_data_hdr {
u16 characteristics_count ;
2012-10-31 06:27:56 +04:00
u16 reserved ;
2011-11-16 07:04:00 +04:00
} ;
struct acpi_mpst_power_data {
2012-10-31 06:27:56 +04:00
u8 structure_id ;
2011-11-16 07:04:00 +04:00
u8 flags ;
u16 reserved1 ;
u32 average_power ;
u32 power_saving ;
u64 exit_latency ;
u64 reserved2 ;
} ;
/* Values for Flags field above */
# define ACPI_MPST_PRESERVE 1
# define ACPI_MPST_AUTOENTRY 2
# define ACPI_MPST_AUTOEXIT 4
/* Shared Memory Region (not part of an ACPI table) */
struct acpi_mpst_shared {
u32 signature ;
u16 pcc_command ;
u16 pcc_status ;
2012-10-31 06:27:56 +04:00
u32 command_register ;
u32 status_register ;
u32 power_state_id ;
u32 power_node_id ;
2011-11-16 07:04:00 +04:00
u64 energy_consumed ;
u64 average_power ;
} ;
/*******************************************************************************
*
* PCCT - Platform Communications Channel Table ( ACPI 5.0 )
* Version 1
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_pcct {
struct acpi_table_header header ; /* Common ACPI table header */
u32 flags ;
2014-01-08 09:43:57 +04:00
u64 reserved ;
2011-11-16 07:04:00 +04:00
} ;
/* Values for Flags field above */
# define ACPI_PCCT_DOORBELL 1
2014-01-08 09:43:57 +04:00
/* Values for subtable type in struct acpi_subtable_header */
enum acpi_pcct_type {
ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0 ,
2014-07-30 08:22:05 +04:00
ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1 ,
2016-05-05 07:58:05 +03:00
ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 = 2 , /* ACPI 6.1 */
ACPI_PCCT_TYPE_RESERVED = 3 /* 3 and greater are reserved */
2014-01-08 09:43:57 +04:00
} ;
2011-11-16 07:04:00 +04:00
/*
2014-01-08 09:43:57 +04:00
* PCCT Subtables , correspond to Type in struct acpi_subtable_header
2011-11-16 07:04:00 +04:00
*/
/* 0: Generic Communications Subspace */
struct acpi_pcct_subspace {
struct acpi_subtable_header header ;
u8 reserved [ 6 ] ;
u64 base_address ;
u64 length ;
struct acpi_generic_address doorbell_register ;
u64 preserve_mask ;
u64 write_mask ;
2014-01-08 09:43:57 +04:00
u32 latency ;
u32 max_access_rate ;
u16 min_turnaround_time ;
2011-11-16 07:04:00 +04:00
} ;
2014-07-30 08:22:05 +04:00
/* 1: HW-reduced Communications Subspace (ACPI 5.1) */
struct acpi_pcct_hw_reduced {
struct acpi_subtable_header header ;
u32 doorbell_interrupt ;
u8 flags ;
u8 reserved ;
u64 base_address ;
u64 length ;
struct acpi_generic_address doorbell_register ;
u64 preserve_mask ;
u64 write_mask ;
u32 latency ;
u32 max_access_rate ;
u16 min_turnaround_time ;
} ;
2016-05-05 07:58:05 +03:00
/* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */
struct acpi_pcct_hw_reduced_type2 {
struct acpi_subtable_header header ;
u32 doorbell_interrupt ;
u8 flags ;
u8 reserved ;
u64 base_address ;
u64 length ;
struct acpi_generic_address doorbell_register ;
u64 preserve_mask ;
u64 write_mask ;
u32 latency ;
u32 max_access_rate ;
u16 min_turnaround_time ;
struct acpi_generic_address doorbell_ack_register ;
u64 ack_preserve_mask ;
u64 ack_write_mask ;
} ;
2014-07-30 08:22:05 +04:00
/* Values for doorbell flags above */
# define ACPI_PCCT_INTERRUPT_POLARITY (1)
# define ACPI_PCCT_INTERRUPT_MODE (1<<1)
2011-11-16 07:04:00 +04:00
/*
* PCC memory structures ( not part of the ACPI table )
*/
/* Shared Memory Region */
struct acpi_pcct_shared_memory {
u32 signature ;
u16 command ;
u16 status ;
} ;
/*******************************************************************************
*
* PMTT - Platform Memory Topology Table ( ACPI 5.0 )
* Version 1
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_pmtt {
struct acpi_table_header header ; /* Common ACPI table header */
u32 reserved ;
} ;
/* Common header for PMTT subtables that follow main table */
struct acpi_pmtt_header {
u8 type ;
u8 reserved1 ;
u16 length ;
u16 flags ;
u16 reserved2 ;
} ;
/* Values for Type field above */
# define ACPI_PMTT_TYPE_SOCKET 0
# define ACPI_PMTT_TYPE_CONTROLLER 1
# define ACPI_PMTT_TYPE_DIMM 2
# define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */
/* Values for Flags field above */
# define ACPI_PMTT_TOP_LEVEL 0x0001
# define ACPI_PMTT_PHYSICAL 0x0002
# define ACPI_PMTT_MEMORY_TYPE 0x000C
/*
* PMTT subtables , correspond to Type in struct acpi_pmtt_header
*/
/* 0: Socket Structure */
struct acpi_pmtt_socket {
struct acpi_pmtt_header header ;
u16 socket_id ;
u16 reserved ;
} ;
/* 1: Memory Controller subtable */
struct acpi_pmtt_controller {
struct acpi_pmtt_header header ;
u32 read_latency ;
u32 write_latency ;
u32 read_bandwidth ;
u32 write_bandwidth ;
u16 access_width ;
u16 alignment ;
u16 reserved ;
u16 domain_count ;
} ;
/* 1a: Proximity Domain substructure */
struct acpi_pmtt_domain {
u32 proximity_domain ;
} ;
/* 2: Physical Component Identifier (DIMM) */
struct acpi_pmtt_physical_component {
struct acpi_pmtt_header header ;
u16 component_id ;
u16 reserved ;
u32 memory_size ;
u32 bios_handle ;
} ;
/*******************************************************************************
*
* RASF - RAS Feature Table ( ACPI 5.0 )
* Version 1
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_rasf {
struct acpi_table_header header ; /* Common ACPI table header */
u8 channel_id [ 12 ] ;
} ;
/* RASF Platform Communication Channel Shared Memory Region */
struct acpi_rasf_shared_memory {
u32 signature ;
u16 command ;
u16 status ;
2013-03-08 13:20:21 +04:00
u16 version ;
u8 capabilities [ 16 ] ;
u8 set_capabilities [ 16 ] ;
u16 num_parameter_blocks ;
u32 set_capabilities_status ;
} ;
/* RASF Parameter Block Structure Header */
struct acpi_rasf_parameter_block {
u16 type ;
u16 version ;
u16 length ;
} ;
/* RASF Parameter Block Structure for PATROL_SCRUB */
struct acpi_rasf_patrol_scrub_parameter {
struct acpi_rasf_parameter_block header ;
u16 patrol_scrub_command ;
u64 requested_address_range [ 2 ] ;
u64 actual_address_range [ 2 ] ;
2011-11-16 07:04:00 +04:00
u16 flags ;
2013-03-08 13:20:21 +04:00
u8 requested_speed ;
2011-11-16 07:04:00 +04:00
} ;
/* Masks for Flags and Speed fields above */
# define ACPI_RASF_SCRUBBER_RUNNING 1
# define ACPI_RASF_SPEED (7<<1)
2013-03-08 13:20:21 +04:00
# define ACPI_RASF_SPEED_SLOW (0<<1)
# define ACPI_RASF_SPEED_MEDIUM (4<<1)
# define ACPI_RASF_SPEED_FAST (7<<1)
2011-11-16 07:04:00 +04:00
/* Channel Commands */
enum acpi_rasf_commands {
2013-03-08 13:20:21 +04:00
ACPI_RASF_EXECUTE_RASF_COMMAND = 1
} ;
/* Platform RAS Capabilities */
enum acpi_rasf_capabiliities {
ACPI_HW_PATROL_SCRUB_SUPPORTED = 0 ,
ACPI_SW_PATROL_SCRUB_EXPOSED = 1
} ;
/* Patrol Scrub Commands */
enum acpi_rasf_patrol_scrub_commands {
ACPI_RASF_GET_PATROL_PARAMETERS = 1 ,
ACPI_RASF_START_PATROL_SCRUBBER = 2 ,
ACPI_RASF_STOP_PATROL_SCRUBBER = 3
2011-11-16 07:04:00 +04:00
} ;
/* Channel Command flags */
# define ACPI_RASF_GENERATE_SCI (1<<15)
/* Status values */
enum acpi_rasf_status {
ACPI_RASF_SUCCESS = 0 ,
ACPI_RASF_NOT_VALID = 1 ,
ACPI_RASF_NOT_SUPPORTED = 2 ,
ACPI_RASF_BUSY = 3 ,
ACPI_RASF_FAILED = 4 ,
ACPI_RASF_ABORTED = 5 ,
ACPI_RASF_INVALID_DATA = 6
} ;
/* Status flags */
# define ACPI_RASF_COMMAND_COMPLETE (1)
# define ACPI_RASF_SCI_DOORBELL (1<<1)
# define ACPI_RASF_ERROR (1<<2)
# define ACPI_RASF_STATUS (0x1F<<3)
2015-05-21 05:30:11 +03:00
/*******************************************************************************
*
* STAO - Status Override Table ( _STA override ) - ACPI 6.0
* Version 1
*
* Conforms to " ACPI Specification for Status Override Table "
* 6 January 2015
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_stao {
struct acpi_table_header header ; /* Common ACPI table header */
u8 ignore_uart ;
} ;
2015-05-21 05:30:44 +03:00
/*******************************************************************************
*
* WPBT - Windows Platform Environment Table ( ACPI 6.0 )
* Version 1
*
* Conforms to " Windows Platform Binary Table (WPBT) " 29 November 2011
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_wpbt {
struct acpi_table_header header ; /* Common ACPI table header */
u32 handoff_size ;
u64 handoff_address ;
u8 layout ;
u8 type ;
u16 arguments_length ;
} ;
2015-05-21 05:30:24 +03:00
/*******************************************************************************
*
* XENV - Xen Environment Table ( ACPI 6.0 )
* Version 1
*
* Conforms to " ACPI Specification for Xen Environment Table " 4 January 2015
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
struct acpi_table_xenv {
struct acpi_table_header header ; /* Common ACPI table header */
u64 grant_table_address ;
u64 grant_table_size ;
u32 event_interrupt ;
u8 event_flags ;
} ;
2014-03-05 10:12:01 +04:00
/* Reset to default packing */
# pragma pack()
2011-11-16 07:04:00 +04:00
# endif /* __ACTBL3_H__ */