int acpi_irq_to_vector (u32 gsi) { if (has_8259 && gsi < 16) return isa_irq_to_vector(gsi); return gsi_to_vector(gsi); }
acpi_status acpi_os_remove_interrupt_handler(u32 irq, OSD_HANDLER handler) { if (acpi_irq_handler) { #ifdef CONFIG_IA64 irq = gsi_to_vector(irq); #endif free_irq(irq, acpi_irq); acpi_irq_handler = NULL; } return AE_OK; }
int acpi_gsi_to_irq(u32 gsi, unsigned int *irq) { int vector; if (has_8259 && gsi < 16) *irq = isa_irq_to_vector(gsi); else { vector = gsi_to_vector(gsi); if (vector == -1) return -1; *irq = vector; } return 0; }
acpi_status acpi_os_install_interrupt_handler(u32 irq, OSD_HANDLER handler, void *context) { /* * Ignore the irq from the core, and use the value in our copy of the * FADT. It may not be the same if an interrupt source override exists * for the SCI. */ irq = acpi_fadt.sci_int; #ifdef CONFIG_IA64 irq = gsi_to_vector(irq); #endif acpi_irq_irq = irq; acpi_irq_handler = handler; acpi_irq_context = context; if (request_irq(irq, acpi_irq, SA_SHIRQ, "acpi", acpi_irq)) { printk(KERN_ERR PREFIX "SCI (IRQ%d) allocation failed\n", irq); return AE_NOT_ACQUIRED; } return AE_OK; }