xref: /illumos-gate/usr/src/uts/intel/sys/acpi/acrestyp.h (revision 35786f68)
1aa2aa9a6SDana Myers /******************************************************************************
2aa2aa9a6SDana Myers  *
3aa2aa9a6SDana Myers  * Name: acrestyp.h - Defines, types, and structures for resource descriptors
4aa2aa9a6SDana Myers  *
5aa2aa9a6SDana Myers  *****************************************************************************/
6aa2aa9a6SDana Myers 
7*35786f68SRobert Mustacchi /******************************************************************************
8*35786f68SRobert Mustacchi  *
9*35786f68SRobert Mustacchi  * 1. Copyright Notice
10*35786f68SRobert Mustacchi  *
11*35786f68SRobert Mustacchi  * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
12aa2aa9a6SDana Myers  * All rights reserved.
13aa2aa9a6SDana Myers  *
14*35786f68SRobert Mustacchi  * 2. License
15*35786f68SRobert Mustacchi  *
16*35786f68SRobert Mustacchi  * 2.1. This is your license from Intel Corp. under its intellectual property
17*35786f68SRobert Mustacchi  * rights. You may have additional license terms from the party that provided
18*35786f68SRobert Mustacchi  * you this software, covering your right to use that party's intellectual
19*35786f68SRobert Mustacchi  * property rights.
20*35786f68SRobert Mustacchi  *
21*35786f68SRobert Mustacchi  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22*35786f68SRobert Mustacchi  * copy of the source code appearing in this file ("Covered Code") an
23*35786f68SRobert Mustacchi  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24*35786f68SRobert Mustacchi  * base code distributed originally by Intel ("Original Intel Code") to copy,
25*35786f68SRobert Mustacchi  * make derivatives, distribute, use and display any portion of the Covered
26*35786f68SRobert Mustacchi  * Code in any form, with the right to sublicense such rights; and
27*35786f68SRobert Mustacchi  *
28*35786f68SRobert Mustacchi  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29*35786f68SRobert Mustacchi  * license (with the right to sublicense), under only those claims of Intel
30*35786f68SRobert Mustacchi  * patents that are infringed by the Original Intel Code, to make, use, sell,
31*35786f68SRobert Mustacchi  * offer to sell, and import the Covered Code and derivative works thereof
32*35786f68SRobert Mustacchi  * solely to the minimum extent necessary to exercise the above copyright
33*35786f68SRobert Mustacchi  * license, and in no event shall the patent license extend to any additions
34*35786f68SRobert Mustacchi  * to or modifications of the Original Intel Code. No other license or right
35*35786f68SRobert Mustacchi  * is granted directly or by implication, estoppel or otherwise;
36*35786f68SRobert Mustacchi  *
37*35786f68SRobert Mustacchi  * The above copyright and patent license is granted only if the following
38*35786f68SRobert Mustacchi  * conditions are met:
39*35786f68SRobert Mustacchi  *
40*35786f68SRobert Mustacchi  * 3. Conditions
41*35786f68SRobert Mustacchi  *
42*35786f68SRobert Mustacchi  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43*35786f68SRobert Mustacchi  * Redistribution of source code of any substantial portion of the Covered
44*35786f68SRobert Mustacchi  * Code or modification with rights to further distribute source must include
45*35786f68SRobert Mustacchi  * the above Copyright Notice, the above License, this list of Conditions,
46*35786f68SRobert Mustacchi  * and the following Disclaimer and Export Compliance provision. In addition,
47*35786f68SRobert Mustacchi  * Licensee must cause all Covered Code to which Licensee contributes to
48*35786f68SRobert Mustacchi  * contain a file documenting the changes Licensee made to create that Covered
49*35786f68SRobert Mustacchi  * Code and the date of any change. Licensee must include in that file the
50*35786f68SRobert Mustacchi  * documentation of any changes made by any predecessor Licensee. Licensee
51*35786f68SRobert Mustacchi  * must include a prominent statement that the modification is derived,
52*35786f68SRobert Mustacchi  * directly or indirectly, from Original Intel Code.
53*35786f68SRobert Mustacchi  *
54*35786f68SRobert Mustacchi  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55*35786f68SRobert Mustacchi  * Redistribution of source code of any substantial portion of the Covered
56*35786f68SRobert Mustacchi  * Code or modification without rights to further distribute source must
57*35786f68SRobert Mustacchi  * include the following Disclaimer and Export Compliance provision in the
58*35786f68SRobert Mustacchi  * documentation and/or other materials provided with distribution. In
59*35786f68SRobert Mustacchi  * addition, Licensee may not authorize further sublicense of source of any
60*35786f68SRobert Mustacchi  * portion of the Covered Code, and must include terms to the effect that the
61*35786f68SRobert Mustacchi  * license from Licensee to its licensee is limited to the intellectual
62*35786f68SRobert Mustacchi  * property embodied in the software Licensee provides to its licensee, and
63*35786f68SRobert Mustacchi  * not to intellectual property embodied in modifications its licensee may
64*35786f68SRobert Mustacchi  * make.
65*35786f68SRobert Mustacchi  *
66*35786f68SRobert Mustacchi  * 3.3. Redistribution of Executable. Redistribution in executable form of any
67*35786f68SRobert Mustacchi  * substantial portion of the Covered Code or modification must reproduce the
68*35786f68SRobert Mustacchi  * above Copyright Notice, and the following Disclaimer and Export Compliance
69*35786f68SRobert Mustacchi  * provision in the documentation and/or other materials provided with the
70*35786f68SRobert Mustacchi  * distribution.
71*35786f68SRobert Mustacchi  *
72*35786f68SRobert Mustacchi  * 3.4. Intel retains all right, title, and interest in and to the Original
73*35786f68SRobert Mustacchi  * Intel Code.
74*35786f68SRobert Mustacchi  *
75*35786f68SRobert Mustacchi  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76*35786f68SRobert Mustacchi  * Intel shall be used in advertising or otherwise to promote the sale, use or
77*35786f68SRobert Mustacchi  * other dealings in products derived from or relating to the Covered Code
78*35786f68SRobert Mustacchi  * without prior written authorization from Intel.
79*35786f68SRobert Mustacchi  *
80*35786f68SRobert Mustacchi  * 4. Disclaimer and Export Compliance
81*35786f68SRobert Mustacchi  *
82*35786f68SRobert Mustacchi  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83*35786f68SRobert Mustacchi  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84*35786f68SRobert Mustacchi  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85*35786f68SRobert Mustacchi  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86*35786f68SRobert Mustacchi  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87*35786f68SRobert Mustacchi  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88*35786f68SRobert Mustacchi  * PARTICULAR PURPOSE.
89*35786f68SRobert Mustacchi  *
90*35786f68SRobert Mustacchi  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91*35786f68SRobert Mustacchi  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92*35786f68SRobert Mustacchi  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93*35786f68SRobert Mustacchi  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94*35786f68SRobert Mustacchi  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95*35786f68SRobert Mustacchi  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96*35786f68SRobert Mustacchi  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97*35786f68SRobert Mustacchi  * LIMITED REMEDY.
98*35786f68SRobert Mustacchi  *
99*35786f68SRobert Mustacchi  * 4.3. Licensee shall not export, either directly or indirectly, any of this
100*35786f68SRobert Mustacchi  * software or system incorporating such software without first obtaining any
101*35786f68SRobert Mustacchi  * required license or other approval from the U. S. Department of Commerce or
102*35786f68SRobert Mustacchi  * any other agency or department of the United States Government. In the
103*35786f68SRobert Mustacchi  * event Licensee exports any such software from the United States or
104*35786f68SRobert Mustacchi  * re-exports any such software from a foreign destination, Licensee shall
105*35786f68SRobert Mustacchi  * ensure that the distribution and export/re-export of the software is in
106*35786f68SRobert Mustacchi  * compliance with all laws, regulations, orders, or other restrictions of the
107*35786f68SRobert Mustacchi  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108*35786f68SRobert Mustacchi  * any of its subsidiaries will export/re-export any technical data, process,
109*35786f68SRobert Mustacchi  * software, or service, directly or indirectly, to any country for which the
110*35786f68SRobert Mustacchi  * United States government or any agency thereof requires an export license,
111*35786f68SRobert Mustacchi  * other governmental approval, or letter of assurance, without first obtaining
112*35786f68SRobert Mustacchi  * such license, approval or letter.
113*35786f68SRobert Mustacchi  *
114*35786f68SRobert Mustacchi  *****************************************************************************
115*35786f68SRobert Mustacchi  *
116*35786f68SRobert Mustacchi  * Alternatively, you may choose to be licensed under the terms of the
117*35786f68SRobert Mustacchi  * following license:
118*35786f68SRobert Mustacchi  *
11926f3cdf0SGordon Ross  * Redistribution and use in source and binary forms, with or without
12026f3cdf0SGordon Ross  * modification, are permitted provided that the following conditions
12126f3cdf0SGordon Ross  * are met:
12226f3cdf0SGordon Ross  * 1. Redistributions of source code must retain the above copyright
12326f3cdf0SGordon Ross  *    notice, this list of conditions, and the following disclaimer,
12426f3cdf0SGordon Ross  *    without modification.
12526f3cdf0SGordon Ross  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12626f3cdf0SGordon Ross  *    substantially similar to the "NO WARRANTY" disclaimer below
12726f3cdf0SGordon Ross  *    ("Disclaimer") and any redistribution must be conditioned upon
12826f3cdf0SGordon Ross  *    including a substantially similar Disclaimer requirement for further
12926f3cdf0SGordon Ross  *    binary redistribution.
13026f3cdf0SGordon Ross  * 3. Neither the names of the above-listed copyright holders nor the names
13126f3cdf0SGordon Ross  *    of any contributors may be used to endorse or promote products derived
13226f3cdf0SGordon Ross  *    from this software without specific prior written permission.
133aa2aa9a6SDana Myers  *
13426f3cdf0SGordon Ross  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13526f3cdf0SGordon Ross  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136*35786f68SRobert Mustacchi  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13726f3cdf0SGordon Ross  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138*35786f68SRobert Mustacchi  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139*35786f68SRobert Mustacchi  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140*35786f68SRobert Mustacchi  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141*35786f68SRobert Mustacchi  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142*35786f68SRobert Mustacchi  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143*35786f68SRobert Mustacchi  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144*35786f68SRobert Mustacchi  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
145*35786f68SRobert Mustacchi  *
146*35786f68SRobert Mustacchi  * Alternatively, you may choose to be licensed under the terms of the
147*35786f68SRobert Mustacchi  * GNU General Public License ("GPL") version 2 as published by the Free
148*35786f68SRobert Mustacchi  * Software Foundation.
149*35786f68SRobert Mustacchi  *
150*35786f68SRobert Mustacchi  *****************************************************************************/
151aa2aa9a6SDana Myers 
152aa2aa9a6SDana Myers #ifndef __ACRESTYP_H__
153aa2aa9a6SDana Myers #define __ACRESTYP_H__
154aa2aa9a6SDana Myers 
155aa2aa9a6SDana Myers 
156aa2aa9a6SDana Myers /*
157aa2aa9a6SDana Myers  * Definitions for Resource Attributes
158aa2aa9a6SDana Myers  */
159aa2aa9a6SDana Myers typedef UINT16                          ACPI_RS_LENGTH;    /* Resource Length field is fixed at 16 bits */
160aa2aa9a6SDana Myers typedef UINT32                          ACPI_RSDESC_SIZE;  /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */
161aa2aa9a6SDana Myers 
162aa2aa9a6SDana Myers /*
163aa2aa9a6SDana Myers  * Memory Attributes
164aa2aa9a6SDana Myers  */
165aa2aa9a6SDana Myers #define ACPI_READ_ONLY_MEMORY           (UINT8) 0x00
166aa2aa9a6SDana Myers #define ACPI_READ_WRITE_MEMORY          (UINT8) 0x01
167aa2aa9a6SDana Myers 
168aa2aa9a6SDana Myers #define ACPI_NON_CACHEABLE_MEMORY       (UINT8) 0x00
169aa2aa9a6SDana Myers #define ACPI_CACHABLE_MEMORY            (UINT8) 0x01
170aa2aa9a6SDana Myers #define ACPI_WRITE_COMBINING_MEMORY     (UINT8) 0x02
171aa2aa9a6SDana Myers #define ACPI_PREFETCHABLE_MEMORY        (UINT8) 0x03
172aa2aa9a6SDana Myers 
1737b1019a6SJerry Jelinek /*! [Begin] no source code translation */
174aa2aa9a6SDana Myers /*
175aa2aa9a6SDana Myers  * IO Attributes
176aa2aa9a6SDana Myers  * The ISA IO ranges are:     n000-n0FFh,  n400-n4FFh, n800-n8FFh, nC00-nCFFh.
177aa2aa9a6SDana Myers  * The non-ISA IO ranges are: n100-n3FFh,  n500-n7FFh, n900-nBFFh, nCD0-nFFFh.
178aa2aa9a6SDana Myers  */
1797b1019a6SJerry Jelinek /*! [End] no source code translation !*/
1807b1019a6SJerry Jelinek 
181aa2aa9a6SDana Myers #define ACPI_NON_ISA_ONLY_RANGES        (UINT8) 0x01
182aa2aa9a6SDana Myers #define ACPI_ISA_ONLY_RANGES            (UINT8) 0x02
183aa2aa9a6SDana Myers #define ACPI_ENTIRE_RANGE               (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES)
184aa2aa9a6SDana Myers 
185aa2aa9a6SDana Myers /* Type of translation - 1=Sparse, 0=Dense */
186aa2aa9a6SDana Myers 
187aa2aa9a6SDana Myers #define ACPI_SPARSE_TRANSLATION         (UINT8) 0x01
188aa2aa9a6SDana Myers 
189aa2aa9a6SDana Myers /*
190aa2aa9a6SDana Myers  * IO Port Descriptor Decode
191aa2aa9a6SDana Myers  */
192aa2aa9a6SDana Myers #define ACPI_DECODE_10                  (UINT8) 0x00    /* 10-bit IO address decode */
193aa2aa9a6SDana Myers #define ACPI_DECODE_16                  (UINT8) 0x01    /* 16-bit IO address decode */
194aa2aa9a6SDana Myers 
195aa2aa9a6SDana Myers /*
1967b1019a6SJerry Jelinek  * Interrupt attributes - used in multiple descriptors
197aa2aa9a6SDana Myers  */
1987b1019a6SJerry Jelinek 
1997b1019a6SJerry Jelinek /* Triggering */
2007b1019a6SJerry Jelinek 
201aa2aa9a6SDana Myers #define ACPI_LEVEL_SENSITIVE            (UINT8) 0x00
202aa2aa9a6SDana Myers #define ACPI_EDGE_SENSITIVE             (UINT8) 0x01
203aa2aa9a6SDana Myers 
2047b1019a6SJerry Jelinek /* Polarity */
2057b1019a6SJerry Jelinek 
206aa2aa9a6SDana Myers #define ACPI_ACTIVE_HIGH                (UINT8) 0x00
207aa2aa9a6SDana Myers #define ACPI_ACTIVE_LOW                 (UINT8) 0x01
2087b1019a6SJerry Jelinek #define ACPI_ACTIVE_BOTH                (UINT8) 0x02
2097b1019a6SJerry Jelinek 
2107b1019a6SJerry Jelinek /* Sharing */
211aa2aa9a6SDana Myers 
212aa2aa9a6SDana Myers #define ACPI_EXCLUSIVE                  (UINT8) 0x00
213aa2aa9a6SDana Myers #define ACPI_SHARED                     (UINT8) 0x01
214aa2aa9a6SDana Myers 
2157b1019a6SJerry Jelinek /* Wake */
2167b1019a6SJerry Jelinek 
2177b1019a6SJerry Jelinek #define ACPI_NOT_WAKE_CAPABLE           (UINT8) 0x00
2187b1019a6SJerry Jelinek #define ACPI_WAKE_CAPABLE               (UINT8) 0x01
2197b1019a6SJerry Jelinek 
220aa2aa9a6SDana Myers /*
221aa2aa9a6SDana Myers  * DMA Attributes
222aa2aa9a6SDana Myers  */
223aa2aa9a6SDana Myers #define ACPI_COMPATIBILITY              (UINT8) 0x00
224aa2aa9a6SDana Myers #define ACPI_TYPE_A                     (UINT8) 0x01
225aa2aa9a6SDana Myers #define ACPI_TYPE_B                     (UINT8) 0x02
226aa2aa9a6SDana Myers #define ACPI_TYPE_F                     (UINT8) 0x03
227aa2aa9a6SDana Myers 
228aa2aa9a6SDana Myers #define ACPI_NOT_BUS_MASTER             (UINT8) 0x00
229aa2aa9a6SDana Myers #define ACPI_BUS_MASTER                 (UINT8) 0x01
230aa2aa9a6SDana Myers 
231aa2aa9a6SDana Myers #define ACPI_TRANSFER_8                 (UINT8) 0x00
232aa2aa9a6SDana Myers #define ACPI_TRANSFER_8_16              (UINT8) 0x01
233aa2aa9a6SDana Myers #define ACPI_TRANSFER_16                (UINT8) 0x02
234aa2aa9a6SDana Myers 
235aa2aa9a6SDana Myers /*
236aa2aa9a6SDana Myers  * Start Dependent Functions Priority definitions
237aa2aa9a6SDana Myers  */
238aa2aa9a6SDana Myers #define ACPI_GOOD_CONFIGURATION         (UINT8) 0x00
239aa2aa9a6SDana Myers #define ACPI_ACCEPTABLE_CONFIGURATION   (UINT8) 0x01
240aa2aa9a6SDana Myers #define ACPI_SUB_OPTIMAL_CONFIGURATION  (UINT8) 0x02
241aa2aa9a6SDana Myers 
242aa2aa9a6SDana Myers /*
243aa2aa9a6SDana Myers  * 16, 32 and 64-bit Address Descriptor resource types
244aa2aa9a6SDana Myers  */
245aa2aa9a6SDana Myers #define ACPI_MEMORY_RANGE               (UINT8) 0x00
246aa2aa9a6SDana Myers #define ACPI_IO_RANGE                   (UINT8) 0x01
247aa2aa9a6SDana Myers #define ACPI_BUS_NUMBER_RANGE           (UINT8) 0x02
248aa2aa9a6SDana Myers 
249aa2aa9a6SDana Myers #define ACPI_ADDRESS_NOT_FIXED          (UINT8) 0x00
250aa2aa9a6SDana Myers #define ACPI_ADDRESS_FIXED              (UINT8) 0x01
251aa2aa9a6SDana Myers 
252aa2aa9a6SDana Myers #define ACPI_POS_DECODE                 (UINT8) 0x00
253aa2aa9a6SDana Myers #define ACPI_SUB_DECODE                 (UINT8) 0x01
254aa2aa9a6SDana Myers 
2557b1019a6SJerry Jelinek /* Producer/Consumer */
2567b1019a6SJerry Jelinek 
257aa2aa9a6SDana Myers #define ACPI_PRODUCER                   (UINT8) 0x00
258aa2aa9a6SDana Myers #define ACPI_CONSUMER                   (UINT8) 0x01
259aa2aa9a6SDana Myers 
260aa2aa9a6SDana Myers 
261aa2aa9a6SDana Myers /*
262aa2aa9a6SDana Myers  * If possible, pack the following structures to byte alignment
263aa2aa9a6SDana Myers  */
264aa2aa9a6SDana Myers #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED
265aa2aa9a6SDana Myers #pragma pack(1)
266aa2aa9a6SDana Myers #endif
267aa2aa9a6SDana Myers 
268aa2aa9a6SDana Myers /* UUID data structures for use in vendor-defined resource descriptors */
269aa2aa9a6SDana Myers 
270aa2aa9a6SDana Myers typedef struct acpi_uuid
271aa2aa9a6SDana Myers {
272aa2aa9a6SDana Myers     UINT8                           Data[ACPI_UUID_LENGTH];
273aa2aa9a6SDana Myers } ACPI_UUID;
274aa2aa9a6SDana Myers 
275aa2aa9a6SDana Myers typedef struct acpi_vendor_uuid
276aa2aa9a6SDana Myers {
277aa2aa9a6SDana Myers     UINT8                           Subtype;
278aa2aa9a6SDana Myers     UINT8                           Data[ACPI_UUID_LENGTH];
279aa2aa9a6SDana Myers 
280aa2aa9a6SDana Myers } ACPI_VENDOR_UUID;
281aa2aa9a6SDana Myers 
282aa2aa9a6SDana Myers /*
283aa2aa9a6SDana Myers  * Structures used to describe device resources
284aa2aa9a6SDana Myers  */
285aa2aa9a6SDana Myers typedef struct acpi_resource_irq
286aa2aa9a6SDana Myers {
287aa2aa9a6SDana Myers     UINT8                           DescriptorLength;
288aa2aa9a6SDana Myers     UINT8                           Triggering;
289aa2aa9a6SDana Myers     UINT8                           Polarity;
290aa2aa9a6SDana Myers     UINT8                           Sharable;
2917b1019a6SJerry Jelinek     UINT8                           WakeCapable;
292aa2aa9a6SDana Myers     UINT8                           InterruptCount;
293aa2aa9a6SDana Myers     UINT8                           Interrupts[1];
294aa2aa9a6SDana Myers 
295aa2aa9a6SDana Myers } ACPI_RESOURCE_IRQ;
296aa2aa9a6SDana Myers 
2977b1019a6SJerry Jelinek typedef struct acpi_resource_dma
298aa2aa9a6SDana Myers {
299aa2aa9a6SDana Myers     UINT8                           Type;
300aa2aa9a6SDana Myers     UINT8                           BusMaster;
301aa2aa9a6SDana Myers     UINT8                           Transfer;
302aa2aa9a6SDana Myers     UINT8                           ChannelCount;
303aa2aa9a6SDana Myers     UINT8                           Channels[1];
304aa2aa9a6SDana Myers 
305aa2aa9a6SDana Myers } ACPI_RESOURCE_DMA;
306aa2aa9a6SDana Myers 
307aa2aa9a6SDana Myers typedef struct acpi_resource_start_dependent
308aa2aa9a6SDana Myers {
309aa2aa9a6SDana Myers     UINT8                           DescriptorLength;
310aa2aa9a6SDana Myers     UINT8                           CompatibilityPriority;
311aa2aa9a6SDana Myers     UINT8                           PerformanceRobustness;
312aa2aa9a6SDana Myers 
313aa2aa9a6SDana Myers } ACPI_RESOURCE_START_DEPENDENT;
314aa2aa9a6SDana Myers 
315aa2aa9a6SDana Myers 
316aa2aa9a6SDana Myers /*
317aa2aa9a6SDana Myers  * The END_DEPENDENT_FUNCTIONS_RESOURCE struct is not
318aa2aa9a6SDana Myers  * needed because it has no fields
319aa2aa9a6SDana Myers  */
320aa2aa9a6SDana Myers 
321aa2aa9a6SDana Myers 
322aa2aa9a6SDana Myers typedef struct acpi_resource_io
323aa2aa9a6SDana Myers {
324aa2aa9a6SDana Myers     UINT8                           IoDecode;
325aa2aa9a6SDana Myers     UINT8                           Alignment;
326aa2aa9a6SDana Myers     UINT8                           AddressLength;
327aa2aa9a6SDana Myers     UINT16                          Minimum;
328aa2aa9a6SDana Myers     UINT16                          Maximum;
329aa2aa9a6SDana Myers 
330aa2aa9a6SDana Myers } ACPI_RESOURCE_IO;
331aa2aa9a6SDana Myers 
332aa2aa9a6SDana Myers typedef struct acpi_resource_fixed_io
333aa2aa9a6SDana Myers {
334aa2aa9a6SDana Myers     UINT16                          Address;
335aa2aa9a6SDana Myers     UINT8                           AddressLength;
336aa2aa9a6SDana Myers 
337aa2aa9a6SDana Myers } ACPI_RESOURCE_FIXED_IO;
338aa2aa9a6SDana Myers 
3397b1019a6SJerry Jelinek typedef struct acpi_resource_fixed_dma
3407b1019a6SJerry Jelinek {
3417b1019a6SJerry Jelinek     UINT16                          RequestLines;
3427b1019a6SJerry Jelinek     UINT16                          Channels;
3437b1019a6SJerry Jelinek     UINT8                           Width;
3447b1019a6SJerry Jelinek 
3457b1019a6SJerry Jelinek } ACPI_RESOURCE_FIXED_DMA;
3467b1019a6SJerry Jelinek 
3477b1019a6SJerry Jelinek /* Values for Width field above */
3487b1019a6SJerry Jelinek 
3497b1019a6SJerry Jelinek #define ACPI_DMA_WIDTH8                         0
3507b1019a6SJerry Jelinek #define ACPI_DMA_WIDTH16                        1
3517b1019a6SJerry Jelinek #define ACPI_DMA_WIDTH32                        2
3527b1019a6SJerry Jelinek #define ACPI_DMA_WIDTH64                        3
3537b1019a6SJerry Jelinek #define ACPI_DMA_WIDTH128                       4
3547b1019a6SJerry Jelinek #define ACPI_DMA_WIDTH256                       5
3557b1019a6SJerry Jelinek 
3567b1019a6SJerry Jelinek 
357aa2aa9a6SDana Myers typedef struct acpi_resource_vendor
358aa2aa9a6SDana Myers {
359aa2aa9a6SDana Myers     UINT16                          ByteLength;
360aa2aa9a6SDana Myers     UINT8                           ByteData[1];
361aa2aa9a6SDana Myers 
362aa2aa9a6SDana Myers } ACPI_RESOURCE_VENDOR;
363aa2aa9a6SDana Myers 
364aa2aa9a6SDana Myers /* Vendor resource with UUID info (introduced in ACPI 3.0) */
365aa2aa9a6SDana Myers 
366aa2aa9a6SDana Myers typedef struct acpi_resource_vendor_typed
367aa2aa9a6SDana Myers {
368aa2aa9a6SDana Myers     UINT16                          ByteLength;
369aa2aa9a6SDana Myers     UINT8                           UuidSubtype;
370aa2aa9a6SDana Myers     UINT8                           Uuid[ACPI_UUID_LENGTH];
371aa2aa9a6SDana Myers     UINT8                           ByteData[1];
372aa2aa9a6SDana Myers 
373aa2aa9a6SDana Myers } ACPI_RESOURCE_VENDOR_TYPED;
374aa2aa9a6SDana Myers 
375aa2aa9a6SDana Myers typedef struct acpi_resource_end_tag
376aa2aa9a6SDana Myers {
377aa2aa9a6SDana Myers     UINT8                           Checksum;
378aa2aa9a6SDana Myers 
379aa2aa9a6SDana Myers } ACPI_RESOURCE_END_TAG;
380aa2aa9a6SDana Myers 
381aa2aa9a6SDana Myers typedef struct acpi_resource_memory24
382aa2aa9a6SDana Myers {
383aa2aa9a6SDana Myers     UINT8                           WriteProtect;
384aa2aa9a6SDana Myers     UINT16                          Minimum;
385aa2aa9a6SDana Myers     UINT16                          Maximum;
386aa2aa9a6SDana Myers     UINT16                          Alignment;
387aa2aa9a6SDana Myers     UINT16                          AddressLength;
388aa2aa9a6SDana Myers 
389aa2aa9a6SDana Myers } ACPI_RESOURCE_MEMORY24;
390aa2aa9a6SDana Myers 
391aa2aa9a6SDana Myers typedef struct acpi_resource_memory32
392aa2aa9a6SDana Myers {
393aa2aa9a6SDana Myers     UINT8                           WriteProtect;
394aa2aa9a6SDana Myers     UINT32                          Minimum;
395aa2aa9a6SDana Myers     UINT32                          Maximum;
396aa2aa9a6SDana Myers     UINT32                          Alignment;
397aa2aa9a6SDana Myers     UINT32                          AddressLength;
398aa2aa9a6SDana Myers 
399aa2aa9a6SDana Myers } ACPI_RESOURCE_MEMORY32;
400aa2aa9a6SDana Myers 
401aa2aa9a6SDana Myers typedef struct acpi_resource_fixed_memory32
402aa2aa9a6SDana Myers {
403aa2aa9a6SDana Myers     UINT8                           WriteProtect;
404aa2aa9a6SDana Myers     UINT32                          Address;
405aa2aa9a6SDana Myers     UINT32                          AddressLength;
406aa2aa9a6SDana Myers 
407aa2aa9a6SDana Myers } ACPI_RESOURCE_FIXED_MEMORY32;
408aa2aa9a6SDana Myers 
409aa2aa9a6SDana Myers typedef struct acpi_memory_attribute
410aa2aa9a6SDana Myers {
411aa2aa9a6SDana Myers     UINT8                           WriteProtect;
412aa2aa9a6SDana Myers     UINT8                           Caching;
413aa2aa9a6SDana Myers     UINT8                           RangeType;
414aa2aa9a6SDana Myers     UINT8                           Translation;
415aa2aa9a6SDana Myers 
416aa2aa9a6SDana Myers } ACPI_MEMORY_ATTRIBUTE;
417aa2aa9a6SDana Myers 
418aa2aa9a6SDana Myers typedef struct acpi_io_attribute
419aa2aa9a6SDana Myers {
420aa2aa9a6SDana Myers     UINT8                           RangeType;
421aa2aa9a6SDana Myers     UINT8                           Translation;
422aa2aa9a6SDana Myers     UINT8                           TranslationType;
423aa2aa9a6SDana Myers     UINT8                           Reserved1;
424aa2aa9a6SDana Myers 
425aa2aa9a6SDana Myers } ACPI_IO_ATTRIBUTE;
426aa2aa9a6SDana Myers 
427aa2aa9a6SDana Myers typedef union acpi_resource_attribute
428aa2aa9a6SDana Myers {
429aa2aa9a6SDana Myers     ACPI_MEMORY_ATTRIBUTE           Mem;
430aa2aa9a6SDana Myers     ACPI_IO_ATTRIBUTE               Io;
431aa2aa9a6SDana Myers 
432aa2aa9a6SDana Myers     /* Used for the *WordSpace macros */
433aa2aa9a6SDana Myers 
434aa2aa9a6SDana Myers     UINT8                           TypeSpecific;
435aa2aa9a6SDana Myers 
436aa2aa9a6SDana Myers } ACPI_RESOURCE_ATTRIBUTE;
437aa2aa9a6SDana Myers 
438*35786f68SRobert Mustacchi typedef struct acpi_resource_label
439*35786f68SRobert Mustacchi {
440*35786f68SRobert Mustacchi     UINT16                          StringLength;
441*35786f68SRobert Mustacchi     char                            *StringPtr;
442*35786f68SRobert Mustacchi 
443*35786f68SRobert Mustacchi } ACPI_RESOURCE_LABEL;
444*35786f68SRobert Mustacchi 
445aa2aa9a6SDana Myers typedef struct acpi_resource_source
446aa2aa9a6SDana Myers {
447aa2aa9a6SDana Myers     UINT8                           Index;
448aa2aa9a6SDana Myers     UINT16                          StringLength;
449aa2aa9a6SDana Myers     char                            *StringPtr;
450aa2aa9a6SDana Myers 
451aa2aa9a6SDana Myers } ACPI_RESOURCE_SOURCE;
452aa2aa9a6SDana Myers 
453aa2aa9a6SDana Myers /* Fields common to all address descriptors, 16/32/64 bit */
454aa2aa9a6SDana Myers 
455aa2aa9a6SDana Myers #define ACPI_RESOURCE_ADDRESS_COMMON \
456aa2aa9a6SDana Myers     UINT8                           ResourceType; \
457aa2aa9a6SDana Myers     UINT8                           ProducerConsumer; \
458aa2aa9a6SDana Myers     UINT8                           Decode; \
459aa2aa9a6SDana Myers     UINT8                           MinAddressFixed; \
460aa2aa9a6SDana Myers     UINT8                           MaxAddressFixed; \
461aa2aa9a6SDana Myers     ACPI_RESOURCE_ATTRIBUTE         Info;
462aa2aa9a6SDana Myers 
4637b1019a6SJerry Jelinek typedef struct acpi_address16_attribute
4647b1019a6SJerry Jelinek {
4657b1019a6SJerry Jelinek     UINT16                          Granularity;
4667b1019a6SJerry Jelinek     UINT16                          Minimum;
4677b1019a6SJerry Jelinek     UINT16                          Maximum;
4687b1019a6SJerry Jelinek     UINT16                          TranslationOffset;
4697b1019a6SJerry Jelinek     UINT16                          AddressLength;
4707b1019a6SJerry Jelinek 
4717b1019a6SJerry Jelinek } ACPI_ADDRESS16_ATTRIBUTE;
4727b1019a6SJerry Jelinek 
4737b1019a6SJerry Jelinek typedef struct acpi_address32_attribute
4747b1019a6SJerry Jelinek {
4757b1019a6SJerry Jelinek     UINT32                          Granularity;
4767b1019a6SJerry Jelinek     UINT32                          Minimum;
4777b1019a6SJerry Jelinek     UINT32                          Maximum;
4787b1019a6SJerry Jelinek     UINT32                          TranslationOffset;
4797b1019a6SJerry Jelinek     UINT32                          AddressLength;
4807b1019a6SJerry Jelinek 
4817b1019a6SJerry Jelinek } ACPI_ADDRESS32_ATTRIBUTE;
4827b1019a6SJerry Jelinek 
4837b1019a6SJerry Jelinek typedef struct acpi_address64_attribute
4847b1019a6SJerry Jelinek {
4857b1019a6SJerry Jelinek     UINT64                          Granularity;
4867b1019a6SJerry Jelinek     UINT64                          Minimum;
4877b1019a6SJerry Jelinek     UINT64                          Maximum;
4887b1019a6SJerry Jelinek     UINT64                          TranslationOffset;
4897b1019a6SJerry Jelinek     UINT64                          AddressLength;
4907b1019a6SJerry Jelinek 
4917b1019a6SJerry Jelinek } ACPI_ADDRESS64_ATTRIBUTE;
4927b1019a6SJerry Jelinek 
493aa2aa9a6SDana Myers typedef struct acpi_resource_address
494aa2aa9a6SDana Myers {
495aa2aa9a6SDana Myers     ACPI_RESOURCE_ADDRESS_COMMON
496aa2aa9a6SDana Myers 
497aa2aa9a6SDana Myers } ACPI_RESOURCE_ADDRESS;
498aa2aa9a6SDana Myers 
499aa2aa9a6SDana Myers typedef struct acpi_resource_address16
500aa2aa9a6SDana Myers {
501aa2aa9a6SDana Myers     ACPI_RESOURCE_ADDRESS_COMMON
5027b1019a6SJerry Jelinek     ACPI_ADDRESS16_ATTRIBUTE        Address;
503aa2aa9a6SDana Myers     ACPI_RESOURCE_SOURCE            ResourceSource;
504aa2aa9a6SDana Myers 
505aa2aa9a6SDana Myers } ACPI_RESOURCE_ADDRESS16;
506aa2aa9a6SDana Myers 
507aa2aa9a6SDana Myers typedef struct acpi_resource_address32
508aa2aa9a6SDana Myers {
509aa2aa9a6SDana Myers     ACPI_RESOURCE_ADDRESS_COMMON
5107b1019a6SJerry Jelinek     ACPI_ADDRESS32_ATTRIBUTE        Address;
511aa2aa9a6SDana Myers     ACPI_RESOURCE_SOURCE            ResourceSource;
512aa2aa9a6SDana Myers 
513aa2aa9a6SDana Myers } ACPI_RESOURCE_ADDRESS32;
514aa2aa9a6SDana Myers 
515aa2aa9a6SDana Myers typedef struct acpi_resource_address64
516aa2aa9a6SDana Myers {
517aa2aa9a6SDana Myers     ACPI_RESOURCE_ADDRESS_COMMON
5187b1019a6SJerry Jelinek     ACPI_ADDRESS64_ATTRIBUTE        Address;
519aa2aa9a6SDana Myers     ACPI_RESOURCE_SOURCE            ResourceSource;
520aa2aa9a6SDana Myers 
521aa2aa9a6SDana Myers } ACPI_RESOURCE_ADDRESS64;
522aa2aa9a6SDana Myers 
523aa2aa9a6SDana Myers typedef struct acpi_resource_extended_address64
524aa2aa9a6SDana Myers {
525aa2aa9a6SDana Myers     ACPI_RESOURCE_ADDRESS_COMMON
526aa2aa9a6SDana Myers     UINT8                           RevisionID;
5277b1019a6SJerry Jelinek     ACPI_ADDRESS64_ATTRIBUTE        Address;
528aa2aa9a6SDana Myers     UINT64                          TypeSpecific;
529aa2aa9a6SDana Myers 
530aa2aa9a6SDana Myers } ACPI_RESOURCE_EXTENDED_ADDRESS64;
531aa2aa9a6SDana Myers 
532aa2aa9a6SDana Myers typedef struct acpi_resource_extended_irq
533aa2aa9a6SDana Myers {
534aa2aa9a6SDana Myers     UINT8                           ProducerConsumer;
535aa2aa9a6SDana Myers     UINT8                           Triggering;
536aa2aa9a6SDana Myers     UINT8                           Polarity;
537aa2aa9a6SDana Myers     UINT8                           Sharable;
5387b1019a6SJerry Jelinek     UINT8                           WakeCapable;
539aa2aa9a6SDana Myers     UINT8                           InterruptCount;
540aa2aa9a6SDana Myers     ACPI_RESOURCE_SOURCE            ResourceSource;
541aa2aa9a6SDana Myers     UINT32                          Interrupts[1];
542aa2aa9a6SDana Myers 
543aa2aa9a6SDana Myers } ACPI_RESOURCE_EXTENDED_IRQ;
544aa2aa9a6SDana Myers 
545aa2aa9a6SDana Myers typedef struct acpi_resource_generic_register
546aa2aa9a6SDana Myers {
547aa2aa9a6SDana Myers     UINT8                           SpaceId;
548aa2aa9a6SDana Myers     UINT8                           BitWidth;
549aa2aa9a6SDana Myers     UINT8                           BitOffset;
550aa2aa9a6SDana Myers     UINT8                           AccessSize;
551aa2aa9a6SDana Myers     UINT64                          Address;
552aa2aa9a6SDana Myers 
553aa2aa9a6SDana Myers } ACPI_RESOURCE_GENERIC_REGISTER;
554aa2aa9a6SDana Myers 
5557b1019a6SJerry Jelinek typedef struct acpi_resource_gpio
5567b1019a6SJerry Jelinek {
5577b1019a6SJerry Jelinek     UINT8                           RevisionId;
5587b1019a6SJerry Jelinek     UINT8                           ConnectionType;
5597b1019a6SJerry Jelinek     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
5607b1019a6SJerry Jelinek     UINT8                           PinConfig;
5617b1019a6SJerry Jelinek     UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
5627b1019a6SJerry Jelinek     UINT8                           WakeCapable;        /* For values, see Interrupt Attributes above */
5637b1019a6SJerry Jelinek     UINT8                           IoRestriction;
5647b1019a6SJerry Jelinek     UINT8                           Triggering;         /* For values, see Interrupt Attributes above */
5657b1019a6SJerry Jelinek     UINT8                           Polarity;           /* For values, see Interrupt Attributes above */
5667b1019a6SJerry Jelinek     UINT16                          DriveStrength;
5677b1019a6SJerry Jelinek     UINT16                          DebounceTimeout;
5687b1019a6SJerry Jelinek     UINT16                          PinTableLength;
5697b1019a6SJerry Jelinek     UINT16                          VendorLength;
5707b1019a6SJerry Jelinek     ACPI_RESOURCE_SOURCE            ResourceSource;
5717b1019a6SJerry Jelinek     UINT16                          *PinTable;
5727b1019a6SJerry Jelinek     UINT8                           *VendorData;
5737b1019a6SJerry Jelinek 
5747b1019a6SJerry Jelinek } ACPI_RESOURCE_GPIO;
5757b1019a6SJerry Jelinek 
5767b1019a6SJerry Jelinek /* Values for GPIO ConnectionType field above */
5777b1019a6SJerry Jelinek 
5787b1019a6SJerry Jelinek #define ACPI_RESOURCE_GPIO_TYPE_INT             0
5797b1019a6SJerry Jelinek #define ACPI_RESOURCE_GPIO_TYPE_IO              1
5807b1019a6SJerry Jelinek 
5817b1019a6SJerry Jelinek /* Values for PinConfig field above */
5827b1019a6SJerry Jelinek 
5837b1019a6SJerry Jelinek #define ACPI_PIN_CONFIG_DEFAULT                 0
5847b1019a6SJerry Jelinek #define ACPI_PIN_CONFIG_PULLUP                  1
5857b1019a6SJerry Jelinek #define ACPI_PIN_CONFIG_PULLDOWN                2
5867b1019a6SJerry Jelinek #define ACPI_PIN_CONFIG_NOPULL                  3
5877b1019a6SJerry Jelinek 
5887b1019a6SJerry Jelinek /* Values for IoRestriction field above */
5897b1019a6SJerry Jelinek 
5907b1019a6SJerry Jelinek #define ACPI_IO_RESTRICT_NONE                   0
5917b1019a6SJerry Jelinek #define ACPI_IO_RESTRICT_INPUT                  1
5927b1019a6SJerry Jelinek #define ACPI_IO_RESTRICT_OUTPUT                 2
5937b1019a6SJerry Jelinek #define ACPI_IO_RESTRICT_NONE_PRESERVE          3
5947b1019a6SJerry Jelinek 
5957b1019a6SJerry Jelinek 
5967b1019a6SJerry Jelinek /* Common structure for I2C, SPI, and UART serial descriptors */
5977b1019a6SJerry Jelinek 
5987b1019a6SJerry Jelinek #define ACPI_RESOURCE_SERIAL_COMMON \
5997b1019a6SJerry Jelinek     UINT8                           RevisionId; \
6007b1019a6SJerry Jelinek     UINT8                           Type; \
6017b1019a6SJerry Jelinek     UINT8                           ProducerConsumer;    /* For values, see Producer/Consumer above */\
6027b1019a6SJerry Jelinek     UINT8                           SlaveMode; \
6037b1019a6SJerry Jelinek     UINT8                           ConnectionSharing; \
6047b1019a6SJerry Jelinek     UINT8                           TypeRevisionId; \
6057b1019a6SJerry Jelinek     UINT16                          TypeDataLength; \
6067b1019a6SJerry Jelinek     UINT16                          VendorLength; \
6077b1019a6SJerry Jelinek     ACPI_RESOURCE_SOURCE            ResourceSource; \
6087b1019a6SJerry Jelinek     UINT8                           *VendorData;
6097b1019a6SJerry Jelinek 
6107b1019a6SJerry Jelinek typedef struct acpi_resource_common_serialbus
6117b1019a6SJerry Jelinek {
6127b1019a6SJerry Jelinek     ACPI_RESOURCE_SERIAL_COMMON
6137b1019a6SJerry Jelinek 
6147b1019a6SJerry Jelinek } ACPI_RESOURCE_COMMON_SERIALBUS;
6157b1019a6SJerry Jelinek 
6167b1019a6SJerry Jelinek /* Values for the Type field above */
6177b1019a6SJerry Jelinek 
6187b1019a6SJerry Jelinek #define ACPI_RESOURCE_SERIAL_TYPE_I2C           1
6197b1019a6SJerry Jelinek #define ACPI_RESOURCE_SERIAL_TYPE_SPI           2
6207b1019a6SJerry Jelinek #define ACPI_RESOURCE_SERIAL_TYPE_UART          3
6217b1019a6SJerry Jelinek 
6227b1019a6SJerry Jelinek /* Values for SlaveMode field above */
6237b1019a6SJerry Jelinek 
6247b1019a6SJerry Jelinek #define ACPI_CONTROLLER_INITIATED               0
6257b1019a6SJerry Jelinek #define ACPI_DEVICE_INITIATED                   1
6267b1019a6SJerry Jelinek 
6277b1019a6SJerry Jelinek 
6287b1019a6SJerry Jelinek typedef struct acpi_resource_i2c_serialbus
6297b1019a6SJerry Jelinek {
6307b1019a6SJerry Jelinek     ACPI_RESOURCE_SERIAL_COMMON
6317b1019a6SJerry Jelinek     UINT8                           AccessMode;
6327b1019a6SJerry Jelinek     UINT16                          SlaveAddress;
6337b1019a6SJerry Jelinek     UINT32                          ConnectionSpeed;
6347b1019a6SJerry Jelinek 
6357b1019a6SJerry Jelinek } ACPI_RESOURCE_I2C_SERIALBUS;
6367b1019a6SJerry Jelinek 
6377b1019a6SJerry Jelinek /* Values for AccessMode field above */
6387b1019a6SJerry Jelinek 
6397b1019a6SJerry Jelinek #define ACPI_I2C_7BIT_MODE                      0
6407b1019a6SJerry Jelinek #define ACPI_I2C_10BIT_MODE                     1
6417b1019a6SJerry Jelinek 
6427b1019a6SJerry Jelinek 
6437b1019a6SJerry Jelinek typedef struct acpi_resource_spi_serialbus
6447b1019a6SJerry Jelinek {
6457b1019a6SJerry Jelinek     ACPI_RESOURCE_SERIAL_COMMON
6467b1019a6SJerry Jelinek     UINT8                           WireMode;
6477b1019a6SJerry Jelinek     UINT8                           DevicePolarity;
6487b1019a6SJerry Jelinek     UINT8                           DataBitLength;
6497b1019a6SJerry Jelinek     UINT8                           ClockPhase;
6507b1019a6SJerry Jelinek     UINT8                           ClockPolarity;
6517b1019a6SJerry Jelinek     UINT16                          DeviceSelection;
6527b1019a6SJerry Jelinek     UINT32                          ConnectionSpeed;
6537b1019a6SJerry Jelinek 
6547b1019a6SJerry Jelinek } ACPI_RESOURCE_SPI_SERIALBUS;
6557b1019a6SJerry Jelinek 
6567b1019a6SJerry Jelinek /* Values for WireMode field above */
6577b1019a6SJerry Jelinek 
6587b1019a6SJerry Jelinek #define ACPI_SPI_4WIRE_MODE                     0
6597b1019a6SJerry Jelinek #define ACPI_SPI_3WIRE_MODE                     1
6607b1019a6SJerry Jelinek 
6617b1019a6SJerry Jelinek /* Values for DevicePolarity field above */
6627b1019a6SJerry Jelinek 
6637b1019a6SJerry Jelinek #define ACPI_SPI_ACTIVE_LOW                     0
6647b1019a6SJerry Jelinek #define ACPI_SPI_ACTIVE_HIGH                    1
6657b1019a6SJerry Jelinek 
6667b1019a6SJerry Jelinek /* Values for ClockPhase field above */
6677b1019a6SJerry Jelinek 
6687b1019a6SJerry Jelinek #define ACPI_SPI_FIRST_PHASE                    0
6697b1019a6SJerry Jelinek #define ACPI_SPI_SECOND_PHASE                   1
6707b1019a6SJerry Jelinek 
6717b1019a6SJerry Jelinek /* Values for ClockPolarity field above */
6727b1019a6SJerry Jelinek 
6737b1019a6SJerry Jelinek #define ACPI_SPI_START_LOW                      0
6747b1019a6SJerry Jelinek #define ACPI_SPI_START_HIGH                     1
6757b1019a6SJerry Jelinek 
6767b1019a6SJerry Jelinek 
6777b1019a6SJerry Jelinek typedef struct acpi_resource_uart_serialbus
6787b1019a6SJerry Jelinek {
6797b1019a6SJerry Jelinek     ACPI_RESOURCE_SERIAL_COMMON
6807b1019a6SJerry Jelinek     UINT8                           Endian;
6817b1019a6SJerry Jelinek     UINT8                           DataBits;
6827b1019a6SJerry Jelinek     UINT8                           StopBits;
6837b1019a6SJerry Jelinek     UINT8                           FlowControl;
6847b1019a6SJerry Jelinek     UINT8                           Parity;
6857b1019a6SJerry Jelinek     UINT8                           LinesEnabled;
6867b1019a6SJerry Jelinek     UINT16                          RxFifoSize;
6877b1019a6SJerry Jelinek     UINT16                          TxFifoSize;
6887b1019a6SJerry Jelinek     UINT32                          DefaultBaudRate;
6897b1019a6SJerry Jelinek 
6907b1019a6SJerry Jelinek } ACPI_RESOURCE_UART_SERIALBUS;
6917b1019a6SJerry Jelinek 
6927b1019a6SJerry Jelinek /* Values for Endian field above */
6937b1019a6SJerry Jelinek 
6947b1019a6SJerry Jelinek #define ACPI_UART_LITTLE_ENDIAN                 0
6957b1019a6SJerry Jelinek #define ACPI_UART_BIG_ENDIAN                    1
6967b1019a6SJerry Jelinek 
6977b1019a6SJerry Jelinek /* Values for DataBits field above */
6987b1019a6SJerry Jelinek 
6997b1019a6SJerry Jelinek #define ACPI_UART_5_DATA_BITS                   0
7007b1019a6SJerry Jelinek #define ACPI_UART_6_DATA_BITS                   1
7017b1019a6SJerry Jelinek #define ACPI_UART_7_DATA_BITS                   2
7027b1019a6SJerry Jelinek #define ACPI_UART_8_DATA_BITS                   3
7037b1019a6SJerry Jelinek #define ACPI_UART_9_DATA_BITS                   4
7047b1019a6SJerry Jelinek 
7057b1019a6SJerry Jelinek /* Values for StopBits field above */
7067b1019a6SJerry Jelinek 
7077b1019a6SJerry Jelinek #define ACPI_UART_NO_STOP_BITS                  0
7087b1019a6SJerry Jelinek #define ACPI_UART_1_STOP_BIT                    1
7097b1019a6SJerry Jelinek #define ACPI_UART_1P5_STOP_BITS                 2
7107b1019a6SJerry Jelinek #define ACPI_UART_2_STOP_BITS                   3
7117b1019a6SJerry Jelinek 
7127b1019a6SJerry Jelinek /* Values for FlowControl field above */
7137b1019a6SJerry Jelinek 
7147b1019a6SJerry Jelinek #define ACPI_UART_FLOW_CONTROL_NONE             0
7157b1019a6SJerry Jelinek #define ACPI_UART_FLOW_CONTROL_HW               1
7167b1019a6SJerry Jelinek #define ACPI_UART_FLOW_CONTROL_XON_XOFF         2
7177b1019a6SJerry Jelinek 
7187b1019a6SJerry Jelinek /* Values for Parity field above */
7197b1019a6SJerry Jelinek 
7207b1019a6SJerry Jelinek #define ACPI_UART_PARITY_NONE                   0
7217b1019a6SJerry Jelinek #define ACPI_UART_PARITY_EVEN                   1
7227b1019a6SJerry Jelinek #define ACPI_UART_PARITY_ODD                    2
7237b1019a6SJerry Jelinek #define ACPI_UART_PARITY_MARK                   3
7247b1019a6SJerry Jelinek #define ACPI_UART_PARITY_SPACE                  4
7257b1019a6SJerry Jelinek 
7267b1019a6SJerry Jelinek /* Values for LinesEnabled bitfield above */
7277b1019a6SJerry Jelinek 
7287b1019a6SJerry Jelinek #define ACPI_UART_CARRIER_DETECT                (1<<2)
7297b1019a6SJerry Jelinek #define ACPI_UART_RING_INDICATOR                (1<<3)
7307b1019a6SJerry Jelinek #define ACPI_UART_DATA_SET_READY                (1<<4)
7317b1019a6SJerry Jelinek #define ACPI_UART_DATA_TERMINAL_READY           (1<<5)
7327b1019a6SJerry Jelinek #define ACPI_UART_CLEAR_TO_SEND                 (1<<6)
7337b1019a6SJerry Jelinek #define ACPI_UART_REQUEST_TO_SEND               (1<<7)
7347b1019a6SJerry Jelinek 
735*35786f68SRobert Mustacchi typedef struct acpi_resource_pin_function
736*35786f68SRobert Mustacchi {
737*35786f68SRobert Mustacchi     UINT8                           RevisionId;
738*35786f68SRobert Mustacchi     UINT8                           PinConfig;
739*35786f68SRobert Mustacchi     UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
740*35786f68SRobert Mustacchi     UINT16                          FunctionNumber;
741*35786f68SRobert Mustacchi     UINT16                          PinTableLength;
742*35786f68SRobert Mustacchi     UINT16                          VendorLength;
743*35786f68SRobert Mustacchi     ACPI_RESOURCE_SOURCE            ResourceSource;
744*35786f68SRobert Mustacchi     UINT16                          *PinTable;
745*35786f68SRobert Mustacchi     UINT8                           *VendorData;
746*35786f68SRobert Mustacchi 
747*35786f68SRobert Mustacchi } ACPI_RESOURCE_PIN_FUNCTION;
748*35786f68SRobert Mustacchi 
749*35786f68SRobert Mustacchi typedef struct acpi_resource_pin_config
750*35786f68SRobert Mustacchi {
751*35786f68SRobert Mustacchi     UINT8                           RevisionId;
752*35786f68SRobert Mustacchi     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
753*35786f68SRobert Mustacchi     UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
754*35786f68SRobert Mustacchi     UINT8                           PinConfigType;
755*35786f68SRobert Mustacchi     UINT32                          PinConfigValue;
756*35786f68SRobert Mustacchi     UINT16                          PinTableLength;
757*35786f68SRobert Mustacchi     UINT16                          VendorLength;
758*35786f68SRobert Mustacchi     ACPI_RESOURCE_SOURCE            ResourceSource;
759*35786f68SRobert Mustacchi     UINT16                          *PinTable;
760*35786f68SRobert Mustacchi     UINT8                           *VendorData;
761*35786f68SRobert Mustacchi 
762*35786f68SRobert Mustacchi } ACPI_RESOURCE_PIN_CONFIG;
763*35786f68SRobert Mustacchi 
764*35786f68SRobert Mustacchi /* Values for PinConfigType field above */
765*35786f68SRobert Mustacchi 
766*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_DEFAULT                 0
767*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_BIAS_PULL_UP            1
768*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_BIAS_PULL_DOWN          2
769*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_BIAS_DEFAULT            3
770*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_BIAS_DISABLE            4
771*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_BIAS_HIGH_IMPEDANCE     5
772*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_BIAS_BUS_HOLD           6
773*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_DRIVE_OPEN_DRAIN        7
774*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_DRIVE_OPEN_SOURCE       8
775*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_DRIVE_PUSH_PULL         9
776*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_DRIVE_STRENGTH          10
777*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_SLEW_RATE               11
778*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_INPUT_DEBOUNCE          12
779*35786f68SRobert Mustacchi #define ACPI_PIN_CONFIG_INPUT_SCHMITT_TRIGGER   13
780*35786f68SRobert Mustacchi 
781*35786f68SRobert Mustacchi typedef struct acpi_resource_pin_group
782*35786f68SRobert Mustacchi {
783*35786f68SRobert Mustacchi     UINT8                           RevisionId;
784*35786f68SRobert Mustacchi     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
785*35786f68SRobert Mustacchi     UINT16                          PinTableLength;
786*35786f68SRobert Mustacchi     UINT16                          VendorLength;
787*35786f68SRobert Mustacchi     UINT16                          *PinTable;
788*35786f68SRobert Mustacchi     ACPI_RESOURCE_LABEL             ResourceLabel;
789*35786f68SRobert Mustacchi     UINT8                           *VendorData;
790*35786f68SRobert Mustacchi 
791*35786f68SRobert Mustacchi } ACPI_RESOURCE_PIN_GROUP;
792*35786f68SRobert Mustacchi 
793*35786f68SRobert Mustacchi typedef struct acpi_resource_pin_group_function
794*35786f68SRobert Mustacchi {
795*35786f68SRobert Mustacchi     UINT8                           RevisionId;
796*35786f68SRobert Mustacchi     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
797*35786f68SRobert Mustacchi     UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
798*35786f68SRobert Mustacchi     UINT16                          FunctionNumber;
799*35786f68SRobert Mustacchi     UINT16                          VendorLength;
800*35786f68SRobert Mustacchi     ACPI_RESOURCE_SOURCE            ResourceSource;
801*35786f68SRobert Mustacchi     ACPI_RESOURCE_LABEL             ResourceSourceLabel;
802*35786f68SRobert Mustacchi     UINT8                           *VendorData;
803*35786f68SRobert Mustacchi 
804*35786f68SRobert Mustacchi } ACPI_RESOURCE_PIN_GROUP_FUNCTION;
805*35786f68SRobert Mustacchi 
806*35786f68SRobert Mustacchi typedef struct acpi_resource_pin_group_config
807*35786f68SRobert Mustacchi {
808*35786f68SRobert Mustacchi     UINT8                           RevisionId;
809*35786f68SRobert Mustacchi     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
810*35786f68SRobert Mustacchi     UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
811*35786f68SRobert Mustacchi     UINT8                           PinConfigType;      /* For values, see PinConfigType above */
812*35786f68SRobert Mustacchi     UINT32                          PinConfigValue;
813*35786f68SRobert Mustacchi     UINT16                          VendorLength;
814*35786f68SRobert Mustacchi     ACPI_RESOURCE_SOURCE            ResourceSource;
815*35786f68SRobert Mustacchi     ACPI_RESOURCE_LABEL             ResourceSourceLabel;
816*35786f68SRobert Mustacchi     UINT8                           *VendorData;
817*35786f68SRobert Mustacchi 
818*35786f68SRobert Mustacchi } ACPI_RESOURCE_PIN_GROUP_CONFIG;
819aa2aa9a6SDana Myers 
820aa2aa9a6SDana Myers /* ACPI_RESOURCE_TYPEs */
821aa2aa9a6SDana Myers 
822aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_IRQ                  0
823aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_DMA                  1
824aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_START_DEPENDENT      2
825aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_END_DEPENDENT        3
826aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_IO                   4
827aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_FIXED_IO             5
828aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_VENDOR               6
829aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_END_TAG              7
830aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_MEMORY24             8
831aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_MEMORY32             9
832aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_FIXED_MEMORY32       10
833aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_ADDRESS16            11
834aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_ADDRESS32            12
835aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_ADDRESS64            13
836aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64   14  /* ACPI 3.0 */
837aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ         15
838aa2aa9a6SDana Myers #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER     16
8397b1019a6SJerry Jelinek #define ACPI_RESOURCE_TYPE_GPIO                 17  /* ACPI 5.0 */
8407b1019a6SJerry Jelinek #define ACPI_RESOURCE_TYPE_FIXED_DMA            18  /* ACPI 5.0 */
8417b1019a6SJerry Jelinek #define ACPI_RESOURCE_TYPE_SERIAL_BUS           19  /* ACPI 5.0 */
842*35786f68SRobert Mustacchi #define ACPI_RESOURCE_TYPE_PIN_FUNCTION         20  /* ACPI 6.2 */
843*35786f68SRobert Mustacchi #define ACPI_RESOURCE_TYPE_PIN_CONFIG           21  /* ACPI 6.2 */
844*35786f68SRobert Mustacchi #define ACPI_RESOURCE_TYPE_PIN_GROUP            22  /* ACPI 6.2 */
845*35786f68SRobert Mustacchi #define ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION   23  /* ACPI 6.2 */
846*35786f68SRobert Mustacchi #define ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG     24  /* ACPI 6.2 */
847*35786f68SRobert Mustacchi #define ACPI_RESOURCE_TYPE_MAX                  24
848aa2aa9a6SDana Myers 
849aa2aa9a6SDana Myers /* Master union for resource descriptors */
850aa2aa9a6SDana Myers 
851aa2aa9a6SDana Myers typedef union acpi_resource_data
852aa2aa9a6SDana Myers {
853aa2aa9a6SDana Myers     ACPI_RESOURCE_IRQ                       Irq;
854aa2aa9a6SDana Myers     ACPI_RESOURCE_DMA                       Dma;
855aa2aa9a6SDana Myers     ACPI_RESOURCE_START_DEPENDENT           StartDpf;
856aa2aa9a6SDana Myers     ACPI_RESOURCE_IO                        Io;
857aa2aa9a6SDana Myers     ACPI_RESOURCE_FIXED_IO                  FixedIo;
8587b1019a6SJerry Jelinek     ACPI_RESOURCE_FIXED_DMA                 FixedDma;
859aa2aa9a6SDana Myers     ACPI_RESOURCE_VENDOR                    Vendor;
860aa2aa9a6SDana Myers     ACPI_RESOURCE_VENDOR_TYPED              VendorTyped;
861aa2aa9a6SDana Myers     ACPI_RESOURCE_END_TAG                   EndTag;
862aa2aa9a6SDana Myers     ACPI_RESOURCE_MEMORY24                  Memory24;
863aa2aa9a6SDana Myers     ACPI_RESOURCE_MEMORY32                  Memory32;
864aa2aa9a6SDana Myers     ACPI_RESOURCE_FIXED_MEMORY32            FixedMemory32;
865aa2aa9a6SDana Myers     ACPI_RESOURCE_ADDRESS16                 Address16;
866aa2aa9a6SDana Myers     ACPI_RESOURCE_ADDRESS32                 Address32;
867aa2aa9a6SDana Myers     ACPI_RESOURCE_ADDRESS64                 Address64;
868aa2aa9a6SDana Myers     ACPI_RESOURCE_EXTENDED_ADDRESS64        ExtAddress64;
869aa2aa9a6SDana Myers     ACPI_RESOURCE_EXTENDED_IRQ              ExtendedIrq;
870aa2aa9a6SDana Myers     ACPI_RESOURCE_GENERIC_REGISTER          GenericReg;
8717b1019a6SJerry Jelinek     ACPI_RESOURCE_GPIO                      Gpio;
8727b1019a6SJerry Jelinek     ACPI_RESOURCE_I2C_SERIALBUS             I2cSerialBus;
8737b1019a6SJerry Jelinek     ACPI_RESOURCE_SPI_SERIALBUS             SpiSerialBus;
8747b1019a6SJerry Jelinek     ACPI_RESOURCE_UART_SERIALBUS            UartSerialBus;
8757b1019a6SJerry Jelinek     ACPI_RESOURCE_COMMON_SERIALBUS          CommonSerialBus;
876*35786f68SRobert Mustacchi     ACPI_RESOURCE_PIN_FUNCTION              PinFunction;
877*35786f68SRobert Mustacchi     ACPI_RESOURCE_PIN_CONFIG                PinConfig;
878*35786f68SRobert Mustacchi     ACPI_RESOURCE_PIN_GROUP                 PinGroup;
879*35786f68SRobert Mustacchi     ACPI_RESOURCE_PIN_GROUP_FUNCTION        PinGroupFunction;
880*35786f68SRobert Mustacchi     ACPI_RESOURCE_PIN_GROUP_CONFIG          PinGroupConfig;
881aa2aa9a6SDana Myers 
882aa2aa9a6SDana Myers     /* Common fields */
883aa2aa9a6SDana Myers 
884aa2aa9a6SDana Myers     ACPI_RESOURCE_ADDRESS                   Address;        /* Common 16/32/64 address fields */
885aa2aa9a6SDana Myers 
886aa2aa9a6SDana Myers } ACPI_RESOURCE_DATA;
887aa2aa9a6SDana Myers 
888aa2aa9a6SDana Myers 
889aa2aa9a6SDana Myers /* Common resource header */
890aa2aa9a6SDana Myers 
891aa2aa9a6SDana Myers typedef struct acpi_resource
892aa2aa9a6SDana Myers {
893aa2aa9a6SDana Myers     UINT32                          Type;
894aa2aa9a6SDana Myers     UINT32                          Length;
895aa2aa9a6SDana Myers     ACPI_RESOURCE_DATA              Data;
896aa2aa9a6SDana Myers 
897aa2aa9a6SDana Myers } ACPI_RESOURCE;
898aa2aa9a6SDana Myers 
899aa2aa9a6SDana Myers /* restore default alignment */
900aa2aa9a6SDana Myers 
901aa2aa9a6SDana Myers #pragma pack()
902aa2aa9a6SDana Myers 
903aa2aa9a6SDana Myers 
904aa2aa9a6SDana Myers #define ACPI_RS_SIZE_NO_DATA                8       /* Id + Length fields */
905aa2aa9a6SDana Myers #define ACPI_RS_SIZE_MIN                    (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (12)
906aa2aa9a6SDana Myers #define ACPI_RS_SIZE(Type)                  (UINT32) (ACPI_RS_SIZE_NO_DATA + sizeof (Type))
907aa2aa9a6SDana Myers 
9087b1019a6SJerry Jelinek /* Macro for walking resource templates with multiple descriptors */
9097b1019a6SJerry Jelinek 
9107b1019a6SJerry Jelinek #define ACPI_NEXT_RESOURCE(Res) \
9117b1019a6SJerry Jelinek     ACPI_ADD_PTR (ACPI_RESOURCE, (Res), (Res)->Length)
912aa2aa9a6SDana Myers 
913aa2aa9a6SDana Myers 
914aa2aa9a6SDana Myers typedef struct acpi_pci_routing_table
915aa2aa9a6SDana Myers {
916aa2aa9a6SDana Myers     UINT32                          Length;
917aa2aa9a6SDana Myers     UINT32                          Pin;
91826f3cdf0SGordon Ross     UINT64                          Address;        /* here for 64-bit alignment */
919aa2aa9a6SDana Myers     UINT32                          SourceIndex;
920aa2aa9a6SDana Myers     char                            Source[4];      /* pad to 64 bits so sizeof() works in all cases */
921aa2aa9a6SDana Myers 
922aa2aa9a6SDana Myers } ACPI_PCI_ROUTING_TABLE;
923aa2aa9a6SDana Myers 
924aa2aa9a6SDana Myers #endif /* __ACRESTYP_H__ */
925