Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 128020
b: refs/heads/master
c: d85988f
h: refs/heads/master
v: v3
  • Loading branch information
Bob Moore authored and Len Brown committed Dec 30, 2008
1 parent 401d093 commit bc66fe5
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 27 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6de4048a416d46eb2ac6597d03d2b58806a6b800
refs/heads/master: d85988fa0205b18459071e4bd709e48e695b952d
54 changes: 32 additions & 22 deletions trunk/drivers/acpi/hardware/hwsleep.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,16 @@ ACPI_MODULE_NAME("hwsleep")
*
* FUNCTION: acpi_set_firmware_waking_vector
*
* PARAMETERS: physical_address - Physical address of ACPI real mode
* PARAMETERS: physical_address - 32-bit physical address of ACPI real mode
* entry point.
*
* RETURN: Status
*
* DESCRIPTION: Access function for the firmware_waking_vector field in FACS
* DESCRIPTION: Sets the 32-bit firmware_waking_vector field of the FACS
*
******************************************************************************/
acpi_status
acpi_set_firmware_waking_vector(acpi_physical_address physical_address)
acpi_set_firmware_waking_vector(u32 physical_address)
{
struct acpi_table_facs *facs;
acpi_status status;
Expand All @@ -85,10 +85,16 @@ acpi_set_firmware_waking_vector(acpi_physical_address physical_address)
* Protected Mode. Some systems (for example HP dv5-1004nr) are known
* to fail to resume if the 64-bit vector is used.
*/
if (facs->version >= 1)
facs->xfirmware_waking_vector = 0;

facs->firmware_waking_vector = (u32)physical_address;
/* Set the 32-bit vector */

facs->firmware_waking_vector = physical_address;

/* Clear the 64-bit vector if it exists */

if ((facs->length > 32) && (facs->version >= 1)) {
facs->xfirmware_waking_vector = 0;
}

return_ACPI_STATUS(AE_OK);
}
Expand All @@ -97,29 +103,25 @@ ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector)

/*******************************************************************************
*
* FUNCTION: acpi_get_firmware_waking_vector
* FUNCTION: acpi_set_firmware_waking_vector64
*
* PARAMETERS: *physical_address - Where the contents of
* the firmware_waking_vector field of
* the FACS will be returned.
* PARAMETERS: physical_address - 64-bit physical address of ACPI protected
* mode entry point.
*
* RETURN: Status, vector
* RETURN: Status
*
* DESCRIPTION: Access function for the firmware_waking_vector field in FACS
* DESCRIPTION: Sets the 64-bit X_firmware_waking_vector field of the FACS, if
* it exists in the table.
*
******************************************************************************/
#ifdef ACPI_FUTURE_USAGE
acpi_status
acpi_get_firmware_waking_vector(acpi_physical_address * physical_address)
acpi_set_firmware_waking_vector64(u64 physical_address)
{
struct acpi_table_facs *facs;
acpi_status status;

ACPI_FUNCTION_TRACE(acpi_get_firmware_waking_vector);
ACPI_FUNCTION_TRACE(acpi_set_firmware_waking_vector64);

if (!physical_address) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}

/* Get the FACS */

Expand All @@ -131,14 +133,22 @@ acpi_get_firmware_waking_vector(acpi_physical_address * physical_address)
return_ACPI_STATUS(status);
}

/* Get the vector */
*physical_address = (acpi_physical_address)facs->firmware_waking_vector;
/* Determine if the 64-bit vector actually exists */

if ((facs->length <= 32) || (facs->version < 1)) {
return_ACPI_STATUS(AE_NOT_EXIST);
}

/* Clear 32-bit vector, set the 64-bit X_ vector */

facs->firmware_waking_vector = 0;
facs->xfirmware_waking_vector = physical_address;

return_ACPI_STATUS(AE_OK);
}

ACPI_EXPORT_SYMBOL(acpi_get_firmware_waking_vector)
#endif
ACPI_EXPORT_SYMBOL(acpi_set_firmware_waking_vector64)

/*******************************************************************************
*
* FUNCTION: acpi_enter_sleep_state_prep
Expand Down
6 changes: 2 additions & 4 deletions trunk/include/acpi/acpixf.h
Original file line number Diff line number Diff line change
Expand Up @@ -320,12 +320,10 @@ acpi_status acpi_get_register_unlocked(u32 register_id, u32 *return_value);
acpi_status acpi_set_register(u32 register_id, u32 value);

acpi_status
acpi_set_firmware_waking_vector(acpi_physical_address physical_address);
acpi_set_firmware_waking_vector(u32 physical_address);

#ifdef ACPI_FUTURE_USAGE
acpi_status
acpi_get_firmware_waking_vector(acpi_physical_address * physical_address);
#endif
acpi_set_firmware_waking_vector64(u64 physical_address);

acpi_status
acpi_get_sleep_type_data(u8 sleep_state, u8 * slp_typ_a, u8 * slp_typ_b);
Expand Down

0 comments on commit bc66fe5

Please sign in to comment.