10#ifndef UACPI_BAREBONES_MODE
12#define LARGE_RESOURCE_BASE (ACPI_RESOURCE_END_TAG + 1)
13#define L(x) (x + LARGE_RESOURCE_BASE)
117#define SMALL_ITEM_HEADER_SIZE sizeof(struct acpi_small_item)
118#define LARGE_ITEM_HEADER_SIZE sizeof(struct acpi_large_item)
146 mask = dma->channel_mask;
150 for (
i = 0;
i < total_bits; ++
i)
151 num_bits += !!(
mask & (1 <<
i));
165 switch (
irq->length_kind) {
183 uacpi_warn(
"requested IRQ resource length is "
184 "not compatible with specified flags, corrected");
214 uacpi_warn(
"requested StartDependentFn resource length is "
215 "not compatible with specified flags, corrected");
244 uacpi_warn(
"vendor data too large for small descriptor (%zu), "
245 "correcting to large",
size);
263 if (reported_size <= base_size)
269 string_length = (reported_size - base_size) - 1;
280 uacpi_warn(
"resource declares no source index with non-empty "
281 "string (%zu bytes), corrected",
length);
376 switch (spec->
type) {
378 struct acpi_resource_gpio_connection *gpio =
data;
379 pin_table_offset = gpio->pin_table_offset;
385 pin_table_offset =
pin->pin_table_offset;
390 struct acpi_resource_pin_configuration *
config =
data;
391 pin_table_offset =
config->pin_table_offset;
397 pin_table_offset =
group->pin_table_offset;
420 switch (spec->
type) {
423 source_length =
res->source.length;
424 pin_table_length =
res->pin_table_length;
425 vendor_length =
res->vendor_data_length;
431 source_length =
res->source.length;
432 pin_table_length =
res->pin_table_length;
433 vendor_length =
res->vendor_data_length;
439 source_length =
res->source.length;
440 pin_table_length =
res->pin_table_length;
441 vendor_length =
res->vendor_data_length;
447 source_length =
res->label.length;
448 pin_table_length =
res->pin_table_length;
449 vendor_length =
res->vendor_data_length;
457 size += source_length;
458 size += pin_table_length * 2;
459 size += vendor_length;
470 switch (spec->
type) {
473 source_offset =
func->source_offset;
478 struct acpi_resource_pin_group_configuration *
config =
data;
479 source_offset =
config->source_offset;
498 switch (spec->
type) {
501 source_length =
res->source.length;
502 label_length =
res->label.length;
503 vendor_length =
res->vendor_data_length;
510 source_length =
res->source.length;
511 label_length =
res->label.length;
512 vendor_length =
res->vendor_data_length;
520 size += source_length;
521 size += label_length;
522 size += vendor_length;
527#define AML_SERIAL_RESOURCE_EXTRA_SIZE(type) \
528 (sizeof(struct acpi_resource_serial_##type) \
529 - sizeof(struct acpi_resource_serial))
531#define NATIVE_SERIAL_RESOURCE_EXTRA_SIZE(type) \
532 (sizeof(uacpi_resource_##type##_connection) \
533 - sizeof(uacpi_resource_serial_bus_common))
580#define OP(short_code, ...) \
582 .code = UACPI_RESOURCE_CONVERT_OPCODE_##short_code, \
588#define AML_O(short_aml_name, field) \
589 uacpi_offsetof(struct acpi_resource_##short_aml_name, field)
591#define AML_F(short_aml_name, field) \
592 .f1.aml_offset = AML_O(short_aml_name, field)
594#define NATIVE_O(short_name, field) \
595 uacpi_offsetof(uacpi_resource_##short_name, field)
597#define NATIVE_F(short_native_name, field) \
598 .f2.native_offset = NATIVE_O(short_native_name, field)
600#define IMM(value) .f3.imm = value
601#define ARG0(value) .f1.arg0 = (value)
602#define ARG1(value) .f2.arg1 = (value)
603#define ARG2(value) .f3.arg2 = (value)
609 OP(SKIP_IF_AML_SIZE_LESS_THAN,
ARG0(3),
IMM(6)),
626 OP(SKIP_IF_AML_SIZE_LESS_THAN,
ARG0(3),
IMM(4)),
645 OP(SKIP_IF_AML_SIZE_LESS_THAN,
ARG0(1),
IMM(4)),
646 OP(SET_TO_IMM,
NATIVE_F(start_dependent, length_kind),
653 OP(SET_TO_IMM,
NATIVE_F(start_dependent, length_kind),
655 OP(SET_TO_IMM,
NATIVE_F(start_dependent, compatibility),
657 OP(SET_TO_IMM,
NATIVE_F(start_dependent, performance),
664 OP(SKIP_IF_AML_SIZE_LESS_THAN,
ARG0(1),
IMM(1)),
688 OP(FIELD_16,
AML_F(fixed_dma, request_line),
691 OP(FIELD_8,
AML_F(fixed_dma, transfer_width),
692 NATIVE_F(fixed_dma, transfer_width)),
735 OP(FIELD_8,
AML_F(generic_register, address_space_id),
736 NATIVE_F(generic_register, address_space_id),
IMM(4)),
742#define CONVERT_TYPE_SPECIFIC_FLAGS(addr_type) \
743 OP(LOAD_8_STORE, AML_F(addr_type, common.type), \
744 NATIVE_F(addr_type, common.type)), \
745 OP(SKIP_IF_NOT_EQUALS, ARG0(UACPI_RANGE_MEMORY), IMM(5)), \
747 AML_F(addr_type, common.type_flags), \
748 NATIVE_F(addr_type, common.attribute.memory.write_status), IMM(0)), \
750 AML_F(addr_type, common.type_flags), \
751 NATIVE_F(addr_type, common.attribute.memory.caching), IMM(1)), \
753 AML_F(addr_type, common.type_flags), \
754 NATIVE_F(addr_type, common.attribute.memory.range_type), IMM(3)), \
756 AML_F(addr_type, common.type_flags), \
757 NATIVE_F(addr_type, common.attribute.memory.translation), IMM(5)), \
759 OP(SKIP_IF_NOT_EQUALS, ARG0(UACPI_RANGE_IO), IMM(4)), \
761 AML_F(addr_type, common.type_flags), \
762 NATIVE_F(addr_type, common.attribute.io.range_type), IMM(0)), \
764 AML_F(addr_type, common.type_flags), \
765 NATIVE_F(addr_type, common.attribute.io.translation_type), IMM(4)), \
767 AML_F(addr_type, common.type_flags), \
768 NATIVE_F(addr_type, common.attribute.io.translation), IMM(5)), \
771 OP(FIELD_8, AML_F(addr_type, common.type_flags), \
772 NATIVE_F(addr_type, common.attribute.type_specific), IMM(0xFF)), \
775#define CONVERT_GENERAL_ADDRESS_FLAGS(addr_type) \
777 AML_F(addr_type, common.flags), \
778 NATIVE_F(addr_type, common.direction), IMM(0)), \
780 AML_F(addr_type, common.flags), \
781 NATIVE_F(addr_type, common.decode_type), IMM(1)), \
783 AML_F(addr_type, common.flags), \
784 NATIVE_F(addr_type, common.fixed_min_address), IMM(2)), \
786 AML_F(addr_type, common.flags), \
787 NATIVE_F(addr_type, common.fixed_max_address), IMM(3)) \
789#define DEFINE_ADDRESS_CONVERSION(width) \
790 static const struct uacpi_resource_convert_instruction \
791 convert_address##width[] = { \
792 CONVERT_GENERAL_ADDRESS_FLAGS(address##width), \
793 OP(FIELD_##width, AML_F(address##width, granularity), \
794 NATIVE_F(address##width, granularity), IMM(5)), \
795 OP(RESOURCE_SOURCE, NATIVE_F(address##width, source)), \
796 CONVERT_TYPE_SPECIFIC_FLAGS(address##width), \
806 OP(FIELD_8,
AML_F(address64_extended, revision_id),
807 NATIVE_F(address64_extended, revision_id)),
808 OP(FIELD_64,
AML_F(address64_extended, granularity),
809 NATIVE_F(address64_extended, granularity),
IMM(6)),
825 OP(LOAD_8_STORE,
AML_F(extended_irq, num_irqs),
835 OP(FIELD_8,
AML_F(clock_input, revision_id),
836 NATIVE_F(clock_input, revision_id)),
842 OP(FIELD_32,
AML_F(clock_input, numerator),
NATIVE_F(clock_input, numerator)),
848#define DECODE_SOURCE_INDEX(short_aml_name) \
849 OP(FIELD_8, AML_F(short_aml_name, source_index), \
850 NATIVE_F(short_aml_name, source.index)) \
852#define DECODE_RES_PIN_TBL_AND_VENDOR_DATA( \
853 short_aml_name, res_opcode, offset_field, res_field \
855 OP(LOAD_PIN_TABLE_LENGTH, AML_F(short_aml_name, offset_field), \
856 NATIVE_F(short_aml_name, pin_table_length)), \
857 OP(RESOURCE_##res_opcode, NATIVE_F(short_aml_name, res_field), \
858 AML_F(short_aml_name, offset_field), \
859 ARG2(AML_O(short_aml_name, vendor_data_offset))), \
860 OP(PIN_TABLE, AML_F(short_aml_name, pin_table_offset), \
861 NATIVE_F(short_aml_name, pin_table_length), \
862 ARG2(NATIVE_O(short_aml_name, pin_table))), \
863 OP(VENDOR_DATA, AML_F(short_aml_name, vendor_data_offset), \
864 NATIVE_F(short_aml_name, vendor_data_length), \
865 ARG2(NATIVE_O(short_aml_name, vendor_data)))
869 OP(FIELD_8,
AML_F(gpio_connection, revision_id),
870 NATIVE_F(gpio_connection, revision_id)),
871 OP(BIT_FIELD_1,
AML_F(gpio_connection, general_flags),
873 OP(FIELD_8,
AML_F(gpio_connection, pull_configuration),
874 NATIVE_F(gpio_connection, pull_configuration)),
875 OP(FIELD_16,
AML_F(gpio_connection, drive_strength),
876 NATIVE_F(gpio_connection, drive_strength),
IMM(2)),
879 gpio_connection, SOURCE_NO_INDEX, source_offset,
source
883 OP(BIT_FIELD_1,
AML_F(gpio_connection, connection_flags),
885 OP(BIT_FIELD_2,
AML_F(gpio_connection, connection_flags),
887 OP(BIT_FIELD_1,
AML_F(gpio_connection, connection_flags),
889 OP(BIT_FIELD_1,
AML_F(gpio_connection, connection_flags),
893 OP(BIT_FIELD_2,
AML_F(gpio_connection, connection_flags),
895 OP(BIT_FIELD_1,
AML_F(gpio_connection, connection_flags),
898 OP(FIELD_16,
AML_F(gpio_connection, connection_flags),
899 NATIVE_F(gpio_connection, type_specific),
IMM(0xFF)),
905 OP(FIELD_8,
AML_F(pin_function, revision_id),
906 NATIVE_F(pin_function, revision_id)),
909 OP(FIELD_8,
AML_F(pin_function, pull_configuration),
910 NATIVE_F(pin_function, pull_configuration)),
911 OP(FIELD_16,
AML_F(pin_function, function_number),
912 NATIVE_F(pin_function, function_number)),
915 pin_function, SOURCE_NO_INDEX, source_offset,
source
922 OP(FIELD_8,
AML_F(pin_configuration, revision_id),
923 NATIVE_F(pin_configuration, revision_id)),
934 pin_configuration, SOURCE_NO_INDEX, source_offset,
source
940 OP(FIELD_8,
AML_F(pin_group, revision_id),
945 pin_group, LABEL, source_lable_offset,
label
950#define DECODE_PIN_GROUP_RES_SOURCES(postfix) \
951 DECODE_SOURCE_INDEX(pin_group_##postfix), \
952 OP(RESOURCE_SOURCE_NO_INDEX, NATIVE_F(pin_group_##postfix, source), \
953 AML_F(pin_group_##postfix, source_offset), \
954 ARG2(AML_O(pin_group_##postfix, source_lable_offset))), \
955 OP(LOAD_16_NATIVE, NATIVE_F(pin_group_##postfix, source.length)), \
956 OP(RESOURCE_LABEL, NATIVE_F(pin_group_##postfix, label), \
957 AML_F(pin_group_##postfix, source_lable_offset), \
958 ARG2(AML_O(pin_group_##postfix, vendor_data_offset))), \
959 OP(VENDOR_DATA, AML_F(pin_group_##postfix, vendor_data_offset), \
960 NATIVE_F(pin_group_##postfix, vendor_data_length), \
961 ARG2(NATIVE_O(pin_group_##postfix, vendor_data)))
965 OP(FIELD_8,
AML_F(pin_group_function, revision_id),
966 NATIVE_F(pin_group_function, revision_id)),
971 OP(FIELD_16,
AML_F(pin_group_function, function),
972 NATIVE_F(pin_group_function, function)),
979 OP(FIELD_8,
AML_F(pin_group_configuration, revision_id),
980 NATIVE_F(pin_group_configuration, revision_id)),
996 NATIVE_F(serial_bus_common, revision_id)),
998 NATIVE_F(serial_bus_common, type_revision_id)),
1002 NATIVE_F(serial_bus_common, type_data_length)),
1015 NATIVE_F(i2c_connection, addressing_mode),
IMM(0)),
1016 OP(FIELD_32,
AML_F(serial_i2c, connection_speed),
1017 NATIVE_F(i2c_connection, connection_speed),
IMM(0xFF)),
1018 OP(FIELD_16,
AML_F(serial_i2c, slave_address),
1019 NATIVE_F(i2c_connection, slave_address)),
1025 NATIVE_F(spi_connection, device_polarity),
IMM(1)),
1026 OP(FIELD_32,
AML_F(serial_spi, connection_speed),
1027 NATIVE_F(spi_connection, connection_speed),
IMM(0xFF)),
1028 OP(FIELD_8,
AML_F(serial_spi, data_bit_length),
1029 NATIVE_F(spi_connection, data_bit_length),
IMM(5)),
1040 OP(FIELD_32,
AML_F(serial_uart, baud_rate),
1042 OP(FIELD_16,
AML_F(serial_uart, rx_fifo),
1044 OP(FIELD_8,
AML_F(serial_uart, parity),
1061#define NATIVE_RESOURCE_HEADER_SIZE 8
1063#define DEFINE_SMALL_AML_RESOURCE(aml_type_enum, native_type_enum, \
1064 aml_struct, native_struct, ...) \
1065 [aml_type_enum] = { \
1066 .type = aml_type_enum, \
1067 .native_type = native_type_enum, \
1068 .resource_kind = UACPI_AML_RESOURCE_KIND_SMALL, \
1069 .aml_size = sizeof(aml_struct) - SMALL_ITEM_HEADER_SIZE, \
1070 .native_size = sizeof(native_struct) + NATIVE_RESOURCE_HEADER_SIZE, \
1074#define DEFINE_SMALL_AML_RESOURCE_NO_NATIVE_REPR( \
1075 aml_type_enum, native_type_enum, aml_struct, ... \
1077 [aml_type_enum] = { \
1078 .type = aml_type_enum, \
1079 .native_type = native_type_enum, \
1080 .resource_kind = UACPI_AML_RESOURCE_KIND_SMALL, \
1081 .aml_size = sizeof(aml_struct) - SMALL_ITEM_HEADER_SIZE, \
1082 .native_size = NATIVE_RESOURCE_HEADER_SIZE, \
1086#define DEFINE_LARGE_AML_RESOURCE(aml_type_enum, native_type_enum, \
1087 aml_struct, native_struct, ...) \
1088 [aml_type_enum] = { \
1089 .type = aml_type_enum, \
1090 .native_type = native_type_enum, \
1091 .resource_kind = UACPI_AML_RESOURCE_KIND_LARGE, \
1092 .aml_size = sizeof(aml_struct) - LARGE_ITEM_HEADER_SIZE, \
1093 .native_size = sizeof(native_struct) + NATIVE_RESOURCE_HEADER_SIZE, \
1132 struct acpi_resource_end_dependent,
1165 struct acpi_resource_vendor_defined_type0,
1200 struct acpi_resource_vendor_defined_type1,
1235 .
to_aml = convert_address32,
1246 .
to_aml = convert_address16,
1268 .
to_aml = convert_address64,
1273 struct acpi_resource_address64_extended,
1282 struct acpi_resource_gpio_connection,
1304 struct acpi_resource_serial,
1315 struct acpi_resource_pin_configuration,
1348 struct acpi_resource_pin_group_configuration,
1359 struct acpi_resource_clock_input,
1437 bytes_left =
buffer.length;
1440 while (bytes_left) {
1452 if (resource_size != spec->
aml_size)
1456 if (resource_size < spec->
aml_size)
1460 if (resource_size != spec->
aml_size &&
1461 resource_size != (spec->
aml_size - 1))
1469 struct acpi_resource_serial *
serial;
1478 decision =
cb(
user,
data, resource_size, spec);
1487 bytes_left -= total_size;
1535 if (
buffer.length == 0) {
1549 *out_offset = end_tag_ptr -
buffer.bytes;
1572#define CONVERSION_OPCODES_COMMON(native_buf) \
1573 case UACPI_RESOURCE_CONVERT_OPCODE_END: \
1574 return conditional_continue(ctx); \
1576 case UACPI_RESOURCE_CONVERT_OPCODE_FIELD_8: \
1577 case UACPI_RESOURCE_CONVERT_OPCODE_FIELD_16: \
1578 case UACPI_RESOURCE_CONVERT_OPCODE_FIELD_32: \
1579 case UACPI_RESOURCE_CONVERT_OPCODE_FIELD_64: { \
1582 bytes = 1 << (insn->code - UACPI_RESOURCE_CONVERT_OPCODE_FIELD_8); \
1583 accumulator = insn->f3.imm == 0xFF ? 0 : accumulator + insn->f3.imm; \
1585 uacpi_memcpy(dst, src, bytes * UACPI_MAX(1, accumulator)); \
1590 case UACPI_RESOURCE_CONVERT_OPCODE_SKIP_IF_AML_SIZE_LESS_THAN: \
1591 if (aml_size < insn->f1.arg0) \
1592 pc += insn->f3.imm; \
1594 case UACPI_RESOURCE_CONVERT_OPCODE_SKIP_IF_NOT_EQUALS: \
1595 if (insn->f1.arg0 != accumulator) \
1596 pc += insn->f3.imm; \
1599 case UACPI_RESOURCE_CONVERT_OPCODE_SET_TO_IMM: \
1600 uacpi_memcpy(dst, &insn->f3.imm, sizeof(insn->f3.imm)); \
1603 case UACPI_RESOURCE_CONVERT_OPCODE_LOAD_IMM: \
1604 accumulator = insn->f3.imm; \
1607 case UACPI_RESOURCE_CONVERT_OPCODE_LOAD_8_STORE: \
1608 uacpi_memcpy_zerout(&accumulator, src, sizeof(accumulator), 1); \
1609 uacpi_memcpy(dst, &accumulator, 1); \
1612 accumulator *= insn->f3.imm; \
1615 case UACPI_RESOURCE_CONVERT_OPCODE_LOAD_8_NATIVE: \
1616 case UACPI_RESOURCE_CONVERT_OPCODE_LOAD_16_NATIVE: { \
1620 1 << (insn->code - UACPI_RESOURCE_CONVERT_OPCODE_LOAD_8_NATIVE); \
1621 uacpi_memcpy_zerout( \
1622 &accumulator, native_buf, sizeof(accumulator), bytes \
1627 case UACPI_RESOURCE_CONVERT_OPCODE_UNREACHABLE: \
1629 if (insn->code != UACPI_RESOURCE_CONVERT_OPCODE_UNREACHABLE) { \
1630 uacpi_error("unhandled resource conversion opcode %d", \
1633 uacpi_error("tried to execute unreachable conversion opcode"); \
1635 ctx->st = UACPI_STATUS_INTERNAL_ERROR; \
1636 return UACPI_ITERATION_DECISION_BREAK;
1638#define PTR_AT(ptr, offset) (void*)((uacpi_u8*)(ptr) + (offset))
1640#define NATIVE_OFFSET(res, offset) \
1641 PTR_AT(res, (offset) + (sizeof(uacpi_u32) * 2))
1643#define NATIVE_FIELD(res, name, field) \
1644 NATIVE_OFFSET(res, NATIVE_O(name, field))
1646#define CHECK_AML_OOB(offset, prefix, what) \
1647 if (uacpi_unlikely(offset > ((uacpi_u32)aml_size + header_size))) { \
1648 uacpi_error(prefix what " is OOB: %zu > %u", \
1649 (uacpi_size)offset, (uacpi_u32)aml_size + header_size); \
1650 ctx->st = UACPI_STATUS_AML_INVALID_RESOURCE; \
1651 return UACPI_ITERATION_DECISION_BREAK; \
1654#define CHECK_AML_OFFSET_BASE(offset, what) \
1655 if (uacpi_unlikely(offset < base_aml_size_with_header)) { \
1657 "invalid " what " offset: %zu, expected at least %u", \
1658 (uacpi_size)offset, base_aml_size_with_header); \
1659 ctx->st = UACPI_STATUS_AML_INVALID_RESOURCE; \
1660 return UACPI_ITERATION_DECISION_BREAK; \
1663#define CHECK_AML_OFFSET(offset, what) \
1664 CHECK_AML_OOB(offset, "end of ", what) \
1665 CHECK_AML_OFFSET_BASE(offset, what)
1687 uacpi_u32 base_aml_size_with_header, accumulator = 0;
1697 base_aml_size = base_aml_size_with_header = spec->
aml_size;
1698 base_aml_size_with_header += header_size;
1704 insn = &insns[pc++];
1709 switch (insn->
code) {
1725 for (
i = 0,
j = 0;
i < max_bit; ++
i) {
1751 accumulator = aml_size;
1777 max_offset = aml_size + header_size;
1780 offset += base_aml_size_with_header;
1786 if (
offset >= max_offset) {
1795 uacpi_memcpy(&dst_name.source->index, src_string++, 1);
1799 if (
offset == max_offset)
1802 while (
offset++ < max_offset) {
1803 if (src_string[
length++] ==
'\0')
1807 if (src_string[
length - 1] !=
'\0') {
1808 uacpi_error(
"non-null-terminated resource source string");
1813 dst_string =
PTR_AT(resource_end, accumulator);
1817 dst_name.label->length =
length;
1818 dst_name.label->string = dst_string;
1820 dst_name.source->length =
length;
1821 dst_name.source->string = dst_string;
1829 sizeof(accumulator),
sizeof(
uacpi_u16));
1832 accumulator -= base_aml_size_with_header;
1836 uacpi_u16 entry_count = accumulator / 2;
1844 data + base_aml_size_with_header,
1853 &resource_end,
sizeof(
void*));
1860 void *native_dst, *vendor_data;
1865 vendor_data =
data + data_offset;
1871 data_offset -= header_size;
1873 length = aml_size - data_offset;
1879 offset_from_end = data_offset - base_aml_size;
1880 native_dst =
PTR_AT(resource_end, offset_from_end);
1884 &native_dst,
sizeof(
void*));
1890 uacpi_u8 serial_type, extra_size, type_length;
1892 serial_bus_common = &
resource->serial_bus_common;
1894 serial_bus_common->
type = serial_type;
1906 base_aml_size += extra_size;
1907 base_aml_size_with_header += extra_size;
1912 "invalid type-specific data length: %d, "
1913 "expected at least %d", type_length, extra_size
1923 accumulator = type_length - extra_size;
1924 if (accumulator == 0)
1931 data + base_aml_size_with_header,
1951 if (size_for_this == 0 || (
ctx->size + size_for_this) <
ctx->size) {
1952 uacpi_error(
"invalid native size for aml resource: %zu",
1958 ctx->size += size_for_this;
2001 uacpi_error(
"bug: bogus native resource buffer size %zu",
ctx.size);
2125 while (bytes_left) {
2128 uacpi_error(
"corrupted resource buffer %p length %zu",
2139 uacpi_error(
"corrupted resource@%p length %u (%zu bytes left)",
2150 bytes_left -=
current->length;
2200 uacpi_u32 aml_size, base_aml_size_with_header, accumulator = 0;
2207 dst_base =
ctx->byte_buf;
2208 ctx->byte_buf += aml_size;
2211 base_aml_size_with_header = spec->
aml_size;
2222 *dst_base |= aml_size;
2229 insn = &insns[pc++];
2234 switch (insn->
code) {
2259 accumulator = aml_size;
2276 source_offset = base_aml_size_with_header + accumulator;
2277 dst_string = dst_base + source_offset;
2283 src_name.source->index_present)
2284 uacpi_memcpy(dst_string++, &src_name.source->index, 1);
2287 length = src_name.label->length;
2288 src_string = src_name.label->string;
2290 length = src_name.source->length;
2291 src_string = src_name.source->string;
2299 "source string length is %zu but the pointer is NULL",
2312 sizeof(accumulator),
sizeof(
uacpi_u16));
2328 dst_base + base_aml_size_with_header,
2335 uacpi_u16 vendor_data_length, data_offset, vendor_data_offset;
2348 "vendor_data_length is %d, but pointer is NULL",
2360 full_aml_size = aml_size;
2376 data_offset = vendor_data - (
uacpi_u8*)resource_end;
2377 vendor_data_offset = data_offset + base_aml_size_with_header;
2389 &vendor_data_length,
2390 sizeof(vendor_data_length)
2395 dst_base + vendor_data_offset,
2413 "native serial resource type %d doesn't match expected %d",
2429 accumulator =
resource->serial_bus_common.vendor_data_length;
2430 if (accumulator == 0)
2435 dst_base + base_aml_size_with_header,
2454 ctx.buf = aml_buffer;
2484 if (size_for_this == 0 || (
ctx->size + size_for_this) <
ctx->size) {
2485 uacpi_error(
"invalid aml size for native resource: %zu",
2491 ctx->size += size_for_this;
2521 uacpi_error(
"bug: bogus target aml resource buffer size %zu",
ctx.size);
2536 obj->buffer->size =
ctx.size;
2543 *out_template =
obj;
2560 args.objects = &res_template;
static unsigned char bytes[4]
_Check_return_ _Ret_maybenull_ _In_ size_t alignment
void user(int argc, const char *argv[])
static PDB_INFORMATION information
#define ACPI_RESOURCE_START_DEPENDENT
#define ACPI_SMALL_ITEM_NAME_MASK
#define ACPI_SERIAL_TYPE_MAX
#define ACPI_RESOURCE_END_TAG
#define ACPI_RESOURCE_SERIAL_CONNECTION
#define ACPI_RESOURCE_ADDRESS32
#define ACPI_RESOURCE_FIXED_DMA
#define ACPI_SERIAL_TYPE_CSI2
#define ACPI_RESOURCE_PIN_CONFIGURATION
#define ACPI_RESOURCE_ADDRESS16
#define ACPI_RESOURCE_CLOCK_INPUT
#define ACPI_RESOURCE_IRQ
#define ACPI_RESOURCE_VENDOR_TYPE0
#define ACPI_RESOURCE_GPIO_CONNECTION
#define ACPI_SERIAL_TYPE_SPI
#define ACPI_SMALL_ITEM_NAME_IDX
#define ACPI_RESOURCE_PIN_GROUP_FUNCTION
#define ACPI_RESOURCE_PIN_GROUP
#define ACPI_RESOURCE_VENDOR_TYPE1
#define ACPI_RESOURCE_GENERIC_REGISTER
#define ACPI_RESOURCE_MEMORY32
#define ACPI_RESOURCE_PIN_FUNCTION
#define ACPI_SMALL_ITEM_LENGTH_MASK
#define ACPI_SERIAL_TYPE_I2C
#define ACPI_RESOURCE_PIN_GROUP_CONFIGURATION
#define ACPI_RESOURCE_ADDRESS64
#define ACPI_RESOURCE_DMA
#define ACPI_RESOURCE_END_DEPENDENT
#define ACPI_RESOURCE_ADDRESS64_EXTENDED
#define ACPI_RESOURCE_FIXED_MEMORY32
#define ACPI_SERIAL_TYPE_UART
#define ACPI_LARGE_ITEM_NAME_MASK
#define ACPI_RESOURCE_EXTENDED_IRQ
#define ACPI_RESOURCE_MEMORY24
#define ACPI_RESOURCE_FIXED_IO
uacpi_u16 uacpi_gpe_triggering triggering
@ UACPI_AML_RESOURCE_KIND_LARGE
@ UACPI_AML_RESOURCE_KIND_SMALL
@ UACPI_AML_RESOURCE_END_TAG
@ UACPI_AML_RESOURCE_PIN_GROUP
@ UACPI_AML_RESOURCE_FIXED_MEMORY32
@ UACPI_AML_RESOURCE_ADDRESS32
@ UACPI_AML_RESOURCE_PIN_CONFIGURATION
@ UACPI_AML_RESOURCE_FIXED_IO
@ UACPI_AML_RESOURCE_MEMORY24
@ UACPI_AML_RESOURCE_TYPE_INVALID
@ UACPI_AML_RESOURCE_VENDOR_TYPE0
@ UACPI_AML_RESOURCE_PIN_FUNCTION
@ UACPI_AML_RESOURCE_FIXED_DMA
@ UACPI_AML_RESOURCE_PIN_GROUP_FUNCTION
@ UACPI_AML_RESOURCE_GPIO_CONNECTION
@ UACPI_AML_RESOURCE_EXTENDED_IRQ
@ UACPI_AML_RESOURCE_GENERIC_REGISTER
@ UACPI_AML_RESOURCE_END_DEPENDENT
@ UACPI_AML_RESOURCE_VENDOR_TYPE1
@ UACPI_AML_RESOURCE_ADDRESS64_EXTENDED
@ UACPI_AML_RESOURCE_ADDRESS64
@ UACPI_AML_RESOURCE_ADDRESS16
@ UACPI_AML_RESOURCE_START_DEPENDENT
@ UACPI_AML_RESOURCE_CLOCK_INPUT
@ UACPI_AML_RESOURCE_SERIAL_CONNECTION
@ UACPI_AML_RESOURCE_PIN_GROUP_CONFIGURATION
@ UACPI_AML_RESOURCE_MEMORY32
uacpi_iteration_decision(* uacpi_aml_resource_iteration_callback)(void *, uacpi_u8 *data, uacpi_u16 resource_size, const struct uacpi_resource_spec *)
@ UACPI_RESOURCE_CONVERT_OPCODE_PACKED_ARRAY_8
@ UACPI_RESOURCE_CONVERT_OPCODE_BIT_FIELD_2
@ UACPI_RESOURCE_CONVERT_OPCODE_PIN_TABLE
@ UACPI_RESOURCE_CONVERT_OPCODE_PACKED_ARRAY_16
@ UACPI_RESOURCE_CONVERT_OPCODE_BIT_FIELD_1
@ UACPI_RESOURCE_CONVERT_OPCODE_BIT_FIELD_3
@ UACPI_RESOURCE_CONVERT_OPCODE_BIT_FIELD_6
@ UACPI_RESOURCE_CONVERT_OPCODE_LOAD_AML_SIZE_32
@ UACPI_RESOURCE_CONVERT_OPCODE_RESOURCE_LABEL
@ UACPI_RESOURCE_CONVERT_OPCODE_RESOURCE_SOURCE_NO_INDEX
@ UACPI_RESOURCE_CONVERT_OPCODE_LOAD_PIN_TABLE_LENGTH
@ UACPI_RESOURCE_CONVERT_OPCODE_SERIAL_TYPE_SPECIFIC
@ UACPI_RESOURCE_CONVERT_OPCODE_RESOURCE_SOURCE
@ UACPI_RESOURCE_CONVERT_OPCODE_VENDOR_DATA
@ UACPI_AML_RESOURCE_SIZE_KIND_FIXED
@ UACPI_AML_RESOURCE_SIZE_KIND_FIXED_OR_ONE_LESS
@ UACPI_AML_RESOURCE_SIZE_KIND_VARIABLE
#define uacpi_memzero(ptr, size)
#define UACPI_ALIGN_UP(x, val, type)
#define uacpi_kernel_alloc_zeroed
#define uacpi_free(mem, _)
void uacpi_memcpy_zerout(void *dst, const void *src, uacpi_size dst_size, uacpi_size src_size)
uacpi_object * uacpi_create_object(uacpi_object_type type)
void uacpi_buffer_to_view(uacpi_buffer *, uacpi_data_view *)
uacpi_status uacpi_namespace_node_is(const uacpi_namespace_node *node, uacpi_object_type type, uacpi_bool *out)
@ UACPI_RESOURCE_TYPE_PIN_GROUP_CONFIGURATION
@ UACPI_RESOURCE_TYPE_ADDRESS32
@ UACPI_RESOURCE_TYPE_START_DEPENDENT
@ UACPI_RESOURCE_TYPE_SERIAL_UART_CONNECTION
@ UACPI_RESOURCE_TYPE_VENDOR_SMALL
@ UACPI_RESOURCE_TYPE_PIN_FUNCTION
@ UACPI_RESOURCE_TYPE_EXTENDED_IRQ
@ UACPI_RESOURCE_TYPE_MEMORY32
@ UACPI_RESOURCE_TYPE_END_DEPENDENT
@ UACPI_RESOURCE_TYPE_SERIAL_I2C_CONNECTION
@ UACPI_RESOURCE_TYPE_FIXED_DMA
@ UACPI_RESOURCE_TYPE_GENERIC_REGISTER
@ UACPI_RESOURCE_TYPE_ADDRESS16
@ UACPI_RESOURCE_TYPE_SERIAL_SPI_CONNECTION
@ UACPI_RESOURCE_TYPE_PIN_GROUP
@ UACPI_RESOURCE_TYPE_MAX
@ UACPI_RESOURCE_TYPE_IRQ
@ UACPI_RESOURCE_TYPE_PIN_CONFIGURATION
@ UACPI_RESOURCE_TYPE_FIXED_IO
@ UACPI_RESOURCE_TYPE_VENDOR_LARGE
@ UACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION
@ UACPI_RESOURCE_TYPE_END_TAG
@ UACPI_RESOURCE_TYPE_ADDRESS64
@ UACPI_RESOURCE_TYPE_CLOCK_INPUT
@ UACPI_RESOURCE_TYPE_SERIAL_CSI2_CONNECTION
@ UACPI_RESOURCE_TYPE_GPIO_CONNECTION
@ UACPI_RESOURCE_TYPE_ADDRESS64_EXTENDED
@ UACPI_RESOURCE_TYPE_MEMORY24
@ UACPI_RESOURCE_TYPE_FIXED_MEMORY32
@ UACPI_RESOURCE_TYPE_DMA
#define UACPI_POLARITY_ACTIVE_HIGH
@ UACPI_RESOURCE_LENGTH_KIND_DONT_CARE
@ UACPI_RESOURCE_LENGTH_KIND_ONE_LESS
@ UACPI_RESOURCE_LENGTH_KIND_FULL
#define UACPI_GPIO_CONNECTION_IO
uacpi_iteration_decision(* uacpi_resource_iteration_callback)(void *user, uacpi_resource *resource)
#define UACPI_TRIGGERING_EDGE
#define UACPI_GPIO_CONNECTION_INTERRUPT
#define uacpi_unlikely_error(expr)
@ UACPI_STATUS_INVALID_ARGUMENT
@ UACPI_STATUS_INTERNAL_ERROR
@ UACPI_STATUS_AML_INVALID_RESOURCE
@ UACPI_STATUS_OUT_OF_MEMORY
@ UACPI_STATUS_NO_RESOURCE_END_TAG
@ UACPI_ITERATION_DECISION_BREAK
@ UACPI_ITERATION_DECISION_CONTINUE
void uacpi_object_unref(uacpi_object *obj)
static const struct uacpi_resource_convert_instruction convert_io[]
#define OP(short_code,...)
const struct uacpi_resource_spec aml_resources[UACPI_AML_RESOURCE_MAX+1]
static const uacpi_u8 aml_resource_to_type[256]
static const struct uacpi_resource_convert_instruction convert_pin_group[]
static const struct uacpi_resource_convert_instruction convert_vendor_type1[]
static const struct uacpi_resource_convert_instruction convert_memory32[]
static uacpi_size size_for_aml_resource_source(uacpi_resource_source *source, uacpi_bool with_index)
static const struct uacpi_resource_convert_instruction convert_gpio_connection[]
static uacpi_resource_type aml_serial_to_native_type(uacpi_u8 type)
uacpi_status uacpi_get_possible_resources(uacpi_namespace_node *device, uacpi_resources **out_resources)
#define NATIVE_F(short_native_name, field)
#define LARGE_RESOURCE_BASE
static uacpi_iteration_decision do_native_resource_to_aml(void *opaque, uacpi_resource *resource)
static uacpi_size size_for_aml_extended_irq(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
static const struct uacpi_resource_convert_instruction convert_irq_to_native[]
static const uacpi_u8 aml_serial_resource_to_extra_native_size[ACPI_SERIAL_TYPE_MAX+1]
static const struct uacpi_resource_convert_instruction convert_fixed_memory32[]
#define CONVERT_TYPE_SPECIFIC_FLAGS(addr_type)
static const uacpi_u8 type_to_aml_resource[]
static uacpi_iteration_decision conditional_continue(struct resource_conversion_ctx *ctx)
uacpi_status uacpi_find_aml_resource_end_tag(uacpi_data_view buffer, uacpi_size *out_offset)
#define LARGE_ITEM_HEADER_SIZE
static uacpi_iteration_decision accumulate_native_buffer_size(void *opaque, uacpi_u8 *data, uacpi_u16 resource_size, const struct uacpi_resource_spec *spec)
uacpi_status uacpi_get_current_resources(uacpi_namespace_node *device, uacpi_resources **out_resources)
static uacpi_size size_for_aml_irq(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
static uacpi_size size_for_aml_start_dependent(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
uacpi_status uacpi_for_each_resource(uacpi_resources *resources, uacpi_resource_iteration_callback cb, void *user)
#define DEFINE_SMALL_AML_RESOURCE(aml_type_enum, native_type_enum, aml_struct, native_struct,...)
static const struct uacpi_resource_convert_instruction convert_fixed_io[]
static const struct uacpi_resource_convert_instruction convert_vendor_type0[]
#define DECODE_RES_PIN_TBL_AND_VENDOR_DATA( short_aml_name, res_opcode, offset_field, res_field)
static uacpi_iteration_decision do_aml_resource_to_native(void *opaque, uacpi_u8 *data, uacpi_u16 aml_size, const struct uacpi_resource_spec *spec)
uacpi_status uacpi_for_each_aml_resource(uacpi_data_view buffer, uacpi_aml_resource_iteration_callback cb, void *user)
void uacpi_free_resources(uacpi_resources *resources)
uacpi_status uacpi_native_resources_to_aml(uacpi_resources *resources, uacpi_object **out_template)
static const struct uacpi_resource_convert_instruction convert_clock_input[]
static enum uacpi_aml_resource get_aml_resource_type(uacpi_u8 raw_byte)
static const struct uacpi_resource_convert_instruction convert_start_dependent_to_aml[]
#define AML_F(short_aml_name, field)
#define DECODE_PIN_GROUP_RES_SOURCES(postfix)
uacpi_status uacpi_native_resources_from_aml(uacpi_data_view aml_buffer, uacpi_resources **out_resources)
#define NATIVE_SERIAL_RESOURCE_EXTRA_SIZE(type)
static uacpi_size native_size_for_aml_resource(uacpi_u8 *data, uacpi_u16 size, const struct uacpi_resource_spec *spec)
static uacpi_size size_for_aml_pin_group(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
static uacpi_status get_aml_resource_size(uacpi_u8 *data, uacpi_size bytes_left, uacpi_u16 *out_size)
static uacpi_size size_for_aml_vendor(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
#define AML_SERIAL_RESOURCE_EXTRA_SIZE(type)
uacpi_status uacpi_get_device_resources(uacpi_namespace_node *device, const uacpi_char *method, uacpi_resources **out_resources)
static const struct uacpi_resource_convert_instruction convert_start_dependent_to_native[]
static const struct uacpi_resource_convert_instruction convert_pin_configuration[]
static uacpi_status validate_aml_serial_type(uacpi_u8 type)
#define PTR_AT(ptr, offset)
static uacpi_iteration_decision accumulate_aml_buffer_size(void *opaque, uacpi_resource *resource)
static const struct uacpi_resource_convert_instruction convert_pin_group_function[]
uacpi_status uacpi_set_resources(uacpi_namespace_node *device, uacpi_resources *resources)
#define NATIVE_OFFSET(res, offset)
static const uacpi_u8 aml_resource_kind_to_header_size[2]
static uacpi_size aml_size_for_native_resource(uacpi_resource *resource, const struct uacpi_resource_spec *spec)
static const uacpi_u8 aml_serial_resource_to_extra_aml_size[ACPI_SERIAL_TYPE_MAX+1]
#define CHECK_AML_OFFSET(offset, what)
static const struct uacpi_resource_convert_instruction convert_generic_register[]
static const struct uacpi_resource_convert_instruction convert_generic_serial_bus[]
static const struct uacpi_resource_convert_instruction convert_address64_extended[]
static uacpi_iteration_decision find_end(void *opaque, uacpi_u8 *data, uacpi_u16 resource_size, const struct uacpi_resource_spec *spec)
static uacpi_size aml_size_with_header(const struct uacpi_resource_spec *spec)
uacpi_status uacpi_for_each_device_resource(uacpi_namespace_node *device, const uacpi_char *method, uacpi_resource_iteration_callback cb, void *user)
static const uacpi_u8 native_resource_to_type[UACPI_RESOURCE_TYPE_MAX+1]
#define NATIVE_O(short_name, field)
static uacpi_size extra_size_for_serial_connection(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
static const struct uacpi_resource_convert_instruction convert_pin_group_configuration[]
#define SMALL_ITEM_HEADER_SIZE
static uacpi_size extra_size_for_native_pin_group(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
static uacpi_size extra_size_for_native_vendor(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
void uacpi_free_resource(uacpi_resource *resource)
static uacpi_size extra_size_for_resource_source(uacpi_size base_size, uacpi_size reported_size)
uacpi_status uacpi_get_resource_from_buffer(uacpi_data_view aml_buffer, uacpi_resource **out_resource)
static uacpi_size extra_size_for_native_irq_or_dma(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
#define DEFINE_ADDRESS_CONVERSION(width)
static const struct uacpi_resource_convert_instruction convert_extended_irq[]
static uacpi_size aml_size_for_serial_connection(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
#define CONVERSION_OPCODES_COMMON(native_buf)
static const struct uacpi_resource_spec * resource_spec_from_native(uacpi_resource *resource)
static uacpi_size extra_size_for_native_address_or_clock_input(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
static uacpi_size size_for_aml_gpio_or_pins(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
static uacpi_status native_resources_to_aml(uacpi_resources *native_resources, void *aml_buffer)
#define CONVERT_GENERAL_ADDRESS_FLAGS(addr_type)
#define DEFINE_SMALL_AML_RESOURCE_NO_NATIVE_REPR( aml_type_enum, native_type_enum, aml_struct,...)
static uacpi_size extra_size_for_native_gpio_or_pins(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
static uacpi_status eval_resource_helper(uacpi_namespace_node *node, const uacpi_char *method, uacpi_object **out_obj)
static const struct uacpi_resource_convert_instruction convert_dma[]
#define DECODE_SOURCE_INDEX(short_aml_name)
static const struct uacpi_resource_convert_instruction convert_memory24[]
static const struct uacpi_resource_convert_instruction convert_pin_function[]
static uacpi_status extract_native_resources_from_method(uacpi_namespace_node *device, const uacpi_char *method, uacpi_resources **out_resources)
static uacpi_size size_for_aml_address_or_clock_input(const struct uacpi_resource_spec *spec, uacpi_resource *resource)
#define DEFINE_LARGE_AML_RESOURCE(aml_type_enum, native_type_enum, aml_struct, native_struct,...)
static uacpi_size extra_size_for_extended_irq(const struct uacpi_resource_spec *spec, void *data, uacpi_size size)
const struct uacpi_resource_convert_instruction convert_irq_to_aml[]
static const struct uacpi_resource_convert_instruction convert_fixed_dma[]
static void write_status(LPCWSTR lpFmt,...)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLenum GLenum GLenum GLenum scale
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define UACPI_PTR_ADD(ptr, value)
struct task_struct * current
static const WCHAR label[]
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG PVOID ULONG out_size
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
static LARGE_INTEGER * frequency
static OBJECT_ATTRIBUTES *static ULONG POBJECT_ATTRIBUTES PIO_STATUS_BLOCK ULONG sharing
union uacpi_resource_convert_instruction::@689 f1
union uacpi_resource_convert_instruction::@691 f3
union uacpi_resource_convert_instruction::@690 f2
uacpi_resource_source source
uacpi_u16 type_data_length
uacpi_u16 vendor_data_length
uacpi_size(* size_for_aml)(const struct uacpi_resource_spec *, uacpi_resource *)
const struct uacpi_resource_convert_instruction * to_aml
const struct uacpi_resource_convert_instruction * to_native
uacpi_size(* extra_size_for_native)(const struct uacpi_resource_spec *, void *, uacpi_size)
uacpi_status uacpi_eval_simple_buffer(uacpi_namespace_node *parent, const uacpi_char *path, uacpi_object **ret)
uacpi_status uacpi_eval(uacpi_namespace_node *parent, const uacpi_char *path, const uacpi_object_array *args, uacpi_object **ret)