| /* @TAG(CUSTOM) *//** |
| * \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. |
| * |
| */ |
| |
| #pragma once |
| |
| #include "hw/hw_dmtimer.h" |
| #include "hw/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 ((BIT(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) |
| |
| /******************************************************************************/ |
| /* |
| ** 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); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| |
| /******************************** END OF FILE *********************************/ |