1*819833afSPeter Tyser /* 2*819833afSPeter Tyser * timer.h -- ColdFire internal TIMER support defines. 3*819833afSPeter Tyser * 4*819833afSPeter Tyser * Copyright (C) 2004-2007 Freescale Semiconductor, Inc. 5*819833afSPeter Tyser * TsiChung Liew (Tsi-Chung.Liew@freescale.com) 6*819833afSPeter Tyser * 7*819833afSPeter Tyser * See file CREDITS for list of people who contributed to this 8*819833afSPeter Tyser * project. 9*819833afSPeter Tyser * 10*819833afSPeter Tyser * This program is free software; you can redistribute it and/or 11*819833afSPeter Tyser * modify it under the terms of the GNU General Public License as 12*819833afSPeter Tyser * published by the Free Software Foundation; either version 2 of 13*819833afSPeter Tyser * the License, or (at your option) any later version. 14*819833afSPeter Tyser * 15*819833afSPeter Tyser * This program is distributed in the hope that it will be useful, 16*819833afSPeter Tyser * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*819833afSPeter Tyser * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*819833afSPeter Tyser * GNU General Public License for more details. 19*819833afSPeter Tyser * 20*819833afSPeter Tyser * You should have received a copy of the GNU General Public License 21*819833afSPeter Tyser * along with this program; if not, write to the Free Software 22*819833afSPeter Tyser * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 23*819833afSPeter Tyser * MA 02111-1307 USA 24*819833afSPeter Tyser */ 25*819833afSPeter Tyser 26*819833afSPeter Tyser /****************************************************************************/ 27*819833afSPeter Tyser #ifndef timer_h 28*819833afSPeter Tyser #define timer_h 29*819833afSPeter Tyser /****************************************************************************/ 30*819833afSPeter Tyser 31*819833afSPeter Tyser /****************************************************************************/ 32*819833afSPeter Tyser /* Timer structure */ 33*819833afSPeter Tyser /****************************************************************************/ 34*819833afSPeter Tyser /* DMA Timer module registers */ 35*819833afSPeter Tyser typedef struct dtimer_ctrl { 36*819833afSPeter Tyser #if defined(CONFIG_M5249) || defined(CONFIG_M5253) || defined(CONFIG_M5272) 37*819833afSPeter Tyser u16 tmr; /* 0x00 Mode register */ 38*819833afSPeter Tyser u16 res1; /* 0x02 */ 39*819833afSPeter Tyser u16 trr; /* 0x04 Reference register */ 40*819833afSPeter Tyser u16 res2; /* 0x06 */ 41*819833afSPeter Tyser u16 tcr; /* 0x08 Capture register */ 42*819833afSPeter Tyser u16 res3; /* 0x0A */ 43*819833afSPeter Tyser u16 tcn; /* 0x0C Counter register */ 44*819833afSPeter Tyser u16 res4; /* 0x0E */ 45*819833afSPeter Tyser u8 res6; /* 0x10 */ 46*819833afSPeter Tyser u8 ter; /* 0x11 Event register */ 47*819833afSPeter Tyser u16 res7; /* 0x12 */ 48*819833afSPeter Tyser #else 49*819833afSPeter Tyser u16 tmr; /* 0x00 Mode register */ 50*819833afSPeter Tyser u8 txmr; /* 0x02 Extended Mode register */ 51*819833afSPeter Tyser u8 ter; /* 0x03 Event register */ 52*819833afSPeter Tyser u32 trr; /* 0x04 Reference register */ 53*819833afSPeter Tyser u32 tcr; /* 0x08 Capture register */ 54*819833afSPeter Tyser u32 tcn; /* 0x0C Counter register */ 55*819833afSPeter Tyser #endif 56*819833afSPeter Tyser } dtmr_t; 57*819833afSPeter Tyser 58*819833afSPeter Tyser /*Programmable Interrupt Timer */ 59*819833afSPeter Tyser typedef struct pit_ctrl { 60*819833afSPeter Tyser u16 pcsr; /* 0x00 Control and Status Register */ 61*819833afSPeter Tyser u16 pmr; /* 0x02 Modulus Register */ 62*819833afSPeter Tyser u16 pcntr; /* 0x04 Count Register */ 63*819833afSPeter Tyser } pit_t; 64*819833afSPeter Tyser 65*819833afSPeter Tyser /********************************************************************* 66*819833afSPeter Tyser * DMA Timers (DTIM) 67*819833afSPeter Tyser *********************************************************************/ 68*819833afSPeter Tyser /* Bit definitions and macros for DTMR */ 69*819833afSPeter Tyser #define DTIM_DTMR_RST (0x0001) /* Reset */ 70*819833afSPeter Tyser #define DTIM_DTMR_CLK(x) (((x)&0x0003)<<1) /* Input clock source */ 71*819833afSPeter Tyser #define DTIM_DTMR_FRR (0x0008) /* Free run/restart */ 72*819833afSPeter Tyser #define DTIM_DTMR_ORRI (0x0010) /* Output reference request/interrupt enable */ 73*819833afSPeter Tyser #define DTIM_DTMR_OM (0x0020) /* Output Mode */ 74*819833afSPeter Tyser #define DTIM_DTMR_CE(x) (((x)&0x0003)<<6) /* Capture Edge */ 75*819833afSPeter Tyser #define DTIM_DTMR_PS(x) (((x)&0x00FF)<<8) /* Prescaler value */ 76*819833afSPeter Tyser #define DTIM_DTMR_RST_EN (0x0001) 77*819833afSPeter Tyser #define DTIM_DTMR_RST_RST (0x0000) 78*819833afSPeter Tyser #define DTIM_DTMR_CE_ANY (0x00C0) 79*819833afSPeter Tyser #define DTIM_DTMR_CE_FALL (0x0080) 80*819833afSPeter Tyser #define DTIM_DTMR_CE_RISE (0x0040) 81*819833afSPeter Tyser #define DTIM_DTMR_CE_NONE (0x0000) 82*819833afSPeter Tyser #define DTIM_DTMR_CLK_DTIN (0x0006) 83*819833afSPeter Tyser #define DTIM_DTMR_CLK_DIV16 (0x0004) 84*819833afSPeter Tyser #define DTIM_DTMR_CLK_DIV1 (0x0002) 85*819833afSPeter Tyser #define DTIM_DTMR_CLK_STOP (0x0000) 86*819833afSPeter Tyser 87*819833afSPeter Tyser /* Bit definitions and macros for DTXMR */ 88*819833afSPeter Tyser #define DTIM_DTXMR_MODE16 (0x01) /* Increment Mode */ 89*819833afSPeter Tyser #define DTIM_DTXMR_DMAEN (0x80) /* DMA request */ 90*819833afSPeter Tyser 91*819833afSPeter Tyser /* Bit definitions and macros for DTER */ 92*819833afSPeter Tyser #define DTIM_DTER_CAP (0x01) /* Capture event */ 93*819833afSPeter Tyser #define DTIM_DTER_REF (0x02) /* Output reference event */ 94*819833afSPeter Tyser 95*819833afSPeter Tyser /********************************************************************* 96*819833afSPeter Tyser * 97*819833afSPeter Tyser * Programmable Interrupt Timer Modules (PIT) 98*819833afSPeter Tyser * 99*819833afSPeter Tyser *********************************************************************/ 100*819833afSPeter Tyser 101*819833afSPeter Tyser /* Bit definitions and macros for PCSR */ 102*819833afSPeter Tyser #define PIT_PCSR_EN (0x0001) 103*819833afSPeter Tyser #define PIT_PCSR_RLD (0x0002) 104*819833afSPeter Tyser #define PIT_PCSR_PIF (0x0004) 105*819833afSPeter Tyser #define PIT_PCSR_PIE (0x0008) 106*819833afSPeter Tyser #define PIT_PCSR_OVW (0x0010) 107*819833afSPeter Tyser #define PIT_PCSR_HALTED (0x0020) 108*819833afSPeter Tyser #define PIT_PCSR_DOZE (0x0040) 109*819833afSPeter Tyser #define PIT_PCSR_PRE(x) (((x)&0x000F)<<8) 110*819833afSPeter Tyser 111*819833afSPeter Tyser /* Bit definitions and macros for PMR */ 112*819833afSPeter Tyser #define PIT_PMR_PM(x) (x) 113*819833afSPeter Tyser 114*819833afSPeter Tyser /* Bit definitions and macros for PCNTR */ 115*819833afSPeter Tyser #define PIT_PCNTR_PC(x) (x) 116*819833afSPeter Tyser 117*819833afSPeter Tyser /****************************************************************************/ 118*819833afSPeter Tyser #endif /* timer_h */ 119