]> git.proxmox.com Git - mirror_edk2.git/blame - ArmVirtPkg/Library/XenArmGenericTimerVirtCounterLib/XenArmGenericTimerVirtCounterLib.c
ArmVirtPkg: Apply uncrustify changes
[mirror_edk2.git] / ArmVirtPkg / Library / XenArmGenericTimerVirtCounterLib / XenArmGenericTimerVirtCounterLib.c
CommitLineData
ef42ef7e
AB
1/** @file\r
2\r
3 Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>\r
4 Copyright (c) 2014 - 2018, Linaro Ltd. All rights reserved.<BR>\r
5\r
9792fb0e 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
ef42ef7e
AB
7\r
8**/\r
9\r
10#include <Library/ArmGenericTimerCounterLib.h>\r
11#include <Library/ArmLib.h>\r
12\r
13VOID\r
14EFIAPI\r
15ArmGenericTimerEnableTimer (\r
16 VOID\r
17 )\r
18{\r
2b16a4fb 19 UINTN TimerCtrlReg;\r
ef42ef7e 20\r
2b16a4fb 21 TimerCtrlReg = ArmReadCntvCtl ();\r
ef42ef7e
AB
22 TimerCtrlReg |= ARM_ARCH_TIMER_ENABLE;\r
23 ArmWriteCntvCtl (TimerCtrlReg);\r
24}\r
25\r
26VOID\r
27EFIAPI\r
28ArmGenericTimerReenableTimer (\r
29 VOID\r
30 )\r
31{\r
2b16a4fb 32 UINTN TimerCtrlReg;\r
ef42ef7e 33\r
2b16a4fb 34 TimerCtrlReg = ArmReadCntvCtl ();\r
ef42ef7e
AB
35 TimerCtrlReg |= ARM_ARCH_TIMER_ENABLE;\r
36\r
37 //\r
38 // When running under Xen, we need to unmask the interrupt on the timer side\r
39 // as Xen will mask it when servicing the interrupt at the hypervisor level\r
40 // and delivering the virtual timer interrupt to the guest. Otherwise, the\r
41 // interrupt will fire again, trapping into the hypervisor again, etc. etc.\r
42 //\r
43 TimerCtrlReg &= ~ARM_ARCH_TIMER_IMASK;\r
44 ArmWriteCntvCtl (TimerCtrlReg);\r
45}\r
46\r
47VOID\r
48EFIAPI\r
49ArmGenericTimerDisableTimer (\r
50 VOID\r
51 )\r
52{\r
2b16a4fb 53 UINTN TimerCtrlReg;\r
ef42ef7e 54\r
2b16a4fb 55 TimerCtrlReg = ArmReadCntvCtl ();\r
ef42ef7e
AB
56 TimerCtrlReg &= ~ARM_ARCH_TIMER_ENABLE;\r
57 ArmWriteCntvCtl (TimerCtrlReg);\r
58}\r
59\r
60VOID\r
61EFIAPI\r
62ArmGenericTimerSetTimerFreq (\r
63 IN UINTN FreqInHz\r
64 )\r
65{\r
66 ArmWriteCntFrq (FreqInHz);\r
67}\r
68\r
69UINTN\r
70EFIAPI\r
71ArmGenericTimerGetTimerFreq (\r
72 VOID\r
73 )\r
74{\r
75 return ArmReadCntFrq ();\r
76}\r
77\r
78UINTN\r
79EFIAPI\r
80ArmGenericTimerGetTimerVal (\r
81 VOID\r
82 )\r
83{\r
84 return ArmReadCntvTval ();\r
85}\r
86\r
ef42ef7e
AB
87VOID\r
88EFIAPI\r
89ArmGenericTimerSetTimerVal (\r
2b16a4fb 90 IN UINTN Value\r
ef42ef7e
AB
91 )\r
92{\r
93 ArmWriteCntvTval (Value);\r
94}\r
95\r
96UINT64\r
97EFIAPI\r
98ArmGenericTimerGetSystemCount (\r
99 VOID\r
100 )\r
101{\r
102 return ArmReadCntvCt ();\r
103}\r
104\r
105UINTN\r
106EFIAPI\r
107ArmGenericTimerGetTimerCtrlReg (\r
108 VOID\r
109 )\r
110{\r
111 return ArmReadCntvCtl ();\r
112}\r
113\r
114VOID\r
115EFIAPI\r
116ArmGenericTimerSetTimerCtrlReg (\r
2b16a4fb 117 UINTN Value\r
ef42ef7e
AB
118 )\r
119{\r
120 ArmWriteCntvCtl (Value);\r
121}\r
122\r
123UINT64\r
124EFIAPI\r
125ArmGenericTimerGetCompareVal (\r
126 VOID\r
127 )\r
128{\r
129 return ArmReadCntvCval ();\r
130}\r
131\r
132VOID\r
133EFIAPI\r
134ArmGenericTimerSetCompareVal (\r
2b16a4fb 135 IN UINT64 Value\r
ef42ef7e
AB
136 )\r
137{\r
138 ArmWriteCntvCval (Value);\r
139}\r