mirror of https://github.com/acidanthera/audk.git
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:
parent
3e4df77fc3
commit
2d08d17d65
|
@ -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 ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue