void acpi_hw_disable_gpe ( u32 gpe_number) { u32 in_byte; u32 register_index; u32 bit_mask; FUNCTION_ENTRY (); /* * Translate GPE number to index into global registers array. */ register_index = acpi_gbl_gpe_valid[gpe_number]; /* * Figure out the bit offset for this GPE within the target register. */ bit_mask = acpi_gbl_decode_to8bit [MOD_8 (gpe_number)]; /* * Read the current value of the register, clear the appropriate bit, * and write out the new register value to disable the GPE. */ in_byte = 0; acpi_os_read_port (acpi_gbl_gpe_registers[register_index].enable_addr, &in_byte, 8); acpi_os_write_port (acpi_gbl_gpe_registers[register_index].enable_addr, (in_byte & ~bit_mask), 8); acpi_hw_disable_gpe_for_wakeup(gpe_number); }
acpi_status acpi_hw_disable_gpe ( struct acpi_gpe_event_info *gpe_event_info) { u32 in_byte; acpi_status status; struct acpi_gpe_register_info *gpe_register_info; ACPI_FUNCTION_ENTRY (); /* Get the info block for the entire GPE register */ gpe_register_info = gpe_event_info->register_info; if (!gpe_register_info) { return (AE_BAD_PARAMETER); } /* * Read the current value of the register, clear the appropriate bit, * and write out the new register value to disable the GPE. */ status = acpi_hw_low_level_read (8, &in_byte, &gpe_register_info->enable_address); if (ACPI_FAILURE (status)) { return (status); } /* Write the byte with this GPE bit cleared */ status = acpi_hw_low_level_write (8, (in_byte & ~(gpe_event_info->bit_mask)), &gpe_register_info->enable_address); if (ACPI_FAILURE (status)) { return (status); } acpi_hw_disable_gpe_for_wakeup (gpe_event_info); return (AE_OK); }