ppcskel - a Free Software replacement for the Nintendo/BroadOn IOS.
IRQ support
-Copyright (C) 2008, 2009 Hector Martin "marcan" <marcan@marcansoft.com>
-Copyright (C) 2008, 2009 Sven Peter <svenpeter@gmail.com>
-Copyright (C) 2009 Andre Heider "dhewg" <dhewg@wiibrew.org>
+Copyright (C) 2009 Bernhard Urban <lewurm@gmx.net>
+Copyright (C) 2009 Sebastian Falbesoner <sebastian.falbesoner@gmail.com>
# This code is licensed to you under the terms of the GNU GPL, version 2;
# see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
#include "hollywood.h"
#include "ipc.h"
#include "bootmii_ppc.h"
-#include "ohci.h"
+#include "usb/host/host.h"
+#include "mini_ipc.h"
+
+void show_frame_no(void);
void irq_initialize(void)
{
{
u32 enabled = read32(BW_PI_IRQMASK);
u32 flags = read32(BW_PI_IRQFLAG);
- printf( "========================\n"
- "flags1: 0x%08X\n", flags);
flags = flags & enabled;
if (flags & (1<<BW_PI_IRQ_RESET)) {
write32(BW_PI_IRQFLAG, 1<<BW_PI_IRQ_RESET);
- printf("IRQ-BW RESET\n");
+ boot2_run(1,2); //sysmenu
}
+
if (flags & (1<<BW_PI_IRQ_HW)) { //HW-PIC IRQ
u32 hw_enabled = read32(HW_PPCIRQMASK);
u32 hw_flags = read32(HW_PPCIRQFLAG);
- printf("In IRQ handler: 0x%08x 0x%08x 0x%08x\n", hw_enabled, hw_flags, hw_flags & hw_enabled);
+ //printf("In IRQ handler: 0x%08x 0x%08x 0x%08x\n", hw_enabled, hw_flags, hw_flags & hw_enabled);
hw_flags = hw_flags & hw_enabled;
//sdhc_irq();
}
if (hw_flags & IRQF_OHCI0) {
- ohci0_irq();
+ hcdi_irq(OHCI0_REG_BASE);
write32(HW_PPCIRQFLAG, IRQF_OHCI0);
}
if (hw_flags & IRQF_OHCI1) {
- printf("IRQ: OHCI1\n");
+ hcdi_irq(OHCI1_REG_BASE);
write32(HW_PPCIRQFLAG, IRQF_OHCI1);
- //TODO: ohci1_irq();
}
hw_flags &= ~IRQF_ALL;
write32(HW_PPCIRQFLAG, hw_flags);
}
- printf("hw_flags1: 0x%08x\n", read32(HW_PPCIRQFLAG));
-
// not necessary here, but "cleaner"?
write32(BW_PI_IRQFLAG, 1<<BW_PI_IRQ_HW);
}
- printf("flags2: 0x%08X\n", read32(BW_PI_IRQFLAG));
}
void irq_bw_enable(u32 irq)
void irq_restore(u32 cookie) {
_CPU_ISR_Restore(cookie);
+ _CPU_ISR_Enable(); //wtf :/
}