BeagleBoardPkg: Ensure there is no pending IRQ and disable timer

When the BeagleBoard UEFI is started from a 1st (or 2nd stage) boot loader
it is possible there are still some pending IRQ.
Clean the interrupts before starting the BeagleBoard UEFI.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12034 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
oliviermartin 2011-07-20 15:13:06 +00:00
parent 3e4df77fc3
commit 2d08d17d65
3 changed files with 15 additions and 2 deletions

View File

@ -17,6 +17,8 @@
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/PcdLib.h> #include <Library/PcdLib.h>
#include <Omap3530/Omap3530.h>
VOID VOID
PadConfiguration ( PadConfiguration (
VOID VOID
@ -101,12 +103,21 @@ ArmPlatformGetBootMode (
VOID VOID
ArmPlatformNormalInitialize ( ArmPlatformNormalInitialize (
VOID VOID
) { )
{
//Set up Pin muxing. //Set up Pin muxing.
PadConfiguration (); PadConfiguration ();
// Set up system clocking // Set up system clocking
ClockInit (); ClockInit ();
// Turn off the functional clock for Timer 3
MmioAnd32 (CM_FCLKEN_PER, 0xFFFFFFFF ^ CM_ICLKEN_PER_EN_GPT3_ENABLE );
ArmDataSyncronizationBarrier ();
// Clear IRQs
MmioWrite32 (INTCPS_CONTROL, INTCPS_CONTROL_NEWIRQAGR);
ArmDataSyncronizationBarrier ();
} }
/** /**

View File

@ -46,7 +46,6 @@ ClockInit (
// Turn on functional & interface clocks to various Peripherals. // Turn on functional & interface clocks to various Peripherals.
MmioOr32(CM_FCLKEN_PER, CM_FCLKEN_PER_EN_UART3_ENABLE MmioOr32(CM_FCLKEN_PER, CM_FCLKEN_PER_EN_UART3_ENABLE
| CM_FCLKEN_PER_EN_GPT3_ENABLE
| CM_FCLKEN_PER_EN_GPT4_ENABLE | CM_FCLKEN_PER_EN_GPT4_ENABLE
| CM_FCLKEN_PER_EN_GPIO2_ENABLE | CM_FCLKEN_PER_EN_GPIO2_ENABLE
| CM_FCLKEN_PER_EN_GPIO3_ENABLE | CM_FCLKEN_PER_EN_GPIO3_ENABLE

View File

@ -356,6 +356,9 @@ TimerInitialize (
Status = gInterrupt->RegisterInterruptSource (gInterrupt, gVector, TimerInterruptHandler); Status = gInterrupt->RegisterInterruptSource (gInterrupt, gVector, TimerInterruptHandler);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
// Turn on the functional clock for Timer
MmioOr32 (CM_FCLKEN_PER, CM_FCLKEN_PER_EN_GPT3_ENABLE);
// Set up default timer // Set up default timer
Status = TimerDriverSetTimerPeriod (&gTimer, FixedPcdGet32(PcdTimerPeriod)); Status = TimerDriverSetTimerPeriod (&gTimer, FixedPcdGet32(PcdTimerPeriod));
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);