summaryrefslogtreecommitdiffstats
path: root/Omap35xxPkg/InterruptDxe
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-07-04 10:09:04 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-07-04 10:09:04 +0000
commitd326412cce0672a81852813532b0b1d18fc8cdbc (patch)
tree462953275aaefd1f8ba2db0f91bc43662461b65b /Omap35xxPkg/InterruptDxe
parent1c1e70fa6e1e986992afbb282d048483cbe0b319 (diff)
downloadedk2-d326412cce0672a81852813532b0b1d18fc8cdbc.tar.gz
edk2-d326412cce0672a81852813532b0b1d18fc8cdbc.tar.bz2
edk2-d326412cce0672a81852813532b0b1d18fc8cdbc.zip
Omap35xxPkg/InterruptDxe: Fix dependency chain with the Arch Cpu Dxe
The CPU Dxe should be loaded before the Interrupt Dxe. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11969 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Omap35xxPkg/InterruptDxe')
-rw-r--r--Omap35xxPkg/InterruptDxe/HardwareInterrupt.c51
-rw-r--r--Omap35xxPkg/InterruptDxe/InterruptDxe.inf4
2 files changed, 17 insertions, 38 deletions
diff --git a/Omap35xxPkg/InterruptDxe/HardwareInterrupt.c b/Omap35xxPkg/InterruptDxe/HardwareInterrupt.c
index 0ddedb4c79..5040c4b152 100644
--- a/Omap35xxPkg/InterruptDxe/HardwareInterrupt.c
+++ b/Omap35xxPkg/InterruptDxe/HardwareInterrupt.c
@@ -31,8 +31,6 @@
//
// Notifications
//
-VOID *CpuProtocolNotificationToken = NULL;
-EFI_EVENT CpuProtocolNotificationEvent = (EFI_EVENT)NULL;
EFI_EVENT EfiExitBootServicesEvent = (EFI_EVENT)NULL;
@@ -298,37 +296,6 @@ EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptProtocol = {
EndOfInterrupt
};
-//
-// Notification routines
-//
-VOID
-CpuProtocolInstalledNotification (
- IN EFI_EVENT Event,
- IN VOID *Context
- )
-{
- EFI_STATUS Status;
- EFI_CPU_ARCH_PROTOCOL *Cpu;
-
- //
- // Get the cpu protocol that this driver requires.
- //
- Status = gBS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID **)&Cpu);
- ASSERT_EFI_ERROR(Status);
-
- //
- // Unregister the default exception handler.
- //
- Status = Cpu->RegisterInterruptHandler (Cpu, EXCEPT_ARM_IRQ, NULL);
- ASSERT_EFI_ERROR(Status);
-
- //
- // Register to receive interrupts
- //
- Status = Cpu->RegisterInterruptHandler (Cpu, EXCEPT_ARM_IRQ, IrqInterruptHandler);
- ASSERT_EFI_ERROR(Status);
-}
-
/**
Initialize the state information for the CPU Architectural Protocol
@@ -347,6 +314,7 @@ InterruptDxeInitialize (
)
{
EFI_STATUS Status;
+ EFI_CPU_ARCH_PROTOCOL *Cpu;
// Make sure the Interrupt Controller Protocol is not already installed in the system.
ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid);
@@ -362,11 +330,22 @@ InterruptDxeInitialize (
NULL);
ASSERT_EFI_ERROR(Status);
- // Set up to be notified when the Cpu protocol is installed.
- Status = gBS->CreateEvent(EVT_NOTIFY_SIGNAL, TPL_CALLBACK, CpuProtocolInstalledNotification, NULL, &CpuProtocolNotificationEvent);
+ //
+ // Get the CPU protocol that this driver requires.
+ //
+ Status = gBS->LocateProtocol(&gEfiCpuArchProtocolGuid, NULL, (VOID **)&Cpu);
ASSERT_EFI_ERROR(Status);
- Status = gBS->RegisterProtocolNotify(&gEfiCpuArchProtocolGuid, CpuProtocolNotificationEvent, (VOID *)&CpuProtocolNotificationToken);
+ //
+ // Unregister the default exception handler.
+ //
+ Status = Cpu->RegisterInterruptHandler(Cpu, EXCEPT_ARM_IRQ, NULL);
+ ASSERT_EFI_ERROR(Status);
+
+ //
+ // Register to receive interrupts
+ //
+ Status = Cpu->RegisterInterruptHandler(Cpu, EXCEPT_ARM_IRQ, IrqInterruptHandler);
ASSERT_EFI_ERROR(Status);
// Register for an ExitBootServicesEvent
diff --git a/Omap35xxPkg/InterruptDxe/InterruptDxe.inf b/Omap35xxPkg/InterruptDxe/InterruptDxe.inf
index f6142417e5..16caa2e4f1 100644
--- a/Omap35xxPkg/InterruptDxe/InterruptDxe.inf
+++ b/Omap35xxPkg/InterruptDxe/InterruptDxe.inf
@@ -53,5 +53,5 @@
[FixedPcd.common]
gEmbeddedTokenSpaceGuid.PcdInterruptBaseAddress
-[depex]
- TRUE
+[Depex]
+ gEfiCpuArchProtocolGuid