Commit a91cdde2 authored by Bob Moore's avatar Bob Moore Committed by Len Brown

ACPI 5.0: New interface, acpi_get_event_resources

Executes _AEI and formats the result, similar to acpi_get_current_resources, etc.
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent e0fe0a8d
...@@ -215,6 +215,10 @@ acpi_status ...@@ -215,6 +215,10 @@ acpi_status
acpi_rs_set_srs_method_data(struct acpi_namespace_node *node, acpi_rs_set_srs_method_data(struct acpi_namespace_node *node,
struct acpi_buffer *ret_buffer); struct acpi_buffer *ret_buffer);
acpi_status
acpi_rs_get_aei_method_data(struct acpi_namespace_node *node,
struct acpi_buffer *ret_buffer);
/* /*
* rscalc * rscalc
*/ */
......
...@@ -592,6 +592,56 @@ acpi_rs_get_prs_method_data(struct acpi_namespace_node *node, ...@@ -592,6 +592,56 @@ acpi_rs_get_prs_method_data(struct acpi_namespace_node *node,
} }
#endif /* ACPI_FUTURE_USAGE */ #endif /* ACPI_FUTURE_USAGE */
/*******************************************************************************
*
* FUNCTION: acpi_rs_get_aei_method_data
*
* PARAMETERS: Node - Device node
* ret_buffer - Pointer to a buffer structure for the
* results
*
* RETURN: Status
*
* DESCRIPTION: This function is called to get the _AEI value of an object
* contained in an object specified by the handle passed in
*
* If the function fails an appropriate status will be returned
* and the contents of the callers buffer is undefined.
*
******************************************************************************/
acpi_status
acpi_rs_get_aei_method_data(struct acpi_namespace_node *node,
struct acpi_buffer *ret_buffer)
{
union acpi_operand_object *obj_desc;
acpi_status status;
ACPI_FUNCTION_TRACE(rs_get_aei_method_data);
/* Parameters guaranteed valid by caller */
/* Execute the method, no parameters */
status = acpi_ut_evaluate_object(node, METHOD_NAME__AEI,
ACPI_BTYPE_BUFFER, &obj_desc);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
/*
* Make the call to create a resource linked list from the
* byte stream buffer that comes back from the _CRS method
* execution.
*/
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);
}
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: acpi_rs_get_method_data * FUNCTION: acpi_rs_get_method_data
......
...@@ -307,6 +307,46 @@ acpi_set_current_resources(acpi_handle device_handle, ...@@ -307,6 +307,46 @@ acpi_set_current_resources(acpi_handle device_handle,
ACPI_EXPORT_SYMBOL(acpi_set_current_resources) ACPI_EXPORT_SYMBOL(acpi_set_current_resources)
/*******************************************************************************
*
* FUNCTION: acpi_get_event_resources
*
* PARAMETERS: device_handle - Handle to the device object for the
* device we are getting resources
* in_buffer - Pointer to a buffer containing the
* resources to be set for the device
*
* RETURN: Status
*
* DESCRIPTION: This function is called to get the event resources for a
* specific device. The caller must first acquire a handle for
* the desired device. The resource data is passed to the routine
* the buffer pointed to by the in_buffer variable. Uses the
* _AEI method.
*
******************************************************************************/
acpi_status
acpi_get_event_resources(acpi_handle device_handle,
struct acpi_buffer *ret_buffer)
{
acpi_status status;
struct acpi_namespace_node *node;
ACPI_FUNCTION_TRACE(acpi_get_event_resources);
/* Validate parameters then dispatch to internal routine */
status = acpi_rs_validate_parameters(device_handle, ret_buffer, &node);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
status = acpi_rs_get_aei_method_data(node, ret_buffer);
return_ACPI_STATUS(status);
}
ACPI_EXPORT_SYMBOL(acpi_get_event_resources)
/****************************************************************************** /******************************************************************************
* *
* FUNCTION: acpi_resource_to_address64 * FUNCTION: acpi_resource_to_address64
......
...@@ -357,6 +357,10 @@ acpi_status ...@@ -357,6 +357,10 @@ acpi_status
acpi_get_possible_resources(acpi_handle device, struct acpi_buffer *ret_buffer); acpi_get_possible_resources(acpi_handle device, struct acpi_buffer *ret_buffer);
#endif #endif
acpi_status
acpi_get_event_resources(acpi_handle device_handle,
struct acpi_buffer *ret_buffer);
acpi_status acpi_status
acpi_walk_resources(acpi_handle device, acpi_walk_resources(acpi_handle device,
char *name, char *name,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment