Commit 082c119d authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

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.
parents f114040e 9fc3d1d0
...@@ -127,7 +127,7 @@ acpi_hw_clear_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info, ...@@ -127,7 +127,7 @@ acpi_hw_clear_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
acpi_status acpi_status
acpi_hw_get_gpe_status(struct acpi_gpe_event_info *gpe_event_info, acpi_hw_get_gpe_status(struct acpi_gpe_event_info *gpe_event_info,
acpi_event_status * event_status); acpi_event_status *event_status);
acpi_status acpi_hw_disable_all_gpes(void); acpi_status acpi_hw_disable_all_gpes(void);
......
...@@ -413,8 +413,8 @@ struct acpi_gpe_handler_info { ...@@ -413,8 +413,8 @@ struct acpi_gpe_handler_info {
acpi_gpe_handler address; /* Address of handler, if any */ acpi_gpe_handler address; /* Address of handler, if any */
void *context; /* Context to be passed to handler */ void *context; /* Context to be passed to handler */
struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */ struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */
u8 original_flags; /* Original (pre-handler) GPE info */ u8 original_flags; /* Original (pre-handler) GPE info */
u8 originally_enabled; /* True if GPE was originally enabled */ u8 originally_enabled; /* True if GPE was originally enabled */
}; };
/* Notify info for implicit notify, multiple device objects */ /* Notify info for implicit notify, multiple device objects */
......
...@@ -49,6 +49,8 @@ acpi_status acpi_allocate_root_table(u32 initial_table_count); ...@@ -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 { ...@@ -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 { ...@@ -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
...@@ -100,13 +100,14 @@ acpi_ev_update_gpe_enable_mask(struct acpi_gpe_event_info *gpe_event_info) ...@@ -100,13 +100,14 @@ acpi_ev_update_gpe_enable_mask(struct acpi_gpe_event_info *gpe_event_info)
* *
* FUNCTION: acpi_ev_enable_gpe * FUNCTION: acpi_ev_enable_gpe
* *
* PARAMETERS: gpe_event_info - GPE to enable * PARAMETERS: gpe_event_info - GPE to enable
* *
* RETURN: Status * RETURN: Status
* *
* 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) ...@@ -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) ...@@ -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
...@@ -212,7 +213,7 @@ acpi_ev_remove_gpe_reference(struct acpi_gpe_event_info *gpe_event_info) ...@@ -212,7 +213,7 @@ acpi_ev_remove_gpe_reference(struct acpi_gpe_event_info *gpe_event_info)
if (ACPI_SUCCESS(status)) { if (ACPI_SUCCESS(status)) {
status = status =
acpi_hw_low_set_gpe(gpe_event_info, acpi_hw_low_set_gpe(gpe_event_info,
ACPI_GPE_DISABLE); ACPI_GPE_DISABLE);
} }
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
...@@ -334,7 +335,7 @@ struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info(acpi_handle gpe_device, ...@@ -334,7 +335,7 @@ struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info(acpi_handle gpe_device,
* *
******************************************************************************/ ******************************************************************************/
u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info * gpe_xrupt_list) u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info *gpe_xrupt_list)
{ {
acpi_status status; acpi_status status;
struct acpi_gpe_block_info *gpe_block; struct acpi_gpe_block_info *gpe_block;
...@@ -427,7 +428,7 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info * gpe_xrupt_list) ...@@ -427,7 +428,7 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info * gpe_xrupt_list)
/* Check if there is anything active at all in this register */ /* Check if there is anything active at all in this register */
enabled_status_byte = (u8) (status_reg & enable_reg); enabled_status_byte = (u8)(status_reg & enable_reg);
if (!enabled_status_byte) { if (!enabled_status_byte) {
/* No active GPEs in this register, move on */ /* No active GPEs in this register, move on */
...@@ -450,7 +451,7 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info * gpe_xrupt_list) ...@@ -450,7 +451,7 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info * gpe_xrupt_list)
acpi_ev_gpe_dispatch(gpe_block-> acpi_ev_gpe_dispatch(gpe_block->
node, node,
&gpe_block-> &gpe_block->
event_info[((acpi_size) i * ACPI_GPE_REGISTER_WIDTH) + j], j + gpe_register_info->base_gpe_number); event_info[((acpi_size) i * ACPI_GPE_REGISTER_WIDTH) + j], j + gpe_register_info->base_gpe_number);
} }
} }
} }
...@@ -636,7 +637,7 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_enable_gpe(void *context) ...@@ -636,7 +637,7 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_enable_gpe(void *context)
* *
******************************************************************************/ ******************************************************************************/
acpi_status acpi_ev_finish_gpe(struct acpi_gpe_event_info *gpe_event_info) acpi_status acpi_ev_finish_gpe(struct acpi_gpe_event_info * gpe_event_info)
{ {
acpi_status status; acpi_status status;
...@@ -666,9 +667,9 @@ acpi_status acpi_ev_finish_gpe(struct acpi_gpe_event_info *gpe_event_info) ...@@ -666,9 +667,9 @@ acpi_status acpi_ev_finish_gpe(struct acpi_gpe_event_info *gpe_event_info)
* *
* FUNCTION: acpi_ev_gpe_dispatch * FUNCTION: acpi_ev_gpe_dispatch
* *
* PARAMETERS: gpe_device - Device node. NULL for GPE0/GPE1 * PARAMETERS: gpe_device - Device node. NULL for GPE0/GPE1
* gpe_event_info - Info for this GPE * gpe_event_info - Info for this GPE
* gpe_number - Number relative to the parent GPE block * gpe_number - Number relative to the parent GPE block
* *
* RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED
* *
...@@ -681,7 +682,7 @@ acpi_status acpi_ev_finish_gpe(struct acpi_gpe_event_info *gpe_event_info) ...@@ -681,7 +682,7 @@ acpi_status acpi_ev_finish_gpe(struct acpi_gpe_event_info *gpe_event_info)
u32 u32
acpi_ev_gpe_dispatch(struct acpi_namespace_node *gpe_device, acpi_ev_gpe_dispatch(struct acpi_namespace_node *gpe_device,
struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number) struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
{ {
acpi_status status; acpi_status status;
u32 return_value; u32 return_value;
......
...@@ -424,6 +424,7 @@ acpi_ev_match_gpe_method(acpi_handle obj_handle, ...@@ -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);
/* /*
......
...@@ -786,18 +786,26 @@ acpi_install_gpe_handler(acpi_handle gpe_device, ...@@ -786,18 +786,26 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
handler->method_node = gpe_event_info->dispatch.method_node; handler->method_node = gpe_event_info->dispatch.method_node;
handler->original_flags = (u8)(gpe_event_info->flags & handler->original_flags = (u8)(gpe_event_info->flags &
(ACPI_GPE_XRUPT_TYPE_MASK | (ACPI_GPE_XRUPT_TYPE_MASK |
ACPI_GPE_DISPATCH_MASK)); ACPI_GPE_DISPATCH_MASK));
/* /*
* If the GPE is associated with a method, it may have been enabled * If the GPE is associated with a method, it may have been enabled
* 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 */
...@@ -808,7 +816,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device, ...@@ -808,7 +816,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
gpe_event_info->flags &= gpe_event_info->flags &=
~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK); ~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK);
gpe_event_info->flags |= (u8) (type | ACPI_GPE_DISPATCH_HANDLER); gpe_event_info->flags |= (u8)(type | ACPI_GPE_DISPATCH_HANDLER);
acpi_os_release_lock(acpi_gbl_gpe_lock, flags); acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
...@@ -893,7 +901,7 @@ acpi_remove_gpe_handler(acpi_handle gpe_device, ...@@ -893,7 +901,7 @@ acpi_remove_gpe_handler(acpi_handle gpe_device,
gpe_event_info->dispatch.method_node = handler->method_node; gpe_event_info->dispatch.method_node = handler->method_node;
gpe_event_info->flags &= gpe_event_info->flags &=
~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK); ~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK);
gpe_event_info->flags |= handler->original_flags; gpe_event_info->flags |= handler->original_flags;
/* /*
...@@ -901,7 +909,8 @@ acpi_remove_gpe_handler(acpi_handle gpe_device, ...@@ -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);
} }
...@@ -946,7 +955,7 @@ ACPI_EXPORT_SYMBOL(acpi_remove_gpe_handler) ...@@ -946,7 +955,7 @@ ACPI_EXPORT_SYMBOL(acpi_remove_gpe_handler)
* handle is returned. * handle is returned.
* *
******************************************************************************/ ******************************************************************************/
acpi_status acpi_acquire_global_lock(u16 timeout, u32 * handle) acpi_status acpi_acquire_global_lock(u16 timeout, u32 *handle)
{ {
acpi_status status; acpi_status status;
......
...@@ -324,8 +324,9 @@ ACPI_EXPORT_SYMBOL(acpi_clear_event) ...@@ -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) ...@@ -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 |= ACPI_EVENT_FLAG_HANDLE;
return_ACPI_STATUS(status); (*event_status) = local_event_status;
return_ACPI_STATUS(AE_OK);
} }
ACPI_EXPORT_SYMBOL(acpi_get_event_status) ACPI_EXPORT_SYMBOL(acpi_get_event_status)
......
...@@ -106,8 +106,8 @@ ACPI_EXPORT_SYMBOL(acpi_update_all_gpes) ...@@ -106,8 +106,8 @@ ACPI_EXPORT_SYMBOL(acpi_update_all_gpes)
* *
* FUNCTION: acpi_enable_gpe * FUNCTION: acpi_enable_gpe
* *
* PARAMETERS: gpe_device - Parent GPE Device. NULL for GPE0/GPE1 * PARAMETERS: gpe_device - Parent GPE Device. NULL for GPE0/GPE1
* gpe_number - GPE level within the GPE block * gpe_number - GPE level within the GPE block
* *
* RETURN: Status * RETURN: Status
* *
...@@ -115,7 +115,6 @@ ACPI_EXPORT_SYMBOL(acpi_update_all_gpes) ...@@ -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;
...@@ -490,8 +489,8 @@ ACPI_EXPORT_SYMBOL(acpi_clear_gpe) ...@@ -490,8 +489,8 @@ ACPI_EXPORT_SYMBOL(acpi_clear_gpe)
* *
* FUNCTION: acpi_get_gpe_status * FUNCTION: acpi_get_gpe_status
* *
* PARAMETERS: gpe_device - Parent GPE Device. NULL for GPE0/GPE1 * PARAMETERS: gpe_device - Parent GPE Device. NULL for GPE0/GPE1
* gpe_number - GPE level within the GPE block * gpe_number - GPE level within the GPE block
* event_status - Where the current status of the event * event_status - Where the current status of the event
* will be returned * will be returned
* *
...@@ -524,9 +523,6 @@ acpi_get_gpe_status(acpi_handle gpe_device, ...@@ -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);
......
...@@ -202,7 +202,7 @@ acpi_status acpi_hw_clear_gpe(struct acpi_gpe_event_info * gpe_event_info) ...@@ -202,7 +202,7 @@ acpi_status acpi_hw_clear_gpe(struct acpi_gpe_event_info * gpe_event_info)
acpi_status acpi_status
acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info, acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info,
acpi_event_status * event_status) acpi_event_status *event_status)
{ {
u32 in_byte; u32 in_byte;
u32 register_bit; u32 register_bit;
...@@ -216,6 +216,13 @@ acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info, ...@@ -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 @@ ...@@ -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,7 +89,8 @@ ACPI_MODULE_NAME("tbxfroot") ...@@ -59,7 +89,8 @@ 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) ...@@ -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, ...@@ -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, ...@@ -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 @@ ...@@ -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 @@ ...@@ -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; ...@@ -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; ...@@ -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) ...@@ -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) ...@@ -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 */
......
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