]> git.proxmox.com Git - mirror_edk2.git/blob - Vlv2TbltDevicePkg/Library/I2CLibPei/I2CDelayPei.c
ArmPkg/CompilerIntrinsicsLib: Add uread, uwrite GCC assembly sources
[mirror_edk2.git] / Vlv2TbltDevicePkg / Library / I2CLibPei / I2CDelayPei.c
1 /** @file
2 MicroSecondDelay implementation of ACPI Timer.
3
4 Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 --*/
9
10 #include "PiPei.h"
11 #include "I2CAccess.h"
12 #include "I2CDelayPei.h"
13 #include <Library/DebugLib.h>
14 #include <Library/PeiServicesTablePointerLib.h>
15 #include <Ppi/Stall.h>
16
17 /**
18 Stalls the CPU for at least the given number of microseconds.
19 Stalls the CPU for the number of microseconds specified by MicroSeconds.
20
21 @param MicroSeconds The minimum number of microseconds to delay.
22
23 @return EFI_STATUS
24
25 **/
26 EFI_STATUS
27 EFIAPI
28 MicroSecondDelay (
29 IN UINTN MicroSeconds
30 )
31 {
32
33 EFI_PEI_STALL_PPI *StallPpi;
34 EFI_STATUS Status;
35 CONST EFI_PEI_SERVICES **PeiServices;
36
37 PeiServices = GetPeiServicesTablePointer();
38
39
40 Status = (**PeiServices).LocatePpi (PeiServices, &gEfiPeiStallPpiGuid, 0, NULL, &StallPpi);
41 ASSERT(!EFI_ERROR(Status));
42
43 StallPpi->Stall (PeiServices, StallPpi, MicroSeconds);
44
45 return EFI_SUCCESS;
46 }