2005-04-17 02:20:36 +04:00
/******************************************************************************
*
* Module Name : amlresrc . h - AML resource descriptors
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Copyright ( C ) 2000 - 2005 , R . Byron Moore
* 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 __AMLRESRC_H
# define __AMLRESRC_H
# define ASL_RESNAME_ADDRESS "_ADR"
# define ASL_RESNAME_ALIGNMENT "_ALN"
# define ASL_RESNAME_ADDRESSSPACE "_ASI"
# define ASL_RESNAME_ACCESSSIZE "_ASZ"
# define ASL_RESNAME_TYPESPECIFICATTRIBUTES "_ATT"
# define ASL_RESNAME_BASEADDRESS "_BAS"
2005-08-05 08:44:28 +04:00
# define ASL_RESNAME_BUSMASTER "_BM_" /* Master(1), Slave(0) */
2005-04-17 02:20:36 +04:00
# define ASL_RESNAME_DECODE "_DEC"
# define ASL_RESNAME_DMA "_DMA"
2005-08-05 08:44:28 +04:00
# define ASL_RESNAME_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */
2005-04-17 02:20:36 +04:00
# define ASL_RESNAME_GRANULARITY "_GRA"
# define ASL_RESNAME_INTERRUPT "_INT"
2005-08-05 08:44:28 +04:00
# define ASL_RESNAME_INTERRUPTLEVEL "_LL_" /* active_lo(1), active_hi(0) */
# define ASL_RESNAME_INTERRUPTSHARE "_SHR" /* Shareable(1), no_share(0) */
# define ASL_RESNAME_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */
2005-04-17 02:20:36 +04:00
# define ASL_RESNAME_LENGTH "_LEN"
2005-08-05 08:44:28 +04:00
# define ASL_RESNAME_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
# define ASL_RESNAME_MEMTYPE "_MEM" /* non_cache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
2005-04-17 02:20:36 +04:00
# define ASL_RESNAME_MAXADDR "_MAX"
# define ASL_RESNAME_MINADDR "_MIN"
# define ASL_RESNAME_MAXTYPE "_MAF"
# define ASL_RESNAME_MINTYPE "_MIF"
# define ASL_RESNAME_REGISTERBITOFFSET "_RBO"
# define ASL_RESNAME_REGISTERBITWIDTH "_RBW"
# define ASL_RESNAME_RANGETYPE "_RNG"
2005-08-05 08:44:28 +04:00
# define ASL_RESNAME_READWRITETYPE "_RW_" /* read_only(0), Writeable (1) */
2005-04-17 02:20:36 +04:00
# define ASL_RESNAME_TRANSLATION "_TRA"
2005-08-05 08:44:28 +04:00
# define ASL_RESNAME_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */
# define ASL_RESNAME_TYPE "_TTP" /* Translation(1), Static (0) */
# define ASL_RESNAME_XFERTYPE "_SIz" /* 8(0), 8_and16(1), 16(2) */
2005-04-17 02:20:36 +04:00
/* Default sizes for "small" resource descriptors */
# define ASL_RDESC_IRQ_SIZE 0x02
# define ASL_RDESC_DMA_SIZE 0x02
# define ASL_RDESC_ST_DEPEND_SIZE 0x00
# define ASL_RDESC_END_DEPEND_SIZE 0x00
# define ASL_RDESC_IO_SIZE 0x07
# define ASL_RDESC_FIXED_IO_SIZE 0x03
# define ASL_RDESC_END_TAG_SIZE 0x01
2005-08-05 08:44:28 +04:00
struct asl_resource_node {
u32 buffer_length ;
void * buffer ;
struct asl_resource_node * next ;
2005-04-17 02:20:36 +04:00
} ;
/*
* Resource descriptors defined in the ACPI specification .
*
* Packing / alignment must be BYTE because these descriptors
* are used to overlay the AML byte stream .
*/
# pragma pack(1)
2005-08-05 08:44:28 +04:00
struct asl_irq_format_desc {
u8 descriptor_type ;
u16 irq_mask ;
u8 flags ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_irq_noflags_desc {
u8 descriptor_type ;
u16 irq_mask ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_dma_format_desc {
u8 descriptor_type ;
u8 dma_channel_mask ;
u8 flags ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_start_dependent_desc {
u8 descriptor_type ;
u8 flags ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_start_dependent_noprio_desc {
u8 descriptor_type ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_end_dependent_desc {
u8 descriptor_type ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_io_port_desc {
u8 descriptor_type ;
u8 information ;
u16 address_min ;
u16 address_max ;
u8 alignment ;
u8 length ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_fixed_io_port_desc {
u8 descriptor_type ;
u16 base_address ;
u8 length ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_small_vendor_desc {
u8 descriptor_type ;
u8 vendor_defined [ 7 ] ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_end_tag_desc {
u8 descriptor_type ;
u8 checksum ;
2005-04-17 02:20:36 +04:00
} ;
/* LARGE descriptors */
2005-08-05 08:44:28 +04:00
struct asl_memory_24_desc {
u8 descriptor_type ;
u16 length ;
u8 information ;
u16 address_min ;
u16 address_max ;
u16 alignment ;
u16 range_length ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_large_vendor_desc {
u8 descriptor_type ;
u16 length ;
u8 vendor_defined [ 1 ] ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_memory_32_desc {
u8 descriptor_type ;
u16 length ;
u8 information ;
u32 address_min ;
u32 address_max ;
u32 alignment ;
u32 range_length ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_fixed_memory_32_desc {
u8 descriptor_type ;
u16 length ;
u8 information ;
u32 base_address ;
u32 range_length ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_extended_address_desc {
u8 descriptor_type ;
u16 length ;
u8 resource_type ;
u8 flags ;
u8 specific_flags ;
u8 revision_iD ;
u8 reserved ;
u64 granularity ;
u64 address_min ;
u64 address_max ;
u64 translation_offset ;
u64 address_length ;
u64 type_specific_attributes ;
u8 optional_fields [ 2 ] ; /* Used for length calculation only */
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
# define ASL_EXTENDED_ADDRESS_DESC_REVISION 1 /* ACPI 3.0 */
struct asl_qword_address_desc {
u8 descriptor_type ;
u16 length ;
u8 resource_type ;
u8 flags ;
u8 specific_flags ;
u64 granularity ;
u64 address_min ;
u64 address_max ;
u64 translation_offset ;
u64 address_length ;
u8 optional_fields [ 2 ] ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_dword_address_desc {
u8 descriptor_type ;
u16 length ;
u8 resource_type ;
u8 flags ;
u8 specific_flags ;
u32 granularity ;
u32 address_min ;
u32 address_max ;
u32 translation_offset ;
u32 address_length ;
u8 optional_fields [ 2 ] ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_word_address_desc {
u8 descriptor_type ;
u16 length ;
u8 resource_type ;
u8 flags ;
u8 specific_flags ;
u16 granularity ;
u16 address_min ;
u16 address_max ;
u16 translation_offset ;
u16 address_length ;
u8 optional_fields [ 2 ] ;
2005-04-17 02:20:36 +04:00
} ;
2005-08-05 08:44:28 +04:00
struct asl_extended_xrupt_desc {
u8 descriptor_type ;
u16 length ;
u8 flags ;
u8 table_length ;
u32 interrupt_number [ 1 ] ;
2005-04-17 02:20:36 +04:00
/* res_source_index, res_source optional fields follow */
} ;
2005-08-05 08:44:28 +04:00
struct asl_general_register_desc {
u8 descriptor_type ;
u16 length ;
u8 address_space_id ;
u8 bit_width ;
u8 bit_offset ;
u8 access_size ; /* ACPI 3.0, was Reserved */
u64 address ;
2005-04-17 02:20:36 +04:00
} ;
/* restore default alignment */
# pragma pack()
/* Union of all resource descriptors, so we can allocate the worst case */
2005-08-05 08:44:28 +04:00
union asl_resource_desc {
struct asl_irq_format_desc irq ;
struct asl_dma_format_desc dma ;
struct asl_start_dependent_desc std ;
struct asl_end_dependent_desc end ;
struct asl_io_port_desc iop ;
struct asl_fixed_io_port_desc fio ;
struct asl_small_vendor_desc smv ;
struct asl_end_tag_desc et ;
struct asl_memory_24_desc M24 ;
struct asl_large_vendor_desc lgv ;
struct asl_memory_32_desc M32 ;
struct asl_fixed_memory_32_desc F32 ;
struct asl_qword_address_desc qas ;
struct asl_dword_address_desc das ;
struct asl_word_address_desc was ;
struct asl_extended_address_desc eas ;
struct asl_extended_xrupt_desc exx ;
struct asl_general_register_desc grg ;
u32 u32_item ;
u16 u16_item ;
u8 U8item ;
2005-04-17 02:20:36 +04:00
} ;
# endif