示例#1
0
文件: acpi.c 项目: xricson/knoppix
int
acpi_irq_to_vector (u32 gsi)
{
    if (has_8259 && gsi < 16)
        return isa_irq_to_vector(gsi);

    return gsi_to_vector(gsi);
}
示例#2
0
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;
}
示例#3
0
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;
}
示例#4
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;
}