]> git.proxmox.com Git - mirror_edk2.git/blob - ArmRealViewEbPkg/Include/ArmEb/ArmEbTimer.h
Remove ArmEbPkg and replace with ArmRealViewEbPkg. Ported ArmRealViewEbPkg to have...
[mirror_edk2.git] / ArmRealViewEbPkg / Include / ArmEb / ArmEbTimer.h
1 /*++
2
3 Copyright (c) 2009, Hewlett-Packard Company. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 Timer.h
15
16 Abstract:
17
18 Driver implementing the EFI 2.0 timer protocol using the ARM SP804 timer.
19
20 --*/
21
22 #ifndef _TIMER_SP804_H__
23 #define _TIMER_SP804_H__
24
25
26
27 // EB board constants
28 #define EB_SP810_CTRL_BASE 0x10001000
29 #define EB_SP804_TIMER0_BASE 0x10011000
30 #define EB_SP804_TIMER1_BASE 0x10011020
31 #define EB_SP804_TIMER2_BASE 0x10012000
32 #define EB_SP804_TIMER3_BASE 0x10012020
33
34 #define EB_TIMER01_INTERRUPT_NUM 36
35 #define EB_TIMER23_INTERRUPT_NUM 37
36
37 // SP804 Timer constants
38 #define SP804_TIMER_LOAD_REG 0x00
39 #define SP804_TIMER_CURRENT_REG 0x04
40 #define SP804_TIMER_CONTROL_REG 0x08
41 #define SP804_TIMER_INT_CLR_REG 0x0C
42 #define SP804_TIMER_RAW_INT_STS_REG 0x10
43 #define SP804_TIMER_MSK_INT_STS_REG 0x14
44 #define SP804_TIMER_BG_LOAD_REG 0x18
45
46 // Timer control register bit definitions
47 #define SP804_TIMER_CTRL_ONESHOT BIT0
48 #define SP804_TIMER_CTRL_32BIT BIT1
49 #define SP804_TIMER_CTRL_PRESCALE_MASK (BIT3|BIT2)
50 #define SP804_PRESCALE_DIV_1 0
51 #define SP804_PRESCALE_DIV_16 BIT2
52 #define SP804_PRESCALE_DIV_256 BIT3
53 #define SP804_TIMER_CTRL_INT_ENABLE BIT5
54 #define SP804_TIMER_CTRL_PERIODIC BIT6
55 #define SP804_TIMER_CTRL_ENABLE BIT7
56
57 // SP810 System Controller constants
58 #define SP810_SYS_CTRL_REG 0x00
59 #define SP810_SYS_CTRL_TIMER0_TIMCLK BIT15 // 0=REFCLK, 1=TIMCLK
60 #define SP810_SYS_CTRL_TIMER0_EN BIT16
61 #define SP810_SYS_CTRL_TIMER1_TIMCLK BIT17 // 0=REFCLK, 1=TIMCLK
62 #define SP810_SYS_CTRL_TIMER1_EN BIT18
63 #define SP810_SYS_CTRL_TIMER2_TIMCLK BIT19 // 0=REFCLK, 1=TIMCLK
64 #define SP810_SYS_CTRL_TIMER2_EN BIT20
65 #define SP810_SYS_CTRL_TIMER3_TIMCLK BIT21 // 0=REFCLK, 1=TIMCLK
66 #define SP810_SYS_CTRL_TIMER3_EN BIT22
67
68 // default timer tick period - 1ms, or 10000 units of 100ns
69 //#define TIMER_DEFAULT_PERIOD 10000
70
71 // default timer tick period - 50ms, or 500000 units of 100ns
72 #define TIMER_DEFAULT_PERIOD 500000
73
74 // default timer tick period - 500ms, or 5000000 units of 100ns
75 //#define TIMER_DEFAULT_PERIOD 5000000
76
77 #endif
78