264 lines
8.7 KiB
C
264 lines
8.7 KiB
C
/*****************************************************************************
|
|
* 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 millisecond
|
|
*
|
|
* @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 millisecond
|
|
*
|
|
* @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 */
|