xref: /minix3/minix/drivers/power/acpi/include/amlresrc.h (revision 29492bb71c7148a089a5afafa0c99409161218df)
1433d6423SLionel Sambuc /******************************************************************************
2433d6423SLionel Sambuc  *
3433d6423SLionel Sambuc  * Module Name: amlresrc.h - AML resource descriptors
4433d6423SLionel Sambuc  *
5433d6423SLionel Sambuc  *****************************************************************************/
6433d6423SLionel Sambuc 
7*29492bb7SDavid van Moolenbroek /*
8*29492bb7SDavid van Moolenbroek  * Copyright (C) 2000 - 2014, Intel Corp.
9433d6423SLionel Sambuc  * All rights reserved.
10433d6423SLionel Sambuc  *
11*29492bb7SDavid van Moolenbroek  * Redistribution and use in source and binary forms, with or without
12*29492bb7SDavid van Moolenbroek  * modification, are permitted provided that the following conditions
13*29492bb7SDavid van Moolenbroek  * are met:
14*29492bb7SDavid van Moolenbroek  * 1. Redistributions of source code must retain the above copyright
15*29492bb7SDavid van Moolenbroek  *    notice, this list of conditions, and the following disclaimer,
16*29492bb7SDavid van Moolenbroek  *    without modification.
17*29492bb7SDavid van Moolenbroek  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18*29492bb7SDavid van Moolenbroek  *    substantially similar to the "NO WARRANTY" disclaimer below
19*29492bb7SDavid van Moolenbroek  *    ("Disclaimer") and any redistribution must be conditioned upon
20*29492bb7SDavid van Moolenbroek  *    including a substantially similar Disclaimer requirement for further
21*29492bb7SDavid van Moolenbroek  *    binary redistribution.
22*29492bb7SDavid van Moolenbroek  * 3. Neither the names of the above-listed copyright holders nor the names
23*29492bb7SDavid van Moolenbroek  *    of any contributors may be used to endorse or promote products derived
24*29492bb7SDavid van Moolenbroek  *    from this software without specific prior written permission.
25433d6423SLionel Sambuc  *
26*29492bb7SDavid van Moolenbroek  * Alternatively, this software may be distributed under the terms of the
27*29492bb7SDavid van Moolenbroek  * GNU General Public License ("GPL") version 2 as published by the Free
28*29492bb7SDavid van Moolenbroek  * Software Foundation.
29433d6423SLionel Sambuc  *
30*29492bb7SDavid van Moolenbroek  * NO WARRANTY
31*29492bb7SDavid van Moolenbroek  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32*29492bb7SDavid van Moolenbroek  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33*29492bb7SDavid van Moolenbroek  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34*29492bb7SDavid van Moolenbroek  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35*29492bb7SDavid van Moolenbroek  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36*29492bb7SDavid van Moolenbroek  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37*29492bb7SDavid van Moolenbroek  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38*29492bb7SDavid van Moolenbroek  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39*29492bb7SDavid van Moolenbroek  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40*29492bb7SDavid van Moolenbroek  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41*29492bb7SDavid van Moolenbroek  * POSSIBILITY OF SUCH DAMAGES.
42*29492bb7SDavid van Moolenbroek  */
43433d6423SLionel Sambuc 
44433d6423SLionel Sambuc /* acpisrc:StructDefs -- for acpisrc conversion */
45433d6423SLionel Sambuc 
46433d6423SLionel Sambuc #ifndef __AMLRESRC_H
47433d6423SLionel Sambuc #define __AMLRESRC_H
48433d6423SLionel Sambuc 
49433d6423SLionel Sambuc 
50433d6423SLionel Sambuc /*
51433d6423SLionel Sambuc  * Resource descriptor tags, as defined in the ACPI specification.
52433d6423SLionel Sambuc  * Used to symbolically reference fields within a descriptor.
53433d6423SLionel Sambuc  */
54433d6423SLionel Sambuc #define ACPI_RESTAG_ADDRESS                     "_ADR"
55433d6423SLionel Sambuc #define ACPI_RESTAG_ALIGNMENT                   "_ALN"
56433d6423SLionel Sambuc #define ACPI_RESTAG_ADDRESSSPACE                "_ASI"
57433d6423SLionel Sambuc #define ACPI_RESTAG_ACCESSSIZE                  "_ASZ"
58433d6423SLionel Sambuc #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES      "_ATT"
59433d6423SLionel Sambuc #define ACPI_RESTAG_BASEADDRESS                 "_BAS"
60433d6423SLionel Sambuc #define ACPI_RESTAG_BUSMASTER                   "_BM_"  /* Master(1), Slave(0) */
61*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_DEBOUNCETIME                "_DBT"
62433d6423SLionel Sambuc #define ACPI_RESTAG_DECODE                      "_DEC"
63*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_DEVICEPOLARITY              "_DPL"
64433d6423SLionel Sambuc #define ACPI_RESTAG_DMA                         "_DMA"
65433d6423SLionel Sambuc #define ACPI_RESTAG_DMATYPE                     "_TYP"  /* Compatible(0), A(1), B(2), F(3) */
66*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_DRIVESTRENGTH               "_DRS"
67*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_ENDIANNESS                  "_END"
68*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_FLOWCONTROL                 "_FLC"
69433d6423SLionel Sambuc #define ACPI_RESTAG_GRANULARITY                 "_GRA"
70433d6423SLionel Sambuc #define ACPI_RESTAG_INTERRUPT                   "_INT"
71433d6423SLionel Sambuc #define ACPI_RESTAG_INTERRUPTLEVEL              "_LL_"  /* ActiveLo(1), ActiveHi(0) */
72433d6423SLionel Sambuc #define ACPI_RESTAG_INTERRUPTSHARE              "_SHR"  /* Shareable(1), NoShare(0) */
73433d6423SLionel Sambuc #define ACPI_RESTAG_INTERRUPTTYPE               "_HE_"  /* Edge(1), Level(0) */
74*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_IORESTRICTION               "_IOR"
75433d6423SLionel Sambuc #define ACPI_RESTAG_LENGTH                      "_LEN"
76*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_LINE                        "_LIN"
77433d6423SLionel Sambuc #define ACPI_RESTAG_MEMATTRIBUTES               "_MTP"  /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
78433d6423SLionel Sambuc #define ACPI_RESTAG_MEMTYPE                     "_MEM"  /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
79433d6423SLionel Sambuc #define ACPI_RESTAG_MAXADDR                     "_MAX"
80433d6423SLionel Sambuc #define ACPI_RESTAG_MINADDR                     "_MIN"
81433d6423SLionel Sambuc #define ACPI_RESTAG_MAXTYPE                     "_MAF"
82433d6423SLionel Sambuc #define ACPI_RESTAG_MINTYPE                     "_MIF"
83*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_MODE                        "_MOD"
84*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_PARITY                      "_PAR"
85*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_PHASE                       "_PHA"
86*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_PIN                         "_PIN"
87*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_PINCONFIG                   "_PPI"
88*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_POLARITY                    "_POL"
89433d6423SLionel Sambuc #define ACPI_RESTAG_REGISTERBITOFFSET           "_RBO"
90433d6423SLionel Sambuc #define ACPI_RESTAG_REGISTERBITWIDTH            "_RBW"
91433d6423SLionel Sambuc #define ACPI_RESTAG_RANGETYPE                   "_RNG"
92433d6423SLionel Sambuc #define ACPI_RESTAG_READWRITETYPE               "_RW_"  /* ReadOnly(0), Writeable (1) */
93*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_LENGTH_RX                   "_RXL"
94*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_LENGTH_TX                   "_TXL"
95*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_SLAVEMODE                   "_SLV"
96*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_SPEED                       "_SPE"
97*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_STOPBITS                    "_STB"
98433d6423SLionel Sambuc #define ACPI_RESTAG_TRANSLATION                 "_TRA"
99433d6423SLionel Sambuc #define ACPI_RESTAG_TRANSTYPE                   "_TRS"  /* Sparse(1), Dense(0) */
100433d6423SLionel Sambuc #define ACPI_RESTAG_TYPE                        "_TTP"  /* Translation(1), Static (0) */
101433d6423SLionel Sambuc #define ACPI_RESTAG_XFERTYPE                    "_SIZ"  /* 8(0), 8And16(1), 16(2) */
102*29492bb7SDavid van Moolenbroek #define ACPI_RESTAG_VENDORDATA                  "_VEN"
103433d6423SLionel Sambuc 
104433d6423SLionel Sambuc 
105433d6423SLionel Sambuc /* Default sizes for "small" resource descriptors */
106433d6423SLionel Sambuc 
107433d6423SLionel Sambuc #define ASL_RDESC_IRQ_SIZE                      0x02
108433d6423SLionel Sambuc #define ASL_RDESC_DMA_SIZE                      0x02
109433d6423SLionel Sambuc #define ASL_RDESC_ST_DEPEND_SIZE                0x00
110433d6423SLionel Sambuc #define ASL_RDESC_END_DEPEND_SIZE               0x00
111433d6423SLionel Sambuc #define ASL_RDESC_IO_SIZE                       0x07
112433d6423SLionel Sambuc #define ASL_RDESC_FIXED_IO_SIZE                 0x03
113*29492bb7SDavid van Moolenbroek #define ASL_RDESC_FIXED_DMA_SIZE                0x05
114433d6423SLionel Sambuc #define ASL_RDESC_END_TAG_SIZE                  0x01
115433d6423SLionel Sambuc 
116433d6423SLionel Sambuc 
117433d6423SLionel Sambuc typedef struct asl_resource_node
118433d6423SLionel Sambuc {
119433d6423SLionel Sambuc     UINT32                          BufferLength;
120433d6423SLionel Sambuc     void                            *Buffer;
121433d6423SLionel Sambuc     struct asl_resource_node        *Next;
122433d6423SLionel Sambuc 
123433d6423SLionel Sambuc } ASL_RESOURCE_NODE;
124433d6423SLionel Sambuc 
125*29492bb7SDavid van Moolenbroek typedef struct asl_resource_info
126*29492bb7SDavid van Moolenbroek {
127*29492bb7SDavid van Moolenbroek     ACPI_PARSE_OBJECT               *DescriptorTypeOp;  /* Resource descriptor parse node */
128*29492bb7SDavid van Moolenbroek     ACPI_PARSE_OBJECT               *MappingOp;         /* Used for mapfile support */
129*29492bb7SDavid van Moolenbroek     UINT32                          CurrentByteOffset;  /* Offset in resource template */
130*29492bb7SDavid van Moolenbroek 
131*29492bb7SDavid van Moolenbroek } ASL_RESOURCE_INFO;
132*29492bb7SDavid van Moolenbroek 
133433d6423SLionel Sambuc 
134433d6423SLionel Sambuc /* Macros used to generate AML resource length fields */
135433d6423SLionel Sambuc 
136433d6423SLionel Sambuc #define ACPI_AML_SIZE_LARGE(r)      (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER))
137433d6423SLionel Sambuc #define ACPI_AML_SIZE_SMALL(r)      (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER))
138433d6423SLionel Sambuc 
139433d6423SLionel Sambuc /*
140433d6423SLionel Sambuc  * Resource descriptors defined in the ACPI specification.
141433d6423SLionel Sambuc  *
142433d6423SLionel Sambuc  * Packing/alignment must be BYTE because these descriptors
143433d6423SLionel Sambuc  * are used to overlay the raw AML byte stream.
144433d6423SLionel Sambuc  */
145433d6423SLionel Sambuc #pragma pack(1)
146433d6423SLionel Sambuc 
147433d6423SLionel Sambuc /*
148433d6423SLionel Sambuc  * SMALL descriptors
149433d6423SLionel Sambuc  */
150433d6423SLionel Sambuc #define AML_RESOURCE_SMALL_HEADER_COMMON \
151433d6423SLionel Sambuc     UINT8                           DescriptorType;
152433d6423SLionel Sambuc 
153433d6423SLionel Sambuc typedef struct aml_resource_small_header
154433d6423SLionel Sambuc {
155433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
156433d6423SLionel Sambuc 
157433d6423SLionel Sambuc } AML_RESOURCE_SMALL_HEADER;
158433d6423SLionel Sambuc 
159433d6423SLionel Sambuc 
160433d6423SLionel Sambuc typedef struct aml_resource_irq
161433d6423SLionel Sambuc {
162433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
163433d6423SLionel Sambuc     UINT16                          IrqMask;
164433d6423SLionel Sambuc     UINT8                           Flags;
165433d6423SLionel Sambuc 
166433d6423SLionel Sambuc } AML_RESOURCE_IRQ;
167433d6423SLionel Sambuc 
168433d6423SLionel Sambuc 
169433d6423SLionel Sambuc typedef struct aml_resource_irq_noflags
170433d6423SLionel Sambuc {
171433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
172433d6423SLionel Sambuc     UINT16                          IrqMask;
173433d6423SLionel Sambuc 
174433d6423SLionel Sambuc } AML_RESOURCE_IRQ_NOFLAGS;
175433d6423SLionel Sambuc 
176433d6423SLionel Sambuc 
177433d6423SLionel Sambuc typedef struct aml_resource_dma
178433d6423SLionel Sambuc {
179433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
180433d6423SLionel Sambuc     UINT8                           DmaChannelMask;
181433d6423SLionel Sambuc     UINT8                           Flags;
182433d6423SLionel Sambuc 
183433d6423SLionel Sambuc } AML_RESOURCE_DMA;
184433d6423SLionel Sambuc 
185433d6423SLionel Sambuc 
186433d6423SLionel Sambuc typedef struct aml_resource_start_dependent
187433d6423SLionel Sambuc {
188433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
189433d6423SLionel Sambuc     UINT8                           Flags;
190433d6423SLionel Sambuc 
191433d6423SLionel Sambuc } AML_RESOURCE_START_DEPENDENT;
192433d6423SLionel Sambuc 
193433d6423SLionel Sambuc 
194433d6423SLionel Sambuc typedef struct aml_resource_start_dependent_noprio
195433d6423SLionel Sambuc {
196433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
197433d6423SLionel Sambuc 
198433d6423SLionel Sambuc } AML_RESOURCE_START_DEPENDENT_NOPRIO;
199433d6423SLionel Sambuc 
200433d6423SLionel Sambuc 
201433d6423SLionel Sambuc typedef struct aml_resource_end_dependent
202433d6423SLionel Sambuc {
203433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
204433d6423SLionel Sambuc 
205433d6423SLionel Sambuc } AML_RESOURCE_END_DEPENDENT;
206433d6423SLionel Sambuc 
207433d6423SLionel Sambuc 
208433d6423SLionel Sambuc typedef struct aml_resource_io
209433d6423SLionel Sambuc {
210433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
211433d6423SLionel Sambuc     UINT8                           Flags;
212433d6423SLionel Sambuc     UINT16                          Minimum;
213433d6423SLionel Sambuc     UINT16                          Maximum;
214433d6423SLionel Sambuc     UINT8                           Alignment;
215433d6423SLionel Sambuc     UINT8                           AddressLength;
216433d6423SLionel Sambuc 
217433d6423SLionel Sambuc } AML_RESOURCE_IO;
218433d6423SLionel Sambuc 
219433d6423SLionel Sambuc 
220433d6423SLionel Sambuc typedef struct aml_resource_fixed_io
221433d6423SLionel Sambuc {
222433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
223433d6423SLionel Sambuc     UINT16                          Address;
224433d6423SLionel Sambuc     UINT8                           AddressLength;
225433d6423SLionel Sambuc 
226433d6423SLionel Sambuc } AML_RESOURCE_FIXED_IO;
227433d6423SLionel Sambuc 
228433d6423SLionel Sambuc 
229433d6423SLionel Sambuc typedef struct aml_resource_vendor_small
230433d6423SLionel Sambuc {
231433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
232433d6423SLionel Sambuc 
233433d6423SLionel Sambuc } AML_RESOURCE_VENDOR_SMALL;
234433d6423SLionel Sambuc 
235433d6423SLionel Sambuc 
236433d6423SLionel Sambuc typedef struct aml_resource_end_tag
237433d6423SLionel Sambuc {
238433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER_COMMON
239433d6423SLionel Sambuc     UINT8                           Checksum;
240433d6423SLionel Sambuc 
241433d6423SLionel Sambuc } AML_RESOURCE_END_TAG;
242433d6423SLionel Sambuc 
243433d6423SLionel Sambuc 
244*29492bb7SDavid van Moolenbroek typedef struct aml_resource_fixed_dma
245*29492bb7SDavid van Moolenbroek {
246*29492bb7SDavid van Moolenbroek     AML_RESOURCE_SMALL_HEADER_COMMON
247*29492bb7SDavid van Moolenbroek     UINT16                          RequestLines;
248*29492bb7SDavid van Moolenbroek     UINT16                          Channels;
249*29492bb7SDavid van Moolenbroek     UINT8                           Width;
250*29492bb7SDavid van Moolenbroek 
251*29492bb7SDavid van Moolenbroek } AML_RESOURCE_FIXED_DMA;
252*29492bb7SDavid van Moolenbroek 
253*29492bb7SDavid van Moolenbroek 
254433d6423SLionel Sambuc /*
255433d6423SLionel Sambuc  * LARGE descriptors
256433d6423SLionel Sambuc  */
257433d6423SLionel Sambuc #define AML_RESOURCE_LARGE_HEADER_COMMON \
258433d6423SLionel Sambuc     UINT8                           DescriptorType;\
259433d6423SLionel Sambuc     UINT16                          ResourceLength;
260433d6423SLionel Sambuc 
261433d6423SLionel Sambuc typedef struct aml_resource_large_header
262433d6423SLionel Sambuc {
263433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
264433d6423SLionel Sambuc 
265433d6423SLionel Sambuc } AML_RESOURCE_LARGE_HEADER;
266433d6423SLionel Sambuc 
267433d6423SLionel Sambuc 
268433d6423SLionel Sambuc /* General Flags for address space resource descriptors */
269433d6423SLionel Sambuc 
270433d6423SLionel Sambuc #define ACPI_RESOURCE_FLAG_DEC      2
271433d6423SLionel Sambuc #define ACPI_RESOURCE_FLAG_MIF      4
272433d6423SLionel Sambuc #define ACPI_RESOURCE_FLAG_MAF      8
273433d6423SLionel Sambuc 
274433d6423SLionel Sambuc typedef struct aml_resource_memory24
275433d6423SLionel Sambuc {
276433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
277433d6423SLionel Sambuc     UINT8                           Flags;
278433d6423SLionel Sambuc     UINT16                          Minimum;
279433d6423SLionel Sambuc     UINT16                          Maximum;
280433d6423SLionel Sambuc     UINT16                          Alignment;
281433d6423SLionel Sambuc     UINT16                          AddressLength;
282433d6423SLionel Sambuc 
283433d6423SLionel Sambuc } AML_RESOURCE_MEMORY24;
284433d6423SLionel Sambuc 
285433d6423SLionel Sambuc 
286433d6423SLionel Sambuc typedef struct aml_resource_vendor_large
287433d6423SLionel Sambuc {
288433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
289433d6423SLionel Sambuc 
290433d6423SLionel Sambuc } AML_RESOURCE_VENDOR_LARGE;
291433d6423SLionel Sambuc 
292433d6423SLionel Sambuc 
293433d6423SLionel Sambuc typedef struct aml_resource_memory32
294433d6423SLionel Sambuc {
295433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
296433d6423SLionel Sambuc     UINT8                           Flags;
297433d6423SLionel Sambuc     UINT32                          Minimum;
298433d6423SLionel Sambuc     UINT32                          Maximum;
299433d6423SLionel Sambuc     UINT32                          Alignment;
300433d6423SLionel Sambuc     UINT32                          AddressLength;
301433d6423SLionel Sambuc 
302433d6423SLionel Sambuc } AML_RESOURCE_MEMORY32;
303433d6423SLionel Sambuc 
304433d6423SLionel Sambuc 
305433d6423SLionel Sambuc typedef struct aml_resource_fixed_memory32
306433d6423SLionel Sambuc {
307433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
308433d6423SLionel Sambuc     UINT8                           Flags;
309433d6423SLionel Sambuc     UINT32                          Address;
310433d6423SLionel Sambuc     UINT32                          AddressLength;
311433d6423SLionel Sambuc 
312433d6423SLionel Sambuc } AML_RESOURCE_FIXED_MEMORY32;
313433d6423SLionel Sambuc 
314433d6423SLionel Sambuc 
315433d6423SLionel Sambuc #define AML_RESOURCE_ADDRESS_COMMON \
316433d6423SLionel Sambuc     UINT8                           ResourceType; \
317433d6423SLionel Sambuc     UINT8                           Flags; \
318433d6423SLionel Sambuc     UINT8                           SpecificFlags;
319433d6423SLionel Sambuc 
320433d6423SLionel Sambuc 
321433d6423SLionel Sambuc typedef struct aml_resource_address
322433d6423SLionel Sambuc {
323433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
324433d6423SLionel Sambuc     AML_RESOURCE_ADDRESS_COMMON
325433d6423SLionel Sambuc 
326433d6423SLionel Sambuc } AML_RESOURCE_ADDRESS;
327433d6423SLionel Sambuc 
328433d6423SLionel Sambuc 
329433d6423SLionel Sambuc typedef struct aml_resource_extended_address64
330433d6423SLionel Sambuc {
331433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
332433d6423SLionel Sambuc     AML_RESOURCE_ADDRESS_COMMON
333433d6423SLionel Sambuc     UINT8                           RevisionID;
334433d6423SLionel Sambuc     UINT8                           Reserved;
335433d6423SLionel Sambuc     UINT64                          Granularity;
336433d6423SLionel Sambuc     UINT64                          Minimum;
337433d6423SLionel Sambuc     UINT64                          Maximum;
338433d6423SLionel Sambuc     UINT64                          TranslationOffset;
339433d6423SLionel Sambuc     UINT64                          AddressLength;
340433d6423SLionel Sambuc     UINT64                          TypeSpecific;
341433d6423SLionel Sambuc 
342433d6423SLionel Sambuc } AML_RESOURCE_EXTENDED_ADDRESS64;
343433d6423SLionel Sambuc 
344433d6423SLionel Sambuc #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION          1       /* ACPI 3.0 */
345433d6423SLionel Sambuc 
346433d6423SLionel Sambuc 
347433d6423SLionel Sambuc typedef struct aml_resource_address64
348433d6423SLionel Sambuc {
349433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
350433d6423SLionel Sambuc     AML_RESOURCE_ADDRESS_COMMON
351433d6423SLionel Sambuc     UINT64                          Granularity;
352433d6423SLionel Sambuc     UINT64                          Minimum;
353433d6423SLionel Sambuc     UINT64                          Maximum;
354433d6423SLionel Sambuc     UINT64                          TranslationOffset;
355433d6423SLionel Sambuc     UINT64                          AddressLength;
356433d6423SLionel Sambuc 
357433d6423SLionel Sambuc } AML_RESOURCE_ADDRESS64;
358433d6423SLionel Sambuc 
359433d6423SLionel Sambuc 
360433d6423SLionel Sambuc typedef struct aml_resource_address32
361433d6423SLionel Sambuc {
362433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
363433d6423SLionel Sambuc     AML_RESOURCE_ADDRESS_COMMON
364433d6423SLionel Sambuc     UINT32                          Granularity;
365433d6423SLionel Sambuc     UINT32                          Minimum;
366433d6423SLionel Sambuc     UINT32                          Maximum;
367433d6423SLionel Sambuc     UINT32                          TranslationOffset;
368433d6423SLionel Sambuc     UINT32                          AddressLength;
369433d6423SLionel Sambuc 
370433d6423SLionel Sambuc } AML_RESOURCE_ADDRESS32;
371433d6423SLionel Sambuc 
372433d6423SLionel Sambuc 
373433d6423SLionel Sambuc typedef struct aml_resource_address16
374433d6423SLionel Sambuc {
375433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
376433d6423SLionel Sambuc     AML_RESOURCE_ADDRESS_COMMON
377433d6423SLionel Sambuc     UINT16                          Granularity;
378433d6423SLionel Sambuc     UINT16                          Minimum;
379433d6423SLionel Sambuc     UINT16                          Maximum;
380433d6423SLionel Sambuc     UINT16                          TranslationOffset;
381433d6423SLionel Sambuc     UINT16                          AddressLength;
382433d6423SLionel Sambuc 
383433d6423SLionel Sambuc } AML_RESOURCE_ADDRESS16;
384433d6423SLionel Sambuc 
385433d6423SLionel Sambuc 
386433d6423SLionel Sambuc typedef struct aml_resource_extended_irq
387433d6423SLionel Sambuc {
388433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
389433d6423SLionel Sambuc     UINT8                           Flags;
390433d6423SLionel Sambuc     UINT8                           InterruptCount;
391433d6423SLionel Sambuc     UINT32                          Interrupts[1];
392433d6423SLionel Sambuc     /* ResSourceIndex, ResSource optional fields follow */
393433d6423SLionel Sambuc 
394433d6423SLionel Sambuc } AML_RESOURCE_EXTENDED_IRQ;
395433d6423SLionel Sambuc 
396433d6423SLionel Sambuc 
397433d6423SLionel Sambuc typedef struct aml_resource_generic_register
398433d6423SLionel Sambuc {
399433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER_COMMON
400433d6423SLionel Sambuc     UINT8                           AddressSpaceId;
401433d6423SLionel Sambuc     UINT8                           BitWidth;
402433d6423SLionel Sambuc     UINT8                           BitOffset;
403433d6423SLionel Sambuc     UINT8                           AccessSize; /* ACPI 3.0, was previously Reserved */
404433d6423SLionel Sambuc     UINT64                          Address;
405433d6423SLionel Sambuc 
406433d6423SLionel Sambuc } AML_RESOURCE_GENERIC_REGISTER;
407433d6423SLionel Sambuc 
408*29492bb7SDavid van Moolenbroek 
409*29492bb7SDavid van Moolenbroek /* Common descriptor for GpioInt and GpioIo (ACPI 5.0) */
410*29492bb7SDavid van Moolenbroek 
411*29492bb7SDavid van Moolenbroek typedef struct aml_resource_gpio
412*29492bb7SDavid van Moolenbroek {
413*29492bb7SDavid van Moolenbroek     AML_RESOURCE_LARGE_HEADER_COMMON
414*29492bb7SDavid van Moolenbroek     UINT8                           RevisionId;
415*29492bb7SDavid van Moolenbroek     UINT8                           ConnectionType;
416*29492bb7SDavid van Moolenbroek     UINT16                          Flags;
417*29492bb7SDavid van Moolenbroek     UINT16                          IntFlags;
418*29492bb7SDavid van Moolenbroek     UINT8                           PinConfig;
419*29492bb7SDavid van Moolenbroek     UINT16                          DriveStrength;
420*29492bb7SDavid van Moolenbroek     UINT16                          DebounceTimeout;
421*29492bb7SDavid van Moolenbroek     UINT16                          PinTableOffset;
422*29492bb7SDavid van Moolenbroek     UINT8                           ResSourceIndex;
423*29492bb7SDavid van Moolenbroek     UINT16                          ResSourceOffset;
424*29492bb7SDavid van Moolenbroek     UINT16                          VendorOffset;
425*29492bb7SDavid van Moolenbroek     UINT16                          VendorLength;
426*29492bb7SDavid van Moolenbroek     /*
427*29492bb7SDavid van Moolenbroek      * Optional fields follow immediately:
428*29492bb7SDavid van Moolenbroek      * 1) PIN list (Words)
429*29492bb7SDavid van Moolenbroek      * 2) Resource Source String
430*29492bb7SDavid van Moolenbroek      * 3) Vendor Data bytes
431*29492bb7SDavid van Moolenbroek      */
432*29492bb7SDavid van Moolenbroek 
433*29492bb7SDavid van Moolenbroek } AML_RESOURCE_GPIO;
434*29492bb7SDavid van Moolenbroek 
435*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_GPIO_REVISION              1       /* ACPI 5.0 */
436*29492bb7SDavid van Moolenbroek 
437*29492bb7SDavid van Moolenbroek /* Values for ConnectionType above */
438*29492bb7SDavid van Moolenbroek 
439*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_GPIO_TYPE_INT              0
440*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_GPIO_TYPE_IO               1
441*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_MAX_GPIOTYPE               1
442*29492bb7SDavid van Moolenbroek 
443*29492bb7SDavid van Moolenbroek 
444*29492bb7SDavid van Moolenbroek /* Common preamble for all serial descriptors (ACPI 5.0) */
445*29492bb7SDavid van Moolenbroek 
446*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_SERIAL_COMMON \
447*29492bb7SDavid van Moolenbroek     UINT8                           RevisionId; \
448*29492bb7SDavid van Moolenbroek     UINT8                           ResSourceIndex; \
449*29492bb7SDavid van Moolenbroek     UINT8                           Type; \
450*29492bb7SDavid van Moolenbroek     UINT8                           Flags; \
451*29492bb7SDavid van Moolenbroek     UINT16                          TypeSpecificFlags; \
452*29492bb7SDavid van Moolenbroek     UINT8                           TypeRevisionId; \
453*29492bb7SDavid van Moolenbroek     UINT16                          TypeDataLength; \
454*29492bb7SDavid van Moolenbroek 
455*29492bb7SDavid van Moolenbroek /* Values for the type field above */
456*29492bb7SDavid van Moolenbroek 
457*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_I2C_SERIALBUSTYPE          1
458*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_SPI_SERIALBUSTYPE          2
459*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_UART_SERIALBUSTYPE         3
460*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_MAX_SERIALBUSTYPE          3
461*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_VENDOR_SERIALBUSTYPE       192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */
462*29492bb7SDavid van Moolenbroek 
463*29492bb7SDavid van Moolenbroek typedef struct aml_resource_common_serialbus
464*29492bb7SDavid van Moolenbroek {
465*29492bb7SDavid van Moolenbroek     AML_RESOURCE_LARGE_HEADER_COMMON
466*29492bb7SDavid van Moolenbroek     AML_RESOURCE_SERIAL_COMMON
467*29492bb7SDavid van Moolenbroek 
468*29492bb7SDavid van Moolenbroek } AML_RESOURCE_COMMON_SERIALBUS;
469*29492bb7SDavid van Moolenbroek 
470*29492bb7SDavid van Moolenbroek typedef struct aml_resource_i2c_serialbus
471*29492bb7SDavid van Moolenbroek {
472*29492bb7SDavid van Moolenbroek     AML_RESOURCE_LARGE_HEADER_COMMON
473*29492bb7SDavid van Moolenbroek     AML_RESOURCE_SERIAL_COMMON
474*29492bb7SDavid van Moolenbroek     UINT32                          ConnectionSpeed;
475*29492bb7SDavid van Moolenbroek     UINT16                          SlaveAddress;
476*29492bb7SDavid van Moolenbroek     /*
477*29492bb7SDavid van Moolenbroek      * Optional fields follow immediately:
478*29492bb7SDavid van Moolenbroek      * 1) Vendor Data bytes
479*29492bb7SDavid van Moolenbroek      * 2) Resource Source String
480*29492bb7SDavid van Moolenbroek      */
481*29492bb7SDavid van Moolenbroek 
482*29492bb7SDavid van Moolenbroek } AML_RESOURCE_I2C_SERIALBUS;
483*29492bb7SDavid van Moolenbroek 
484*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_I2C_REVISION               1       /* ACPI 5.0 */
485*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_I2C_TYPE_REVISION          1       /* ACPI 5.0 */
486*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_I2C_MIN_DATA_LEN           6
487*29492bb7SDavid van Moolenbroek 
488*29492bb7SDavid van Moolenbroek typedef struct aml_resource_spi_serialbus
489*29492bb7SDavid van Moolenbroek {
490*29492bb7SDavid van Moolenbroek     AML_RESOURCE_LARGE_HEADER_COMMON
491*29492bb7SDavid van Moolenbroek     AML_RESOURCE_SERIAL_COMMON
492*29492bb7SDavid van Moolenbroek     UINT32                          ConnectionSpeed;
493*29492bb7SDavid van Moolenbroek     UINT8                           DataBitLength;
494*29492bb7SDavid van Moolenbroek     UINT8                           ClockPhase;
495*29492bb7SDavid van Moolenbroek     UINT8                           ClockPolarity;
496*29492bb7SDavid van Moolenbroek     UINT16                          DeviceSelection;
497*29492bb7SDavid van Moolenbroek     /*
498*29492bb7SDavid van Moolenbroek      * Optional fields follow immediately:
499*29492bb7SDavid van Moolenbroek      * 1) Vendor Data bytes
500*29492bb7SDavid van Moolenbroek      * 2) Resource Source String
501*29492bb7SDavid van Moolenbroek      */
502*29492bb7SDavid van Moolenbroek 
503*29492bb7SDavid van Moolenbroek } AML_RESOURCE_SPI_SERIALBUS;
504*29492bb7SDavid van Moolenbroek 
505*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_SPI_REVISION               1       /* ACPI 5.0 */
506*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_SPI_TYPE_REVISION          1       /* ACPI 5.0 */
507*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_SPI_MIN_DATA_LEN           9
508*29492bb7SDavid van Moolenbroek 
509*29492bb7SDavid van Moolenbroek 
510*29492bb7SDavid van Moolenbroek typedef struct aml_resource_uart_serialbus
511*29492bb7SDavid van Moolenbroek {
512*29492bb7SDavid van Moolenbroek     AML_RESOURCE_LARGE_HEADER_COMMON
513*29492bb7SDavid van Moolenbroek     AML_RESOURCE_SERIAL_COMMON
514*29492bb7SDavid van Moolenbroek     UINT32                          DefaultBaudRate;
515*29492bb7SDavid van Moolenbroek     UINT16                          RxFifoSize;
516*29492bb7SDavid van Moolenbroek     UINT16                          TxFifoSize;
517*29492bb7SDavid van Moolenbroek     UINT8                           Parity;
518*29492bb7SDavid van Moolenbroek     UINT8                           LinesEnabled;
519*29492bb7SDavid van Moolenbroek     /*
520*29492bb7SDavid van Moolenbroek      * Optional fields follow immediately:
521*29492bb7SDavid van Moolenbroek      * 1) Vendor Data bytes
522*29492bb7SDavid van Moolenbroek      * 2) Resource Source String
523*29492bb7SDavid van Moolenbroek      */
524*29492bb7SDavid van Moolenbroek 
525*29492bb7SDavid van Moolenbroek } AML_RESOURCE_UART_SERIALBUS;
526*29492bb7SDavid van Moolenbroek 
527*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_UART_REVISION              1       /* ACPI 5.0 */
528*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_UART_TYPE_REVISION         1       /* ACPI 5.0 */
529*29492bb7SDavid van Moolenbroek #define AML_RESOURCE_UART_MIN_DATA_LEN          10
530*29492bb7SDavid van Moolenbroek 
531*29492bb7SDavid van Moolenbroek 
532433d6423SLionel Sambuc /* restore default alignment */
533433d6423SLionel Sambuc 
534433d6423SLionel Sambuc #pragma pack()
535433d6423SLionel Sambuc 
536433d6423SLionel Sambuc /* Union of all resource descriptors, so we can allocate the worst case */
537433d6423SLionel Sambuc 
538433d6423SLionel Sambuc typedef union aml_resource
539433d6423SLionel Sambuc {
540433d6423SLionel Sambuc     /* Descriptor headers */
541433d6423SLionel Sambuc 
542433d6423SLionel Sambuc     UINT8                                   DescriptorType;
543433d6423SLionel Sambuc     AML_RESOURCE_SMALL_HEADER               SmallHeader;
544433d6423SLionel Sambuc     AML_RESOURCE_LARGE_HEADER               LargeHeader;
545433d6423SLionel Sambuc 
546433d6423SLionel Sambuc     /* Small resource descriptors */
547433d6423SLionel Sambuc 
548433d6423SLionel Sambuc     AML_RESOURCE_IRQ                        Irq;
549433d6423SLionel Sambuc     AML_RESOURCE_DMA                        Dma;
550433d6423SLionel Sambuc     AML_RESOURCE_START_DEPENDENT            StartDpf;
551433d6423SLionel Sambuc     AML_RESOURCE_END_DEPENDENT              EndDpf;
552433d6423SLionel Sambuc     AML_RESOURCE_IO                         Io;
553433d6423SLionel Sambuc     AML_RESOURCE_FIXED_IO                   FixedIo;
554*29492bb7SDavid van Moolenbroek     AML_RESOURCE_FIXED_DMA                  FixedDma;
555433d6423SLionel Sambuc     AML_RESOURCE_VENDOR_SMALL               VendorSmall;
556433d6423SLionel Sambuc     AML_RESOURCE_END_TAG                    EndTag;
557433d6423SLionel Sambuc 
558433d6423SLionel Sambuc     /* Large resource descriptors */
559433d6423SLionel Sambuc 
560433d6423SLionel Sambuc     AML_RESOURCE_MEMORY24                   Memory24;
561433d6423SLionel Sambuc     AML_RESOURCE_GENERIC_REGISTER           GenericReg;
562433d6423SLionel Sambuc     AML_RESOURCE_VENDOR_LARGE               VendorLarge;
563433d6423SLionel Sambuc     AML_RESOURCE_MEMORY32                   Memory32;
564433d6423SLionel Sambuc     AML_RESOURCE_FIXED_MEMORY32             FixedMemory32;
565433d6423SLionel Sambuc     AML_RESOURCE_ADDRESS16                  Address16;
566433d6423SLionel Sambuc     AML_RESOURCE_ADDRESS32                  Address32;
567433d6423SLionel Sambuc     AML_RESOURCE_ADDRESS64                  Address64;
568433d6423SLionel Sambuc     AML_RESOURCE_EXTENDED_ADDRESS64         ExtAddress64;
569433d6423SLionel Sambuc     AML_RESOURCE_EXTENDED_IRQ               ExtendedIrq;
570*29492bb7SDavid van Moolenbroek     AML_RESOURCE_GPIO                       Gpio;
571*29492bb7SDavid van Moolenbroek     AML_RESOURCE_I2C_SERIALBUS              I2cSerialBus;
572*29492bb7SDavid van Moolenbroek     AML_RESOURCE_SPI_SERIALBUS              SpiSerialBus;
573*29492bb7SDavid van Moolenbroek     AML_RESOURCE_UART_SERIALBUS             UartSerialBus;
574*29492bb7SDavid van Moolenbroek     AML_RESOURCE_COMMON_SERIALBUS           CommonSerialBus;
575433d6423SLionel Sambuc 
576433d6423SLionel Sambuc     /* Utility overlays */
577433d6423SLionel Sambuc 
578433d6423SLionel Sambuc     AML_RESOURCE_ADDRESS                    Address;
579433d6423SLionel Sambuc     UINT32                                  DwordItem;
580433d6423SLionel Sambuc     UINT16                                  WordItem;
581433d6423SLionel Sambuc     UINT8                                   ByteItem;
582433d6423SLionel Sambuc 
583433d6423SLionel Sambuc } AML_RESOURCE;
584433d6423SLionel Sambuc 
585433d6423SLionel Sambuc 
586*29492bb7SDavid van Moolenbroek /* Interfaces used by both the disassembler and compiler */
587*29492bb7SDavid van Moolenbroek 
588*29492bb7SDavid van Moolenbroek void
589*29492bb7SDavid van Moolenbroek MpSaveGpioInfo (
590*29492bb7SDavid van Moolenbroek     ACPI_PARSE_OBJECT       *Op,
591*29492bb7SDavid van Moolenbroek     AML_RESOURCE            *Resource,
592*29492bb7SDavid van Moolenbroek     UINT32                  PinCount,
593*29492bb7SDavid van Moolenbroek     UINT16                  *PinList,
594*29492bb7SDavid van Moolenbroek     char                    *DeviceName);
595*29492bb7SDavid van Moolenbroek 
596*29492bb7SDavid van Moolenbroek void
597*29492bb7SDavid van Moolenbroek MpSaveSerialInfo (
598*29492bb7SDavid van Moolenbroek     ACPI_PARSE_OBJECT       *Op,
599*29492bb7SDavid van Moolenbroek     AML_RESOURCE            *Resource,
600*29492bb7SDavid van Moolenbroek     char                    *DeviceName);
601*29492bb7SDavid van Moolenbroek 
602*29492bb7SDavid van Moolenbroek char *
603*29492bb7SDavid van Moolenbroek MpGetHidFromParseTree (
604*29492bb7SDavid van Moolenbroek     ACPI_NAMESPACE_NODE     *HidNode);
605*29492bb7SDavid van Moolenbroek 
606*29492bb7SDavid van Moolenbroek char *
607*29492bb7SDavid van Moolenbroek MpGetHidViaNamestring (
608*29492bb7SDavid van Moolenbroek     char                    *DeviceName);
609*29492bb7SDavid van Moolenbroek 
610*29492bb7SDavid van Moolenbroek char *
611*29492bb7SDavid van Moolenbroek MpGetConnectionInfo (
612*29492bb7SDavid van Moolenbroek     ACPI_PARSE_OBJECT       *Op,
613*29492bb7SDavid van Moolenbroek     UINT32                  PinIndex,
614*29492bb7SDavid van Moolenbroek     ACPI_NAMESPACE_NODE     **TargetNode,
615*29492bb7SDavid van Moolenbroek     char                    **TargetName);
616*29492bb7SDavid van Moolenbroek 
617*29492bb7SDavid van Moolenbroek char *
618*29492bb7SDavid van Moolenbroek MpGetParentDeviceHid (
619*29492bb7SDavid van Moolenbroek     ACPI_PARSE_OBJECT       *Op,
620*29492bb7SDavid van Moolenbroek     ACPI_NAMESPACE_NODE     **TargetNode,
621*29492bb7SDavid van Moolenbroek     char                    **ParentDeviceName);
622*29492bb7SDavid van Moolenbroek 
623*29492bb7SDavid van Moolenbroek char *
624*29492bb7SDavid van Moolenbroek MpGetDdnValue (
625*29492bb7SDavid van Moolenbroek     char                    *DeviceName);
626*29492bb7SDavid van Moolenbroek 
627*29492bb7SDavid van Moolenbroek char *
628*29492bb7SDavid van Moolenbroek MpGetHidValue (
629*29492bb7SDavid van Moolenbroek     ACPI_NAMESPACE_NODE     *DeviceNode);
630*29492bb7SDavid van Moolenbroek 
631*29492bb7SDavid van Moolenbroek #endif
632