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