FreeCalypso > hg > tcs211-l1-reconst
diff chipsetsw/drivers/drv_core/timer/timer.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/chipsetsw/drivers/drv_core/timer/timer.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,277 @@ +/******************************************************************************* + TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION + + Property of Texas Instruments -- For Unrestricted Internal Use Only + Unauthorized reproduction and/or distribution is strictly prohibited. This + product is protected under copyright law and trade secret law as an + unpublished work. Created 1987, (C) Copyright 1997 Texas Instruments. All + rights reserved. + + + Filename : timer.c + + Description : timer.c + + Project : drivers + + Author : pmonteil@tif.ti.com Patrice Monteil. + + Version number : 1.3 + + Date and time : 07/23/98 16:25:32 + Previous delta : 07/23/98 16:25:32 + + SCCS file : /db/gsm_asp/db_ht96/dsp_0/gsw/rel_0/mcu_l1/release1.5/mod/emu/EMU_MCMP/eva3_drivers/source/SCCS/s.timer.c + + Sccs Id (SID) : '@(#) timer.c 1.3 07/23/98 16:25:32 ' + + +*****************************************************************************/ + +#include "l1sw.cfg" + +#if (OP_L1_STANDALONE == 0) + #include "main/sys_types.h" +#else + #include "sys_types.h" +#endif +#include "memif/mem.h" +#include "inth/iq.h" +#include "timer.h" + + +/*-------------------------------------------------------------- + * TIMER_Read() + *-------------------------------------------------------------- + * Parameters : num of the register to be read + * Return :value of the timer register read + * Functionality : read one of the TIMER register + *--------------------------------------------------------------*/ +SYS_UWORD16 TIMER_Read (unsigned short regNum) +{ + volatile SYS_UWORD16 timerReg; + + switch (regNum) { + case 0: + timerReg = (( * (SYS_UWORD16 *) TIMER_CNTL_REG) & TIMER_CNTL_MASK); + break; + case 1: + timerReg = ( * (SYS_UWORD16 *) TIMER_READ_REG); + break; + case 2: + timerReg = (( * (SYS_UWORD16 *) TIMER_MODE_REG) & TIMER_MODE_MASK); + break; + default: + break; + } + return(timerReg); +} +/*-------------------------------------------------------------- + * TM_ResetTimer() + *-------------------------------------------------------------- + * Parameters : timer number (1 or 2) + * timer value, reload yes or not, scale + * Return : none + * Functionality : Give the timewr state + *--------------------------------------------------------------*/ +void TM_ResetTimer (SYS_UWORD16 timerNum, SYS_UWORD16 countValue, + SYS_UWORD16 autoReload, SYS_UWORD16 clockScale) +{ + volatile SYS_UWORD16 *cntl; + + if (timerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + + *cntl &= ~(START_STOP | PTV); /* stop and reset values */ + + (autoReload) ? (*cntl |= AR) : (*cntl &= ~AR); + + *cntl |= (clockScale << 2 ); + + + * (SYS_UWORD16 *) TIMER1_LOAD_TIM = countValue; /*load the value */ + + *cntl |= START_STOP; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + + *cntl &= ~(START_STOP | PTV); /* stop and reset values */ + + (autoReload) ? (*cntl |= AR) : (*cntl &= ~AR); + + *cntl |= (clockScale << 2 ); + + + * (SYS_UWORD16 *) TIMER2_LOAD_TIM = countValue; /*load the value */ + + *cntl |= START_STOP; + } +} + +/* + * TM_StopTimer + * + * Parameters : timer number (1 or 2) + */ +void TM_StopTimer (int timerNum) +{ + + volatile SYS_UWORD16 *cntl; + + if (timerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + } + *cntl &= ~START_STOP; + +} + +/* + * TM_ReadTimer + * + * Returns current timer value + * + * Parameters : timer number (1 or 2) + * + */ +SYS_UWORD16 TM_ReadTimer (int timerNum) +{ + if (timerNum == 1) + { + return (* (SYS_UWORD16 *) TIMER1_READ_TIM); + } + else + { + return (* (SYS_UWORD16 *) TIMER2_READ_TIM); + } +} + + +/* + * TM_StartTimer + * + * Parameters : timer number (1 or 2) + * + */ +void TM_StartTimer (int timerNum) +{ + volatile SYS_UWORD16 *cntl; + + if (timerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + } + *cntl |= START_STOP; +} + +void TM_DisableWatchdog (void) +{ + /* volatile variable needed due C to optimization */ + volatile SYS_UWORD16 *reg = (volatile SYS_UWORD16 *) TIMER_MODE_REG; + + *reg = 0xf5; + *reg = 0xa0; +} + + + /* + * TM_EnableWatchdog + * + */ +void TM_EnableWatchdog(void) +{ + * ((volatile SYS_UWORD16 *) TIMER_MODE_REG) = TIMER_WDOG; +} + +/* + * TM_ResetWatchdog + * + * Parameter : Tick count + * Use a different value each time, otherwise watchdog bites + */ +void TM_ResetWatchdog(SYS_UWORD16 count) +{ + * ((volatile SYS_UWORD16 *) TIMER_LOAD_REG) = count; +} + +/* +* TM_EnableTimer (int TimerNum) +* +* Parameter : TimerNum : timer to enable (timer1 or timer2) +* +*/ +void TM_EnableTimer (int TimerNum) +{ + volatile SYS_UWORD16 *cntl; + + if (TimerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + } + *cntl |= TIMER_CLK_EN; + +} + +/* +* TM_DisableTimer (int TimerNum) +* +* Parameter : TimerNum : timer to enable (timer1 or timer2) +* +*/ +void TM_DisableTimer (int TimerNum) +{ + volatile SYS_UWORD16 *cntl; + + if (TimerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + } + *cntl &= ~TIMER_CLK_EN; +} + +/*-------------------------------------------------------------- + * TIMER_ReadValue() + *-------------------------------------------------------------- + * Parameters : none + * Return : none + * Functionality : Read timer value + *--------------------------------------------------------------*/ + +unsigned short TIMER_ReadValue (void) +{ + return(* (SYS_UWORD16 *) TIMER_READ_REG); + +} + +/*-------------------------------------------------------------- + * TIMER_WriteValue() + *-------------------------------------------------------------- + * Parameters : none + * Return : none + * Functionality : Write timer value + *--------------------------------------------------------------*/ + +void TIMER_WriteValue (SYS_UWORD16 value) +{ + * (SYS_UWORD16 *) TIMER_LOAD_REG = value; /*load the value */ + +}