From: "Jan Beulich" <jbeulich@xxxxxxxxxx> acpi_hw_low_level_{read,write}() have no need to accept a NULL reg argument anymore (all callers use addresses of or derived from ACPI globals), and it really should always have been considered an error to call these functions in such a way. Additionally acpi_hw_low_level_read() should initialize the value read in all cases when it returns successfully. Also use ACPI_GPE_REGISTER_WIDTH where possible rather than a plain number. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> Cc: Len Brown <lenb@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/acpi/hardware/hwgpe.c | 15 ++++++++------- drivers/acpi/hardware/hwregs.c | 6 +++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff -puN drivers/acpi/hardware/hwgpe.c~acpi-adjust-register-handling drivers/acpi/hardware/hwgpe.c --- a/drivers/acpi/hardware/hwgpe.c~acpi-adjust-register-handling +++ a/drivers/acpi/hardware/hwgpe.c @@ -84,7 +84,8 @@ acpi_hw_write_gpe_enable_reg(struct acpi /* Write the entire GPE (runtime) enable register */ - status = acpi_hw_low_level_write(8, gpe_register_info->enable_for_run, + status = acpi_hw_low_level_write(ACPI_GPE_REGISTER_WIDTH, + gpe_register_info->enable_for_run, &gpe_register_info->enable_address); return (status); @@ -118,7 +119,7 @@ acpi_status acpi_hw_clear_gpe(struct acp * Write a one to the appropriate bit in the status register to * clear this GPE. */ - status = acpi_hw_low_level_write(8, register_bit, + status = acpi_hw_low_level_write(ACPI_GPE_REGISTER_WIDTH, register_bit, &gpe_event_info->register_info-> status_address); @@ -181,7 +182,7 @@ acpi_hw_get_gpe_status(struct acpi_gpe_e /* GPE currently active (status bit == 1)? */ status = - acpi_hw_low_level_read(8, &in_byte, + acpi_hw_low_level_read(ACPI_GPE_REGISTER_WIDTH, &in_byte, &gpe_register_info->status_address); if (ACPI_FAILURE(status)) { goto unlock_and_exit; @@ -226,7 +227,7 @@ acpi_hw_disable_gpe_block(struct acpi_gp /* Disable all GPEs in this register */ - status = acpi_hw_low_level_write(8, 0x00, + status = acpi_hw_low_level_write(ACPI_GPE_REGISTER_WIDTH, 0x00, &gpe_block->register_info[i]. enable_address); if (ACPI_FAILURE(status)) { @@ -263,7 +264,7 @@ acpi_hw_clear_gpe_block(struct acpi_gpe_ /* Clear status on all GPEs in this register */ - status = acpi_hw_low_level_write(8, 0xFF, + status = acpi_hw_low_level_write(ACPI_GPE_REGISTER_WIDTH, 0xFF, &gpe_block->register_info[i]. status_address); if (ACPI_FAILURE(status)) { @@ -307,7 +308,7 @@ acpi_hw_enable_runtime_gpe_block(struct /* Enable all "runtime" GPEs in this register */ status = - acpi_hw_low_level_write(8, + acpi_hw_low_level_write(ACPI_GPE_REGISTER_WIDTH, gpe_block->register_info[i]. enable_for_run, &gpe_block->register_info[i]. @@ -350,7 +351,7 @@ acpi_hw_enable_wakeup_gpe_block(struct a /* Enable all "wake" GPEs in this register */ - status = acpi_hw_low_level_write(8, + status = acpi_hw_low_level_write(ACPI_GPE_REGISTER_WIDTH, gpe_block->register_info[i]. enable_for_wake, &gpe_block->register_info[i]. diff -puN drivers/acpi/hardware/hwregs.c~acpi-adjust-register-handling drivers/acpi/hardware/hwregs.c --- a/drivers/acpi/hardware/hwregs.c~acpi-adjust-register-handling +++ a/drivers/acpi/hardware/hwregs.c @@ -745,8 +745,9 @@ acpi_hw_low_level_read(u32 width, u32 * * because the PM1A/B code must not fail if B isn't present. */ if (!reg) { - return (AE_OK); + return (AE_BAD_PARAMETER); } + *value = 0; /* Get a local copy of the address. Handles possible alignment issues */ @@ -754,7 +755,6 @@ acpi_hw_low_level_read(u32 width, u32 * if (!address) { return (AE_OK); } - *value = 0; /* * Two address spaces supported: Memory or IO. @@ -815,7 +815,7 @@ acpi_hw_low_level_write(u32 width, u32 v * because the PM1A/B code must not fail if B isn't present. */ if (!reg) { - return (AE_OK); + return (AE_BAD_PARAMETER); } /* Get a local copy of the address. Handles possible alignment issues */ _ -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html