Blame view

drivers/acpi/acpica/amlresrc.h 9.74 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
  
  /******************************************************************************
   *
   * Module Name: amlresrc.h - AML resource descriptors
   *
   *****************************************************************************/
  
  /*
75a44ce00   Len Brown   ACPICA: update In...
9
   * Copyright (C) 2000 - 2008, Intel Corp.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
   * 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.
   */
61686124f   Bob Moore   [ACPI] ACPICA 200...
44
  /* acpisrc:struct_defs -- for acpisrc conversion */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
45
46
  #ifndef __AMLRESRC_H
  #define __AMLRESRC_H
61686124f   Bob Moore   [ACPI] ACPICA 200...
47
48
49
50
  /*
   * Resource descriptor tags, as defined in the ACPI specification.
   * Used to symbolically reference fields within a descriptor.
   */
8313524a0   Bob Moore   ACPI: ACPICA 2006...
51
52
53
54
55
56
57
58
59
60
61
62
  #define ACPI_RESTAG_ADDRESS                     "_ADR"
  #define ACPI_RESTAG_ALIGNMENT                   "_ALN"
  #define ACPI_RESTAG_ADDRESSSPACE                "_ASI"
  #define ACPI_RESTAG_ACCESSSIZE                  "_ASZ"
  #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES      "_ATT"
  #define ACPI_RESTAG_BASEADDRESS                 "_BAS"
  #define ACPI_RESTAG_BUSMASTER                   "_BM_"	/* Master(1), Slave(0) */
  #define ACPI_RESTAG_DECODE                      "_DEC"
  #define ACPI_RESTAG_DMA                         "_DMA"
  #define ACPI_RESTAG_DMATYPE                     "_TYP"	/* Compatible(0), A(1), B(2), F(3) */
  #define ACPI_RESTAG_GRANULARITY                 "_GRA"
  #define ACPI_RESTAG_INTERRUPT                   "_INT"
958dd242b   Bob Moore   ACPI: ACPICA 2006...
63
64
  #define ACPI_RESTAG_INTERRUPTLEVEL              "_LL_"	/* active_lo(1), active_hi(0) */
  #define ACPI_RESTAG_INTERRUPTSHARE              "_SHR"	/* Shareable(1), no_share(0) */
8313524a0   Bob Moore   ACPI: ACPICA 2006...
65
66
67
  #define ACPI_RESTAG_INTERRUPTTYPE               "_HE_"	/* Edge(1), Level(0) */
  #define ACPI_RESTAG_LENGTH                      "_LEN"
  #define ACPI_RESTAG_MEMATTRIBUTES               "_MTP"	/* Memory(0), Reserved(1), ACPI(2), NVS(3) */
958dd242b   Bob Moore   ACPI: ACPICA 2006...
68
  #define ACPI_RESTAG_MEMTYPE                     "_MEM"	/* non_cache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
8313524a0   Bob Moore   ACPI: ACPICA 2006...
69
70
71
72
73
74
75
  #define ACPI_RESTAG_MAXADDR                     "_MAX"
  #define ACPI_RESTAG_MINADDR                     "_MIN"
  #define ACPI_RESTAG_MAXTYPE                     "_MAF"
  #define ACPI_RESTAG_MINTYPE                     "_MIF"
  #define ACPI_RESTAG_REGISTERBITOFFSET           "_RBO"
  #define ACPI_RESTAG_REGISTERBITWIDTH            "_RBW"
  #define ACPI_RESTAG_RANGETYPE                   "_RNG"
958dd242b   Bob Moore   ACPI: ACPICA 2006...
76
  #define ACPI_RESTAG_READWRITETYPE               "_RW_"	/* read_only(0), Writeable (1) */
8313524a0   Bob Moore   ACPI: ACPICA 2006...
77
78
79
  #define ACPI_RESTAG_TRANSLATION                 "_TRA"
  #define ACPI_RESTAG_TRANSTYPE                   "_TRS"	/* Sparse(1), Dense(0) */
  #define ACPI_RESTAG_TYPE                        "_TTP"	/* Translation(1), Static (0) */
958dd242b   Bob Moore   ACPI: ACPICA 2006...
80
  #define ACPI_RESTAG_XFERTYPE                    "_SIZ"	/* 8(0), 8_and16(1), 16(2) */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
81
82
83
84
85
86
87
88
89
90
  
  /* 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
4be44fcd3   Len Brown   [ACPI] Lindent al...
91
92
93
94
  struct asl_resource_node {
  	u32 buffer_length;
  	void *buffer;
  	struct asl_resource_node *next;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
95
  };
96db255c8   Bob Moore   [ACPI] ACPICA 200...
96
97
98
99
  /* Macros used to generate AML resource length fields */
  
  #define ACPI_AML_SIZE_LARGE(r)      (sizeof (r) - sizeof (struct aml_resource_large_header))
  #define ACPI_AML_SIZE_SMALL(r)      (sizeof (r) - sizeof (struct aml_resource_small_header))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
100
101
102
103
  /*
   * Resource descriptors defined in the ACPI specification.
   *
   * Packing/alignment must be BYTE because these descriptors
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
104
   * are used to overlay the raw AML byte stream.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
105
106
   */
  #pragma pack(1)
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
107
108
109
110
  /*
   * SMALL descriptors
   */
  #define AML_RESOURCE_SMALL_HEADER_COMMON \
61686124f   Bob Moore   [ACPI] ACPICA 200...
111
  	u8                              descriptor_type;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
112
113
114
115
116
117
  
  struct aml_resource_small_header {
  AML_RESOURCE_SMALL_HEADER_COMMON};
  
  struct aml_resource_irq {
  	AML_RESOURCE_SMALL_HEADER_COMMON u16 irq_mask;
4be44fcd3   Len Brown   [ACPI] Lindent al...
118
  	u8 flags;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
119
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
120
121
  struct aml_resource_irq_noflags {
  	AML_RESOURCE_SMALL_HEADER_COMMON u16 irq_mask;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
122
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
123
124
  struct aml_resource_dma {
  	AML_RESOURCE_SMALL_HEADER_COMMON u8 dma_channel_mask;
4be44fcd3   Len Brown   [ACPI] Lindent al...
125
  	u8 flags;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
126
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
127
128
  struct aml_resource_start_dependent {
  	AML_RESOURCE_SMALL_HEADER_COMMON u8 flags;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
129
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
130
131
  struct aml_resource_start_dependent_noprio {
  AML_RESOURCE_SMALL_HEADER_COMMON};
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
132

50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
133
134
  struct aml_resource_end_dependent {
  AML_RESOURCE_SMALL_HEADER_COMMON};
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
135

50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
136
  struct aml_resource_io {
0897831bb   Bob Moore   [ACPI] ACPICA 200...
137
  	AML_RESOURCE_SMALL_HEADER_COMMON u8 flags;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
138
139
  	u16 minimum;
  	u16 maximum;
4be44fcd3   Len Brown   [ACPI] Lindent al...
140
  	u8 alignment;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
141
  	u8 address_length;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
142
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
143
144
145
  struct aml_resource_fixed_io {
  	AML_RESOURCE_SMALL_HEADER_COMMON u16 address;
  	u8 address_length;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
146
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
147
148
  struct aml_resource_vendor_small {
  AML_RESOURCE_SMALL_HEADER_COMMON};
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
149

50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
150
151
  struct aml_resource_end_tag {
  	AML_RESOURCE_SMALL_HEADER_COMMON u8 checksum;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
152
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
153
154
155
156
  /*
   * LARGE descriptors
   */
  #define AML_RESOURCE_LARGE_HEADER_COMMON \
61686124f   Bob Moore   [ACPI] ACPICA 200...
157
158
  	u8                              descriptor_type;\
  	u16                             resource_length;
bda663d36   Robert Moore   [ACPI] ACPICA 200...
159

50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
160
161
  struct aml_resource_large_header {
  AML_RESOURCE_LARGE_HEADER_COMMON};
bda663d36   Robert Moore   [ACPI] ACPICA 200...
162

50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
163
  struct aml_resource_memory24 {
0897831bb   Bob Moore   [ACPI] ACPICA 200...
164
  	AML_RESOURCE_LARGE_HEADER_COMMON u8 flags;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
165
166
  	u16 minimum;
  	u16 maximum;
4be44fcd3   Len Brown   [ACPI] Lindent al...
167
  	u16 alignment;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
168
  	u16 address_length;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
169
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
170
171
  struct aml_resource_vendor_large {
  AML_RESOURCE_LARGE_HEADER_COMMON};
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
172

50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
173
  struct aml_resource_memory32 {
0897831bb   Bob Moore   [ACPI] ACPICA 200...
174
  	AML_RESOURCE_LARGE_HEADER_COMMON u8 flags;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
175
176
  	u32 minimum;
  	u32 maximum;
4be44fcd3   Len Brown   [ACPI] Lindent al...
177
  	u32 alignment;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
178
  	u32 address_length;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
179
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
180
  struct aml_resource_fixed_memory32 {
0897831bb   Bob Moore   [ACPI] ACPICA 200...
181
  	AML_RESOURCE_LARGE_HEADER_COMMON u8 flags;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
182
183
  	u32 address;
  	u32 address_length;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
184
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
185
  #define AML_RESOURCE_ADDRESS_COMMON \
61686124f   Bob Moore   [ACPI] ACPICA 200...
186
187
188
  	u8                              resource_type; \
  	u8                              flags; \
  	u8                              specific_flags;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
189
190
191
192
193
194
195
  
  struct aml_resource_address {
  AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_ADDRESS_COMMON};
  
  struct aml_resource_extended_address64 {
  	AML_RESOURCE_LARGE_HEADER_COMMON
  	    AML_RESOURCE_ADDRESS_COMMON u8 revision_iD;
4be44fcd3   Len Brown   [ACPI] Lindent al...
196
197
  	u8 reserved;
  	u64 granularity;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
198
199
  	u64 minimum;
  	u64 maximum;
4be44fcd3   Len Brown   [ACPI] Lindent al...
200
201
  	u64 translation_offset;
  	u64 address_length;
0897831bb   Bob Moore   [ACPI] ACPICA 200...
202
  	u64 type_specific;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
203
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
204
  #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION          1	/* ACPI 3.0 */
4be44fcd3   Len Brown   [ACPI] Lindent al...
205

50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
206
207
208
209
210
  struct aml_resource_address64 {
  	AML_RESOURCE_LARGE_HEADER_COMMON
  	    AML_RESOURCE_ADDRESS_COMMON u64 granularity;
  	u64 minimum;
  	u64 maximum;
4be44fcd3   Len Brown   [ACPI] Lindent al...
211
212
  	u64 translation_offset;
  	u64 address_length;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
213
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
214
215
216
217
218
  struct aml_resource_address32 {
  	AML_RESOURCE_LARGE_HEADER_COMMON
  	    AML_RESOURCE_ADDRESS_COMMON u32 granularity;
  	u32 minimum;
  	u32 maximum;
4be44fcd3   Len Brown   [ACPI] Lindent al...
219
220
  	u32 translation_offset;
  	u32 address_length;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
221
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
222
223
224
225
226
  struct aml_resource_address16 {
  	AML_RESOURCE_LARGE_HEADER_COMMON
  	    AML_RESOURCE_ADDRESS_COMMON u16 granularity;
  	u16 minimum;
  	u16 maximum;
4be44fcd3   Len Brown   [ACPI] Lindent al...
227
228
  	u16 translation_offset;
  	u16 address_length;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
229
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
230
231
  struct aml_resource_extended_irq {
  	AML_RESOURCE_LARGE_HEADER_COMMON u8 flags;
0897831bb   Bob Moore   [ACPI] ACPICA 200...
232
233
  	u8 interrupt_count;
  	u32 interrupts[1];
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
234
235
  	/* res_source_index, res_source optional fields follow */
  };
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
236
237
  struct aml_resource_generic_register {
  	AML_RESOURCE_LARGE_HEADER_COMMON u8 address_space_id;
4be44fcd3   Len Brown   [ACPI] Lindent al...
238
239
  	u8 bit_width;
  	u8 bit_offset;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
240
  	u8 access_size;		/* ACPI 3.0, was previously Reserved */
4be44fcd3   Len Brown   [ACPI] Lindent al...
241
  	u64 address;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
242
243
244
245
246
247
248
  };
  
  /* restore default alignment */
  
  #pragma pack()
  
  /* Union of all resource descriptors, so we can allocate the worst case */
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
249
250
  union aml_resource {
  	/* Descriptor headers */
8313524a0   Bob Moore   ACPI: ACPICA 2006...
251
  	u8 descriptor_type;
50eca3eb8   Bob Moore   [ACPI] ACPICA 200...
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
  	struct aml_resource_small_header small_header;
  	struct aml_resource_large_header large_header;
  
  	/* Small resource descriptors */
  
  	struct aml_resource_irq irq;
  	struct aml_resource_dma dma;
  	struct aml_resource_start_dependent start_dpf;
  	struct aml_resource_end_dependent end_dpf;
  	struct aml_resource_io io;
  	struct aml_resource_fixed_io fixed_io;
  	struct aml_resource_vendor_small vendor_small;
  	struct aml_resource_end_tag end_tag;
  
  	/* Large resource descriptors */
  
  	struct aml_resource_memory24 memory24;
  	struct aml_resource_generic_register generic_reg;
  	struct aml_resource_vendor_large vendor_large;
  	struct aml_resource_memory32 memory32;
  	struct aml_resource_fixed_memory32 fixed_memory32;
  	struct aml_resource_address16 address16;
  	struct aml_resource_address32 address32;
  	struct aml_resource_address64 address64;
  	struct aml_resource_extended_address64 ext_address64;
  	struct aml_resource_extended_irq extended_irq;
  
  	/* Utility overlays */
  
  	struct aml_resource_address address;
958dd242b   Bob Moore   ACPI: ACPICA 2006...
282
283
284
  	u32 dword_item;
  	u16 word_item;
  	u8 byte_item;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
285
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
286
  #endif