Remove the IRQ to IO-APIC pin mapping array. It isn't used as we don't redirect
vectors at all. It'd also not work for multi IO-APIC setups which we don't support yet (but are relatively rare anyway). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41414 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -141,8 +141,6 @@ typedef struct ioapic_s {
|
|||||||
static ioapic *sIOAPIC = NULL;
|
static ioapic *sIOAPIC = NULL;
|
||||||
static uint32 sIOAPICMaxRedirectionEntry = 23;
|
static uint32 sIOAPICMaxRedirectionEntry = 23;
|
||||||
|
|
||||||
static uint32 sIRQToIOAPICPin[256];
|
|
||||||
|
|
||||||
typedef struct interrupt_controller_s {
|
typedef struct interrupt_controller_s {
|
||||||
const char *name;
|
const char *name;
|
||||||
void (*enable_io_interrupt)(int32 num);
|
void (*enable_io_interrupt)(int32 num);
|
||||||
@@ -489,9 +487,8 @@ ioapic_end_of_interrupt(int32 num)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ioapic_enable_io_interrupt(int32 num)
|
ioapic_enable_io_interrupt(int32 pin)
|
||||||
{
|
{
|
||||||
int32 pin = sIRQToIOAPICPin[num];
|
|
||||||
if (pin < 0 || pin > (int32)sIOAPICMaxRedirectionEntry)
|
if (pin < 0 || pin > (int32)sIOAPICMaxRedirectionEntry)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -505,9 +502,8 @@ ioapic_enable_io_interrupt(int32 num)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ioapic_disable_io_interrupt(int32 num)
|
ioapic_disable_io_interrupt(int32 pin)
|
||||||
{
|
{
|
||||||
int32 pin = sIRQToIOAPICPin[num];
|
|
||||||
if (pin < 0 || pin > (int32)sIOAPICMaxRedirectionEntry)
|
if (pin < 0 || pin > (int32)sIOAPICMaxRedirectionEntry)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -521,9 +517,8 @@ ioapic_disable_io_interrupt(int32 num)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ioapic_configure_io_interrupt(int32 num, uint32 config)
|
ioapic_configure_io_interrupt(int32 pin, uint32 config)
|
||||||
{
|
{
|
||||||
int32 pin = sIRQToIOAPICPin[num];
|
|
||||||
if (pin < 0 || pin > (int32)sIOAPICMaxRedirectionEntry)
|
if (pin < 0 || pin > (int32)sIOAPICMaxRedirectionEntry)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -537,10 +532,10 @@ ioapic_configure_io_interrupt(int32 num, uint32 config)
|
|||||||
|
|
||||||
if (config & B_LEVEL_TRIGGERED) {
|
if (config & B_LEVEL_TRIGGERED) {
|
||||||
entry |= (IO_APIC_TRIGGER_MODE_LEVEL << IO_APIC_TRIGGER_MODE_SHIFT);
|
entry |= (IO_APIC_TRIGGER_MODE_LEVEL << IO_APIC_TRIGGER_MODE_SHIFT);
|
||||||
sLevelTriggeredInterrupts |= (1 << num);
|
sLevelTriggeredInterrupts |= (1 << pin);
|
||||||
} else {
|
} else {
|
||||||
entry |= (IO_APIC_TRIGGER_MODE_EDGE << IO_APIC_TRIGGER_MODE_SHIFT);
|
entry |= (IO_APIC_TRIGGER_MODE_EDGE << IO_APIC_TRIGGER_MODE_SHIFT);
|
||||||
sLevelTriggeredInterrupts &= ~(1 << num);
|
sLevelTriggeredInterrupts &= ~(1 << pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config & B_LOW_ACTIVE_POLARITY)
|
if (config & B_LOW_ACTIVE_POLARITY)
|
||||||
@@ -548,7 +543,7 @@ ioapic_configure_io_interrupt(int32 num, uint32 config)
|
|||||||
else
|
else
|
||||||
entry |= (IO_APIC_PIN_POLARITY_HIGH_ACTIVE << IO_APIC_PIN_POLARITY_SHIFT);
|
entry |= (IO_APIC_PIN_POLARITY_HIGH_ACTIVE << IO_APIC_PIN_POLARITY_SHIFT);
|
||||||
|
|
||||||
entry |= (num + ARCH_INTERRUPT_BASE) << IO_APIC_INTERRUPT_VECTOR_SHIFT;
|
entry |= (pin + ARCH_INTERRUPT_BASE) << IO_APIC_INTERRUPT_VECTOR_SHIFT;
|
||||||
ioapic_write_64(IO_APIC_REDIRECTION_TABLE + pin * 2, entry);
|
ioapic_write_64(IO_APIC_REDIRECTION_TABLE + pin * 2, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -713,10 +708,6 @@ ioapic_init(kernel_args* args)
|
|||||||
ioapic_write_64(IO_APIC_REDIRECTION_TABLE + 2 * i, entry);
|
ioapic_write_64(IO_APIC_REDIRECTION_TABLE + 2 * i, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup default 1:1 mapping
|
|
||||||
for (uint32 i = 0; i < 256; i++)
|
|
||||||
sIRQToIOAPICPin[i] = i;
|
|
||||||
|
|
||||||
print_irq_routing_table(&table);
|
print_irq_routing_table(&table);
|
||||||
|
|
||||||
// configure io apic interrupts from PCI routing table
|
// configure io apic interrupts from PCI routing table
|
||||||
|
|||||||
Reference in New Issue
Block a user