Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb654695 authored by Len Brown's avatar Len Brown
Browse files

[ACPI] acpi_register_gsi() fix needed for ACPICA 20051021



Use the #define for ACPI_LEVEL_SENSITIVE instead of assuming
non-zero, because ACPICA 20051021 changes its value to zero.

Also, use uniform variable names:
edge_level -> triggering
active_high_low -> polarity

Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 28f55ebc
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -464,7 +464,7 @@ int acpi_gsi_to_irq(u32 gsi, unsigned int *irq)
 * success: return IRQ number (>=0)
 * success: return IRQ number (>=0)
 * failure: return < 0
 * failure: return < 0
 */
 */
int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low)
int acpi_register_gsi(u32 gsi, int triggering, int polarity)
{
{
	unsigned int irq;
	unsigned int irq;
	unsigned int plat_gsi = gsi;
	unsigned int plat_gsi = gsi;
@@ -476,14 +476,14 @@ int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low)
	if (acpi_irq_model == ACPI_IRQ_MODEL_PIC) {
	if (acpi_irq_model == ACPI_IRQ_MODEL_PIC) {
		extern void eisa_set_level_irq(unsigned int irq);
		extern void eisa_set_level_irq(unsigned int irq);


		if (edge_level == ACPI_LEVEL_SENSITIVE)
		if (triggering == ACPI_LEVEL_SENSITIVE)
			eisa_set_level_irq(gsi);
			eisa_set_level_irq(gsi);
	}
	}
#endif
#endif


#ifdef CONFIG_X86_IO_APIC
#ifdef CONFIG_X86_IO_APIC
	if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC) {
	if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC) {
		plat_gsi = mp_register_gsi(gsi, edge_level, active_high_low);
		plat_gsi = mp_register_gsi(gsi, triggering, polarity);
	}
	}
#endif
#endif
	acpi_gsi_to_irq(plat_gsi, &irq);
	acpi_gsi_to_irq(plat_gsi, &irq);
+4 −4
Original line number Original line Diff line number Diff line
@@ -1070,7 +1070,7 @@ void __init mp_config_acpi_legacy_irqs (void)


#define MAX_GSI_NUM	4096
#define MAX_GSI_NUM	4096


int mp_register_gsi (u32 gsi, int edge_level, int active_high_low)
int mp_register_gsi (u32 gsi, int triggering, int polarity)
{
{
	int			ioapic = -1;
	int			ioapic = -1;
	int			ioapic_pin = 0;
	int			ioapic_pin = 0;
@@ -1119,7 +1119,7 @@ int mp_register_gsi (u32 gsi, int edge_level, int active_high_low)


	mp_ioapic_routing[ioapic].pin_programmed[idx] |= (1<<bit);
	mp_ioapic_routing[ioapic].pin_programmed[idx] |= (1<<bit);


	if (edge_level) {
	if (triggering == ACPI_LEVEL_SENSITIVE) {
		/*
		/*
		 * For PCI devices assign IRQs in order, avoiding gaps
		 * For PCI devices assign IRQs in order, avoiding gaps
		 * due to unused I/O APIC pins.
		 * due to unused I/O APIC pins.
@@ -1141,8 +1141,8 @@ int mp_register_gsi (u32 gsi, int edge_level, int active_high_low)
	}
	}


	io_apic_set_pci_routing(ioapic, ioapic_pin, gsi,
	io_apic_set_pci_routing(ioapic, ioapic_pin, gsi,
		    edge_level == ACPI_EDGE_SENSITIVE ? 0 : 1,
		    triggering == ACPI_EDGE_SENSITIVE ? 0 : 1,
		    active_high_low == ACPI_ACTIVE_HIGH ? 0 : 1);
		    polarity == ACPI_ACTIVE_HIGH ? 0 : 1);
	return gsi;
	return gsi;
}
}


+3 −3
Original line number Original line Diff line number Diff line
@@ -567,16 +567,16 @@ void __init acpi_numa_arch_fixup(void)
 * success: return IRQ number (>=0)
 * success: return IRQ number (>=0)
 * failure: return < 0
 * failure: return < 0
 */
 */
int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low)
int acpi_register_gsi(u32 gsi, int triggering, int polarity)
{
{
	if (has_8259 && gsi < 16)
	if (has_8259 && gsi < 16)
		return isa_irq_to_vector(gsi);
		return isa_irq_to_vector(gsi);


	return iosapic_register_intr(gsi,
	return iosapic_register_intr(gsi,
				     (active_high_low ==
				     (polarity ==
				      ACPI_ACTIVE_HIGH) ? IOSAPIC_POL_HIGH :
				      ACPI_ACTIVE_HIGH) ? IOSAPIC_POL_HIGH :
				     IOSAPIC_POL_LOW,
				     IOSAPIC_POL_LOW,
				     (edge_level ==
				     (triggering ==
				      ACPI_EDGE_SENSITIVE) ? IOSAPIC_EDGE :
				      ACPI_EDGE_SENSITIVE) ? IOSAPIC_EDGE :
				     IOSAPIC_LEVEL);
				     IOSAPIC_LEVEL);
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -964,7 +964,7 @@ int mp_register_gsi(u32 gsi, int triggering, int polarity)


	mp_ioapic_routing[ioapic].pin_programmed[idx] |= (1<<bit);
	mp_ioapic_routing[ioapic].pin_programmed[idx] |= (1<<bit);


	if (triggering) {
	if (triggering == ACPI_LEVEL_SENSITIVE) {
		/*
		/*
		 * For PCI devices assign IRQs in order, avoiding gaps
		 * For PCI devices assign IRQs in order, avoiding gaps
		 * due to unused I/O APIC pins.
		 * due to unused I/O APIC pins.