1819833afSPeter Tyser /* 2819833afSPeter Tyser * timer.h -- ColdFire internal TIMER support defines. 3819833afSPeter Tyser * 4819833afSPeter Tyser * Copyright (C) 2004-2007 Freescale Semiconductor, Inc. 5819833afSPeter Tyser * TsiChung Liew (Tsi-Chung.Liew@freescale.com) 6819833afSPeter Tyser * 71a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 8819833afSPeter Tyser */ 9819833afSPeter Tyser 10819833afSPeter Tyser /****************************************************************************/ 11819833afSPeter Tyser #ifndef timer_h 12819833afSPeter Tyser #define timer_h 13819833afSPeter Tyser /****************************************************************************/ 14819833afSPeter Tyser 15819833afSPeter Tyser /****************************************************************************/ 16819833afSPeter Tyser /* Timer structure */ 17819833afSPeter Tyser /****************************************************************************/ 18819833afSPeter Tyser /* DMA Timer module registers */ 19819833afSPeter Tyser typedef struct dtimer_ctrl { 20*e77e65dfSangelo@sysam.it #if defined(CONFIG_M5249) || defined(CONFIG_M5253) || \ 21*e77e65dfSangelo@sysam.it defined(CONFIG_M5272) || defined(CONFIG_M5307) 22819833afSPeter Tyser u16 tmr; /* 0x00 Mode register */ 23819833afSPeter Tyser u16 res1; /* 0x02 */ 24819833afSPeter Tyser u16 trr; /* 0x04 Reference register */ 25819833afSPeter Tyser u16 res2; /* 0x06 */ 26819833afSPeter Tyser u16 tcr; /* 0x08 Capture register */ 27819833afSPeter Tyser u16 res3; /* 0x0A */ 28819833afSPeter Tyser u16 tcn; /* 0x0C Counter register */ 29819833afSPeter Tyser u16 res4; /* 0x0E */ 30819833afSPeter Tyser u8 res6; /* 0x10 */ 31819833afSPeter Tyser u8 ter; /* 0x11 Event register */ 32819833afSPeter Tyser u16 res7; /* 0x12 */ 33819833afSPeter Tyser #else 34819833afSPeter Tyser u16 tmr; /* 0x00 Mode register */ 35819833afSPeter Tyser u8 txmr; /* 0x02 Extended Mode register */ 36819833afSPeter Tyser u8 ter; /* 0x03 Event register */ 37819833afSPeter Tyser u32 trr; /* 0x04 Reference register */ 38819833afSPeter Tyser u32 tcr; /* 0x08 Capture register */ 39819833afSPeter Tyser u32 tcn; /* 0x0C Counter register */ 40819833afSPeter Tyser #endif 41819833afSPeter Tyser } dtmr_t; 42819833afSPeter Tyser 43819833afSPeter Tyser /*Programmable Interrupt Timer */ 44819833afSPeter Tyser typedef struct pit_ctrl { 45819833afSPeter Tyser u16 pcsr; /* 0x00 Control and Status Register */ 46819833afSPeter Tyser u16 pmr; /* 0x02 Modulus Register */ 47819833afSPeter Tyser u16 pcntr; /* 0x04 Count Register */ 48819833afSPeter Tyser } pit_t; 49819833afSPeter Tyser 50819833afSPeter Tyser /********************************************************************* 51819833afSPeter Tyser * DMA Timers (DTIM) 52819833afSPeter Tyser *********************************************************************/ 53819833afSPeter Tyser /* Bit definitions and macros for DTMR */ 54819833afSPeter Tyser #define DTIM_DTMR_RST (0x0001) /* Reset */ 55819833afSPeter Tyser #define DTIM_DTMR_CLK(x) (((x)&0x0003)<<1) /* Input clock source */ 56819833afSPeter Tyser #define DTIM_DTMR_FRR (0x0008) /* Free run/restart */ 57819833afSPeter Tyser #define DTIM_DTMR_ORRI (0x0010) /* Output reference request/interrupt enable */ 58819833afSPeter Tyser #define DTIM_DTMR_OM (0x0020) /* Output Mode */ 59819833afSPeter Tyser #define DTIM_DTMR_CE(x) (((x)&0x0003)<<6) /* Capture Edge */ 60819833afSPeter Tyser #define DTIM_DTMR_PS(x) (((x)&0x00FF)<<8) /* Prescaler value */ 61819833afSPeter Tyser #define DTIM_DTMR_RST_EN (0x0001) 62819833afSPeter Tyser #define DTIM_DTMR_RST_RST (0x0000) 63819833afSPeter Tyser #define DTIM_DTMR_CE_ANY (0x00C0) 64819833afSPeter Tyser #define DTIM_DTMR_CE_FALL (0x0080) 65819833afSPeter Tyser #define DTIM_DTMR_CE_RISE (0x0040) 66819833afSPeter Tyser #define DTIM_DTMR_CE_NONE (0x0000) 67819833afSPeter Tyser #define DTIM_DTMR_CLK_DTIN (0x0006) 68819833afSPeter Tyser #define DTIM_DTMR_CLK_DIV16 (0x0004) 69819833afSPeter Tyser #define DTIM_DTMR_CLK_DIV1 (0x0002) 70819833afSPeter Tyser #define DTIM_DTMR_CLK_STOP (0x0000) 71819833afSPeter Tyser 72819833afSPeter Tyser /* Bit definitions and macros for DTXMR */ 73819833afSPeter Tyser #define DTIM_DTXMR_MODE16 (0x01) /* Increment Mode */ 74819833afSPeter Tyser #define DTIM_DTXMR_DMAEN (0x80) /* DMA request */ 75819833afSPeter Tyser 76819833afSPeter Tyser /* Bit definitions and macros for DTER */ 77819833afSPeter Tyser #define DTIM_DTER_CAP (0x01) /* Capture event */ 78819833afSPeter Tyser #define DTIM_DTER_REF (0x02) /* Output reference event */ 79819833afSPeter Tyser 80819833afSPeter Tyser /********************************************************************* 81819833afSPeter Tyser * 82819833afSPeter Tyser * Programmable Interrupt Timer Modules (PIT) 83819833afSPeter Tyser * 84819833afSPeter Tyser *********************************************************************/ 85819833afSPeter Tyser 86819833afSPeter Tyser /* Bit definitions and macros for PCSR */ 87819833afSPeter Tyser #define PIT_PCSR_EN (0x0001) 88819833afSPeter Tyser #define PIT_PCSR_RLD (0x0002) 89819833afSPeter Tyser #define PIT_PCSR_PIF (0x0004) 90819833afSPeter Tyser #define PIT_PCSR_PIE (0x0008) 91819833afSPeter Tyser #define PIT_PCSR_OVW (0x0010) 92819833afSPeter Tyser #define PIT_PCSR_HALTED (0x0020) 93819833afSPeter Tyser #define PIT_PCSR_DOZE (0x0040) 94819833afSPeter Tyser #define PIT_PCSR_PRE(x) (((x)&0x000F)<<8) 95819833afSPeter Tyser 96819833afSPeter Tyser /* Bit definitions and macros for PMR */ 97819833afSPeter Tyser #define PIT_PMR_PM(x) (x) 98819833afSPeter Tyser 99819833afSPeter Tyser /* Bit definitions and macros for PCNTR */ 100819833afSPeter Tyser #define PIT_PCNTR_PC(x) (x) 101819833afSPeter Tyser 102819833afSPeter Tyser /****************************************************************************/ 103819833afSPeter Tyser #endif /* timer_h */ 104