mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-11 15:14:03 +08:00
Merge branch 'acpica'
* acpica: ACPICA: Update version to 20140926. ACPICA: acpiexec: Do not put STDIN into raw mode unless it is a terminal. ACPICA: iASL/Disassembler: Add support for hardware summary mapfiles. ACPICA: Events: Reduce source code difference for the ACPI_EVENT_FLAG_HANDLE renaming. ACPICA: Events: Reduce source code difference for the ACPI_EVENT_FLAG_HANDLE support. ACPICA: Events: Update GPE handler removal, match behavior of handler install. ACPICA: Events: Reduce source code difference in acpi_install_gpe_handler(). ACPICA: Events: Reduce indent divergences of events files. ACPICA: acpidump: Add ACPI 1.0 RSDP support. ACPICA: Add string for _DDN method name.
This commit is contained in:
commit
082c119da4
@ -49,6 +49,8 @@ acpi_status acpi_allocate_root_table(u32 initial_table_count);
|
|||||||
/*
|
/*
|
||||||
* tbxfroot - Root pointer utilities
|
* tbxfroot - Root pointer utilities
|
||||||
*/
|
*/
|
||||||
|
u32 acpi_tb_get_rsdp_length(struct acpi_table_rsdp *rsdp);
|
||||||
|
|
||||||
acpi_status acpi_tb_validate_rsdp(struct acpi_table_rsdp *rsdp);
|
acpi_status acpi_tb_validate_rsdp(struct acpi_table_rsdp *rsdp);
|
||||||
|
|
||||||
u8 *acpi_tb_scan_memory_for_rsdp(u8 *start_address, u32 length);
|
u8 *acpi_tb_scan_memory_for_rsdp(u8 *start_address, u32 length);
|
||||||
|
@ -117,6 +117,12 @@ struct asl_resource_node {
|
|||||||
struct asl_resource_node *next;
|
struct asl_resource_node *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct asl_resource_info {
|
||||||
|
union acpi_parse_object *descriptor_type_op; /* Resource descriptor parse node */
|
||||||
|
union acpi_parse_object *mapping_op; /* Used for mapfile support */
|
||||||
|
u32 current_byte_offset; /* Offset in resource template */
|
||||||
|
};
|
||||||
|
|
||||||
/* Macros used to generate AML resource length fields */
|
/* Macros used to generate AML resource length fields */
|
||||||
|
|
||||||
#define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (struct aml_resource_large_header))
|
#define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (struct aml_resource_large_header))
|
||||||
@ -449,4 +455,32 @@ union aml_resource {
|
|||||||
u8 byte_item;
|
u8 byte_item;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Interfaces used by both the disassembler and compiler */
|
||||||
|
|
||||||
|
void
|
||||||
|
mp_save_gpio_info(union acpi_parse_object *op,
|
||||||
|
union aml_resource *resource,
|
||||||
|
u32 pin_count, u16 *pin_list, char *device_name);
|
||||||
|
|
||||||
|
void
|
||||||
|
mp_save_serial_info(union acpi_parse_object *op,
|
||||||
|
union aml_resource *resource, char *device_name);
|
||||||
|
|
||||||
|
char *mp_get_hid_from_parse_tree(struct acpi_namespace_node *hid_node);
|
||||||
|
|
||||||
|
char *mp_get_hid_via_namestring(char *device_name);
|
||||||
|
|
||||||
|
char *mp_get_connection_info(union acpi_parse_object *op,
|
||||||
|
u32 pin_index,
|
||||||
|
struct acpi_namespace_node **target_node,
|
||||||
|
char **target_name);
|
||||||
|
|
||||||
|
char *mp_get_parent_device_hid(union acpi_parse_object *op,
|
||||||
|
struct acpi_namespace_node **target_node,
|
||||||
|
char **parent_device_name);
|
||||||
|
|
||||||
|
char *mp_get_ddn_value(char *device_name);
|
||||||
|
|
||||||
|
char *mp_get_hid_value(struct acpi_namespace_node *device_node);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -107,6 +107,7 @@ acpi_ev_update_gpe_enable_mask(struct acpi_gpe_event_info *gpe_event_info)
|
|||||||
* DESCRIPTION: Clear a GPE of stale events and enable it.
|
* DESCRIPTION: Clear a GPE of stale events and enable it.
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
acpi_status acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info)
|
acpi_status acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info)
|
||||||
{
|
{
|
||||||
acpi_status status;
|
acpi_status status;
|
||||||
@ -125,6 +126,7 @@ acpi_status acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Clear the GPE (of stale events) */
|
/* Clear the GPE (of stale events) */
|
||||||
|
|
||||||
status = acpi_hw_clear_gpe(gpe_event_info);
|
status = acpi_hw_clear_gpe(gpe_event_info);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
@ -136,7 +138,6 @@ acpi_status acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info)
|
|||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: acpi_ev_add_gpe_reference
|
* FUNCTION: acpi_ev_add_gpe_reference
|
||||||
|
@ -424,6 +424,7 @@ acpi_ev_match_gpe_method(acpi_handle obj_handle,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Disable the GPE in case it's been enabled already. */
|
/* Disable the GPE in case it's been enabled already. */
|
||||||
|
|
||||||
(void)acpi_hw_low_set_gpe(gpe_event_info, ACPI_GPE_DISABLE);
|
(void)acpi_hw_low_set_gpe(gpe_event_info, ACPI_GPE_DISABLE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -793,11 +793,19 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
|
|||||||
* automatically during initialization, in which case it has to be
|
* automatically during initialization, in which case it has to be
|
||||||
* disabled now to avoid spurious execution of the handler.
|
* disabled now to avoid spurious execution of the handler.
|
||||||
*/
|
*/
|
||||||
|
if (((handler->original_flags & ACPI_GPE_DISPATCH_METHOD) ||
|
||||||
if ((handler->original_flags & ACPI_GPE_DISPATCH_METHOD)
|
(handler->original_flags & ACPI_GPE_DISPATCH_NOTIFY)) &&
|
||||||
&& gpe_event_info->runtime_count) {
|
gpe_event_info->runtime_count) {
|
||||||
handler->originally_enabled = 1;
|
handler->originally_enabled = TRUE;
|
||||||
(void)acpi_ev_remove_gpe_reference(gpe_event_info);
|
(void)acpi_ev_remove_gpe_reference(gpe_event_info);
|
||||||
|
|
||||||
|
/* Sanity check of original type against new type */
|
||||||
|
|
||||||
|
if (type !=
|
||||||
|
(u32)(gpe_event_info->flags & ACPI_GPE_XRUPT_TYPE_MASK)) {
|
||||||
|
ACPI_WARNING((AE_INFO,
|
||||||
|
"GPE type mismatch (level/edge)"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Install the handler */
|
/* Install the handler */
|
||||||
@ -901,7 +909,8 @@ acpi_remove_gpe_handler(acpi_handle gpe_device,
|
|||||||
* enabled, it should be enabled at this point to restore the
|
* enabled, it should be enabled at this point to restore the
|
||||||
* post-initialization configuration.
|
* post-initialization configuration.
|
||||||
*/
|
*/
|
||||||
if ((handler->original_flags & ACPI_GPE_DISPATCH_METHOD) &&
|
if (((handler->original_flags & ACPI_GPE_DISPATCH_METHOD) ||
|
||||||
|
(handler->original_flags & ACPI_GPE_DISPATCH_NOTIFY)) &&
|
||||||
handler->originally_enabled) {
|
handler->originally_enabled) {
|
||||||
(void)acpi_ev_add_gpe_reference(gpe_event_info);
|
(void)acpi_ev_add_gpe_reference(gpe_event_info);
|
||||||
}
|
}
|
||||||
|
@ -324,8 +324,9 @@ ACPI_EXPORT_SYMBOL(acpi_clear_event)
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status)
|
acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status)
|
||||||
{
|
{
|
||||||
acpi_status status = AE_OK;
|
acpi_status status;
|
||||||
u32 value;
|
acpi_event_status local_event_status = 0;
|
||||||
|
u32 in_byte;
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE(acpi_get_event_status);
|
ACPI_FUNCTION_TRACE(acpi_get_event_status);
|
||||||
|
|
||||||
@ -339,29 +340,40 @@ acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status)
|
|||||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the status of the requested fixed event */
|
/* Fixed event currently can be dispatched? */
|
||||||
|
|
||||||
|
if (acpi_gbl_fixed_event_handlers[event].handler) {
|
||||||
|
local_event_status |= ACPI_EVENT_FLAG_HAS_HANDLER;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fixed event currently enabled? */
|
||||||
|
|
||||||
status =
|
status =
|
||||||
acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
|
acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
|
||||||
enable_register_id, &value);
|
enable_register_id, &in_byte);
|
||||||
if (ACPI_FAILURE(status))
|
if (ACPI_FAILURE(status)) {
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
|
}
|
||||||
|
|
||||||
*event_status = value;
|
if (in_byte) {
|
||||||
|
local_event_status |= ACPI_EVENT_FLAG_ENABLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fixed event currently active? */
|
||||||
|
|
||||||
status =
|
status =
|
||||||
acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
|
acpi_read_bit_register(acpi_gbl_fixed_event_info[event].
|
||||||
status_register_id, &value);
|
status_register_id, &in_byte);
|
||||||
if (ACPI_FAILURE(status))
|
if (ACPI_FAILURE(status)) {
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
|
}
|
||||||
|
|
||||||
if (value)
|
if (in_byte) {
|
||||||
*event_status |= ACPI_EVENT_FLAG_SET;
|
local_event_status |= ACPI_EVENT_FLAG_SET;
|
||||||
|
}
|
||||||
|
|
||||||
if (acpi_gbl_fixed_event_handlers[event].handler)
|
(*event_status) = local_event_status;
|
||||||
*event_status |= ACPI_EVENT_FLAG_HANDLE;
|
return_ACPI_STATUS(AE_OK);
|
||||||
|
|
||||||
return_ACPI_STATUS(status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ACPI_EXPORT_SYMBOL(acpi_get_event_status)
|
ACPI_EXPORT_SYMBOL(acpi_get_event_status)
|
||||||
|
@ -115,7 +115,6 @@ ACPI_EXPORT_SYMBOL(acpi_update_all_gpes)
|
|||||||
* hardware-enabled.
|
* hardware-enabled.
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number)
|
acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number)
|
||||||
{
|
{
|
||||||
acpi_status status = AE_BAD_PARAMETER;
|
acpi_status status = AE_BAD_PARAMETER;
|
||||||
@ -524,9 +523,6 @@ acpi_get_gpe_status(acpi_handle gpe_device,
|
|||||||
|
|
||||||
status = acpi_hw_get_gpe_status(gpe_event_info, event_status);
|
status = acpi_hw_get_gpe_status(gpe_event_info, event_status);
|
||||||
|
|
||||||
if (gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK)
|
|
||||||
*event_status |= ACPI_EVENT_FLAG_HANDLE;
|
|
||||||
|
|
||||||
unlock_and_exit:
|
unlock_and_exit:
|
||||||
acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
|
acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
|
@ -216,6 +216,13 @@ acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info,
|
|||||||
return (AE_BAD_PARAMETER);
|
return (AE_BAD_PARAMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* GPE currently handled? */
|
||||||
|
|
||||||
|
if ((gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK) !=
|
||||||
|
ACPI_GPE_DISPATCH_NONE) {
|
||||||
|
local_event_status |= ACPI_EVENT_FLAG_HAS_HANDLER;
|
||||||
|
}
|
||||||
|
|
||||||
/* Get the info block for the entire GPE register */
|
/* Get the info block for the entire GPE register */
|
||||||
|
|
||||||
gpe_register_info = gpe_event_info->register_info;
|
gpe_register_info = gpe_event_info->register_info;
|
||||||
|
@ -48,6 +48,36 @@
|
|||||||
#define _COMPONENT ACPI_TABLES
|
#define _COMPONENT ACPI_TABLES
|
||||||
ACPI_MODULE_NAME("tbxfroot")
|
ACPI_MODULE_NAME("tbxfroot")
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: acpi_tb_get_rsdp_length
|
||||||
|
*
|
||||||
|
* PARAMETERS: rsdp - Pointer to RSDP
|
||||||
|
*
|
||||||
|
* RETURN: Table length
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Get the length of the RSDP
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
u32 acpi_tb_get_rsdp_length(struct acpi_table_rsdp *rsdp)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!ACPI_VALIDATE_RSDP_SIG(rsdp->signature)) {
|
||||||
|
|
||||||
|
/* BAD Signature */
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* "Length" field is available if table version >= 2 */
|
||||||
|
|
||||||
|
if (rsdp->revision >= 2) {
|
||||||
|
return (rsdp->length);
|
||||||
|
} else {
|
||||||
|
return (ACPI_RSDP_CHECKSUM_LENGTH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: acpi_tb_validate_rsdp
|
* FUNCTION: acpi_tb_validate_rsdp
|
||||||
@ -59,6 +89,7 @@ ACPI_MODULE_NAME("tbxfroot")
|
|||||||
* DESCRIPTION: Validate the RSDP (ptr)
|
* DESCRIPTION: Validate the RSDP (ptr)
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
acpi_status acpi_tb_validate_rsdp(struct acpi_table_rsdp * rsdp)
|
acpi_status acpi_tb_validate_rsdp(struct acpi_table_rsdp * rsdp)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -1470,7 +1470,7 @@ static void acpi_wakeup_gpe_init(struct acpi_device *device)
|
|||||||
if (ACPI_FAILURE(status))
|
if (ACPI_FAILURE(status))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
wakeup->flags.run_wake = !!(event_status & ACPI_EVENT_FLAG_HANDLE);
|
wakeup->flags.run_wake = !!(event_status & ACPI_EVENT_FLAG_HAS_HANDLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void acpi_bus_get_wakeup_device_flags(struct acpi_device *device)
|
static void acpi_bus_get_wakeup_device_flags(struct acpi_device *device)
|
||||||
|
@ -537,7 +537,7 @@ static ssize_t counter_show(struct kobject *kobj,
|
|||||||
if (result)
|
if (result)
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
if (!(status & ACPI_EVENT_FLAG_HANDLE))
|
if (!(status & ACPI_EVENT_FLAG_HAS_HANDLER))
|
||||||
size += sprintf(buf + size, " invalid");
|
size += sprintf(buf + size, " invalid");
|
||||||
else if (status & ACPI_EVENT_FLAG_ENABLED)
|
else if (status & ACPI_EVENT_FLAG_ENABLED)
|
||||||
size += sprintf(buf + size, " enabled");
|
size += sprintf(buf + size, " enabled");
|
||||||
@ -581,7 +581,7 @@ static ssize_t counter_set(struct kobject *kobj,
|
|||||||
if (result)
|
if (result)
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
if (!(status & ACPI_EVENT_FLAG_HANDLE)) {
|
if (!(status & ACPI_EVENT_FLAG_HAS_HANDLER)) {
|
||||||
printk(KERN_WARNING PREFIX
|
printk(KERN_WARNING PREFIX
|
||||||
"Can not change Invalid GPE/Fixed Event status\n");
|
"Can not change Invalid GPE/Fixed Event status\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
#define METHOD_NAME__CBA "_CBA"
|
#define METHOD_NAME__CBA "_CBA"
|
||||||
#define METHOD_NAME__CID "_CID"
|
#define METHOD_NAME__CID "_CID"
|
||||||
#define METHOD_NAME__CRS "_CRS"
|
#define METHOD_NAME__CRS "_CRS"
|
||||||
|
#define METHOD_NAME__DDN "_DDN"
|
||||||
#define METHOD_NAME__HID "_HID"
|
#define METHOD_NAME__HID "_HID"
|
||||||
#define METHOD_NAME__INI "_INI"
|
#define METHOD_NAME__INI "_INI"
|
||||||
#define METHOD_NAME__PLD "_PLD"
|
#define METHOD_NAME__PLD "_PLD"
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
|
|
||||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||||
|
|
||||||
#define ACPI_CA_VERSION 0x20140828
|
#define ACPI_CA_VERSION 0x20140926
|
||||||
|
|
||||||
#include <acpi/acconfig.h>
|
#include <acpi/acconfig.h>
|
||||||
#include <acpi/actypes.h>
|
#include <acpi/actypes.h>
|
||||||
|
@ -721,7 +721,7 @@ typedef u32 acpi_event_type;
|
|||||||
* | | | +--- Enabled for wake?
|
* | | | +--- Enabled for wake?
|
||||||
* | | +----- Set?
|
* | | +----- Set?
|
||||||
* | +------- Has a handler?
|
* | +------- Has a handler?
|
||||||
* +----------- <Reserved>
|
* +------------- <Reserved>
|
||||||
*/
|
*/
|
||||||
typedef u32 acpi_event_status;
|
typedef u32 acpi_event_status;
|
||||||
|
|
||||||
@ -729,7 +729,7 @@ typedef u32 acpi_event_status;
|
|||||||
#define ACPI_EVENT_FLAG_ENABLED (acpi_event_status) 0x01
|
#define ACPI_EVENT_FLAG_ENABLED (acpi_event_status) 0x01
|
||||||
#define ACPI_EVENT_FLAG_WAKE_ENABLED (acpi_event_status) 0x02
|
#define ACPI_EVENT_FLAG_WAKE_ENABLED (acpi_event_status) 0x02
|
||||||
#define ACPI_EVENT_FLAG_SET (acpi_event_status) 0x04
|
#define ACPI_EVENT_FLAG_SET (acpi_event_status) 0x04
|
||||||
#define ACPI_EVENT_FLAG_HANDLE (acpi_event_status) 0x08
|
#define ACPI_EVENT_FLAG_HAS_HANDLER (acpi_event_status) 0x08
|
||||||
|
|
||||||
/* Actions for acpi_set_gpe, acpi_gpe_wakeup, acpi_hw_low_set_gpe */
|
/* Actions for acpi_set_gpe, acpi_gpe_wakeup, acpi_hw_low_set_gpe */
|
||||||
|
|
||||||
|
@ -122,6 +122,14 @@ static void os_enter_line_edit_mode(void)
|
|||||||
{
|
{
|
||||||
struct termios local_term_attributes;
|
struct termios local_term_attributes;
|
||||||
|
|
||||||
|
term_attributes_were_set = 0;
|
||||||
|
|
||||||
|
/* STDIN must be a terminal */
|
||||||
|
|
||||||
|
if (!isatty(STDIN_FILENO)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Get and keep the original attributes */
|
/* Get and keep the original attributes */
|
||||||
|
|
||||||
if (tcgetattr(STDIN_FILENO, &original_term_attributes)) {
|
if (tcgetattr(STDIN_FILENO, &original_term_attributes)) {
|
||||||
|
@ -146,7 +146,7 @@ u32 ap_get_table_length(struct acpi_table_header *table)
|
|||||||
|
|
||||||
if (ACPI_VALIDATE_RSDP_SIG(table->signature)) {
|
if (ACPI_VALIDATE_RSDP_SIG(table->signature)) {
|
||||||
rsdp = ACPI_CAST_PTR(struct acpi_table_rsdp, table);
|
rsdp = ACPI_CAST_PTR(struct acpi_table_rsdp, table);
|
||||||
return (rsdp->length);
|
return (acpi_tb_get_rsdp_length(rsdp));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Normal ACPI table */
|
/* Normal ACPI table */
|
||||||
|
Loading…
Reference in New Issue
Block a user