]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c
ArmPkg: add reenable hook to ArmGenericTimerCounterLib
[mirror_edk2.git] / ArmPkg / Library / ArmGenericTimerVirtCounterLib / ArmGenericTimerVirtCounterLib.c
CommitLineData
bcf37cf6
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
bcf37cf6
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 = ArmReadCntvCtl ();\r
bcf37cf6 28 TimerCtrlReg |= ARM_ARCH_TIMER_ENABLE;\r
734bd6cc 29 ArmWriteCntvCtl (TimerCtrlReg);\r
bcf37cf6
AB
30}\r
31\r
5853e2e4
AB
32VOID\r
33EFIAPI\r
34ArmGenericTimerReenableTimer (\r
35 VOID\r
36 )\r
37{\r
38}\r
39\r
bcf37cf6
AB
40VOID\r
41EFIAPI\r
42ArmGenericTimerDisableTimer (\r
43 VOID\r
44 )\r
45{\r
46 UINTN TimerCtrlReg;\r
47\r
734bd6cc 48 TimerCtrlReg = ArmReadCntvCtl ();\r
bcf37cf6 49 TimerCtrlReg &= ~ARM_ARCH_TIMER_ENABLE;\r
734bd6cc 50 ArmWriteCntvCtl (TimerCtrlReg);\r
bcf37cf6
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
bcf37cf6
AB
60}\r
61\r
62UINTN\r
63EFIAPI\r
64ArmGenericTimerGetTimerFreq (\r
65 VOID\r
66 )\r
67{\r
734bd6cc 68 return ArmReadCntFrq ();\r
bcf37cf6
AB
69}\r
70\r
71UINTN\r
72EFIAPI\r
73ArmGenericTimerGetTimerVal (\r
74 VOID\r
75 )\r
76{\r
734bd6cc 77 return ArmReadCntvTval ();\r
bcf37cf6
AB
78}\r
79\r
80\r
81VOID\r
82EFIAPI\r
83ArmGenericTimerSetTimerVal (\r
84 IN UINTN Value\r
85 )\r
86{\r
734bd6cc 87 ArmWriteCntvTval (Value);\r
bcf37cf6
AB
88}\r
89\r
90UINT64\r
91EFIAPI\r
92ArmGenericTimerGetSystemCount (\r
93 VOID\r
94 )\r
95{\r
734bd6cc 96 return ArmReadCntvCt ();\r
bcf37cf6
AB
97}\r
98\r
99UINTN\r
100EFIAPI\r
101ArmGenericTimerGetTimerCtrlReg (\r
102 VOID\r
103 )\r
104{\r
734bd6cc 105 return ArmReadCntvCtl ();\r
bcf37cf6
AB
106}\r
107\r
108VOID\r
109EFIAPI\r
110ArmGenericTimerSetTimerCtrlReg (\r
111 UINTN Value\r
112 )\r
113{\r
734bd6cc 114 ArmWriteCntvCtl (Value);\r
bcf37cf6
AB
115}\r
116\r
117UINT64\r
118EFIAPI\r
119ArmGenericTimerGetCompareVal (\r
120 VOID\r
121 )\r
122{\r
734bd6cc 123 return ArmReadCntvCval ();\r
bcf37cf6
AB
124}\r
125\r
126VOID\r
127EFIAPI\r
128ArmGenericTimerSetCompareVal (\r
129 IN UINT64 Value\r
130 )\r
131{\r
734bd6cc 132 ArmWriteCntvCval (Value);\r
bcf37cf6 133}\r