1 #ifndef _OMAP_TIMER_REGISTERS_H
2 #define _OMAP_TIMER_REGISTERS_H
3 
4 
5 /* General-purpose timer register map */
6 #define OMAP3_GPTIMER1_BASE  0x48318000 /* GPTIMER1 physical address */
7 #define OMAP3_GPTIMER2_BASE  0x49032000 /* GPTIMER2 physical address */
8 #define OMAP3_GPTIMER3_BASE  0x49034000 /* GPTIMER3 physical address */
9 #define OMAP3_GPTIMER4_BASE  0x49036000 /* GPTIMER4 physical address */
10 #define OMAP3_GPTIMER5_BASE  0x49038000 /* GPTIMER5 physical address */
11 #define OMAP3_GPTIMER6_BASE  0x4903A000 /* GPTIMER6 physical address */
12 #define OMAP3_GPTIMER7_BASE  0x4903C000 /* GPTIMER7 physical address */
13 #define OMAP3_GPTIMER8_BASE  0x4903E000 /* GPTIMER8 physical address */
14 #define OMAP3_GPTIMER9_BASE  0x49040000 /* GPTIMER9 physical address */
15 #define OMAP3_GPTIMER10_BASE 0x48086000 /* GPTIMER10 physical address */
16 #define OMAP3_GPTIMER11_BASE 0x48088000 /* GPTIMER11 physical address */
17 
18 
19 /* General-purpose timer registers */
20 #define OMAP3_TIMER_TIDR      0x000 /* IP revision code */
21 #define OMAP3_TIMER_TIOCP_CFG 0x010 /* Controls params for GP timer L4 interface */
22 #define OMAP3_TIMER_TISTAT    0x014 /* Status (excl. interrupt status) */
23 #define OMAP3_TIMER_TISR      0x018 /* Pending interrupt status */
24 #define OMAP3_TIMER_TIER      0x01C /* Interrupt enable */
25 #define OMAP3_TIMER_TWER      0x020 /* Wakeup enable */
26 #define OMAP3_TIMER_TCLR      0x024 /* Controls optional features */
27 #define OMAP3_TIMER_TCRR      0x028 /* Internal counter value */
28 #define OMAP3_TIMER_TLDR      0x02C /* Timer load value */
29 #define OMAP3_TIMER_TTGR      0x030 /* Triggers counter reload */
30 #define OMAP3_TIMER_TWPS      0x034 /* Indicates if Write-Posted pending */
31 #define OMAP3_TIMER_TMAR      0x038 /* Value to be compared with counter */
32 #define OMAP3_TIMER_TCAR1     0x03C /* First captured value of counter register */
33 #define OMAP3_TIMER_TSICR     0x040 /* Control posted mode and functional SW reset */
34 #define OMAP3_TIMER_TCAR2     0x044 /* Second captured value of counter register */
35 #define OMAP3_TIMER_TPIR      0x048 /* Positive increment (1 ms tick) */
36 #define OMAP3_TIMER_TNIR      0x04C /* Negative increment (1 ms tick) */
37 #define OMAP3_TIMER_TCVR      0x050 /* Defines TCRR is sub/over-period (1 ms tick) */
38 #define OMAP3_TIMER_TOCR      0x054 /* Masks tick interrupt */
39 #define OMAP3_TIMER_TOWR      0x058 /* Number of masked overflow interrupts */
40 
41 #define AM335X_DMTIMER0_BASE      0x44E05000  /* DMTimer0 Registers */
42 #define AM335X_DMTIMER1_1MS_BASE  0x44E31000 /* DMTimer1 1ms Registers (Accurate 1ms timer) */
43 #define AM335X_DMTIMER2_BASE      0x48040000 /*  DMTimer2 Registers */
44 #define AM335X_DMTIMER3_BASE      0x48042000 /*  DMTimer3 Registers */
45 #define AM335X_DMTIMER4_BASE      0x48044000 /* DMTimer4 Registers  */
46 #define AM335X_DMTIMER5_BASE      0x48046000 /* DMTimer5 Registers  */
47 #define AM335X_DMTIMER6_BASE      0x48048000 /*  DMTimer6 Registers */
48 #define AM335X_DMTIMER7_BASE      0x4804A000 /*  DMTimer7 Registers */
49 
50 /* General-purpose timer registers  AM335x non 1MS timers have different offsets */
51 #define AM335X_TIMER_TIDR             0x000 /* IP revision code */
52 #define AM335X_TIMER_TIOCP_CFG        0x010 /* Controls params for GP timer L4 interface */
53 #define AM335X_TIMER_IRQSTATUS_RAW    0x024 /* Timer IRQSTATUS Raw Register */
54 #define AM335X_TIMER_IRQSTATUS        0x028 /* Timer IRQSTATUS Register */
55 #define AM335X_TIMER_IRQENABLE_SET    0x02C /* Timer IRQENABLE Set Register */
56 #define AM335X_TIMER_IRQENABLE_CLR    0x030 /* Timer IRQENABLE Clear Register */
57 #define AM335X_TIMER_IRQWAKEEN        0x034 /* Timer IRQ Wakeup Enable Register */
58 #define AM335X_TIMER_TCLR      0x038 /* Controls optional features */
59 #define AM335X_TIMER_TCRR      0x03C /* Internal counter value */
60 #define AM335X_TIMER_TLDR      0x040 /* Timer load value */
61 #define AM335X_TIMER_TTGR      0x044 /* Triggers counter reload */
62 #define AM335X_TIMER_TWPS      0x048 /* Indicates if Write-Posted pending */
63 #define AM335X_TIMER_TMAR      0x04C /* Value to be compared with counter */
64 #define AM335X_TIMER_TCAR1     0x050 /* First captured value of counter register */
65 #define AM335X_TIMER_TSICR     0x054 /* Control posted mode and functional SW reset */
66 #define AM335X_TIMER_TCAR2     0x058 /* Second captured value of counter register */
67 
68 #define AM335X_WDT_BASE		0x44E35000	/* watchdog timer */
69 #define AM335X_WDT_WWPS		0x34		/* command posted status */
70 #define AM335X_WDT_WSPR		0x48		/* activate/deactivate sequence */
71 
72 /* Interrupt status register fields */
73 #define OMAP3_TISR_MAT_IT_FLAG  (1 << 0) /* Pending match interrupt status */
74 #define OMAP3_TISR_OVF_IT_FLAG  (1 << 1) /* Pending overflow interrupt status */
75 #define OMAP3_TISR_TCAR_IT_FLAG (1 << 2) /* Pending capture interrupt status */
76 
77 /* Interrupt enable register fields */
78 #define OMAP3_TIER_MAT_IT_ENA  (1 << 0) /* Enable match interrupt */
79 #define OMAP3_TIER_OVF_IT_ENA  (1 << 1) /* Enable overflow interrupt */
80 #define OMAP3_TIER_TCAR_IT_ENA (1 << 2) /* Enable capture interrupt */
81 
82 /* Timer control fields */
83 #define OMAP3_TCLR_ST       (1 << 0)  /* Start/stop timer */
84 #define OMAP3_TCLR_AR       (1 << 1)  /* Autoreload or one-shot mode */
85 #define OMAP3_TCLR_PRE      (1 << 5)  /* Prescaler on */
86 #define OMAP3_TCLR_PTV      2
87 #define OMAP3_TCLR_OVF_TRG  (1 << 10) /* Overflow trigger */
88 
89 
90 #define OMAP3_CM_CLKSEL_GFX		0x48004b40
91 #define OMAP3_CM_CLKEN_PLL		0x48004d00
92 #define OMAP3_CM_FCLKEN1_CORE	0x48004A00
93 #define OMAP3_CM_CLKSEL_CORE	0x48004A40 /* GPT10 src clock sel. */
94 #define OMAP3_CM_FCLKEN_PER		0x48005000
95 #define OMAP3_CM_CLKSEL_PER		0x48005040
96 #define OMAP3_CM_CLKSEL_WKUP    0x48004c40 /* GPT1 source clock selection */
97 
98 
99 #define CM_MODULEMODE_MASK (0x3 << 0)
100 #define CM_MODULEMODE_ENABLE      (0x2 << 0)
101 #define CM_MODULEMODE_DISABLED     (0x0 << 0)
102 
103 #define CM_CLKCTRL_IDLEST         (0x3 << 16)
104 #define CM_CLKCTRL_IDLEST_FUNC    (0x0 << 16)
105 #define CM_CLKCTRL_IDLEST_TRANS   (0x1 << 16)
106 #define CM_CLKCTRL_IDLEST_IDLE    (0x2 << 16)
107 #define CM_CLKCTRL_IDLEST_DISABLE (0x3 << 16)
108 
109 #define CM_WKUP_BASE 0x44E00400 /* Clock Module Wakeup Registers */
110 
111 #define CM_WKUP_TIMER1_CLKCTRL	(CM_WKUP_BASE + 0xC4) /* This register manages the TIMER1 clocks. [Memory Mapped] */
112 
113 
114 #define CM_PER_BASE 0x44E00000 /* Clock Module Peripheral Registers */
115 #define CM_PER_TIMER7_CLKCTRL	(CM_PER_BASE + 0x7C) /* This register manages the TIMER7 clocks. [Memory Mapped] */
116 
117 
118 
119 /* CM_DPLL registers */
120 
121 
122 #define CM_DPLL_BASE 	0x44E00500 /* Clock Module PLL Registers */
123 
124 #define CLKSEL_TIMER1MS_CLK (CM_DPLL_BASE + 0x28)
125 
126 
127 #define CLKSEL_TIMER1MS_CLK_SEL_MASK (0x7 << 0)
128 #define CLKSEL_TIMER1MS_CLK_SEL_SEL1 (0x0 << 0) /* Select CLK_M_OSC clock */
129 #define CLKSEL_TIMER1MS_CLK_SEL_SEL2 (0x1 << 0) /* Select CLK_32KHZ clock */
130 #define CLKSEL_TIMER1MS_CLK_SEL_SEL3 (0x2 << 0) /* Select TCLKIN clock */
131 #define CLKSEL_TIMER1MS_CLK_SEL_SEL4 (0x3 << 0) /* Select CLK_RC32K clock */
132 #define CLKSEL_TIMER1MS_CLK_SEL_SEL5 (0x4 << 0) /* Selects the CLK_32768 from 32KHz Crystal Osc */
133 
134 #define CLKSEL_TIMER7_CLK   (CM_DPLL_BASE + 0x04)
135 #define CLKSEL_TIMER7_CLK_SEL_MASK (0x3 << 0)
136 #define CLKSEL_TIMER7_CLK_SEL_SEL1 (0x0 << 0) /* Select TCLKIN clock */
137 #define CLKSEL_TIMER7_CLK_SEL_SEL2 (0x1 << 0) /* Select CLK_M_OSC clock */
138 #define CLKSEL_TIMER7_CLK_SEL_SEL3 (0x2 << 0) /* Select CLK_32KHZ clock */
139 #define CLKSEL_TIMER7_CLK_SEL_SEL4 (0x3 << 0) /* Reserved */
140 
141 
142 
143 
144 #define OMAP3_CLKSEL_GPT1    (1 << 0)   /* Selects GPTIMER 1 source
145 					 * clock:
146 					 *
147 					 *  0: use 32KHz clock
148 					 *  1: sys clock)
149 					 */
150 #define OMAP3_CLKSEL_GPT10    (1 << 6)
151 #define OMAP3_CLKSEL_GPT11    (1 << 7)
152 
153 
154 #define TIMER_FREQ  1000    /* clock frequency for OMAP timer (1ms) */
155 #define TIMER_COUNT(freq) (TIMER_FREQ/(freq)) /* initial value for counter*/
156 
157 #endif /* _OMAP_TIMER_REGISTERS_H */
158