| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- /**
- * \file dmtimer.h
- *
- * \brief DMTimer API prototypes and macros.
- *
- * This file contains the driver API prototypes and macro definitions.
- */
- /*
- * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
- */
- /*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of Texas Instruments Incorporated nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
- #ifndef _DMTIMER_H_
- #define _DMTIMER_H_
- #include "hw_dmtimer.h"
- #include "hw_types.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*****************************************************************************/
- /*
- ** Values that can be passed to DMTimerPreScalerClkEnable as ptv so as to derive
- ** Pre-Scalar clock from timer clock.
- */
- /* Value used to divide timer clock by 2 */
- #define DMTIMER_PRESCALER_CLK_DIV_BY_2 ((0 << DMTIMER_TCLR_PTV_SHIFT) | \
- DMTIMER_TCLR_PRE)
- /* Value used to divide timer clock by 4 */
- #define DMTIMER_PRESCALER_CLK_DIV_BY_4 ((1 << DMTIMER_TCLR_PTV_SHIFT) | \
- DMTIMER_TCLR_PRE)
- /* Value used to divide timer clock by 8 */
- #define DMTIMER_PRESCALER_CLK_DIV_BY_8 ((2 << DMTIMER_TCLR_PTV_SHIFT) | \
- DMTIMER_TCLR_PRE)
- /* Value used to divide timer clock by 16 */
- #define DMTIMER_PRESCALER_CLK_DIV_BY_16 ((3 << DMTIMER_TCLR_PTV_SHIFT) | \
- DMTIMER_TCLR_PRE)
- /* Value used to divide timer clock by 32 */
- #define DMTIMER_PRESCALER_CLK_DIV_BY_32 ((4 << DMTIMER_TCLR_PTV_SHIFT) | \
- DMTIMER_TCLR_PRE)
- /* Value used to divide timer clock by 64 */
- #define DMTIMER_PRESCALER_CLK_DIV_BY_64 ((5 << DMTIMER_TCLR_PTV_SHIFT) | \
- DMTIMER_TCLR_PRE)
- /* Value used to divide timer clock by 128 */
- #define DMTIMER_PRESCALER_CLK_DIV_BY_128 ((6 << DMTIMER_TCLR_PTV_SHIFT) | \
- DMTIMER_TCLR_PRE)
- /* Value used to divide timer clock by 256 */
- #define DMTIMER_PRESCALER_CLK_DIV_BY_256 ((7 << DMTIMER_TCLR_PTV_SHIFT) | \
- DMTIMER_TCLR_PRE)
- /******************************************************************************/
- /*
- ** Values that can be passed to DMTimerModeConfigure as timerMode.
- */
- /* Value used to enable the timer in one-shot and compare mode */
- #define DMTIMER_ONESHOT_CMP_ENABLE (DMTIMER_TCLR_CE)
- /* Value used to enable the timer only in one-shot mode */
- #define DMTIMER_ONESHOT_NOCMP_ENABLE (0x0000000)
- /* Value used to enable the timer in auto-reload and compare mode */
- #define DMTIMER_AUTORLD_CMP_ENABLE (DMTIMER_TCLR_AR | DMTIMER_TCLR_CE)
- /* Value used to enable the timer only in auto-reload mode */
- #define DMTIMER_AUTORLD_NOCMP_ENABLE (DMTIMER_TCLR_AR)
- /******************************************************************************/
- /*
- ** Values that can be passed to DMTimerGPOConfigure as gpoCfg.
- */
- /* Value used to drive 0 on PORGPOCFG pin */
- #define DMTIMER_GPO_CFG_0 (DMTIMER_TCLR_GPO_CFG_DRIVE0)
- /* Value used to drive 1 on PORGPOCFG pin */
- #define DMTIMER_GPO_CFG_1 (DMTIMER_TCLR_GPO_CFG_DRIVE1 << \
- DMTIMER_TCLR_GPO_CFG_SHIFT)
- /******************************************************************************/
- /*
- ** Values that can be passed to DMTimerIntStatusClear/DMTimerIntRawStatusSet/
- ** as intFlags. Also these values can be used while checking the status got from
- ** DMTimerIntRawStatusGet/DMTimerIntStatusGet.
- ** Any combination is also followed.
- ** Example- (DMTIMER_INT_TCAR_IT_FLAG | DMTIMER_INT_OVF_IT_FLAG)
- */
- /* Value used for capture event of DMTimer */
- #define DMTIMER_INT_TCAR_IT_FLAG (DMTIMER_IRQSTATUS_RAW_TCAR_IT_FLAG)
- /* Value used for overflow event of DMTimer */
- #define DMTIMER_INT_OVF_IT_FLAG (DMTIMER_IRQSTATUS_RAW_OVF_IT_FLAG)
- /* Value used for Match event of DMTimer */
- #define DMTIMER_INT_MAT_IT_FLAG (DMTIMER_IRQSTATUS_RAW_MAT_IT_FLAG)
- /******************************************************************************/
- /*
- ** Values that can be passed to DMTimerIntEnable/DMTimerIntDisable as intFlags.
- ** Also these values can be used while checking the status got from
- ** DMTimerIntEnableGet.
- ** Any combination is also followed.
- ** Example- (DMTIMER_INT_TCAR_EN_FLAG | DMTIMER_INT_OVF_EN_FLAG)
- */
- /* Value used for capture event of DMTimer */
- #define DMTIMER_INT_TCAR_EN_FLAG (DMTIMER_IRQENABLE_SET_TCAR_EN_FLAG)
- /* Value used for overflow event of DMTimer */
- #define DMTIMER_INT_OVF_EN_FLAG (DMTIMER_IRQENABLE_SET_OVF_EN_FLAG)
- /* Value used for Match event of DMTimer */
- #define DMTIMER_INT_MAT_EN_FLAG (DMTIMER_IRQENABLE_SET_MAT_EN_FLAG)
- /******************************************************************************/
- /*
- ** Values that can be passed to DMTimerResetConfigure as rstOption.
- */
- /* Value used to enable software reset for DMTimer */
- #define DMTIMER_SFT_RESET_ENABLE (DMTIMER_TSICR_SFT_RESETENABLE)
- /* Value used to disable software reset for DMTimer */
- #define DMTIMER_SFT_RESET_DISABLE (DMTIMER_TSICR_SFT)
- /******************************************************************************/
- /*
- ** Values that can be used while checking the status received from
- ** DMTimerIsResetDone.
- */
- /* Value used to check whether reset is done */
- #define DMTIMER_IS_RESET_DONE (DMTIMER_TIOCP_CFG_SOFTRESET_DONE)
- /* Value used to check whether reset is ongoing */
- #define DMTIMER_IS_RESET_ONGOING (DMTIMER_TIOCP_CFG_SOFTRESET_ONGOING)
- /******************************************************************************/
- /*
- ** Values that can be passed to DMTimerPostedModeConfig as postMode.
- */
- /* Value used to enable the posted mode of operation */
- #define DMTIMER_POSTED (DMTIMER_TSICR_POSTED)
- /* Value used to disable the posted mode of operation */
- #define DMTIMER_NONPOSTED (DMTIMER_TSICR_POSTED_INACTIVE)
- /******************************************************************************/
- /*
- ** Values that can be used while checking status received from
- ** DMTimerWritePostedStatusGet API.
- */
- /* Value used to check the write posted condition for TMAR register */
- #define DMTIMER_WRITE_POST_TMAR (DMTIMER_TWPS_W_PEND_TMAR)
- /* Value used to check the write posted condition for TTGR register */
- #define DMTIMER_WRITE_POST_TTGR (DMTIMER_TWPS_W_PEND_TTGR)
- /* Value used to check the write posted condition for TLDR register */
- #define DMTIMER_WRITE_POST_TLDR (DMTIMER_TWPS_W_PEND_TLDR)
- /* Value used to check the write posted condition for TCRR register */
- #define DMTIMER_WRITE_POST_TCRR (DMTIMER_TWPS_W_PEND_TCRR)
- /* Value used to check the write posted condition for TCLR register */
- #define DMTIMER_WRITE_POST_TCLR (DMTIMER_TWPS_W_PEND_TCLR)
- /******************************************************************************/
- /*
- ** Structure to store the DM timer context
- */
- typedef struct dmtimerContext{
- unsigned int tldr;
- unsigned int tmar;
- unsigned int irqenableset;
- unsigned int tcrr;
- unsigned int tclr;
- }DMTIMERCONTEXT;
- /*
- ** Prototype of the APIs
- */
- extern void DMTimerEnable(unsigned int baseAdd);
- extern void DMTimerDisable(unsigned int baseAdd);
- extern void DMTimerModeConfigure(unsigned int baseAdd, unsigned int timerMode);
- extern void DMTimerPreScalerClkEnable(unsigned int baseAdd, unsigned int ptv);
- extern void DMTimerPreScalerClkDisable(unsigned int baseAdd);
- extern void DMTimerCounterSet(unsigned int baseAdd, unsigned int counter);
- extern unsigned int DMTimerCounterGet(unsigned int baseAdd);
- extern void DMTimerReloadSet(unsigned int baseAdd, unsigned int reload);
- extern unsigned int DMTimerReloadGet(unsigned int baseAdd);
- extern void DMTimerGPOConfigure(unsigned int baseAdd, unsigned int gpoCfg);
- extern void DMTimerCompareSet(unsigned int baseAdd, unsigned int compareVal);
- extern unsigned int DMTimerCompareGet(unsigned int baseAdd);
- extern void DMTimerEmulationModeConfigure(unsigned int baseAdd, unsigned int emuMode);
- extern void DMTimerIntRawStatusSet(unsigned int baseAdd, unsigned int intFlags);
- extern unsigned int DMTimerIntRawStatusGet(unsigned int baseAdd);
- extern unsigned int DMTimerIntStatusGet(unsigned int baseAdd);
- extern void DMTimerIntStatusClear(unsigned int baseAdd, unsigned int intFlags);
- extern void DMTimerIntEnable(unsigned int baseAdd, unsigned int intFlags);
- extern void DMTimerIntDisable(unsigned int baseAdd, unsigned int intFlags);
- extern void DMTimerTriggerSet(unsigned int baseAdd);
- extern unsigned int DMTimerIntEnableGet(unsigned int baseAdd);
- extern void DMTimerResetConfigure(unsigned int baseAdd, unsigned int rstOption);
- extern void DMTimerReset(unsigned int baseAdd);
- extern void DMTimerContextSave(unsigned int baseAdd, DMTIMERCONTEXT *contextPtr);
- extern void DMTimerContextRestore(unsigned int baseAdd, DMTIMERCONTEXT *contextPtr);
- extern void DMTimerPostedModeConfig(unsigned int baseAdd, unsigned int postMode);
- extern unsigned int DMTimerWritePostedStatusGet(unsigned int baseAdd);
- #ifdef __cplusplus
- }
- #endif
- #endif
|