]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/ArmGenericTimerPhyCounterLib/ArmGenericTimerPhyCounterLib.c
ArmPkg/ArmDmaLib: fix incorrect device address of double buffer
[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
17#include <Library/ArmArchTimer.h>\r
18\r
19VOID\r
20EFIAPI\r
21ArmGenericTimerEnableTimer (\r
22 VOID\r
23 )\r
24{\r
25 UINTN TimerCtrlReg;\r
26\r
27 ArmArchTimerReadReg (CntpCtl, (VOID *)&TimerCtrlReg);\r
28 TimerCtrlReg |= ARM_ARCH_TIMER_ENABLE;\r
29 ArmArchTimerWriteReg (CntpCtl, (VOID *)&TimerCtrlReg);\r
30}\r
31\r
32VOID\r
33EFIAPI\r
34ArmGenericTimerDisableTimer (\r
35 VOID\r
36 )\r
37{\r
38 UINTN TimerCtrlReg;\r
39\r
40 ArmArchTimerReadReg (CntpCtl, (VOID *)&TimerCtrlReg);\r
41 TimerCtrlReg &= ~ARM_ARCH_TIMER_ENABLE;\r
42 ArmArchTimerWriteReg (CntpCtl, (VOID *)&TimerCtrlReg);\r
43}\r
44\r
45VOID\r
46EFIAPI\r
47ArmGenericTimerSetTimerFreq (\r
48 IN UINTN FreqInHz\r
49 )\r
50{\r
51 ArmArchTimerWriteReg (CntFrq, (VOID *)&FreqInHz);\r
52}\r
53\r
54UINTN\r
55EFIAPI\r
56ArmGenericTimerGetTimerFreq (\r
57 VOID\r
58 )\r
59{\r
60 UINTN ArchTimerFreq = 0;\r
61 ArmArchTimerReadReg (CntFrq, (VOID *)&ArchTimerFreq);\r
62 return ArchTimerFreq;\r
63}\r
64\r
65UINTN\r
66EFIAPI\r
67ArmGenericTimerGetTimerVal (\r
68 VOID\r
69 )\r
70{\r
71 UINTN ArchTimerValue;\r
72 ArmArchTimerReadReg (CntpTval, (VOID *)&ArchTimerValue);\r
73\r
74 return ArchTimerValue;\r
75}\r
76\r
77\r
78VOID\r
79EFIAPI\r
80ArmGenericTimerSetTimerVal (\r
81 IN UINTN Value\r
82 )\r
83{\r
84 ArmArchTimerWriteReg (CntpTval, (VOID *)&Value);\r
85}\r
86\r
87UINT64\r
88EFIAPI\r
89ArmGenericTimerGetSystemCount (\r
90 VOID\r
91 )\r
92{\r
93 UINT64 SystemCount;\r
94 ArmArchTimerReadReg (CntPct, (VOID *)&SystemCount);\r
95\r
96 return SystemCount;\r
97}\r
98\r
99UINTN\r
100EFIAPI\r
101ArmGenericTimerGetTimerCtrlReg (\r
102 VOID\r
103 )\r
104{\r
105 UINTN Value;\r
106 ArmArchTimerReadReg (CntpCtl, (VOID *)&Value);\r
107\r
108 return Value;\r
109}\r
110\r
111VOID\r
112EFIAPI\r
113ArmGenericTimerSetTimerCtrlReg (\r
114 UINTN Value\r
115 )\r
116{\r
117 ArmArchTimerWriteReg (CntpCtl, (VOID *)&Value);\r
118}\r
119\r
120UINT64\r
121EFIAPI\r
122ArmGenericTimerGetCompareVal (\r
123 VOID\r
124 )\r
125{\r
126 UINT64 Value;\r
127 ArmArchTimerReadReg (CntpCval, (VOID *)&Value);\r
128\r
129 return Value;\r
130}\r
131\r
132VOID\r
133EFIAPI\r
134ArmGenericTimerSetCompareVal (\r
135 IN UINT64 Value\r
136 )\r
137{\r
138 ArmArchTimerWriteReg (CntpCval, (VOID *)&Value);\r
139}\r