123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- /*****************************************************************************
- * Copyright 2004 - 2008 Broadcom Corporation. All rights reserved.
- *
- * Unless you and Broadcom execute a separate written software license
- * agreement governing use of this software, this software is licensed to you
- * under the terms of the GNU General Public License version 2, available at
- * http://www.broadcom.com/licenses/GPLv2.php (the "GPL").
- *
- * Notwithstanding the above, under no circumstances may you combine this
- * software in any way with any other Broadcom software provided under a
- * license other than the GPL, without Broadcom's express prior written
- * consent.
- *****************************************************************************/
- /****************************************************************************/
- /**
- * @file tmrHw.h
- *
- * @brief API definitions for low level Timer driver
- *
- */
- /****************************************************************************/
- #ifndef _TMRHW_H
- #define _TMRHW_H
- #include <csp/stdint.h>
- typedef uint32_t tmrHw_ID_t; /* Timer ID */
- typedef uint32_t tmrHw_COUNT_t; /* Timer count */
- typedef uint32_t tmrHw_INTERVAL_t; /* Timer interval */
- typedef uint32_t tmrHw_RATE_t; /* Timer event (count/interrupt) rate */
- typedef enum {
- tmrHw_INTERRUPT_STATUS_SET, /* Interrupted */
- tmrHw_INTERRUPT_STATUS_UNSET /* No Interrupt */
- } tmrHw_INTERRUPT_STATUS_e;
- typedef enum {
- tmrHw_CAPABILITY_CLOCK, /* Clock speed in HHz */
- tmrHw_CAPABILITY_RESOLUTION /* Timer resolution in bits */
- } tmrHw_CAPABILITY_e;
- /****************************************************************************/
- /**
- * @brief Get timer capability
- *
- * This function returns various capabilities/attributes of a timer
- *
- * @return Numeric capability
- *
- */
- /****************************************************************************/
- uint32_t tmrHw_getTimerCapability(tmrHw_ID_t timerId, /* [ IN ] Timer Id */
- tmrHw_CAPABILITY_e capability /* [ IN ] Timer capability */
- );
- /****************************************************************************/
- /**
- * @brief Configures a periodic timer in terms of timer interrupt rate
- *
- * This function initializes a periodic timer to generate specific number of
- * timer interrupt per second
- *
- * @return On success: Effective timer frequency
- * On failure: 0
- *
- */
- /****************************************************************************/
- tmrHw_RATE_t tmrHw_setPeriodicTimerRate(tmrHw_ID_t timerId, /* [ IN ] Timer Id */
- tmrHw_RATE_t rate /* [ IN ] Number of timer interrupt per second */
- );
- /****************************************************************************/
- /**
- * @brief Configures a periodic timer to generate timer interrupt after
- * certain time interval
- *
- * This function initializes a periodic timer to generate timer interrupt
- * after every time interval in milisecond
- *
- * @return On success: Effective interval set in mili-second
- * On failure: 0
- *
- */
- /****************************************************************************/
- tmrHw_INTERVAL_t tmrHw_setPeriodicTimerInterval(tmrHw_ID_t timerId, /* [ IN ] Timer Id */
- tmrHw_INTERVAL_t msec /* [ IN ] Interval in mili-second */
- );
- /****************************************************************************/
- /**
- * @brief Configures a periodic timer to generate timer interrupt just once
- * after certain time interval
- *
- * This function initializes a periodic timer to generate a single ticks after
- * certain time interval in milisecond
- *
- * @return On success: Effective interval set in mili-second
- * On failure: 0
- *
- */
- /****************************************************************************/
- tmrHw_INTERVAL_t tmrHw_setOneshotTimerInterval(tmrHw_ID_t timerId, /* [ IN ] Timer Id */
- tmrHw_INTERVAL_t msec /* [ IN ] Interval in mili-second */
- );
- /****************************************************************************/
- /**
- * @brief Configures a timer to run as a free running timer
- *
- * This function initializes a timer to run as a free running timer
- *
- * @return Timer resolution (count / sec)
- *
- */
- /****************************************************************************/
- tmrHw_RATE_t tmrHw_setFreeRunningTimer(tmrHw_ID_t timerId, /* [ IN ] Timer Id */
- uint32_t divider /* [ IN ] Dividing the clock frequency */
- ) __attribute__ ((section(".aramtext")));
- /****************************************************************************/
- /**
- * @brief Starts a timer
- *
- * This function starts a preconfigured timer
- *
- * @return -1 - On Failure
- * 0 - On Success
- */
- /****************************************************************************/
- int tmrHw_startTimer(tmrHw_ID_t timerId /* [ IN ] Timer id */
- ) __attribute__ ((section(".aramtext")));
- /****************************************************************************/
- /**
- * @brief Stops a timer
- *
- * This function stops a running timer
- *
- * @return -1 - On Failure
- * 0 - On Success
- */
- /****************************************************************************/
- int tmrHw_stopTimer(tmrHw_ID_t timerId /* [ IN ] Timer id */
- );
- /****************************************************************************/
- /**
- * @brief Gets current timer count
- *
- * This function returns the current timer value
- *
- * @return Current downcounting timer value
- *
- */
- /****************************************************************************/
- tmrHw_COUNT_t tmrHw_GetCurrentCount(tmrHw_ID_t timerId /* [ IN ] Timer id */
- ) __attribute__ ((section(".aramtext")));
- /****************************************************************************/
- /**
- * @brief Gets timer count rate
- *
- * This function returns the number of counts per second
- *
- * @return Count rate
- *
- */
- /****************************************************************************/
- tmrHw_RATE_t tmrHw_getCountRate(tmrHw_ID_t timerId /* [ IN ] Timer id */
- ) __attribute__ ((section(".aramtext")));
- /****************************************************************************/
- /**
- * @brief Enables timer interrupt
- *
- * This function enables the timer interrupt
- *
- * @return N/A
- *
- */
- /****************************************************************************/
- void tmrHw_enableInterrupt(tmrHw_ID_t timerId /* [ IN ] Timer id */
- );
- /****************************************************************************/
- /**
- * @brief Disables timer interrupt
- *
- * This function disable the timer interrupt
- *
- * @return N/A
- */
- /****************************************************************************/
- void tmrHw_disableInterrupt(tmrHw_ID_t timerId /* [ IN ] Timer id */
- );
- /****************************************************************************/
- /**
- * @brief Clears the interrupt
- *
- * This function clears the timer interrupt
- *
- * @return N/A
- *
- * @note
- * Must be called under the context of ISR
- */
- /****************************************************************************/
- void tmrHw_clearInterrupt(tmrHw_ID_t timerId /* [ IN ] Timer id */
- );
- /****************************************************************************/
- /**
- * @brief Gets the interrupt status
- *
- * This function returns timer interrupt status
- *
- * @return Interrupt status
- */
- /****************************************************************************/
- tmrHw_INTERRUPT_STATUS_e tmrHw_getInterruptStatus(tmrHw_ID_t timerId /* [ IN ] Timer id */
- );
- /****************************************************************************/
- /**
- * @brief Indentifies a timer causing interrupt
- *
- * This functions returns a timer causing interrupt
- *
- * @return 0xFFFFFFFF : No timer causing an interrupt
- * ! 0xFFFFFFFF : timer causing an interrupt
- * @note
- * tmrHw_clearIntrrupt() must be called with a valid timer id after calling this function
- */
- /****************************************************************************/
- tmrHw_ID_t tmrHw_getInterruptSource(void);
- /****************************************************************************/
- /**
- * @brief Displays specific timer registers
- *
- *
- * @return void
- *
- */
- /****************************************************************************/
- void tmrHw_printDebugInfo(tmrHw_ID_t timerId, /* [ IN ] Timer id */
- int (*fpPrint) (const char *, ...) /* [ IN ] Print callback function */
- );
- /****************************************************************************/
- /**
- * @brief Use a timer to perform a busy wait delay for a number of usecs.
- *
- * @return N/A
- */
- /****************************************************************************/
- void tmrHw_udelay(tmrHw_ID_t timerId, /* [ IN ] Timer id */
- unsigned long usecs /* [ IN ] usec to delay */
- ) __attribute__ ((section(".aramtext")));
- #endif /* _TMRHW_H */
|