Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*******************************************************************************
  2  *
  3  * Module Name: rsio - IO and DMA resource descriptors
  4  *
  5  ******************************************************************************/
  6 
  7 /*
  8  * Copyright (C) 2000 - 2007, R. Byron Moore
  9  * All rights reserved.
 10  *
 11  * Redistribution and use in source and binary forms, with or without
 12  * modification, are permitted provided that the following conditions
 13  * are met:
 14  * 1. Redistributions of source code must retain the above copyright
 15  *    notice, this list of conditions, and the following disclaimer,
 16  *    without modification.
 17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 18  *    substantially similar to the "NO WARRANTY" disclaimer below
 19  *    ("Disclaimer") and any redistribution must be conditioned upon
 20  *    including a substantially similar Disclaimer requirement for further
 21  *    binary redistribution.
 22  * 3. Neither the names of the above-listed copyright holders nor the names
 23  *    of any contributors may be used to endorse or promote products derived
 24  *    from this software without specific prior written permission.
 25  *
 26  * Alternatively, this software may be distributed under the terms of the
 27  * GNU General Public License ("GPL") version 2 as published by the Free
 28  * Software Foundation.
 29  *
 30  * NO WARRANTY
 31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
 34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 41  * POSSIBILITY OF SUCH DAMAGES.
 42  */
 43 
 44 #include <acpi/acpi.h>
 45 #include <acpi/acresrc.h>
 46 
 47 #define _COMPONENT          ACPI_RESOURCES
 48 ACPI_MODULE_NAME("rsio")
 49 
 50 /*******************************************************************************
 51  *
 52  * acpi_rs_convert_io
 53  *
 54  ******************************************************************************/
 55 struct acpi_rsconvert_info acpi_rs_convert_io[5] = {
 56         {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_IO,
 57          ACPI_RS_SIZE(struct acpi_resource_io),
 58          ACPI_RSC_TABLE_SIZE(acpi_rs_convert_io)},
 59 
 60         {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_IO,
 61          sizeof(struct aml_resource_io),
 62          0},
 63 
 64         /* Decode flag */
 65 
 66         {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.io.io_decode),
 67          AML_OFFSET(io.flags),
 68          0},
 69         /*
 70          * These fields are contiguous in both the source and destination:
 71          * Address Alignment
 72          * Length
 73          * Minimum Base Address
 74          * Maximum Base Address
 75          */
 76         {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.io.alignment),
 77          AML_OFFSET(io.alignment),
 78          2},
 79 
 80         {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.io.minimum),
 81          AML_OFFSET(io.minimum),
 82          2}
 83 };
 84 
 85 /*******************************************************************************
 86  *
 87  * acpi_rs_convert_fixed_io
 88  *
 89  ******************************************************************************/
 90 
 91 struct acpi_rsconvert_info acpi_rs_convert_fixed_io[4] = {
 92         {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_IO,
 93          ACPI_RS_SIZE(struct acpi_resource_fixed_io),
 94          ACPI_RSC_TABLE_SIZE(acpi_rs_convert_fixed_io)},
 95 
 96         {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_IO,
 97          sizeof(struct aml_resource_fixed_io),
 98          0},
 99         /*
100          * These fields are contiguous in both the source and destination:
101          * Base Address
102          * Length
103          */
104         {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.fixed_io.address_length),
105          AML_OFFSET(fixed_io.address_length),
106          1},
107 
108         {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.fixed_io.address),
109          AML_OFFSET(fixed_io.address),
110          1}
111 };
112 
113 /*******************************************************************************
114  *
115  * acpi_rs_convert_generic_reg
116  *
117  ******************************************************************************/
118 
119 struct acpi_rsconvert_info acpi_rs_convert_generic_reg[4] = {
120         {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_GENERIC_REGISTER,
121          ACPI_RS_SIZE(struct acpi_resource_generic_register),
122          ACPI_RSC_TABLE_SIZE(acpi_rs_convert_generic_reg)},
123 
124         {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_GENERIC_REGISTER,
125          sizeof(struct aml_resource_generic_register),
126          0},
127         /*
128          * These fields are contiguous in both the source and destination:
129          * Address Space ID
130          * Register Bit Width
131          * Register Bit Offset
132          * Access Size
133          */
134         {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.generic_reg.space_id),
135          AML_OFFSET(generic_reg.address_space_id),
136          4},
137 
138         /* Get the Register Address */
139 
140         {ACPI_RSC_MOVE64, ACPI_RS_OFFSET(data.generic_reg.address),
141          AML_OFFSET(generic_reg.address),
142          1}
143 };
144 
145 /*******************************************************************************
146  *
147  * acpi_rs_convert_end_dpf
148  *
149  ******************************************************************************/
150 
151 struct acpi_rsconvert_info acpi_rs_convert_end_dpf[2] = {
152         {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_END_DEPENDENT,
153          ACPI_RS_SIZE_MIN,
154          ACPI_RSC_TABLE_SIZE(acpi_rs_convert_end_dpf)},
155 
156         {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_END_DEPENDENT,
157          sizeof(struct aml_resource_end_dependent),
158          0}
159 };
160 
161 /*******************************************************************************
162  *
163  * acpi_rs_convert_end_tag
164  *
165  ******************************************************************************/
166 
167 struct acpi_rsconvert_info acpi_rs_convert_end_tag[2] = {
168         {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_END_TAG,
169          ACPI_RS_SIZE_MIN,
170          ACPI_RSC_TABLE_SIZE(acpi_rs_convert_end_tag)},
171 
172         /*
173          * Note: The checksum field is set to zero, meaning that the resource
174          * data is treated as if the checksum operation succeeded.
175          * (ACPI Spec 1.0b Section 6.4.2.8)
176          */
177         {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_END_TAG,
178          sizeof(struct aml_resource_end_tag),
179          0}
180 };
181 
182 /*******************************************************************************
183  *
184  * acpi_rs_get_start_dpf
185  *
186  ******************************************************************************/
187 
188 struct acpi_rsconvert_info acpi_rs_get_start_dpf[5] = {
189         {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_START_DEPENDENT,
190          ACPI_RS_SIZE(struct acpi_resource_start_dependent),
191          ACPI_RSC_TABLE_SIZE(acpi_rs_get_start_dpf)},
192 
193         /* Defaults for Compatibility and Performance priorities */
194 
195         {ACPI_RSC_SET8, ACPI_RS_OFFSET(data.start_dpf.compatibility_priority),
196          ACPI_ACCEPTABLE_CONFIGURATION,
197          2},
198 
199         /* All done if there is no flag byte present in the descriptor */
200 
201         {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_AML_LENGTH, 0, 1},
202 
203         /* Flag byte is present, get the flags */
204 
205         {ACPI_RSC_2BITFLAG,
206          ACPI_RS_OFFSET(data.start_dpf.compatibility_priority),
207          AML_OFFSET(start_dpf.flags),
208          0},
209 
210         {ACPI_RSC_2BITFLAG,
211          ACPI_RS_OFFSET(data.start_dpf.performance_robustness),
212          AML_OFFSET(start_dpf.flags),
213          2}
214 };
215 
216 /*******************************************************************************
217  *
218  * acpi_rs_set_start_dpf
219  *
220  ******************************************************************************/
221 
222 struct acpi_rsconvert_info acpi_rs_set_start_dpf[6] = {
223         {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_START_DEPENDENT,
224          sizeof(struct aml_resource_start_dependent),
225          ACPI_RSC_TABLE_SIZE(acpi_rs_set_start_dpf)},
226 
227         /* Set the default flag values */
228 
229         {ACPI_RSC_2BITFLAG,
230          ACPI_RS_OFFSET(data.start_dpf.compatibility_priority),
231          AML_OFFSET(start_dpf.flags),
232          0},
233 
234         {ACPI_RSC_2BITFLAG,
235          ACPI_RS_OFFSET(data.start_dpf.performance_robustness),
236          AML_OFFSET(start_dpf.flags),
237          2},
238         /*
239          * All done if flags byte is necessary -- if either priority value
240          * is not ACPI_ACCEPTABLE_CONFIGURATION
241          */
242         {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE,
243          ACPI_RS_OFFSET(data.start_dpf.compatibility_priority),
244          ACPI_ACCEPTABLE_CONFIGURATION},
245 
246         {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE,
247          ACPI_RS_OFFSET(data.start_dpf.performance_robustness),
248          ACPI_ACCEPTABLE_CONFIGURATION},
249 
250         /* Flag byte is not necessary */
251 
252         {ACPI_RSC_LENGTH, 0, 0,
253          sizeof(struct aml_resource_start_dependent_noprio)}
254 };
255 
  This page was automatically generated by the LXR engine.