164 lines
6.5 KiB
Diff
164 lines
6.5 KiB
Diff
|
diff --git a/drivers/acpi/acpica/dbdisply.c b/drivers/acpi/acpica/dbdisply.c
|
||
|
index 5a606ea..7b5eb33 100644
|
||
|
--- a/drivers/acpi/acpica/dbdisply.c
|
||
|
+++ b/drivers/acpi/acpica/dbdisply.c
|
||
|
@@ -642,9 +642,8 @@ void acpi_db_display_object_type(char *object_arg)
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
- acpi_os_printf("ADR: %8.8X%8.8X, STA: %8.8X, Flags: %X\n",
|
||
|
- ACPI_FORMAT_UINT64(info->address),
|
||
|
- info->current_status, info->flags);
|
||
|
+ acpi_os_printf("ADR: %8.8X%8.8X, Flags: %X\n",
|
||
|
+ ACPI_FORMAT_UINT64(info->address), info->flags);
|
||
|
|
||
|
acpi_os_printf("S1D-%2.2X S2D-%2.2X S3D-%2.2X S4D-%2.2X\n",
|
||
|
info->highest_dstates[0], info->highest_dstates[1],
|
||
|
diff --git a/drivers/acpi/acpica/evevent.c b/drivers/acpi/acpica/evevent.c
|
||
|
index d3b6b31..37b0b4c 100644
|
||
|
--- a/drivers/acpi/acpica/evevent.c
|
||
|
+++ b/drivers/acpi/acpica/evevent.c
|
||
|
@@ -204,6 +204,7 @@ u32 acpi_ev_fixed_event_detect(void)
|
||
|
u32 fixed_status;
|
||
|
u32 fixed_enable;
|
||
|
u32 i;
|
||
|
+ acpi_status status;
|
||
|
|
||
|
ACPI_FUNCTION_NAME(ev_fixed_event_detect);
|
||
|
|
||
|
@@ -211,8 +212,12 @@ u32 acpi_ev_fixed_event_detect(void)
|
||
|
* Read the fixed feature status and enable registers, as all the cases
|
||
|
* depend on their values. Ignore errors here.
|
||
|
*/
|
||
|
- (void)acpi_hw_register_read(ACPI_REGISTER_PM1_STATUS, &fixed_status);
|
||
|
- (void)acpi_hw_register_read(ACPI_REGISTER_PM1_ENABLE, &fixed_enable);
|
||
|
+ status = acpi_hw_register_read(ACPI_REGISTER_PM1_STATUS, &fixed_status);
|
||
|
+ status |=
|
||
|
+ acpi_hw_register_read(ACPI_REGISTER_PM1_ENABLE, &fixed_enable);
|
||
|
+ if (ACPI_FAILURE(status)) {
|
||
|
+ return (int_status);
|
||
|
+ }
|
||
|
|
||
|
ACPI_DEBUG_PRINT((ACPI_DB_INTERRUPTS,
|
||
|
"Fixed Event Block: Enable %08X Status %08X\n",
|
||
|
diff --git a/drivers/acpi/acpica/exdebug.c b/drivers/acpi/acpica/exdebug.c
|
||
|
index a8191d2..2ad13d8 100644
|
||
|
--- a/drivers/acpi/acpica/exdebug.c
|
||
|
+++ b/drivers/acpi/acpica/exdebug.c
|
||
|
@@ -88,14 +88,13 @@ acpi_ex_do_debug_object(union acpi_operand_object *source_desc,
|
||
|
return_VOID;
|
||
|
}
|
||
|
|
||
|
- /* Null string or newline -- don't emit the line header */
|
||
|
+ /* Newline -- don't emit the line header */
|
||
|
|
||
|
if (source_desc &&
|
||
|
(ACPI_GET_DESCRIPTOR_TYPE(source_desc) == ACPI_DESC_TYPE_OPERAND) &&
|
||
|
(source_desc->common.type == ACPI_TYPE_STRING)) {
|
||
|
- if ((source_desc->string.length == 0) ||
|
||
|
- ((source_desc->string.length == 1) &&
|
||
|
- (*source_desc->string.pointer == '\n'))) {
|
||
|
+ if ((source_desc->string.length == 1) &&
|
||
|
+ (*source_desc->string.pointer == '\n')) {
|
||
|
acpi_os_printf("\n");
|
||
|
return_VOID;
|
||
|
}
|
||
|
diff --git a/drivers/acpi/acpica/nsdumpdv.c b/drivers/acpi/acpica/nsdumpdv.c
|
||
|
index 5026594..573a5f3 100644
|
||
|
--- a/drivers/acpi/acpica/nsdumpdv.c
|
||
|
+++ b/drivers/acpi/acpica/nsdumpdv.c
|
||
|
@@ -88,10 +88,9 @@ acpi_ns_dump_one_device(acpi_handle obj_handle,
|
||
|
}
|
||
|
|
||
|
ACPI_DEBUG_PRINT_RAW((ACPI_DB_TABLES,
|
||
|
- " HID: %s, ADR: %8.8X%8.8X, Status: %X\n",
|
||
|
+ " HID: %s, ADR: %8.8X%8.8X\n",
|
||
|
info->hardware_id.value,
|
||
|
- ACPI_FORMAT_UINT64(info->address),
|
||
|
- info->current_status));
|
||
|
+ ACPI_FORMAT_UINT64(info->address));
|
||
|
ACPI_FREE(info);
|
||
|
}
|
||
|
|
||
|
diff --git a/drivers/acpi/acpica/nsxfname.c b/drivers/acpi/acpica/nsxfname.c
|
||
|
index 1069662..0a9c600 100644
|
||
|
--- a/drivers/acpi/acpica/nsxfname.c
|
||
|
+++ b/drivers/acpi/acpica/nsxfname.c
|
||
|
@@ -241,7 +241,7 @@ static char *acpi_ns_copy_device_id(struct acpi_pnp_device_id *dest,
|
||
|
* namespace node and possibly by running several standard
|
||
|
* control methods (Such as in the case of a device.)
|
||
|
*
|
||
|
- * For Device and Processor objects, run the Device _HID, _UID, _CID, _STA,
|
||
|
+ * For Device and Processor objects, run the Device _HID, _UID, _CID,
|
||
|
* _CLS, _ADR, _sx_w, and _sx_d methods.
|
||
|
*
|
||
|
* Note: Allocates the return buffer, must be freed by the caller.
|
||
|
@@ -250,8 +250,9 @@ static char *acpi_ns_copy_device_id(struct acpi_pnp_device_id *dest,
|
||
|
* discovery namespace traversal. Therefore, no complex methods can be
|
||
|
* executed, especially those that access operation regions. Therefore, do
|
||
|
* not add any additional methods that could cause problems in this area.
|
||
|
- * this was the fate of the _SUB method which was found to cause such
|
||
|
- * problems and was removed (11/2015).
|
||
|
+ * Because of this reason support for the following methods has been removed:
|
||
|
+ * 1) _SUB method was removed (11/2015)
|
||
|
+ * 2) _STA method was removed (02/2018)
|
||
|
*
|
||
|
******************************************************************************/
|
||
|
|
||
|
@@ -374,20 +375,8 @@ acpi_get_object_info(acpi_handle handle,
|
||
|
* Notes: none of these methods are required, so they may or may
|
||
|
* not be present for this device. The Info->Valid bitfield is used
|
||
|
* to indicate which methods were found and run successfully.
|
||
|
- *
|
||
|
- * For _STA, if the method does not exist, then (as per the ACPI
|
||
|
- * specification), the returned current_status flags will indicate
|
||
|
- * that the device is present/functional/enabled. Otherwise, the
|
||
|
- * current_status flags reflect the value returned from _STA.
|
||
|
*/
|
||
|
|
||
|
- /* Execute the Device._STA method */
|
||
|
-
|
||
|
- status = acpi_ut_execute_STA(node, &info->current_status);
|
||
|
- if (ACPI_SUCCESS(status)) {
|
||
|
- valid |= ACPI_VALID_STA;
|
||
|
- }
|
||
|
-
|
||
|
/* Execute the Device._ADR method */
|
||
|
|
||
|
status = acpi_ut_evaluate_numeric_object(METHOD_NAME__ADR, node,
|
||
|
diff --git a/drivers/acpi/acpica/psargs.c b/drivers/acpi/acpica/psargs.c
|
||
|
index eb9dfac..11ce4e5 100644
|
||
|
--- a/drivers/acpi/acpica/psargs.c
|
||
|
+++ b/drivers/acpi/acpica/psargs.c
|
||
|
@@ -890,6 +890,10 @@ acpi_ps_get_next_arg(struct acpi_walk_state *walk_state,
|
||
|
ACPI_POSSIBLE_METHOD_CALL);
|
||
|
|
||
|
if (arg->common.aml_opcode == AML_INT_METHODCALL_OP) {
|
||
|
+
|
||
|
+ /* Free method call op and corresponding namestring sub-ob */
|
||
|
+
|
||
|
+ acpi_ps_free_op(arg->common.value.arg);
|
||
|
acpi_ps_free_op(arg);
|
||
|
arg = NULL;
|
||
|
walk_state->arg_count = 1;
|
||
|
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h
|
||
|
index 4f077ed..220ef86 100644
|
||
|
--- a/include/acpi/actypes.h
|
||
|
+++ b/include/acpi/actypes.h
|
||
|
@@ -1191,7 +1191,6 @@ struct acpi_device_info {
|
||
|
u8 flags; /* Miscellaneous info */
|
||
|
u8 highest_dstates[4]; /* _sx_d values: 0xFF indicates not valid */
|
||
|
u8 lowest_dstates[5]; /* _sx_w values: 0xFF indicates not valid */
|
||
|
- u32 current_status; /* _STA value */
|
||
|
u64 address; /* _ADR value */
|
||
|
struct acpi_pnp_device_id hardware_id; /* _HID value */
|
||
|
struct acpi_pnp_device_id unique_id; /* _UID value */
|
||
|
@@ -1205,7 +1204,6 @@ struct acpi_device_info {
|
||
|
|
||
|
/* Flags for Valid field above (acpi_get_object_info) */
|
||
|
|
||
|
-#define ACPI_VALID_STA 0x0001
|
||
|
#define ACPI_VALID_ADR 0x0002
|
||
|
#define ACPI_VALID_HID 0x0004
|
||
|
#define ACPI_VALID_UID 0x0008
|