Hi,

All USB asynchronous transfer timer intervals defined in Ehci.h, Uhci.h and 
Xhci.h are set to 1ms value as below:


#define EHC_ASYNC_POLL_INTERVAL      EFI_TIMER_PERIOD_MILLISECONDS(1)

#define UHC_ASYNC_POLL_INTERVAL       EFI_TIMER_PERIOD_MILLISECONDS(1)

#define XHC_ASYNC_TIMER_INTERVAL     EFI_TIMER_PERIOD_MILLISECONDS(1)


are used to  start the asynchronous interrupt monitor as:

  Status = gBS->SetTimer (Xhc->PollTimer, TimerPeriodic, 
XHC_ASYNC_TIMER_INTERVAL);


, but all h/w platforms, except Hisilicon from OpenPlatformPkg either use 
default PcdTimerPeriod

gEmbeddedTokenSpaceGuid.PcdTimerPeriod|100000

from EmbeddedPkg or redefine the same 100000 value (e.g. BeagleBoardPkg) which 
gives Timer Interrupt period of 10ms in which case the polling interval will be 
also 10ms but not 1ms as desinged.


There are other cases when TimerPeriodic event is set with 1ms period, see:

edk2\MdeModulePkg\Bus\Ata\AtaAtapiPassThru\AtaAtapiPassThru.c:

  //
  // Set 1ms timer.
  //
  Status = gBS->SetTimer (Instance->TimerEvent, TimerPeriodic, 10000);


edk2\MdeModulePkg\Bus\Pci\NvmExpressDxe\NvmExpress.h:
//
// Nvme async transfer timer interval, set by experience.
//
#define NVME_HC_ASYNC_TIMER                       EFI_TIMER_PERIOD_MILLISECONDS 
(1)

edk2\MdeModulePkg\Bus\Pci\SdMmcPciHcDxe\SdMmcPciHcDxe.h:
//
// SD/MMC async transfer timer interval, set by experience.
// The unit is 100us, takes 1ms as interval.
//
#define SD_MMC_HC_ASYNC_TIMER   EFI_TIMER_PERIOD_MILLISECONDS(1)

, etc.


Any comments on that?


Alexei.



IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to