Browse Source

x86: use _IRQ_TO_INTERRUPT_VECTOR() with ioapic_irq_set()

ioapic_irq_set() needs a vector number: all calls to it now use the
_IRQ_TO_INTERRUPT_VECTOR() macro as expected.

The previous change by which interrupt priorities are now honoured
correctly when connecting ISRs to IRQs statically also changed the way
the interrupt vectors are assigned.

Instead of computing them like this:

    interrupt vector ID = IRQ + INT_VEC_IRQ0

They are now determined by a macro:

    interrupt vector ID = _IRQ_TO_INTERRUPT_VECTOR(irq)

Change-Id: Icc4576ac9bc6891c8662bcc17a543333eb8745e0
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
pull/255/head
Peter Mitsis 10 years ago committed by Anas Nashif
parent
commit
0362db8a63
  1. 18
      arch/x86/platforms/galileo/galileo.c
  2. 6
      arch/x86/platforms/ia32/ia32.c
  3. 14
      arch/x86/platforms/ia32_pci/ia32_pci.c

18
arch/x86/platforms/galileo/galileo.c

@ -47,7 +47,7 @@ static int dw_i2c0_irq_set(struct device *unused) @@ -47,7 +47,7 @@ static int dw_i2c0_irq_set(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_I2C_DW_0_IRQ,
CONFIG_I2C_DW_0_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_I2C_DW_0_IRQ),
I2C_DW_IRQ_IOAPIC_FLAGS);
return 0;
}
@ -64,7 +64,7 @@ static int gpio_irq_set_0(struct device *unused) @@ -64,7 +64,7 @@ static int gpio_irq_set_0(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_GPIO_DW_0_IRQ,
CONFIG_GPIO_DW_0_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_GPIO_DW_0_IRQ),
GPIO_DW_0_IRQ_IOAPIC_FLAGS);
return 0;
}
@ -80,7 +80,7 @@ static int spi_irq_set_0(struct device *unused) @@ -80,7 +80,7 @@ static int spi_irq_set_0(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_SPI_INTEL_PORT_0_IRQ,
CONFIG_SPI_INTEL_PORT_0_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_SPI_INTEL_PORT_0_IRQ),
SPI_INTEL_IRQ_IOAPIC_FLAGS);
return 0;
}
@ -95,7 +95,7 @@ static int spi_irq_set_1(struct device *unused) @@ -95,7 +95,7 @@ static int spi_irq_set_1(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_SPI_INTEL_PORT_1_IRQ,
CONFIG_SPI_INTEL_PORT_1_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_SPI_INTEL_PORT_1_IRQ),
SPI_INTEL_IRQ_IOAPIC_FLAGS);
return 0;
@ -174,7 +174,7 @@ static int console_irq_set(struct device *unused) @@ -174,7 +174,7 @@ static int console_irq_set(struct device *unused)
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_UART_CONSOLE_IRQ,
CONFIG_UART_CONSOLE_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_UART_CONSOLE_IRQ),
UART_IOAPIC_FLAGS);
return 0;
@ -192,7 +192,7 @@ static int bluetooth_irq_set(struct device *unused) @@ -192,7 +192,7 @@ static int bluetooth_irq_set(struct device *unused)
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_BLUETOOTH_UART_IRQ,
CONFIG_BLUETOOTH_UART_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_BLUETOOTH_UART_IRQ),
UART_IOAPIC_FLAGS);
return 0;
@ -209,7 +209,7 @@ static int hpet_irq_set(struct device *unused) @@ -209,7 +209,7 @@ static int hpet_irq_set(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_HPET_TIMER_IRQ,
CONFIG_HPET_TIMER_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_HPET_TIMER_IRQ),
HPET_IOAPIC_FLAGS);
return 0;
}
@ -246,13 +246,13 @@ static int shared_irq_config(struct device *unused) @@ -246,13 +246,13 @@ static int shared_irq_config(struct device *unused)
#ifdef SHARED_IRQ_0_IOAPIC_FLAGS
_ioapic_irq_set(CONFIG_SHARED_IRQ_0_IRQ,
CONFIG_SHARED_IRQ_0_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_SHARED_IRQ_0_IRQ),
SHARED_IRQ_0_IOAPIC_FLAGS);
#endif
#ifdef SHARED_IRQ_1_IOAPIC_FLAGS
_ioapic_irq_set(CONFIG_SHARED_IRQ_1_IRQ,
CONFIG_SHARED_IRQ_1_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_SHARED_IRQ_1_IRQ),
SHARED_IRQ_1_IOAPIC_FLAGS);
#endif

6
arch/x86/platforms/ia32/ia32.c

@ -57,7 +57,7 @@ static int console_irq_set(struct device *unused) @@ -57,7 +57,7 @@ static int console_irq_set(struct device *unused)
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_UART_CONSOLE_IRQ,
CONFIG_UART_CONSOLE_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_UART_CONSOLE_IRQ),
UART_IOAPIC_FLAGS);
return 0;
@ -75,7 +75,7 @@ static int bluetooth_irq_set(struct device *unused) @@ -75,7 +75,7 @@ static int bluetooth_irq_set(struct device *unused)
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_BLUETOOTH_UART_IRQ,
CONFIG_BLUETOOTH_UART_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_BLUETOOTH_UART_IRQ),
UART_IOAPIC_FLAGS);
return 0;
@ -92,7 +92,7 @@ static int hpet_irq_set(struct device *unused) @@ -92,7 +92,7 @@ static int hpet_irq_set(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_HPET_TIMER_IRQ,
CONFIG_HPET_TIMER_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_HPET_TIMER_IRQ),
HPET_IOAPIC_FLAGS);
return 0;
}

14
arch/x86/platforms/ia32_pci/ia32_pci.c

@ -47,7 +47,7 @@ static int dw_i2c0_irq_set(struct device *unused) @@ -47,7 +47,7 @@ static int dw_i2c0_irq_set(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_I2C_DW_0_IRQ,
CONFIG_I2C_DW_0_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_I2C_DW_0_IRQ),
I2C_DW_IRQ_IOAPIC_FLAGS);
return 0;
}
@ -64,7 +64,7 @@ static int gpio_irq_set_0(struct device *unused) @@ -64,7 +64,7 @@ static int gpio_irq_set_0(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_GPIO_DW_0_IRQ,
CONFIG_GPIO_DW_0_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_GPIO_DW_0_IRQ),
GPIO_DW_0_IRQ_IOAPIC_FLAGS);
return 0;
}
@ -80,7 +80,7 @@ static int spi_irq_set_0(struct device *unused) @@ -80,7 +80,7 @@ static int spi_irq_set_0(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_SPI_INTEL_PORT_0_IRQ,
CONFIG_SPI_INTEL_PORT_0_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_SPI_INTEL_PORT_0_IRQ),
SPI_INTEL_IRQ_IOAPIC_FLAGS);
return DEV_OK;
}
@ -95,7 +95,7 @@ static int spi_irq_set_1(struct device *unused) @@ -95,7 +95,7 @@ static int spi_irq_set_1(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_SPI_INTEL_PORT_1_IRQ,
CONFIG_SPI_INTEL_PORT_1_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_SPI_INTEL_PORT_1_IRQ),
SPI_INTEL_IRQ_IOAPIC_FLAGS);
return DEV_OK;
@ -112,7 +112,7 @@ static int console_irq_set(struct device *unsued) @@ -112,7 +112,7 @@ static int console_irq_set(struct device *unsued)
{
#if defined(CONFIG_UART_CONSOLE)
_ioapic_irq_set(CONFIG_UART_CONSOLE_IRQ,
CONFIG_UART_CONSOLE_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_UART_CONSOLE_IRQ),
UART_IOAPIC_FLAGS);
#endif
return 0;
@ -129,7 +129,7 @@ static int bluetooth_irq_set(struct device *unused) @@ -129,7 +129,7 @@ static int bluetooth_irq_set(struct device *unused)
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_BLUETOOTH_UART_IRQ,
CONFIG_BLUETOOTH_UART_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_BLUETOOTH_UART_IRQ),
UART_IOAPIC_FLAGS);
return 0;
@ -145,7 +145,7 @@ static int hpet_irq_set(struct device *unused) @@ -145,7 +145,7 @@ static int hpet_irq_set(struct device *unused)
{
ARG_UNUSED(unused);
_ioapic_irq_set(CONFIG_HPET_TIMER_IRQ,
CONFIG_HPET_TIMER_IRQ + INT_VEC_IRQ0,
_IRQ_TO_INTERRUPT_VECTOR(CONFIG_HPET_TIMER_IRQ),
HPET_IOAPIC_FLAGS);
return 0;
}

Loading…
Cancel
Save