//\r
// The handle onto which the Timer Architectural Protocol will be installed\r
//\r
-EFI_HANDLE mTimerHandle = NULL;\r
+EFI_HANDLE mTimerHandle = NULL;\r
\r
//\r
// The Timer Architectural Protocol that this driver produces\r
//\r
-EFI_TIMER_ARCH_PROTOCOL mTimer = {\r
+EFI_TIMER_ARCH_PROTOCOL mTimer = {\r
TimerDriverRegisterHandler,\r
TimerDriverSetTimerPeriod,\r
TimerDriverGetTimerPeriod,\r
//\r
// Pointer to the CPU Architectural Protocol instance\r
//\r
-EFI_CPU_ARCH_PROTOCOL *mCpu;\r
+EFI_CPU_ARCH_PROTOCOL *mCpu;\r
\r
//\r
// The notification function to call on every timer interrupt.\r
// A bug in the compiler prevents us from initializing this here.\r
//\r
-EFI_TIMER_NOTIFY mTimerNotifyFunction;\r
+EFI_TIMER_NOTIFY mTimerNotifyFunction;\r
\r
//\r
// The current period of the timer interrupt\r
//\r
-volatile UINT64 mTimerPeriod = 0;\r
+volatile UINT64 mTimerPeriod = 0;\r
\r
//\r
// Worker Functions\r
//\r
+\r
/**\r
Interrupt Handler.\r
\r
VOID\r
EFIAPI\r
TimerInterruptHandler (\r
- IN EFI_EXCEPTION_TYPE InterruptType,\r
- IN EFI_SYSTEM_CONTEXT SystemContext\r
+ IN EFI_EXCEPTION_TYPE InterruptType,\r
+ IN EFI_SYSTEM_CONTEXT SystemContext\r
)\r
{\r
- EFI_TPL OriginalTPL;\r
+ EFI_TPL OriginalTPL;\r
\r
OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL);\r
\r
- SendApicEoi();\r
-\r
if (mTimerNotifyFunction != NULL) {\r
//\r
// @bug : This does not handle missed timer interrupts\r
}\r
\r
gBS->RestoreTPL (OriginalTPL);\r
+\r
+ DisableInterrupts ();\r
+ SendApicEoi ();\r
}\r
\r
/**\r
//\r
// Check for invalid parameters\r
//\r
- if (NotifyFunction == NULL && mTimerNotifyFunction == NULL) {\r
+ if ((NotifyFunction == NULL) && (mTimerNotifyFunction == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- if (NotifyFunction != NULL && mTimerNotifyFunction != NULL) {\r
+ if ((NotifyFunction != NULL) && (mTimerNotifyFunction != NULL)) {\r
return EFI_ALREADY_STARTED;\r
}\r
\r
{\r
UINT64 TimerCount;\r
UINT32 TimerFrequency;\r
- UINTN DivideValue = 1;\r
+ UINT32 DivideValue = 1;\r
\r
if (TimerPeriod == 0) {\r
//\r
// Disable timer interrupt for a TimerPeriod of 0\r
//\r
- DisableApicTimerInterrupt();\r
+ DisableApicTimerInterrupt ();\r
} else {\r
- TimerFrequency = PcdGet32(PcdFSBClock) / DivideValue;\r
+ TimerFrequency = PcdGet32 (PcdFSBClock) / DivideValue;\r
\r
//\r
// Convert TimerPeriod into local APIC counts\r
//\r
// TimerPeriod is in 100ns\r
// TimerPeriod/10000000 will be in seconds.\r
- TimerCount = DivU64x32 (MultU64x32 (TimerPeriod, TimerFrequency),\r
- 10000000);\r
+ TimerCount = DivU64x32 (\r
+ MultU64x32 (TimerPeriod, TimerFrequency),\r
+ 10000000\r
+ );\r
\r
// Check for overflow\r
if (TimerCount > MAX_UINT32) {\r
//\r
// Program the timer with the new count value\r
//\r
- InitializeApicTimer(DivideValue, TimerCount, TRUE, LOCAL_APIC_TIMER_VECTOR);\r
+ InitializeApicTimer (DivideValue, (UINT32)TimerCount, TRUE, LOCAL_APIC_TIMER_VECTOR);\r
\r
//\r
// Enable timer interrupt\r
//\r
- EnableApicTimerInterrupt();\r
+ EnableApicTimerInterrupt ();\r
}\r
+\r
//\r
// Save the new timer period\r
//\r
EFI_STATUS\r
EFIAPI\r
TimerDriverGetTimerPeriod (\r
- IN EFI_TIMER_ARCH_PROTOCOL *This,\r
- OUT UINT64 *TimerPeriod\r
+ IN EFI_TIMER_ARCH_PROTOCOL *This,\r
+ OUT UINT64 *TimerPeriod\r
)\r
{\r
if (TimerPeriod == NULL) {\r
IN EFI_TIMER_ARCH_PROTOCOL *This\r
)\r
{\r
- EFI_TPL OriginalTPL;\r
+ EFI_TPL OriginalTPL;\r
\r
- if (GetApicTimerInterruptState()) {\r
+ if (GetApicTimerInterruptState ()) {\r
//\r
// Invoke the registered handler\r
//\r
//\r
// Find the CPU architectural protocol.\r
//\r
- Status = gBS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID **) &mCpu);\r
+ Status = gBS->LocateProtocol (&gEfiCpuArchProtocolGuid, NULL, (VOID **)&mCpu);\r
ASSERT_EFI_ERROR (Status);\r
\r
//\r
//\r
// Install interrupt handler for Local APIC Timer\r
//\r
- Status = mCpu->RegisterInterruptHandler (mCpu, LOCAL_APIC_TIMER_VECTOR,\r
- TimerInterruptHandler);\r
+ Status = mCpu->RegisterInterruptHandler (\r
+ mCpu,\r
+ LOCAL_APIC_TIMER_VECTOR,\r
+ TimerInterruptHandler\r
+ );\r
ASSERT_EFI_ERROR (Status);\r
\r
//\r
//\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&mTimerHandle,\r
- &gEfiTimerArchProtocolGuid, &mTimer,\r
+ &gEfiTimerArchProtocolGuid,\r
+ &mTimer,\r
NULL\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
return Status;\r
}\r
-\r