Commit c87fda50 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Linus Torvalds

[PATCH] ppc32: Fix boot on PowerMac

Tom's recent irq patch broke PowerMac (and possibly others).  I think he
forgot that PReP, CHRP and PowerMac are all built together in a single
kernel image, thus all of those arch_initcall's will end up beeing called,
even on the wrong machine...
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent af200e5a
......@@ -374,6 +374,9 @@ static void __init chrp_find_openpic(void)
static int __init
chrp_request_cascade(void)
{
if (_machine != _MACH_chrp)
return 0;
/* We have a cascade on OpenPIC IRQ 0, Linux IRQ 16 */
openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade",
i8259_irq);
......
......@@ -961,6 +961,9 @@ prep_irq_canonicalize(u_int irq)
static int __init
prep_request_cascade(void)
{
if (_machine != _MACH_prep)
return 0;
if (OpenPIC_Addr != NULL)
/* We have a cascade on OpenPIC IRQ 0, Linux IRQ 16 */
openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade",
......
......@@ -13,6 +13,7 @@ unsigned char cached_8259[2] = { 0xff, 0xff };
static spinlock_t i8259_lock = SPIN_LOCK_UNLOCKED;
int i8259_pic_irq_offset;
static int i8259_present;
/*
* Acknowledge the IRQ using either the PCI host bridge's interrupt
......@@ -154,6 +155,9 @@ static struct resource pic_edgectrl_iores = {
static int __init
i8259_hook_cascade(void)
{
if (!i8259_present)
return 0;
/* reserve our resources */
request_irq( i8259_pic_irq_offset + 2, no_action, SA_INTERRUPT,
"82c59 secondary cascade", NULL );
......@@ -201,4 +205,6 @@ i8259_init(long intack_addr)
if (intack_addr != 0)
pci_intack = ioremap(intack_addr, 1);
i8259_present = 1;
}
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