]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/ArmGenericTimerPhyCounterLib/ArmGenericTimerPhyCounterLib.c
MdeModulePkg/FaultTolerantWriteDxe: implement standalone MM version
[mirror_edk2.git] / ArmPkg / Library / ArmGenericTimerPhyCounterLib / ArmGenericTimerPhyCounterLib.c
CommitLineData
cece12d3
AB
1/** @file\r
2\r
3 Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>\r
4 Copyright (c) 2014, Linaro Ltd. All rights reserved.<BR>\r
5\r
6 This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#include <Library/ArmGenericTimerCounterLib.h>\r
734bd6cc 17#include <Library/ArmLib.h>\r
cece12d3
AB
18\r
19VOID\r
20EFIAPI\r
21ArmGenericTimerEnableTimer (\r
22 VOID\r
23 )\r
24{\r
25 UINTN TimerCtrlReg;\r
26\r
734bd6cc 27 TimerCtrlReg = ArmReadCntpCtl ();\r
cece12d3 28 TimerCtrlReg |= ARM_ARCH_TIMER_ENABLE;\r
734bd6cc 29 ArmWriteCntpCtl (TimerCtrlReg);\r
cece12d3
AB
30}\r
31\r
5853e2e4
AB
32VOID\r
33EFIAPI\r
34ArmGenericTimerReenableTimer (\r
35 VOID\r
36 )\r
37{\r
38}\r
39\r
cece12d3
AB
40VOID\r
41EFIAPI\r
42ArmGenericTimerDisableTimer (\r
43 VOID\r
44 )\r
45{\r
46 UINTN TimerCtrlReg;\r
47\r
734bd6cc 48 TimerCtrlReg = ArmReadCntpCtl ();\r
cece12d3 49 TimerCtrlReg &= ~ARM_ARCH_TIMER_ENABLE;\r
734bd6cc 50 ArmWriteCntpCtl (TimerCtrlReg);\r
cece12d3
AB
51}\r
52\r
53VOID\r
54EFIAPI\r
55ArmGenericTimerSetTimerFreq (\r
56 IN UINTN FreqInHz\r
57 )\r
58{\r
734bd6cc 59 ArmWriteCntFrq (FreqInHz);\r
cece12d3
AB
60}\r
61\r
62UINTN\r
63EFIAPI\r
64ArmGenericTimerGetTimerFreq (\r
65 VOID\r
66 )\r
67{\r
734bd6cc 68 return ArmReadCntFrq ();\r
cece12d3
AB
69}\r
70\r
71UINTN\r
72EFIAPI\r
73ArmGenericTimerGetTimerVal (\r
74 VOID\r
75 )\r
76{\r
734bd6cc 77 return ArmReadCntpTval ();\r
cece12d3
AB
78}\r
79\r
80\r
81VOID\r
82EFIAPI\r
83ArmGenericTimerSetTimerVal (\r
84 IN UINTN Value\r
85 )\r
86{\r
734bd6cc 87 ArmWriteCntpTval (Value);\r
cece12d3
AB
88}\r
89\r
90UINT64\r
91EFIAPI\r
92ArmGenericTimerGetSystemCount (\r
93 VOID\r
94 )\r
95{\r
734bd6cc 96 return ArmReadCntPct ();\r
cece12d3
AB
97}\r
98\r
99UINTN\r
100EFIAPI\r
101ArmGenericTimerGetTimerCtrlReg (\r
102 VOID\r
103 )\r
104{\r
734bd6cc 105 return ArmReadCntpCtl ();\r
cece12d3
AB
106}\r
107\r
108VOID\r
109EFIAPI\r
110ArmGenericTimerSetTimerCtrlReg (\r
111 UINTN Value\r
112 )\r
113{\r
734bd6cc 114 ArmWriteCntpCtl (Value);\r
cece12d3
AB
115}\r
116\r
117UINT64\r
118EFIAPI\r
119ArmGenericTimerGetCompareVal (\r
120 VOID\r
121 )\r
122{\r
734bd6cc 123 return ArmReadCntpCval ();\r
cece12d3
AB
124}\r
125\r
126VOID\r
127EFIAPI\r
128ArmGenericTimerSetCompareVal (\r
129 IN UINT64 Value\r
130 )\r
131{\r
734bd6cc 132 ArmWriteCntpCval (Value);\r
cece12d3 133}\r