Lines Matching +full:- +full:- +full:destination
1 // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
4 * Module Name: rsmisc - Miscellaneous resource descriptors
14 #define INIT_RESOURCE_TYPE(i) i->resource_offset
15 #define INIT_RESOURCE_LENGTH(i) i->aml_offset
16 #define INIT_TABLE_LENGTH(i) i->value
17 #define COMPARE_OPCODE(i) i->resource_offset
18 #define COMPARE_TARGET(i) i->aml_offset
19 #define COMPARE_VALUE(i) i->value
24 * PARAMETERS: resource - Pointer to the resource descriptor
25 * aml - Where the AML descriptor is returned
26 * info - Pointer to appropriate conversion table
41 void *destination; in acpi_rs_convert_aml_to_resource() local
56 /* Each internal resource struct is expected to be 32-bit aligned */ in acpi_rs_convert_aml_to_resource()
60 resource, resource->type, resource->length)); in acpi_rs_convert_aml_to_resource()
75 * destination is the internal resource descriptor in acpi_rs_convert_aml_to_resource()
77 source = ACPI_ADD_PTR(void, aml, info->aml_offset); in acpi_rs_convert_aml_to_resource()
78 destination = in acpi_rs_convert_aml_to_resource()
79 ACPI_ADD_PTR(void, resource, info->resource_offset); in acpi_rs_convert_aml_to_resource()
81 switch (info->opcode) { in acpi_rs_convert_aml_to_resource()
87 resource->type = INIT_RESOURCE_TYPE(info); in acpi_rs_convert_aml_to_resource()
88 resource->length = INIT_RESOURCE_LENGTH(info); in acpi_rs_convert_aml_to_resource()
103 ACPI_SET8(destination, in acpi_rs_convert_aml_to_resource()
104 ((ACPI_GET8(source) >> info->value) & 0x01)); in acpi_rs_convert_aml_to_resource()
111 ACPI_SET8(destination, in acpi_rs_convert_aml_to_resource()
112 ((ACPI_GET8(source) >> info->value) & 0x03)); in acpi_rs_convert_aml_to_resource()
119 ACPI_SET8(destination, in acpi_rs_convert_aml_to_resource()
120 ((ACPI_GET8(source) >> info->value) & 0x07)); in acpi_rs_convert_aml_to_resource()
126 ACPI_SET8(destination, item_count); in acpi_rs_convert_aml_to_resource()
128 resource->length = resource->length + in acpi_rs_convert_aml_to_resource()
129 (info->value * (item_count - 1)); in acpi_rs_convert_aml_to_resource()
135 ACPI_SET16(destination, item_count); in acpi_rs_convert_aml_to_resource()
137 resource->length = resource->length + in acpi_rs_convert_aml_to_resource()
138 (info->value * (item_count - 1)); in acpi_rs_convert_aml_to_resource()
143 target = ACPI_ADD_PTR(void, aml, info->value); in acpi_rs_convert_aml_to_resource()
144 item_count = ACPI_GET16(target) - ACPI_GET16(source); in acpi_rs_convert_aml_to_resource()
146 resource->length = resource->length + item_count; in acpi_rs_convert_aml_to_resource()
148 ACPI_SET16(destination, item_count); in acpi_rs_convert_aml_to_resource()
154 ACPI_SET8(destination, item_count); in acpi_rs_convert_aml_to_resource()
156 resource->length = in acpi_rs_convert_aml_to_resource()
157 resource->length + (info->value * item_count); in acpi_rs_convert_aml_to_resource()
165 target = ACPI_ADD_PTR(void, aml, (info->value + 2)); in acpi_rs_convert_aml_to_resource()
170 target = ACPI_ADD_PTR(void, aml, info->value); in acpi_rs_convert_aml_to_resource()
172 ACPI_GET16(target) - ACPI_GET16(source); in acpi_rs_convert_aml_to_resource()
176 item_count = aml->large_header.resource_length + in acpi_rs_convert_aml_to_resource()
177 sizeof(struct aml_resource_large_header) - in acpi_rs_convert_aml_to_resource()
181 resource->length = resource->length + item_count; in acpi_rs_convert_aml_to_resource()
182 ACPI_SET16(destination, item_count); in acpi_rs_convert_aml_to_resource()
187 item_count = ACPI_GET16(source) - info->value; in acpi_rs_convert_aml_to_resource()
189 resource->length = resource->length + item_count; in acpi_rs_convert_aml_to_resource()
190 ACPI_SET16(destination, item_count); in acpi_rs_convert_aml_to_resource()
197 - ACPI_GET16(source) - info->value; in acpi_rs_convert_aml_to_resource()
199 resource->length = resource->length + item_count; in acpi_rs_convert_aml_to_resource()
200 ACPI_SET16(destination, item_count); in acpi_rs_convert_aml_to_resource()
205 resource->length = resource->length + info->value; in acpi_rs_convert_aml_to_resource()
216 if (info->value) { in acpi_rs_convert_aml_to_resource()
217 item_count = info->value; in acpi_rs_convert_aml_to_resource()
219 acpi_rs_move_data(destination, source, item_count, in acpi_rs_convert_aml_to_resource()
220 info->opcode); in acpi_rs_convert_aml_to_resource()
228 (resource->length - in acpi_rs_convert_aml_to_resource()
230 *(u16 **)destination = ACPI_CAST_PTR(u16, target); in acpi_rs_convert_aml_to_resource()
236 info->opcode); in acpi_rs_convert_aml_to_resource()
244 (resource->length - in acpi_rs_convert_aml_to_resource()
246 *(u8 **)destination = ACPI_CAST_PTR(u8, target); in acpi_rs_convert_aml_to_resource()
252 info->opcode); in acpi_rs_convert_aml_to_resource()
260 (resource->length - in acpi_rs_convert_aml_to_resource()
262 *(u8 **)destination = ACPI_CAST_PTR(u8, target); in acpi_rs_convert_aml_to_resource()
266 source = ACPI_ADD_PTR(void, aml, info->value); in acpi_rs_convert_aml_to_resource()
268 info->opcode); in acpi_rs_convert_aml_to_resource()
276 (resource->length - in acpi_rs_convert_aml_to_resource()
278 *(u8 **)destination = ACPI_CAST_PTR(u8, target); in acpi_rs_convert_aml_to_resource()
284 (ACPI_GET16(source) + info->value)); in acpi_rs_convert_aml_to_resource()
286 info->opcode); in acpi_rs_convert_aml_to_resource()
291 memset(destination, info->aml_offset, info->value); in acpi_rs_convert_aml_to_resource()
296 target = ACPI_ADD_PTR(char, resource, info->value); in acpi_rs_convert_aml_to_resource()
297 memcpy(destination, source, ACPI_GET16(target)); in acpi_rs_convert_aml_to_resource()
314 resource->length += in acpi_rs_convert_aml_to_resource()
316 info->value, in acpi_rs_convert_aml_to_resource()
317 destination, aml, NULL); in acpi_rs_convert_aml_to_resource()
326 info->aml_offset + in acpi_rs_convert_aml_to_resource()
329 resource->length += in acpi_rs_convert_aml_to_resource()
332 (((item_count - in acpi_rs_convert_aml_to_resource()
334 info->value), in acpi_rs_convert_aml_to_resource()
335 destination, aml, in acpi_rs_convert_aml_to_resource()
341 * 8-bit encoded bitmask (DMA macro) in acpi_rs_convert_aml_to_resource()
345 destination); in acpi_rs_convert_aml_to_resource()
347 resource->length += (item_count - 1); in acpi_rs_convert_aml_to_resource()
350 target = ACPI_ADD_PTR(char, resource, info->value); in acpi_rs_convert_aml_to_resource()
356 * 16-bit encoded bitmask (IRQ macro) in acpi_rs_convert_aml_to_resource()
361 acpi_rs_decode_bitmask(temp16, destination); in acpi_rs_convert_aml_to_resource()
363 resource->length += (item_count - 1); in acpi_rs_convert_aml_to_resource()
366 target = ACPI_ADD_PTR(char, resource, info->value); in acpi_rs_convert_aml_to_resource()
372 * control - Exit conversion if not equal in acpi_rs_convert_aml_to_resource()
374 switch (info->resource_offset) { in acpi_rs_convert_aml_to_resource()
377 if (aml_resource_length != info->value) { in acpi_rs_convert_aml_to_resource()
384 if (ACPI_GET8(source) != info->value) { in acpi_rs_convert_aml_to_resource()
392 "Invalid conversion sub-opcode")); in acpi_rs_convert_aml_to_resource()
403 count--; in acpi_rs_convert_aml_to_resource()
412 resource->length = (u32) in acpi_rs_convert_aml_to_resource()
413 ACPI_ROUND_UP_TO_NATIVE_WORD(resource->length); in acpi_rs_convert_aml_to_resource()
422 * PARAMETERS: resource - Pointer to the resource descriptor
423 * aml - Where the AML descriptor is returned
424 * info - Pointer to appropriate conversion table
439 void *destination; in acpi_rs_convert_resource_to_aml() local
461 * destination is the external AML byte stream buffer in acpi_rs_convert_resource_to_aml()
463 source = ACPI_ADD_PTR(void, resource, info->resource_offset); in acpi_rs_convert_resource_to_aml()
464 destination = ACPI_ADD_PTR(void, aml, info->aml_offset); in acpi_rs_convert_resource_to_aml()
466 switch (info->opcode) { in acpi_rs_convert_resource_to_aml()
482 ACPI_SET8(destination, 0); in acpi_rs_convert_resource_to_aml()
489 ACPI_SET_BIT(*ACPI_CAST8(destination), (u8) in acpi_rs_convert_resource_to_aml()
490 ((ACPI_GET8(source) & 0x01) << info-> in acpi_rs_convert_resource_to_aml()
498 ACPI_SET_BIT(*ACPI_CAST8(destination), (u8) in acpi_rs_convert_resource_to_aml()
499 ((ACPI_GET8(source) & 0x03) << info-> in acpi_rs_convert_resource_to_aml()
507 ACPI_SET_BIT(*ACPI_CAST8(destination), (u8) in acpi_rs_convert_resource_to_aml()
508 ((ACPI_GET8(source) & 0x07) << info-> in acpi_rs_convert_resource_to_aml()
515 ACPI_SET8(destination, item_count); in acpi_rs_convert_resource_to_aml()
518 (aml_length + (info->value * (item_count - 1))); in acpi_rs_convert_resource_to_aml()
531 ACPI_SET16(destination, aml_length); in acpi_rs_convert_resource_to_aml()
534 target = ACPI_ADD_PTR(void, aml, info->value); in acpi_rs_convert_resource_to_aml()
542 ACPI_SET16(destination, item_count); in acpi_rs_convert_resource_to_aml()
545 (u16)(aml_length + (info->value * item_count)); in acpi_rs_convert_resource_to_aml()
554 ACPI_SET16(destination, aml_length); in acpi_rs_convert_resource_to_aml()
559 target = ACPI_ADD_PTR(void, aml, info->value); in acpi_rs_convert_resource_to_aml()
571 ACPI_SET16(destination, item_count + info->value); in acpi_rs_convert_resource_to_aml()
585 acpi_rs_set_resource_length(info->value, aml); in acpi_rs_convert_resource_to_aml()
593 if (info->value) { in acpi_rs_convert_resource_to_aml()
594 item_count = info->value; in acpi_rs_convert_resource_to_aml()
596 acpi_rs_move_data(destination, source, item_count, in acpi_rs_convert_resource_to_aml()
597 info->opcode); in acpi_rs_convert_resource_to_aml()
602 destination = (char *)ACPI_ADD_PTR(void, aml, in acpi_rs_convert_resource_to_aml()
604 (destination)); in acpi_rs_convert_resource_to_aml()
606 acpi_rs_move_data(destination, source, item_count, in acpi_rs_convert_resource_to_aml()
607 info->opcode); in acpi_rs_convert_resource_to_aml()
614 destination = (char *)ACPI_ADD_PTR(void, aml, in acpi_rs_convert_resource_to_aml()
616 (destination)); in acpi_rs_convert_resource_to_aml()
618 acpi_rs_move_data(destination, source, item_count, in acpi_rs_convert_resource_to_aml()
619 info->opcode); in acpi_rs_convert_resource_to_aml()
624 destination = (char *)ACPI_ADD_PTR(void, aml, in acpi_rs_convert_resource_to_aml()
625 (aml_length - in acpi_rs_convert_resource_to_aml()
628 acpi_rs_move_data(destination, source, item_count, in acpi_rs_convert_resource_to_aml()
629 info->opcode); in acpi_rs_convert_resource_to_aml()
634 destination = (char *)ACPI_ADD_PTR(void, aml, in acpi_rs_convert_resource_to_aml()
635 (aml_length - in acpi_rs_convert_resource_to_aml()
638 acpi_rs_move_data(destination, source, item_count, in acpi_rs_convert_resource_to_aml()
639 info->opcode); in acpi_rs_convert_resource_to_aml()
644 /* Set the Resource Type, General Flags, and Type-Specific Flags */ in acpi_rs_convert_resource_to_aml()
666 acpi_rs_set_resource_source(aml, info->value, in acpi_rs_convert_resource_to_aml()
673 * 8-bit encoded bitmask (DMA macro) in acpi_rs_convert_resource_to_aml()
675 ACPI_SET8(destination, in acpi_rs_convert_resource_to_aml()
679 info-> in acpi_rs_convert_resource_to_aml()
685 * 16-bit encoded bitmask (IRQ macro) in acpi_rs_convert_resource_to_aml()
690 info->value)); in acpi_rs_convert_resource_to_aml()
691 ACPI_MOVE_16_TO_16(destination, &temp16); in acpi_rs_convert_resource_to_aml()
696 * control - Exit conversion if less than or equal in acpi_rs_convert_resource_to_aml()
698 if (item_count <= info->value) { in acpi_rs_convert_resource_to_aml()
705 * control - Exit conversion if not equal in acpi_rs_convert_resource_to_aml()
720 "Invalid conversion sub-opcode")); in acpi_rs_convert_resource_to_aml()
727 * control - Exit conversion if equal in acpi_rs_convert_resource_to_aml()
742 count--; in acpi_rs_convert_resource_to_aml()
753 if (aml->ext_address64.revision_ID != AML_RESOURCE_EXTENDED_ADDRESS_REVISION) {
757 if (resource->data.start_dpf.performance_robustness >= 3) {
761 if (((aml->irq.flags & 0x09) == 0x00) || ((aml->irq.flags & 0x09) == 0x09)) {
769 aml->irq.flags));
773 resource->data.extended_irq.interrupt_count = temp8;
781 if (resource->data.dma.transfer == 0x03) {