******************************************************************************/
/*
- * Copyright (C) 2000 - 2004, R. Byron Moore
+ * Copyright (C) 2000 - 2005, R. Byron Moore
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* POSSIBILITY OF SUCH DAMAGES.
*/
+#include <linux/module.h>
#include <acpi/acpi.h>
#include <acpi/acnamesp.h>
acpi_ut_remove_reference (info.return_object);
return_ACPI_STATUS (status);
}
+EXPORT_SYMBOL(acpi_get_sleep_type_data);
/*******************************************************************************
return_ACPI_STATUS (status);
}
+EXPORT_SYMBOL(acpi_get_register);
/*******************************************************************************
value, register_value, bit_reg_info->parent_register));
return_ACPI_STATUS (status);
}
+EXPORT_SYMBOL(acpi_set_register);
/******************************************************************************
u32 *value,
struct acpi_generic_address *reg)
{
+ u64 address;
acpi_status status;
* a non-zero address within. However, don't return an error
* because the PM1A/B code must not fail if B isn't present.
*/
- if ((!reg) ||
- (!reg->address)) {
+ if (!reg) {
+ return (AE_OK);
+ }
+
+ /* Get a local copy of the address. Handles possible alignment issues */
+
+ ACPI_MOVE_64_TO_64 (&address, ®->address);
+ if (!address) {
return (AE_OK);
}
*value = 0;
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
status = acpi_os_read_memory (
- (acpi_physical_address) reg->address,
+ (acpi_physical_address) address,
value, width);
break;
case ACPI_ADR_SPACE_SYSTEM_IO:
- status = acpi_os_read_port ((acpi_io_address) reg->address,
+ status = acpi_os_read_port ((acpi_io_address) address,
value, width);
break;
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Read: %8.8X width %2d from %8.8X%8.8X (%s)\n",
*value, width,
- ACPI_FORMAT_UINT64 (reg->address),
+ ACPI_FORMAT_UINT64 (address),
acpi_ut_get_region_name (reg->address_space_id)));
return (status);
u32 value,
struct acpi_generic_address *reg)
{
+ u64 address;
acpi_status status;
* a non-zero address within. However, don't return an error
* because the PM1A/B code must not fail if B isn't present.
*/
- if ((!reg) ||
- (!reg->address)) {
+ if (!reg) {
+ return (AE_OK);
+ }
+
+ /* Get a local copy of the address. Handles possible alignment issues */
+
+ ACPI_MOVE_64_TO_64 (&address, ®->address);
+ if (!address) {
return (AE_OK);
}
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
status = acpi_os_write_memory (
- (acpi_physical_address) reg->address,
+ (acpi_physical_address) address,
value, width);
break;
case ACPI_ADR_SPACE_SYSTEM_IO:
- status = acpi_os_write_port ((acpi_io_address) reg->address,
+ status = acpi_os_write_port ((acpi_io_address) address,
value, width);
break;
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Wrote: %8.8X width %2d to %8.8X%8.8X (%s)\n",
value, width,
- ACPI_FORMAT_UINT64 (reg->address),
+ ACPI_FORMAT_UINT64 (address),
acpi_ut_get_region_name (reg->address_space_id)));
return (status);