view gsm-fw/bsp/timer.h @ 923:10b4bed10192

gsm-fw/L1: fix for the DSP patch corruption bug The L1 code we got from the LoCosto fw contains a feature for DSP CPU load measurement. This feature is a LoCosto-ism, i.e., not applicable to earlier DBB chips (Calypso) with their respective earlier DSP ROMs. Most of the code dealing with that feature is conditionalized as #if (DSP >= 38), but one spot was missed, and the MCU code was writing into an API word dealing with this feature. In TCS211 this DSP API word happens to be used by the DSP code patch, hence that write was corrupting the patched DSP code.
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Mon, 19 Oct 2015 17:13:56 +0000
parents afceeeb2cba1
children
line wrap: on
line source

/*******************************************************************************
            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.h

   Description      : timer.c header

   Project          : drivers

   Author           : pmonteil@tif.ti.com  Patrice Monteil.

   Version number   : 1.3

   Date and time    : 07/23/98 16:25:53
   Previous delta   : 07/23/98 16:25:52

   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.h

   Sccs Id  (SID)       : '@(#) timer.h 1.3 07/23/98 16:25:53 '

 
*****************************************************************************/

#include "../include/sys_types.h"

#define TIMER_CNTL_REG  MEM_TIMER_ADDR      /* watchdog Control Timer register */
 
#define TIMER_ST        0x0080       
#define TIMER_AR        0x0100       
#define TIMER_PTV       0x0e00   
#define	TIMER_CNTL_MASK	0x0f80	 
#define	TIMER_MODE_MASK	0x80ff	 


#define TIMER_LOAD_REG  (MEM_TIMER_ADDR + 0x02)   /* Timer load register */ 
#define TIMER_READ_REG  (MEM_TIMER_ADDR + 0x02)   /* Timer read register */ 


#define TIMER_MODE_REG  (MEM_TIMER_ADDR + 0x04)   /* Timer mode register */ 
#define TIMER_WDOG      0x8000          /* watch dog */

#define START_STOP      1           /*to start or stop a timer */
#define AR              0x0002       
#define PTV             0x001c 
#define TIMER_CLK_EN    0x0020


#define TIMER1_CNTL         (MEM_TIMER1 + 0x00)
#define TIMER1_LOAD_TIM     (MEM_TIMER1 + 0x02)
#define TIMER1_READ_TIM     (MEM_TIMER1 + 0x04)
#define TIMER2_CNTL         (MEM_TIMER2 + 0x00)
#define TIMER2_LOAD_TIM     (MEM_TIMER2 + 0x02)
#define TIMER2_READ_TIM     (MEM_TIMER2 + 0x04)


/*---------------------------------------------------------------/
/*   TIMER_START_STOP ()						*/
/*--------------------------------------------------------------*/
/* Parameters : start or stop command	 			*/
/* Return     :	none						*/
/* Functionality : Start or Stop the timer  			*/
/*--------------------------------------------------------------*/
#define TIMER_START_STOP(startStop) ((startStop) ? ((* (volatile SYS_UWORD16 *) TIMER_CNTL_REG) |=  TIMER_ST) : \
((* (volatile SYS_UWORD16 *) TIMER_CNTL_REG) &= ~TIMER_ST))


/* Prototype of the functions */

void        TM_ResetTimer (SYS_UWORD16 timerNum, SYS_UWORD16 countValue,
                           SYS_UWORD16 autoReload, SYS_UWORD16 clockScale);
void        TM_StopTimer (int timerNum);
void        TM_StartTimer (int timerNum);
SYS_UWORD16      TM_ReadTimer (int timerNum);

void        TM_DisableWatchdog(void);
void        TM_EnableWatchdog(void);
void        TM_ResetWatchdog(SYS_UWORD16 cnt);
void        TM_EnableTimer (int timerNum);
void        TM_DisableTimer (int timerNum);

SYS_UWORD16 TIMER_Read (unsigned short);
void TIMER_WriteValue (SYS_UWORD16);
unsigned short TIMER_ReadValue (void);