> On Jun 13, 2015, at 1:52 AM, Sharma Bhupesh <bhupesh.sha...@freescale.com> > wrote: > > Hi, > > Can some ARM expert help me with my queries below. > > The overall context is that I cannot get the 'ArmPlatformPkg/Bds/Bds.c' > auto-timeout to trigger. > > The following snippet of code shows how the timeout is created as a event > using the CreateEvent and SetTimer APIs. > > However I cannot the SetTimer API triggering a call to the corresponding > TimerDriverSetTimerPeriod API inside 'ArmPkg/Drivers/TimerDxe/TimerDxe.c’ >
It does not work that way. The DXE Core has a periodic timer at a fixed interval. The event based timers are implemented on top of the periodic tick in software. https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdeModulePkg/Core/Dxe/Event/Timer.c <https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdeModulePkg/Core/Dxe/Event/Timer.c> The DXE Core registers CoreTimerTick() with the gEfiTimerArchProtocolGuid https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeProtocolNotify.c <https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeProtocolNotify.c> if (CompareGuid (Entry->ProtocolGuid, &gEfiTimerArchProtocolGuid)) { // // Register the Core timer tick handler with the Timer AP // gTimer->RegisterHandler (gTimer, CoreTimerTick); } Thanks, Andrew Fish > if (Timeout != 0xFFFF) { > if (Timeout > 0) { > // Create the waiting events (keystroke and 1sec timer) > gBS->CreateEvent (EVT_TIMER, 0, NULL, NULL, &WaitList[0]); > gBS->SetTimer (WaitList[0], TimerPeriodic, EFI_SET_TIMER_TO_SECOND); > WaitList[1] = gST->ConIn->WaitForKey; > > // Start the timer > WaitIndex = 0; > Print(L"The default boot selection will start in "); > while ((Timeout > 0) && (WaitIndex == 0)) { > Print(L"%3d seconds",Timeout); > gBS->WaitForEvent (2, WaitList, &WaitIndex); > if (WaitIndex == 0) { > Print(L"\b\b\b\b\b\b\b\b\b\b\b"); > Timeout--; > } > } > > So, I just wanted to understand if the auto-timeout during boot works on > Juno-Rev1 and if yes, how does it connect to the underlying ArmArchTimerLib > > Please help. > >> -----Original Message----- >> From: Sharma Bhupesh-B45370 >> Sent: Wednesday, June 10, 2015 4:01 PM >> To: edk2-devel@lists.sourceforge.net; 'olivier.mar...@arm.com' >> Subject: AARCH64: Timer Dxe >> >> Hi Olivier, >> >> 1. I am looking at the 'ArmPkg/Drivers/TimerDxe/TimerDxe.c' DXE driver >> and seeing how the timer interrupts are registered: >> >> // Install secure and Non-secure interrupt handlers >> // Note: Because it is not possible to determine the security state of >> the >> // CPU dynamically, we just install interrupt handler for both sec and >> non-sec >> // timer PPI >> Status = gInterrupt->RegisterInterruptSource (gInterrupt, PcdGet32 >> (PcdArmArchTimerVirtIntrNum), TimerInterruptHandler); >> ASSERT_EFI_ERROR (Status); >> >> Status = gInterrupt->RegisterInterruptSource (gInterrupt, PcdGet32 >> (PcdArmArchTimerHypIntrNum), TimerInterruptHandler); >> ASSERT_EFI_ERROR (Status); >> >> Status = gInterrupt->RegisterInterruptSource (gInterrupt, PcdGet32 >> (PcdArmArchTimerSecIntrNum), TimerInterruptHandler); >> ASSERT_EFI_ERROR (Status); >> >> Status = gInterrupt->RegisterInterruptSource (gInterrupt, PcdGet32 >> (PcdArmArchTimerIntrNum), TimerInterruptHandler); >> ASSERT_EFI_ERROR (Status); >> >> I wanted to understand how the Interrupt registration changes for PPI or >> SPI interrupt sources. >> As usually the Virtual, Hypervisor, Physical and Physical Non-Secure >> interrupts are PPI does the PPI number need to be defined as the PCD >> values in the same way as linux. The Linux gicv3 documentation says >> (Documentation/devicetree/bindings/arm/gic-v3.txt): >> >> SPI interrupts are in the range [0-987]. PPI interrupts are in the range >> [0-15]. >> >> 2. Also one related question is whether on Juno Rev1, you are able to get >> the BootDelay to work via timer based events? If yes, can you please >> share if you achieve this by using the ARMv8 generic timer or the SP804 >> timer. >> > > Regards, > Bhupesh > > ------------------------------------------------------------------------------ > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
_______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel