Commit 7ea74153 authored by Len Brown's avatar Len Brown

[ACPI] create platform_rename_gsi() so ES7000 can munge IRQ numbers

from Natalie Protasevich
parent 482f3334
...@@ -1029,6 +1029,8 @@ extern FADT_DESCRIPTOR acpi_fadt; ...@@ -1029,6 +1029,8 @@ extern FADT_DESCRIPTOR acpi_fadt;
#ifdef CONFIG_ACPI_PCI #ifdef CONFIG_ACPI_PCI
int (*platform_rename_gsi)(int ioapic, int gsi);
void __init mp_parse_prt (void) void __init mp_parse_prt (void)
{ {
struct list_head *node = NULL; struct list_head *node = NULL;
...@@ -1072,10 +1074,8 @@ void __init mp_parse_prt (void) ...@@ -1072,10 +1074,8 @@ void __init mp_parse_prt (void)
continue; continue;
ioapic_pin = gsi - mp_ioapic_routing[ioapic].gsi_base; ioapic_pin = gsi - mp_ioapic_routing[ioapic].gsi_base;
if (es7000_plat) { if (platform_rename_gsi)
if (!ioapic && (gsi < 16)) gsi = platform_rename_gsi(ioapic, gsi);
gsi += 16;
}
/* /*
* Avoid pin reprogramming. PRTs typically include entries * Avoid pin reprogramming. PRTs typically include entries
......
...@@ -50,6 +50,29 @@ struct mip_reg *mip_reg; ...@@ -50,6 +50,29 @@ struct mip_reg *mip_reg;
struct mip_reg *host_reg; struct mip_reg *host_reg;
int mip_port; int mip_port;
unsigned long mip_addr, host_addr; unsigned long mip_addr, host_addr;
extern int (*platform_rename_gsi)();
static int __init
es7000_rename_gsi(int ioapic, int gsi)
{
if (ioapic)
return gsi;
else {
if (gsi == 0)
return 13;
if (gsi == 1)
return 16;
if (gsi == 4)
return 17;
if (gsi == 6)
return 18;
if (gsi == 7)
return 19;
if (gsi == 8)
return 20;
return gsi;
}
}
/* /*
* Parse the OEM Table * Parse the OEM Table
...@@ -115,6 +138,7 @@ parse_unisys_oem (char *oemptr, int oem_entries) ...@@ -115,6 +138,7 @@ parse_unisys_oem (char *oemptr, int oem_entries)
} else { } else {
printk("\nEnabling ES7000 specific features...\n"); printk("\nEnabling ES7000 specific features...\n");
es7000_plat = 1; es7000_plat = 1;
platform_rename_gsi = es7000_rename_gsi;
} }
return; return;
} }
......
...@@ -18,7 +18,8 @@ ...@@ -18,7 +18,8 @@
* the "ordinary" interrupt call gates. For legacy reasons, the ISA * the "ordinary" interrupt call gates. For legacy reasons, the ISA
* interrupts should be initialised here if the machine emulates a PC * interrupts should be initialised here if the machine emulates a PC
* in any way. * in any way.
**/void __init pre_intr_init_hook(void) **/
void __init pre_intr_init_hook(void)
{ {
init_ISA_irqs(); init_ISA_irqs();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment