acresrc.h revision 151937
1/******************************************************************************
2 *
3 * Name: acresrc.h - Resource Manager function prototypes
4 *       $Revision: 1.51 $
5 *
6 *****************************************************************************/
7
8/******************************************************************************
9 *
10 * 1. Copyright Notice
11 *
12 * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp.
13 * All rights reserved.
14 *
15 * 2. License
16 *
17 * 2.1. This is your license from Intel Corp. under its intellectual property
18 * rights.  You may have additional license terms from the party that provided
19 * you this software, covering your right to use that party's intellectual
20 * property rights.
21 *
22 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23 * copy of the source code appearing in this file ("Covered Code") an
24 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25 * base code distributed originally by Intel ("Original Intel Code") to copy,
26
27 * make derivatives, distribute, use and display any portion of the Covered
28 * Code in any form, with the right to sublicense such rights; and
29 *
30 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
31 * license (with the right to sublicense), under only those claims of Intel
32 * patents that are infringed by the Original Intel Code, to make, use, sell,
33 * offer to sell, and import the Covered Code and derivative works thereof
34 * solely to the minimum extent necessary to exercise the above copyright
35 * license, and in no event shall the patent license extend to any additions
36 * to or modifications of the Original Intel Code.  No other license or right
37 * is granted directly or by implication, estoppel or otherwise;
38 *
39 * The above copyright and patent license is granted only if the following
40 * conditions are met:
41 *
42 * 3. Conditions
43 *
44 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
45 * Redistribution of source code of any substantial portion of the Covered
46 * Code or modification with rights to further distribute source must include
47 * the above Copyright Notice, the above License, this list of Conditions,
48 * and the following Disclaimer and Export Compliance provision.  In addition,
49 * Licensee must cause all Covered Code to which Licensee contributes to
50 * contain a file documenting the changes Licensee made to create that Covered
51 * Code and the date of any change.  Licensee must include in that file the
52 * documentation of any changes made by any predecessor Licensee.  Licensee
53 * must include a prominent statement that the modification is derived,
54 * directly or indirectly, from Original Intel Code.
55 *
56 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
57 * Redistribution of source code of any substantial portion of the Covered
58 * Code or modification without rights to further distribute source must
59 * include the following Disclaimer and Export Compliance provision in the
60 * documentation and/or other materials provided with distribution.  In
61 * addition, Licensee may not authorize further sublicense of source of any
62 * portion of the Covered Code, and must include terms to the effect that the
63 * license from Licensee to its licensee is limited to the intellectual
64 * property embodied in the software Licensee provides to its licensee, and
65 * not to intellectual property embodied in modifications its licensee may
66 * make.
67 *
68 * 3.3. Redistribution of Executable. Redistribution in executable form of any
69 * substantial portion of the Covered Code or modification must reproduce the
70 * above Copyright Notice, and the following Disclaimer and Export Compliance
71 * provision in the documentation and/or other materials provided with the
72 * distribution.
73 *
74 * 3.4. Intel retains all right, title, and interest in and to the Original
75 * Intel Code.
76 *
77 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
78 * Intel shall be used in advertising or otherwise to promote the sale, use or
79 * other dealings in products derived from or relating to the Covered Code
80 * without prior written authorization from Intel.
81 *
82 * 4. Disclaimer and Export Compliance
83 *
84 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
85 * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
86 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
87 * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
88 * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
89 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
90 * PARTICULAR PURPOSE.
91 *
92 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
93 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
94 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
95 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
96 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
97 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
98 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
99 * LIMITED REMEDY.
100 *
101 * 4.3. Licensee shall not export, either directly or indirectly, any of this
102 * software or system incorporating such software without first obtaining any
103 * required license or other approval from the U. S. Department of Commerce or
104 * any other agency or department of the United States Government.  In the
105 * event Licensee exports any such software from the United States or
106 * re-exports any such software from a foreign destination, Licensee shall
107 * ensure that the distribution and export/re-export of the software is in
108 * compliance with all laws, regulations, orders, or other restrictions of the
109 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
110 * any of its subsidiaries will export/re-export any technical data, process,
111 * software, or service, directly or indirectly, to any country for which the
112 * United States government or any agency thereof requires an export license,
113 * other governmental approval, or letter of assurance, without first obtaining
114 * such license, approval or letter.
115 *
116 *****************************************************************************/
117
118#ifndef __ACRESRC_H__
119#define __ACRESRC_H__
120
121/* Need the AML resource descriptor structs */
122
123#include <contrib/dev/acpica/amlresrc.h>
124
125
126/*
127 * If possible, pack the following structures to byte alignment, since we
128 * don't care about performance for debug output
129 */
130#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED
131#pragma pack(1)
132#endif
133
134/*
135 * Individual entry for the resource conversion tables
136 */
137typedef const struct acpi_rsconvert_info
138{
139    UINT8                   Opcode;
140    UINT8                   ResourceOffset;
141    UINT8                   AmlOffset;
142    UINT8                   Value;
143
144} ACPI_RSCONVERT_INFO;
145
146/* Resource conversion opcodes */
147
148#define ACPI_RSC_INITGET                0
149#define ACPI_RSC_INITSET                1
150#define ACPI_RSC_FLAGINIT               2
151#define ACPI_RSC_1BITFLAG               3
152#define ACPI_RSC_2BITFLAG               4
153#define ACPI_RSC_COUNT                  5
154#define ACPI_RSC_COUNT16                6
155#define ACPI_RSC_LENGTH                 7
156#define ACPI_RSC_MOVE8                  8
157#define ACPI_RSC_MOVE16                 9
158#define ACPI_RSC_MOVE32                 10
159#define ACPI_RSC_MOVE64                 11
160#define ACPI_RSC_SET8                   12
161#define ACPI_RSC_DATA8                  13
162#define ACPI_RSC_ADDRESS                14
163#define ACPI_RSC_SOURCE                 15
164#define ACPI_RSC_SOURCEX                16
165#define ACPI_RSC_BITMASK                17
166#define ACPI_RSC_BITMASK16              18
167#define ACPI_RSC_EXIT_NE                19
168#define ACPI_RSC_EXIT_LE                20
169
170/* Resource Conversion sub-opcodes */
171
172#define ACPI_RSC_COMPARE_AML_LENGTH     0
173#define ACPI_RSC_COMPARE_VALUE          1
174
175#define ACPI_RSC_TABLE_SIZE(d)          (sizeof (d) / sizeof (ACPI_RSCONVERT_INFO))
176
177#define ACPI_RS_OFFSET(f)               (UINT8) ACPI_OFFSET (ACPI_RESOURCE,f)
178#define AML_OFFSET(f)                   (UINT8) ACPI_OFFSET (AML_RESOURCE,f)
179
180
181/*
182 * Resource dispatch and info tables
183 */
184typedef const struct acpi_resource_info
185{
186    UINT8                   LengthType;
187    UINT8                   MinimumAmlResourceLength;
188    UINT8                   MinimumInternalStructLength;
189
190} ACPI_RESOURCE_INFO;
191
192/* Types for LengthType above */
193
194#define ACPI_FIXED_LENGTH               0
195#define ACPI_VARIABLE_LENGTH            1
196#define ACPI_SMALL_VARIABLE_LENGTH      2
197
198typedef const struct acpi_rsdump_info
199{
200    UINT8                   Opcode;
201    UINT8                   Offset;
202    char                    *Name;
203    const void              *Pointer;
204
205} ACPI_RSDUMP_INFO;
206
207/* Values for the Opcode field above */
208
209#define ACPI_RSD_TITLE                  0
210#define ACPI_RSD_LITERAL                1
211#define ACPI_RSD_STRING                 2
212#define ACPI_RSD_UINT8                  3
213#define ACPI_RSD_UINT16                 4
214#define ACPI_RSD_UINT32                 5
215#define ACPI_RSD_UINT64                 6
216#define ACPI_RSD_1BITFLAG               7
217#define ACPI_RSD_2BITFLAG               8
218#define ACPI_RSD_SHORTLIST              9
219#define ACPI_RSD_LONGLIST               10
220#define ACPI_RSD_DWORDLIST              11
221#define ACPI_RSD_ADDRESS                12
222#define ACPI_RSD_SOURCE                 13
223
224/* restore default alignment */
225
226#pragma pack()
227
228
229/* Resource tables indexed by internal resource type */
230
231extern const UINT8              AcpiGbl_AmlResourceSizes[];
232extern ACPI_RSCONVERT_INFO      *AcpiGbl_SetResourceDispatch[];
233
234/* Resource tables indexed by raw AML resource descriptor type */
235
236extern ACPI_RESOURCE_INFO       AcpiGbl_SmResourceInfo[];
237extern ACPI_RESOURCE_INFO       AcpiGbl_LgResourceInfo[];
238extern ACPI_RSCONVERT_INFO      *AcpiGbl_SmGetResourceDispatch[];
239extern ACPI_RSCONVERT_INFO      *AcpiGbl_LgGetResourceDispatch[];
240
241
242/*
243 * rscreate
244 */
245ACPI_STATUS
246AcpiRsCreateResourceList (
247    ACPI_OPERAND_OBJECT     *AmlBuffer,
248    ACPI_BUFFER             *OutputBuffer);
249
250ACPI_STATUS
251AcpiRsCreateAmlResources (
252    ACPI_RESOURCE           *LinkedListBuffer,
253    ACPI_BUFFER             *OutputBuffer);
254
255ACPI_STATUS
256AcpiRsCreatePciRoutingTable (
257    ACPI_OPERAND_OBJECT     *PackageObject,
258    ACPI_BUFFER             *OutputBuffer);
259
260
261/*
262 * rsutils
263 */
264ACPI_STATUS
265AcpiRsGetPrtMethodData (
266    ACPI_HANDLE             Handle,
267    ACPI_BUFFER             *RetBuffer);
268
269ACPI_STATUS
270AcpiRsGetCrsMethodData (
271    ACPI_HANDLE             Handle,
272    ACPI_BUFFER             *RetBuffer);
273
274ACPI_STATUS
275AcpiRsGetPrsMethodData (
276    ACPI_HANDLE             Handle,
277    ACPI_BUFFER             *RetBuffer);
278
279ACPI_STATUS
280AcpiRsGetMethodData (
281    ACPI_HANDLE             Handle,
282    char                    *Path,
283    ACPI_BUFFER             *RetBuffer);
284
285ACPI_STATUS
286AcpiRsSetSrsMethodData (
287    ACPI_HANDLE             Handle,
288    ACPI_BUFFER             *RetBuffer);
289
290
291/*
292 * rscalc
293 */
294ACPI_STATUS
295AcpiRsGetListLength (
296    UINT8                   *AmlBuffer,
297    UINT32                  AmlBufferLength,
298    ACPI_SIZE               *SizeNeeded);
299
300ACPI_STATUS
301AcpiRsGetAmlLength (
302    ACPI_RESOURCE           *LinkedListBuffer,
303    ACPI_SIZE               *SizeNeeded);
304
305ACPI_STATUS
306AcpiRsGetPciRoutingTableLength (
307    ACPI_OPERAND_OBJECT     *PackageObject,
308    ACPI_SIZE               *BufferSizeNeeded);
309
310ACPI_STATUS
311AcpiRsConvertAmlToResources (
312    UINT8                   *AmlBuffer,
313    UINT32                  AmlBufferLength,
314    UINT8                   *OutputBuffer);
315
316ACPI_STATUS
317AcpiRsConvertResourcesToAml (
318    ACPI_RESOURCE           *Resource,
319    ACPI_SIZE               AmlSizeNeeded,
320    UINT8                   *OutputBuffer);
321
322
323/*
324 * rsaddr
325 */
326void
327AcpiRsSetAddressCommon (
328    AML_RESOURCE            *Aml,
329    ACPI_RESOURCE           *Resource);
330
331BOOLEAN
332AcpiRsGetAddressCommon (
333    ACPI_RESOURCE           *Resource,
334    AML_RESOURCE            *Aml);
335
336
337/*
338 * rsmisc
339 */
340ACPI_STATUS
341AcpiRsConvertAmlToResource (
342    ACPI_RESOURCE           *Resource,
343    AML_RESOURCE            *Aml,
344    ACPI_RSCONVERT_INFO     *Info);
345
346ACPI_STATUS
347AcpiRsConvertResourceToAml (
348    ACPI_RESOURCE           *Resource,
349    AML_RESOURCE            *Aml,
350    ACPI_RSCONVERT_INFO     *Info);
351
352
353/*
354 * rsutils
355 */
356void
357AcpiRsMoveData (
358    void                    *Destination,
359    void                    *Source,
360    UINT16                  ItemCount,
361    UINT8                   MoveType);
362
363UINT8
364AcpiRsDecodeBitmask (
365    UINT16                  Mask,
366    UINT8                   *List);
367
368UINT16
369AcpiRsEncodeBitmask (
370    UINT8                   *List,
371    UINT8                   Count);
372
373ACPI_RS_LENGTH
374AcpiRsGetResourceSource (
375    ACPI_RS_LENGTH          ResourceLength,
376    ACPI_RS_LENGTH          MinimumLength,
377    ACPI_RESOURCE_SOURCE    *ResourceSource,
378    AML_RESOURCE            *Aml,
379    char                    *StringPtr);
380
381ACPI_RSDESC_SIZE
382AcpiRsSetResourceSource (
383    AML_RESOURCE            *Aml,
384    ACPI_RS_LENGTH          MinimumLength,
385    ACPI_RESOURCE_SOURCE    *ResourceSource);
386
387void
388AcpiRsSetResourceHeader (
389    UINT8                   DescriptorType,
390    ACPI_RSDESC_SIZE        TotalLength,
391    AML_RESOURCE            *Aml);
392
393void
394AcpiRsSetResourceLength (
395    ACPI_RSDESC_SIZE        TotalLength,
396    AML_RESOURCE            *Aml);
397
398ACPI_RESOURCE_INFO *
399AcpiRsGetResourceInfo (
400    UINT8                   ResourceType);
401
402
403/*
404 * rsdump
405 */
406void
407AcpiRsDumpResourceList (
408    ACPI_RESOURCE           *Resource);
409
410void
411AcpiRsDumpIrqList (
412    UINT8                   *RouteTable);
413
414
415/*
416 * Resource conversion tables
417 */
418extern ACPI_RSCONVERT_INFO      AcpiRsConvertDma[];
419extern ACPI_RSCONVERT_INFO      AcpiRsConvertEndDpf[];
420extern ACPI_RSCONVERT_INFO      AcpiRsConvertIo[];
421extern ACPI_RSCONVERT_INFO      AcpiRsConvertFixedIo[];
422extern ACPI_RSCONVERT_INFO      AcpiRsConvertEndTag[];
423extern ACPI_RSCONVERT_INFO      AcpiRsConvertMemory24[];
424extern ACPI_RSCONVERT_INFO      AcpiRsConvertGenericReg[];
425extern ACPI_RSCONVERT_INFO      AcpiRsConvertMemory32[];
426extern ACPI_RSCONVERT_INFO      AcpiRsConvertFixedMemory32[];
427extern ACPI_RSCONVERT_INFO      AcpiRsConvertAddress32[];
428extern ACPI_RSCONVERT_INFO      AcpiRsConvertAddress16[];
429extern ACPI_RSCONVERT_INFO      AcpiRsConvertExtIrq[];
430extern ACPI_RSCONVERT_INFO      AcpiRsConvertAddress64[];
431extern ACPI_RSCONVERT_INFO      AcpiRsConvertExtAddress64[];
432
433/* These resources require separate get/set tables */
434
435extern ACPI_RSCONVERT_INFO      AcpiRsGetIrq[];
436extern ACPI_RSCONVERT_INFO      AcpiRsGetStartDpf[];
437extern ACPI_RSCONVERT_INFO      AcpiRsGetVendorSmall[];
438extern ACPI_RSCONVERT_INFO      AcpiRsGetVendorLarge[];
439
440extern ACPI_RSCONVERT_INFO      AcpiRsSetIrq[];
441extern ACPI_RSCONVERT_INFO      AcpiRsSetStartDpf[];
442extern ACPI_RSCONVERT_INFO      AcpiRsSetVendor[];
443
444
445#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
446/*
447 * rsinfo
448 */
449extern ACPI_RSDUMP_INFO         *AcpiGbl_DumpResourceDispatch[];
450
451/*
452 * rsdump
453 */
454extern ACPI_RSDUMP_INFO         AcpiRsDumpIrq[];
455extern ACPI_RSDUMP_INFO         AcpiRsDumpDma[];
456extern ACPI_RSDUMP_INFO         AcpiRsDumpStartDpf[];
457extern ACPI_RSDUMP_INFO         AcpiRsDumpEndDpf[];
458extern ACPI_RSDUMP_INFO         AcpiRsDumpIo[];
459extern ACPI_RSDUMP_INFO         AcpiRsDumpFixedIo[];
460extern ACPI_RSDUMP_INFO         AcpiRsDumpVendor[];
461extern ACPI_RSDUMP_INFO         AcpiRsDumpEndTag[];
462extern ACPI_RSDUMP_INFO         AcpiRsDumpMemory24[];
463extern ACPI_RSDUMP_INFO         AcpiRsDumpMemory32[];
464extern ACPI_RSDUMP_INFO         AcpiRsDumpFixedMemory32[];
465extern ACPI_RSDUMP_INFO         AcpiRsDumpAddress16[];
466extern ACPI_RSDUMP_INFO         AcpiRsDumpAddress32[];
467extern ACPI_RSDUMP_INFO         AcpiRsDumpAddress64[];
468extern ACPI_RSDUMP_INFO         AcpiRsDumpExtAddress64[];
469extern ACPI_RSDUMP_INFO         AcpiRsDumpExtIrq[];
470extern ACPI_RSDUMP_INFO         AcpiRsDumpGenericReg[];
471#endif
472
473#endif  /* __ACRESRC_H__ */
474