Lines Matching +full:address +full:- +full:translation
1 // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
4 * Module Name: rsaddr - Address resource descriptors (16/32/64)
17 * acpi_rs_convert_address16 - All WORD (16-bit) address resources
29 /* Resource Type, General Flags, and Type-Specific Flags */
35 * Address Granularity
36 * Address Range Minimum
37 * Address Range Maximum
38 * Address Translation Offset
39 * Address Length
41 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.address16.address.granularity),
54 * acpi_rs_convert_address32 - All DWORD (32-bit) address resources
67 /* Resource Type, General Flags, and Type-Specific Flags */
73 * Address Granularity
74 * Address Range Minimum
75 * Address Range Maximum
76 * Address Translation Offset
77 * Address Length
79 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.address32.address.granularity),
92 * acpi_rs_convert_address64 - All QWORD (64-bit) address resources
105 /* Resource Type, General Flags, and Type-Specific Flags */
111 * Address Granularity
112 * Address Range Minimum
113 * Address Range Maximum
114 * Address Translation Offset
115 * Address Length
117 {ACPI_RSC_MOVE64, ACPI_RS_OFFSET(data.address64.address.granularity),
130 * acpi_rs_convert_ext_address64 - All Extended (64-bit) address resources
143 /* Resource Type, General Flags, and Type-Specific Flags */
154 * Address Granularity
155 * Address Range Minimum
156 * Address Range Maximum
157 * Address Translation Offset
158 * Address Length
159 * Type-Specific Attribute
162 ACPI_RS_OFFSET(data.ext_address64.address.granularity),
169 * acpi_rs_convert_general_flags - Flags common to all address descriptors
174 {ACPI_RSC_FLAGINIT, 0, AML_OFFSET(address.flags),
179 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.address.resource_type),
180 AML_OFFSET(address.resource_type),
183 /* General flags - Consume, Decode, min_fixed, max_fixed */
185 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.address.producer_consumer),
186 AML_OFFSET(address.flags),
189 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.address.decode),
190 AML_OFFSET(address.flags),
193 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.address.min_address_fixed),
194 AML_OFFSET(address.flags),
197 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.address.max_address_fixed),
198 AML_OFFSET(address.flags),
204 * acpi_rs_convert_mem_flags - Flags common to Memory address descriptors
209 {ACPI_RSC_FLAGINIT, 0, AML_OFFSET(address.specific_flags),
212 /* Memory-specific flags */
214 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.address.info.mem.write_protect),
215 AML_OFFSET(address.specific_flags),
218 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.address.info.mem.caching),
219 AML_OFFSET(address.specific_flags),
222 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.address.info.mem.range_type),
223 AML_OFFSET(address.specific_flags),
226 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.address.info.mem.translation),
227 AML_OFFSET(address.specific_flags),
233 * acpi_rs_convert_io_flags - Flags common to I/O address descriptors
238 {ACPI_RSC_FLAGINIT, 0, AML_OFFSET(address.specific_flags),
241 /* I/O-specific flags */
243 {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.address.info.io.range_type),
244 AML_OFFSET(address.specific_flags),
247 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.address.info.io.translation),
248 AML_OFFSET(address.specific_flags),
252 ACPI_RS_OFFSET(data.address.info.io.translation_type),
253 AML_OFFSET(address.specific_flags),
261 * PARAMETERS: resource - Pointer to the internal resource struct
262 * aml - Pointer to the AML resource descriptor
275 struct aml_resource_address address; in acpi_rs_get_address_common() local
279 /* Avoid undefined behavior: member access within misaligned address */ in acpi_rs_get_address_common()
281 memcpy(&address, aml, sizeof(address)); in acpi_rs_get_address_common()
285 if ((address.resource_type > 2) && in acpi_rs_get_address_common()
286 (address.resource_type < 0xC0) && (address.resource_type != 0x0A)) { in acpi_rs_get_address_common()
295 /* Get the Type-Specific Flags (Memory and I/O descriptors only) */ in acpi_rs_get_address_common()
297 if (resource->data.address.resource_type == ACPI_MEMORY_RANGE) { in acpi_rs_get_address_common()
300 } else if (resource->data.address.resource_type == ACPI_IO_RANGE) { in acpi_rs_get_address_common()
306 resource->data.address.info.type_specific = in acpi_rs_get_address_common()
307 address.specific_flags; in acpi_rs_get_address_common()
317 * PARAMETERS: aml - Pointer to the AML resource descriptor
318 * resource - Pointer to the internal resource struct
338 /* Set the Type-Specific Flags (Memory and I/O descriptors only) */ in acpi_rs_set_address_common()
340 if (resource->data.address.resource_type == ACPI_MEMORY_RANGE) { in acpi_rs_set_address_common()
343 } else if (resource->data.address.resource_type == ACPI_IO_RANGE) { in acpi_rs_set_address_common()
349 aml->address.specific_flags = in acpi_rs_set_address_common()
350 resource->data.address.info.type_specific; in acpi_rs_set_address_common()