@@ -41,15 +41,12 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/acnamesp.h>
|
||||
#include <acpi/acresrc.h>
|
||||
|
||||
|
||||
#define _COMPONENT ACPI_RESOURCES
|
||||
ACPI_MODULE_NAME ("rsutils")
|
||||
|
||||
ACPI_MODULE_NAME("rsutils")
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -68,42 +65,36 @@
|
||||
* and the contents of the callers buffer is undefined.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_rs_get_prt_method_data (
|
||||
acpi_handle handle,
|
||||
struct acpi_buffer *ret_buffer)
|
||||
acpi_rs_get_prt_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer)
|
||||
{
|
||||
union acpi_operand_object *obj_desc;
|
||||
acpi_status status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("rs_get_prt_method_data");
|
||||
union acpi_operand_object *obj_desc;
|
||||
acpi_status status;
|
||||
|
||||
ACPI_FUNCTION_TRACE("rs_get_prt_method_data");
|
||||
|
||||
/* Parameters guaranteed valid by caller */
|
||||
|
||||
/* Execute the method, no parameters */
|
||||
|
||||
status = acpi_ut_evaluate_object (handle, METHOD_NAME__PRT,
|
||||
ACPI_BTYPE_PACKAGE, &obj_desc);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
return_ACPI_STATUS (status);
|
||||
status = acpi_ut_evaluate_object(handle, METHOD_NAME__PRT,
|
||||
ACPI_BTYPE_PACKAGE, &obj_desc);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a resource linked list from the byte stream buffer that comes
|
||||
* back from the _CRS method execution.
|
||||
*/
|
||||
status = acpi_rs_create_pci_routing_table (obj_desc, ret_buffer);
|
||||
status = acpi_rs_create_pci_routing_table(obj_desc, ret_buffer);
|
||||
|
||||
/* On exit, we must delete the object returned by evaluate_object */
|
||||
|
||||
acpi_ut_remove_reference (obj_desc);
|
||||
return_ACPI_STATUS (status);
|
||||
acpi_ut_remove_reference(obj_desc);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_rs_get_crs_method_data
|
||||
@@ -123,25 +114,21 @@ acpi_rs_get_prt_method_data (
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_rs_get_crs_method_data (
|
||||
acpi_handle handle,
|
||||
struct acpi_buffer *ret_buffer)
|
||||
acpi_rs_get_crs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer)
|
||||
{
|
||||
union acpi_operand_object *obj_desc;
|
||||
acpi_status status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("rs_get_crs_method_data");
|
||||
union acpi_operand_object *obj_desc;
|
||||
acpi_status status;
|
||||
|
||||
ACPI_FUNCTION_TRACE("rs_get_crs_method_data");
|
||||
|
||||
/* Parameters guaranteed valid by caller */
|
||||
|
||||
/* Execute the method, no parameters */
|
||||
|
||||
status = acpi_ut_evaluate_object (handle, METHOD_NAME__CRS,
|
||||
ACPI_BTYPE_BUFFER, &obj_desc);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
return_ACPI_STATUS (status);
|
||||
status = acpi_ut_evaluate_object(handle, METHOD_NAME__CRS,
|
||||
ACPI_BTYPE_BUFFER, &obj_desc);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -149,15 +136,14 @@ acpi_rs_get_crs_method_data (
|
||||
* byte stream buffer that comes back from the _CRS method
|
||||
* execution.
|
||||
*/
|
||||
status = acpi_rs_create_resource_list (obj_desc, ret_buffer);
|
||||
status = acpi_rs_create_resource_list(obj_desc, ret_buffer);
|
||||
|
||||
/* on exit, we must delete the object returned by evaluate_object */
|
||||
|
||||
acpi_ut_remove_reference (obj_desc);
|
||||
return_ACPI_STATUS (status);
|
||||
acpi_ut_remove_reference(obj_desc);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_rs_get_prs_method_data
|
||||
@@ -178,25 +164,21 @@ acpi_rs_get_crs_method_data (
|
||||
|
||||
#ifdef ACPI_FUTURE_USAGE
|
||||
acpi_status
|
||||
acpi_rs_get_prs_method_data (
|
||||
acpi_handle handle,
|
||||
struct acpi_buffer *ret_buffer)
|
||||
acpi_rs_get_prs_method_data(acpi_handle handle, struct acpi_buffer *ret_buffer)
|
||||
{
|
||||
union acpi_operand_object *obj_desc;
|
||||
acpi_status status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("rs_get_prs_method_data");
|
||||
union acpi_operand_object *obj_desc;
|
||||
acpi_status status;
|
||||
|
||||
ACPI_FUNCTION_TRACE("rs_get_prs_method_data");
|
||||
|
||||
/* Parameters guaranteed valid by caller */
|
||||
|
||||
/* Execute the method, no parameters */
|
||||
|
||||
status = acpi_ut_evaluate_object (handle, METHOD_NAME__PRS,
|
||||
ACPI_BTYPE_BUFFER, &obj_desc);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
return_ACPI_STATUS (status);
|
||||
status = acpi_ut_evaluate_object(handle, METHOD_NAME__PRS,
|
||||
ACPI_BTYPE_BUFFER, &obj_desc);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -204,15 +186,14 @@ acpi_rs_get_prs_method_data (
|
||||
* byte stream buffer that comes back from the _CRS method
|
||||
* execution.
|
||||
*/
|
||||
status = acpi_rs_create_resource_list (obj_desc, ret_buffer);
|
||||
status = acpi_rs_create_resource_list(obj_desc, ret_buffer);
|
||||
|
||||
/* on exit, we must delete the object returned by evaluate_object */
|
||||
|
||||
acpi_ut_remove_reference (obj_desc);
|
||||
return_ACPI_STATUS (status);
|
||||
acpi_ut_remove_reference(obj_desc);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
#endif /* ACPI_FUTURE_USAGE */
|
||||
|
||||
#endif /* ACPI_FUTURE_USAGE */
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@@ -234,25 +215,22 @@ acpi_rs_get_prs_method_data (
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_rs_get_method_data (
|
||||
acpi_handle handle,
|
||||
char *path,
|
||||
struct acpi_buffer *ret_buffer)
|
||||
acpi_rs_get_method_data(acpi_handle handle,
|
||||
char *path, struct acpi_buffer *ret_buffer)
|
||||
{
|
||||
union acpi_operand_object *obj_desc;
|
||||
acpi_status status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("rs_get_method_data");
|
||||
union acpi_operand_object *obj_desc;
|
||||
acpi_status status;
|
||||
|
||||
ACPI_FUNCTION_TRACE("rs_get_method_data");
|
||||
|
||||
/* Parameters guaranteed valid by caller */
|
||||
|
||||
/* Execute the method, no parameters */
|
||||
|
||||
status = acpi_ut_evaluate_object (handle, path, ACPI_BTYPE_BUFFER, &obj_desc);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
return_ACPI_STATUS (status);
|
||||
status =
|
||||
acpi_ut_evaluate_object(handle, path, ACPI_BTYPE_BUFFER, &obj_desc);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -260,12 +238,12 @@ acpi_rs_get_method_data (
|
||||
* byte stream buffer that comes back from the method
|
||||
* execution.
|
||||
*/
|
||||
status = acpi_rs_create_resource_list (obj_desc, ret_buffer);
|
||||
status = acpi_rs_create_resource_list(obj_desc, ret_buffer);
|
||||
|
||||
/* On exit, we must delete the object returned by evaluate_object */
|
||||
|
||||
acpi_ut_remove_reference (obj_desc);
|
||||
return_ACPI_STATUS (status);
|
||||
acpi_ut_remove_reference(obj_desc);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -287,18 +265,14 @@ acpi_rs_get_method_data (
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_rs_set_srs_method_data (
|
||||
acpi_handle handle,
|
||||
struct acpi_buffer *in_buffer)
|
||||
acpi_rs_set_srs_method_data(acpi_handle handle, struct acpi_buffer *in_buffer)
|
||||
{
|
||||
struct acpi_parameter_info info;
|
||||
union acpi_operand_object *params[2];
|
||||
acpi_status status;
|
||||
struct acpi_buffer buffer;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("rs_set_srs_method_data");
|
||||
struct acpi_parameter_info info;
|
||||
union acpi_operand_object *params[2];
|
||||
acpi_status status;
|
||||
struct acpi_buffer buffer;
|
||||
|
||||
ACPI_FUNCTION_TRACE("rs_set_srs_method_data");
|
||||
|
||||
/* Parameters guaranteed valid by caller */
|
||||
|
||||
@@ -310,24 +284,24 @@ acpi_rs_set_srs_method_data (
|
||||
* Convert the linked list into a byte stream
|
||||
*/
|
||||
buffer.length = ACPI_ALLOCATE_LOCAL_BUFFER;
|
||||
status = acpi_rs_create_byte_stream (in_buffer->pointer, &buffer);
|
||||
if (ACPI_FAILURE (status)) {
|
||||
return_ACPI_STATUS (status);
|
||||
status = acpi_rs_create_byte_stream(in_buffer->pointer, &buffer);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/* Init the param object */
|
||||
|
||||
params[0] = acpi_ut_create_internal_object (ACPI_TYPE_BUFFER);
|
||||
params[0] = acpi_ut_create_internal_object(ACPI_TYPE_BUFFER);
|
||||
if (!params[0]) {
|
||||
acpi_os_free (buffer.pointer);
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
acpi_os_free(buffer.pointer);
|
||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Set up the parameter object */
|
||||
|
||||
params[0]->buffer.length = (u32) buffer.length;
|
||||
params[0]->buffer.length = (u32) buffer.length;
|
||||
params[0]->buffer.pointer = buffer.pointer;
|
||||
params[0]->common.flags = AOPOBJ_DATA_VALID;
|
||||
params[0]->common.flags = AOPOBJ_DATA_VALID;
|
||||
params[1] = NULL;
|
||||
|
||||
info.node = handle;
|
||||
@@ -336,18 +310,17 @@ acpi_rs_set_srs_method_data (
|
||||
|
||||
/* Execute the method, no return value */
|
||||
|
||||
status = acpi_ns_evaluate_relative (METHOD_NAME__SRS, &info);
|
||||
if (ACPI_SUCCESS (status)) {
|
||||
status = acpi_ns_evaluate_relative(METHOD_NAME__SRS, &info);
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
/* Delete any return object (especially if implicit_return is enabled) */
|
||||
|
||||
if (info.return_object) {
|
||||
acpi_ut_remove_reference (info.return_object);
|
||||
acpi_ut_remove_reference(info.return_object);
|
||||
}
|
||||
}
|
||||
|
||||
/* Clean up and return the status from acpi_ns_evaluate_relative */
|
||||
|
||||
acpi_ut_remove_reference (params[0]);
|
||||
return_ACPI_STATUS (status);
|
||||
acpi_ut_remove_reference(params[0]);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户