96 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _OMAP_TIMER_H
 | |
| #define _OMAP_TIMER_H
 | |
| 
 | |
| /* General-purpose timer register map */
 | |
| #define OMAP3_GPTIMER1_BASE  0x48318000 /* GPTIMER1 physical address */
 | |
| #define OMAP3_GPTIMER2_BASE  0x49032000 /* GPTIMER2 physical address */
 | |
| #define OMAP3_GPTIMER3_BASE  0x49034000 /* GPTIMER3 physical address */
 | |
| #define OMAP3_GPTIMER4_BASE  0x49036000 /* GPTIMER4 physical address */
 | |
| #define OMAP3_GPTIMER5_BASE  0x49038000 /* GPTIMER5 physical address */
 | |
| #define OMAP3_GPTIMER6_BASE  0x4903A000 /* GPTIMER6 physical address */
 | |
| #define OMAP3_GPTIMER7_BASE  0x4903C000 /* GPTIMER7 physical address */
 | |
| #define OMAP3_GPTIMER8_BASE  0x4903E000 /* GPTIMER8 physical address */
 | |
| #define OMAP3_GPTIMER9_BASE  0x49040000 /* GPTIMER9 physical address */
 | |
| #define OMAP3_GPTIMER10_BASE 0x48086000 /* GPTIMER10 physical address */
 | |
| #define OMAP3_GPTIMER11_BASE 0x48088000 /* GPTIMER11 physical address */
 | |
| 
 | |
| /* General-purpose timer registers */
 | |
| #define OMAP3_TIDR      0x000 /* IP revision code */
 | |
| #define OMAP3_TIOCP_CFG 0x010 /* Controls params for GP timer L4 interface */
 | |
| #define OMAP3_TISTAT    0x014 /* Status (excl. interrupt status) */
 | |
| #define OMAP3_TISR      0x018 /* Pending interrupt status */
 | |
| #define OMAP3_TIER      0x01C /* Interrupt enable */
 | |
| #define OMAP3_TWER      0x020 /* Wakeup enable */
 | |
| #define OMAP3_TCLR      0x024 /* Controls optional features */
 | |
| #define OMAP3_TCRR      0x028 /* Internal counter value */
 | |
| #define OMAP3_TLDR      0x02C /* Timer load value */
 | |
| #define OMAP3_TTGR      0x030 /* Triggers counter reload */
 | |
| #define OMAP3_TWPS      0x034 /* Indicates if Write-Posted pending */
 | |
| #define OMAP3_TMAR      0x038 /* Value to be compared with counter */
 | |
| #define OMAP3_TCAR1     0x03C /* First captured value of counter register */
 | |
| #define OMAP3_TSICR     0x040 /* Control posted mode and functional SW reset */
 | |
| #define OMAP3_TCAR2     0x044 /* Second captured value of counter register */
 | |
| #define OMAP3_TPIR      0x048 /* Positive increment (1 ms tick) */
 | |
| #define OMAP3_TNIR      0x04C /* Negative increment (1 ms tick) */
 | |
| #define OMAP3_TCVR      0x050 /* Defines TCRR is sub/over-period (1 ms tick) */
 | |
| #define OMAP3_TOCR      0x054 /* Masks tick interrupt */
 | |
| #define OMAP3_TOWR      0x058 /* Number of masked overflow interrupts */
 | |
| 
 | |
| /* Interrupt status register fields */
 | |
| #define OMAP3_TISR_MAT_IT_FLAG  (1 << 0) /* Pending match interrupt status */
 | |
| #define OMAP3_TISR_OVF_IT_FLAG  (1 << 1) /* Pending overflow interrupt status */
 | |
| #define OMAP3_TISR_TCAR_IT_FLAG (1 << 2) /* Pending capture interrupt status */
 | |
| 
 | |
| /* Interrupt enable register fields */
 | |
| #define OMAP3_TIER_MAT_IT_ENA  (1 << 0) /* Enable match interrupt */
 | |
| #define OMAP3_TIER_OVF_IT_ENA  (1 << 1) /* Enable overflow interrupt */
 | |
| #define OMAP3_TIER_TCAR_IT_ENA (1 << 2) /* Enable capture interrupt */
 | |
| 
 | |
| /* Timer control fields */
 | |
| #define OMAP3_TCLR_ST       (1 << 0)  /* Start/stop timer */
 | |
| #define OMAP3_TCLR_AR       (1 << 1)  /* Autoreload or one-shot mode */
 | |
| #define OMAP3_TCLR_OVF_TRG  (1 << 10) /* Overflow trigger */
 | |
| 
 | |
| #define OMAP3_GPTIMER1_TIDR      (OMAP3_GPTIMER1_BASE + OMAP3_TIDR)
 | |
| #define OMAP3_GPTIMER1_TIOCP_CFG (OMAP3_GPTIMER1_BASE + OMAP3_TIOCP_CFG)
 | |
| #define OMAP3_GPTIMER1_TISTAT    (OMAP3_GPTIMER1_BASE + OMAP3_TISTAT)
 | |
| #define OMAP3_GPTIMER1_TISR      (OMAP3_GPTIMER1_BASE + OMAP3_TISR)
 | |
| #define OMAP3_GPTIMER1_TIER      (OMAP3_GPTIMER1_BASE + OMAP3_TIER)
 | |
| #define OMAP3_GPTIMER1_TWER      (OMAP3_GPTIMER1_BASE + OMAP3_TWER)
 | |
| #define OMAP3_GPTIMER1_TCLR      (OMAP3_GPTIMER1_BASE + OMAP3_TCLR)
 | |
| #define OMAP3_GPTIMER1_TCRR      (OMAP3_GPTIMER1_BASE + OMAP3_TCRR)
 | |
| #define OMAP3_GPTIMER1_TLDR      (OMAP3_GPTIMER1_BASE + OMAP3_TLDR)
 | |
| #define OMAP3_GPTIMER1_TTGR      (OMAP3_GPTIMER1_BASE + OMAP3_TTGR)
 | |
| #define OMAP3_GPTIMER1_TWPS      (OMAP3_GPTIMER1_BASE + OMAP3_TWPS)
 | |
| #define OMAP3_GPTIMER1_TMAR      (OMAP3_GPTIMER1_BASE + OMAP3_TMAR)
 | |
| #define OMAP3_GPTIMER1_TCAR1     (OMAP3_GPTIMER1_BASE + OMAP3_TCAR1)
 | |
| #define OMAP3_GPTIMER1_TSICR     (OMAP3_GPTIMER1_BASE + OMAP3_TSICR)
 | |
| #define OMAP3_GPTIMER1_TCAR2     (OMAP3_GPTIMER1_BASE + OMAP3_TCAR2)
 | |
| #define OMAP3_GPTIMER1_TPIR      (OMAP3_GPTIMER1_BASE + OMAP3_TPIR)
 | |
| #define OMAP3_GPTIMER1_TNIR      (OMAP3_GPTIMER1_BASE + OMAP3_TNIR)
 | |
| #define OMAP3_GPTIMER1_TCVR      (OMAP3_GPTIMER1_BASE + OMAP3_TCVR)
 | |
| #define OMAP3_GPTIMER1_TOCR      (OMAP3_GPTIMER1_BASE + OMAP3_TOCR)
 | |
| #define OMAP3_GPTIMER1_TOWR      (OMAP3_GPTIMER1_BASE + OMAP3_TOWR)
 | |
| 
 | |
| #define OMAP3_CM_CLKSEL_WKUP 0x48004c40 /* source clock selection */
 | |
| #define OMAP3_CLKSEL_GPT1    (1 << 0)   /* Selects GPTIMER 1 source
 | |
| 					 * clock:
 | |
| 					 *
 | |
| 					 *  0: use 32KHz clock
 | |
| 					 *  1: sys clock)
 | |
| 					 */
 | |
| 
 | |
| #define TIMER_FREQ  1000    /* clock frequency for OMAP timer (1ms) */
 | |
| #define TIMER_COUNT(freq) (TIMER_FREQ/(freq)) /* initial value for counter*/
 | |
| 
 | |
| #ifndef __ASSEMBLY__
 | |
| 
 | |
| void omap3_timer_init(unsigned freq);
 | |
| void omap3_timer_stop(void);
 | |
| int omap3_register_timer_handler(const irq_handler_t handler);
 | |
| void omap3_timer_int_handler(void);
 | |
| 
 | |
| #endif /* __ASSEMBLY__ */
 | |
| 
 | |
| #endif /* _OMAP_TIMER_H */
 | 
