Loading drivers/acpi/acpica/rscreate.c +64 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,70 @@ #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME("rscreate") /******************************************************************************* * * FUNCTION: acpi_buffer_to_resource * * PARAMETERS: aml_buffer - Pointer to the resource byte stream * aml_buffer_length - Length of the aml_buffer * resource_ptr - Where the converted resource is returned * * RETURN: Status * * DESCRIPTION: Convert a raw AML buffer to a resource list * ******************************************************************************/ acpi_status acpi_buffer_to_resource(u8 *aml_buffer, u16 aml_buffer_length, struct acpi_resource **resource_ptr) { acpi_status status; acpi_size list_size_needed; void *resource; void *current_resource_ptr; /* * Note: we allow AE_AML_NO_RESOURCE_END_TAG, since an end tag * is not required here. */ /* Get the required length for the converted resource */ status = acpi_rs_get_list_length(aml_buffer, aml_buffer_length, &list_size_needed); if (status == AE_AML_NO_RESOURCE_END_TAG) { status = AE_OK; } if (ACPI_FAILURE(status)) { return (status); } /* Allocate a buffer for the converted resource */ resource = ACPI_ALLOCATE_ZEROED(list_size_needed); current_resource_ptr = resource; if (!resource) { return (AE_NO_MEMORY); } /* Perform the AML-to-Resource conversion */ status = acpi_ut_walk_aml_resources(aml_buffer, aml_buffer_length, acpi_rs_convert_aml_to_resources, ¤t_resource_ptr); if (status == AE_AML_NO_RESOURCE_END_TAG) { status = AE_OK; } if (ACPI_FAILURE(status)) { ACPI_FREE(resource); } else { *resource_ptr = resource; } return (status); } /******************************************************************************* * * FUNCTION: acpi_rs_create_resource_list Loading include/acpi/acpixf.h +5 −0 Original line number Diff line number Diff line Loading @@ -376,6 +376,11 @@ acpi_status acpi_resource_to_address64(struct acpi_resource *resource, struct acpi_resource_address64 *out); acpi_status acpi_buffer_to_resource(u8 *aml_buffer, u16 aml_buffer_length, struct acpi_resource **resource_ptr); /* * Hardware (ACPI device) interfaces */ Loading Loading
drivers/acpi/acpica/rscreate.c +64 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,70 @@ #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME("rscreate") /******************************************************************************* * * FUNCTION: acpi_buffer_to_resource * * PARAMETERS: aml_buffer - Pointer to the resource byte stream * aml_buffer_length - Length of the aml_buffer * resource_ptr - Where the converted resource is returned * * RETURN: Status * * DESCRIPTION: Convert a raw AML buffer to a resource list * ******************************************************************************/ acpi_status acpi_buffer_to_resource(u8 *aml_buffer, u16 aml_buffer_length, struct acpi_resource **resource_ptr) { acpi_status status; acpi_size list_size_needed; void *resource; void *current_resource_ptr; /* * Note: we allow AE_AML_NO_RESOURCE_END_TAG, since an end tag * is not required here. */ /* Get the required length for the converted resource */ status = acpi_rs_get_list_length(aml_buffer, aml_buffer_length, &list_size_needed); if (status == AE_AML_NO_RESOURCE_END_TAG) { status = AE_OK; } if (ACPI_FAILURE(status)) { return (status); } /* Allocate a buffer for the converted resource */ resource = ACPI_ALLOCATE_ZEROED(list_size_needed); current_resource_ptr = resource; if (!resource) { return (AE_NO_MEMORY); } /* Perform the AML-to-Resource conversion */ status = acpi_ut_walk_aml_resources(aml_buffer, aml_buffer_length, acpi_rs_convert_aml_to_resources, ¤t_resource_ptr); if (status == AE_AML_NO_RESOURCE_END_TAG) { status = AE_OK; } if (ACPI_FAILURE(status)) { ACPI_FREE(resource); } else { *resource_ptr = resource; } return (status); } /******************************************************************************* * * FUNCTION: acpi_rs_create_resource_list Loading
include/acpi/acpixf.h +5 −0 Original line number Diff line number Diff line Loading @@ -376,6 +376,11 @@ acpi_status acpi_resource_to_address64(struct acpi_resource *resource, struct acpi_resource_address64 *out); acpi_status acpi_buffer_to_resource(u8 *aml_buffer, u16 aml_buffer_length, struct acpi_resource **resource_ptr); /* * Hardware (ACPI device) interfaces */ Loading