view nuc-fw/bsp/niq32.c @ 109:91460c8957f0

nuc-fw/bsp: beginning of reconciliation with the Leonardo semi-src version
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sat, 19 Oct 2013 18:59:34 +0000
parents 45911ad957fd
children 4179acab05f7
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       	: niq32.c

   Description    	: Nucleus IQ initializations

   Project        	: Drivers

   Author         	: proussel@ti.com  Patrick Roussel.

   Version number	: 1.12

   Date and time	: 02/19/01 14:01:50

   Previous delta 	: 12/19/00 14:24:51

   SCCS file      	: /db/gsm_asp/db_ht96/dsp_0/gsw/rel_0/mcu_l1/release_gprs/mod/emu_p/EMU_P_FRED_ADC/drivers1/common/SCCS/s.niq32.c

   Sccs Id  (SID)       : '@(#) niq32.c 1.12 02/19/01 14:01:50 '
*******************************************************************************/

#include "l1_sw.cfg"

#if(!OP_L1_STANDALONE)
  #include "chipset.cfg"
  #include "debug.cfg"
  #include "board.cfg"
  #include "rv_defined_swe.h"    
  #include "rtc_config.h"
#endif

#include "sys_types.h"
#include "serialswitch.h"

#include  "mem.h"
#include  "inth.h"
#include  "sim.h"
#include  "abb_inth.h"	  // for External Interrupt

#define IQ_H
#include  "iq.h"
#include  "ulpd.h"

#if (defined RVM_DAR_SWE) && (defined _GSM)
  extern void dar_watchdog_reset(void);
#endif

#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41) || (BOARD == 43) || (BOARD == 45))
#include "armio.h"
#include "uartfax.h"
#endif

/* External declaration */
extern void GAUGING_Handler(void);
extern void TMT_Timer_Interrupt(void);
extern void kpd_key_handler(void);
extern void TP_FrameIntHandler(void);

#if (!OP_L1_STANDALONE)
  #if (defined RVM_MPM_SWE)
   extern void MPM_InterruptHandler(void);
  #endif

  #if (TI_PROFILER == 1)
    extern void ti_profiler_tdma_action(void);
  #endif

  extern void RTC_GaugingHandler(void);
  extern void RTC_ItTimerHandle(void);
  extern void RTC_ItAlarmHandle(void);
#endif



/* Global variables */
unsigned IQ_TimerCount1;   /* Used to check if timer is incrementing */
unsigned IQ_TimerCount2;   /* Used to check if timer is incrementing */
unsigned IQ_TimerCount;    /* Used to check if timer is incrementing */
unsigned IQ_DummyCount;    /* Used to check if dummy IT */
unsigned IQ_FrameCount;    /* Used to check if Frame IT TPU*/
unsigned IQ_GsmTimerCount; /* Used to check if GSM Timer IT */

/* add this two variables for imported 188 functions, Jeffrey, 02/26/04 */
typedef struct GPIO_HISR_INFO 
{
	NU_HISR		hisr;
	char		hisr_stack[1024];	
} T_GPIO_HISR_INFOS;

static T_GPIO_HISR_INFOS gpio_hisr_infos = {0};
int g_interrupt = 0;

extern void Hall_OC_IntHandler( void ) ;


/*--------------------------------------------------------------*/
/*  	irqHandlers                                             */
/*--------------------------------------------------------------*/
/* Parameters :none                                             */
/* Return     :	none                                            */
/* Functionality :  Table of interrupt handlers                 */
/* These MUST be 32-bit entries                                 */
/*--------------------------------------------------------------*/

SYS_FUNC irqHandlers[IQ_NUM_INT] = 
{
   IQ_TimerHandler,        /* Watchdog timer */
   IQ_TimerHandler1,       /* timer 1 */
   IQ_TimerHandler2,       /* timer 2 */
   IQ_Dummy,               /* AIRQ 3 */   
   IQ_FrameHandler,        /* TPU Frame It AIRQ 4 */
   IQ_Dummy,               /* AIRQ 5 */
   #if (OP_L1_STANDALONE)
     IQ_Dummy,
   #else
     SIM_IntHandler,         /* AIRQ 6 */
   #endif
#if ((CHIPSET == 2) || (CHIPSET == 3))
   SER_uart_handler,       /* AIRQ 7 */
   #elif ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12))
   SER_uart_modem_handler, /* AIRQ 7 */
#endif
   #if (CHIPSET == 12)
     IQ_KeypadHandler,       /* AIRQ 8 */
   #else
#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41))
   IQ_KeypadGPIOHandler,   /* AIRQ 8 */
#else
   IQ_KeypadHandler,       /* AIRQ 8 */
#endif
   #endif
   IQ_Rtc_Handler,         /* AIRQ 9 RTC Timer*/
#if ((CHIPSET == 2) || (CHIPSET == 3))
   IQ_RtcA_GsmTim_Handler, /* AIRQ 10 RTC ALARM OR ULPD GSM TIMER*/
   #elif ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12))
   IQ_RtcA_Handler,        /* AIRQ 10 RTC ALARM */
#endif
   IQ_Gauging_Handler,     /* AIRQ 11 ULPD GAUGING */
   IQ_External,            /* AIRQ 12 */
   IQ_Dummy,               /* AIRQ 13 */
   IQ_Dummy,               /* DMA interrupt */
#if (CHIPSET == 4)
   IQ_Dummy,               /* LEAD */
   IQ_Dummy,               /* SIM card-detect fast interrupt */
   IQ_Dummy,               /* External fast interrupt */
   SER_uart_irda_handler,  /* UART IrDA interrupt */
   IQ_GsmTim_Handler       /* ULPD GSM timer */
#elif ((CHIPSET == 5) || (CHIPSET == 6))
   IQ_Dummy,               /* LEAD */
   IQ_Dummy,               /* SIM card-detect fast interrupt */
   IQ_Dummy,               /* External fast interrupt */
   SER_uart_irda_handler,  /* UART IrDA interrupt */
   IQ_GsmTim_Handler,      /* ULPD GSM timer */
   IQ_Dummy,               /* Not mapped interrupt */
   IQ_Dummy,               /* Not mapped interrupt */
   IQ_Dummy,               /* Not mapped interrupt */
   IQ_Dummy,               /* Not mapped interrupt */
   IQ_Dummy                /* GEA interrupt */
#elif ((CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11))
   IQ_Dummy,               /* LEAD */
   IQ_Dummy,               /* SIM card-detect fast interrupt */
   IQ_Dummy,               /* External fast interrupt */
   SER_uart_irda_handler,  /* UART IrDA interrupt */
   IQ_GsmTim_Handler,      /* ULPD GSM timer */
   IQ_Dummy                /* GEA interrupt */
#elif (CHIPSET == 9)
   IQ_Dummy,               /* LEAD */
   IQ_Dummy,               /* SIM card-detect fast interrupt */
   IQ_Dummy,               /* External fast interrupt */
   SER_uart_irda_handler,  /* UART IrDA interrupt */
   IQ_GsmTim_Handler,      /* ULPD GSM timer */
   IQ_Dummy,               /* Not mapped interrupt */
   IQ_Dummy,               /* Not mapped interrupt */
   IQ_Dummy,               /* Not mapped interrupt */
   IQ_Dummy,               /* Not mapped interrupt */
   IQ_Dummy                /* Reserved */
#elif (CHIPSET == 12)
   IQ_Dummy,               /* IRQ15 - LEAD */
   IQ_Dummy,               /* IRQ16 - GPIO */
   IQ_Dummy,               /* IRQ17 - External fast interrupt */
   SER_uart_irda_handler,  /* IRQ18 - UART IrDA interrupt */
   IQ_GsmTim_Handler,      /* IRQ19 - ULPD GSM timer */
   IQ_Dummy,               /* IRQ20 - GEA interrupt */
   IQ_Dummy,               /* IRQ21 - External general Purpose interrupt IRQ1 */
   IQ_Dummy,               /* IRQ22 - External general Purpose interrupt IRQ2 */
   IQ_Dummy,               /* IRQ23 - USIM card insertion/extraction */
   IQ_Dummy,               /* IRQ24 - USIM */
   IQ_Dummy,               /* IRQ25 - LCD */
   IQ_Dummy,               /* IRQ26 - USB */
   IQ_Dummy,               /* IRQ27 - MMC/SD/Memory Stick */
   SER_uart_modem2_handler,/* IRQ28 - UART_MODEM2 */
   IQ_Dummy,               /* IRQ29 - 2nd level interrupt handler */
   IQ_Dummy,               /* IRQ30 - I2C or uWIRE */
   IQ_Dummy                /* IRQ31 - NAND FLASH */
#else
   IQ_Dummy                /* LEAD */
#endif
};   

#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12))
  /*--------------------------------------------------------------*/
  /*  	fiqHandlers                                               */
  /*--------------------------------------------------------------*/
  /* Parameters :none                                             */
  /* Return     :none                                             */
  /* Functionality :  Table of interrupt handlers                 */
  /* These MUST be 32-bit entries                                 */
  /*--------------------------------------------------------------*/

  SYS_FUNC fiqHandlers[IQ_NUM_INT] = 
  {
    IQ_Dummy,          /* Watchdog timer */
    IQ_Dummy,          /* timer 1 */
    IQ_Dummy,          /* timer 2 */
    IQ_Dummy,          /* AIRQ 3 */   
    IQ_Dummy,          /* TPU Frame It AIRQ 4 */
    IQ_Dummy,          /* AIRQ 5 */
    IQ_Dummy,          /* AIRQ 6 */
    IQ_Dummy,          /* AIRQ 7 */
    IQ_Dummy,          /* AIRQ 8 */
    IQ_Dummy,          /* AIRQ 9 RTC Timer */
    IQ_Dummy,          /* AIRQ 10 RTC ALARM */
    IQ_Dummy,          /* AIRQ 11 ULPD GAUGING */
    IQ_Dummy,          /* AIRQ 12 */
    IQ_Dummy,          /* AIRQ 13 Spi Tx Rx interrupt */
    IQ_Dummy,          /* DMA interrupt */
    IQ_Dummy,          /* LEAD */
    #if (CHIPSET == 12)
      IQ_Dummy,        /* IRQ16 - GPIO */
    #else
      #if (OP_L1_STANDALONE)
        IQ_Dummy,
      #else
	  /* glowing, 2004-06-08, replace SIM with Hall according to 188 */
	  Hall_OC_IntHandler,  /* glowing,2003-12-18, Hall open-close fast interrupt, it replace SIM_CD_IntHandler */
	  //SIM_CD_IntHandler, /* SIM card-detect fast interrupt */
    #endif
    #endif
    IQ_Dummy,          /* External fast interrupt */
    IQ_Dummy,          /* UART_IRDA interrupt */
  #if (CHIPSET == 4)
    IQ_Dummy           /* ULPD GSM timer */
  #elif ((CHIPSET == 5) || (CHIPSET == 6))
    IQ_Dummy,          /* ULPD GSM timer */
    IQ_Dummy,          /* Not mapped interrupt */
    IQ_Dummy,          /* Not mapped interrupt */
    IQ_Dummy,          /* Not mapped interrupt */
    IQ_Dummy,          /* Not mapped interrupt */
    IQ_Dummy           /* GEA interrupt */
  #elif ((CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11))
    IQ_Dummy,          /* ULPD GSM timer */
    IQ_Dummy           /* GEA timer */
  #elif (CHIPSET == 9)
    IQ_Dummy,        /* ULPD GSM timer */
    IQ_Dummy,        /* Not mapped interrupt */
    IQ_Dummy,        /* Not mapped interrupt */
    IQ_Dummy,        /* Not mapped interrupt */
    IQ_Dummy,        /* Not mapped interrupt */
    IQ_Dummy         /* Reserved */
  #elif (CHIPSET == 12)
    IQ_Dummy,        /* IRQ19 - ULPD GSM timer */
    IQ_Dummy,        /* IRQ20 - GEA interrupt */
    IQ_Dummy,        /* IRQ21 - External general Purpose interrupt IRQ1 */
    IQ_Dummy,        /* IRQ22 - External general Purpose interrupt IRQ2 */
    IQ_Dummy,        /* IRQ23 - USIM card insertion/extraction */
    IQ_Dummy,        /* IRQ24 - USIM */
    IQ_Dummy,        /* IRQ25 - LCD */
    IQ_Dummy,        /* IRQ26 - USB */
    IQ_Dummy,        /* IRQ27 - MMC/SD/Memory Stick */
    IQ_Dummy,        /* IRQ28 - UART_MODEM2 */
    IQ_Dummy,        /* IRQ29 - 2nd level interrupt handler */
    IQ_Dummy,        /* IRQ30 - I2C or uWIRE */
    IQ_Dummy         /* IRQ31 - NAND FLASH */
  #endif
};   
#endif

/*--------------------------------------------------------------*/
/*  IQ_Gauging_Handler				                */
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :   Handle unused interrupts 			*/
/*--------------------------------------------------------------*/
void IQ_Gauging_Handler(void)
{
   GAUGING_Handler();
#if (!OP_L1_STANDALONE)
   RTC_GaugingHandler();
#endif
} 


/*--------------------------------------------------------------*/
/*  IQ_External							                        */
/*--------------------------------------------------------------*/
/* Parameters : none						                    */
/* Return     :	none						                    */
/* Functionality : Handle External IRQ mapped on ABB.           */
/*--------------------------------------------------------------*/
void IQ_External(void)
{
  // Mask external interrupt (12)
  IQ_Mask(IQ_EXT);

  // The external IRQ is mapped on the ABB interrupt.
  // The associated HISR ABB_Hisr is activated on reception on the external IRQ.
  if(Activate_ABB_HISR())
  {
     IQ_Unmask(IQ_EXT);
  }
}

/*--------------------------------------------------------------*/
/*  IQ_Dummy							*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :   Handle unused interrupts 			*/
/*--------------------------------------------------------------*/
void IQ_Dummy(void)
{
    IQ_DummyCount++;
}   

/*--------------------------------------------------------------*/
/*  IQ_RTCHandler						*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :    Handle RTC Time interrupts 		*/
/*--------------------------------------------------------------*/

void IQ_Rtc_Handler(void)
{
#if (!OP_L1_STANDALONE)
  RTC_ItTimerHandle();
#endif
}

/*--------------------------------------------------------------*/
/*  IQ_RtcA_GsmTim_Handler					*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :    Handle RTC ALARM or GAUGING interrupts    */
/*--------------------------------------------------------------*/

#if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12))
void IQ_RtcA_Handler(void)
{
  #if (!OP_L1_STANDALONE)
    /* INTH_DISABLEONEIT(IQ_RTC_ALARM); *//* RTC ALARM IT  */
    if ( (* (SYS_WORD8 *) RTC_STATUS_REG) & RTC_ALARM )
      RTC_ItAlarmHandle();
  #endif
}

  void IQ_GsmTim_Handler(void)
  {

    if ( (* (SYS_UWORD16 *) ULDP_GSM_TIMER_IT_REG) & ULPD_IT_TIMER_GSM  )
    {
      // it is GSM Timer it.....
      IQ_GsmTimerCount++;
    }
  }
#else
void IQ_RtcA_GsmTim_Handler(void)
{
  #if (!OP_L1_STANDALONE)
   if ( (* (SYS_UWORD16 *) ULDP_GSM_TIMER_IT_REG) & ULPD_IT_TIMER_GSM  )
   {
     // it is GSM Timer it.....
     IQ_GsmTimerCount++;
   }
   else
   {
     /* INTH_DISABLEONEIT(IQ_RTC_ALARM); *//* RTC ALARM IT  */
     if ( (* (SYS_WORD8 *) RTC_STATUS_REG) & RTC_ALARM )
        RTC_ItAlarmHandle();
   }   
  #endif
}
#endif

/*--------------------------------------------------------------*/
/*  IQ_TimerHandler						*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :    Handle Timer interrupts 			*/
/*--------------------------------------------------------------*/
 void IQ_TimerHandler(void)
{
   IQ_TimerCount++;
   TMT_Timer_Interrupt();
   #if (defined RVM_DAR_SWE) && (defined _GSM)
     dar_watchdog_reset();
   #endif
}
 
/*--------------------------------------------------------------*/
/*  IQ_FramerHandler						*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :    Handle Timer interrupts 			*/
/*--------------------------------------------------------------*/
 void IQ_FrameHandler(void)
{
   IQ_FrameCount++;
   TMT_Timer_Interrupt();
   TP_FrameIntHandler();
   #if (!OP_L1_STANDALONE)
     #if (TI_PROFILER == 1)
       // TDMA treatment for profiling buffer
       ti_profiler_tdma_action();
     #endif
   #endif
}

/*--------------------------------------------------------------*/
/*  IQ_TimerHandler1						*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :    Handle Timer 1 interrupts 			*/
/*--------------------------------------------------------------*/
void IQ_TimerHandler1(void)
{
  IQ_TimerCount1++;  
}
 
/*--------------------------------------------------------------*/
/*  IQ_TimerHandler2						*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :    Handle Timer 2 interrupts 			*/
/*--------------------------------------------------------------*/
 void IQ_TimerHandler2(void)
{
  IQ_TimerCount2++;  
 }

/*--------------------------------------------------------------*/
/*  IQ_IRQ_isr							*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :    HHandle IRQ interrupts  			*/
/*--------------------------------------------------------------*/
void IQ_IRQ_isr(void)
{
  irqHandlers[((* (SYS_UWORD16 *) INTH_B_IRQ_REG) & INTH_SRC_NUM)]();  /* ACK IT */
  * (SYS_UWORD16 *) INTH_CTRL_REG |= (1 << INTH_IRQ);	/* valid next IRQ */
}

/*--------------------------------------------------------------*/
/*  IQ_FIQ_isr							*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :   Handle FIQ interrupts  			*/
/*--------------------------------------------------------------*/
void IQ_FIQ_isr(void)
{
  #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12))
    fiqHandlers[((* (SYS_UWORD16 *) INTH_B_FIQ_REG) & INTH_SRC_NUM)]();  /* ACK IT */
  #endif
    * (SYS_UWORD16 *) INTH_CTRL_REG |= (1 << INTH_FIQ);	/* valid next FIQ */
}   

#if ((BOARD == 8) || (BOARD == 9) || (BOARD == 40) || (BOARD == 41))

/*--------------------------------------------------------------*/
/*  IQ_KeypadGPIOHandler                                        */
/*--------------------------------------------------------------*/
/* Parameters    : none                                             */
/* Return        : none                                            */
/* Functionality : Handle keypad and GPIO interrupts          */
/*--------------------------------------------------------------*/
void IQ_KeypadGPIOHandler(void)
{
 #if (!OP_L1_STANDALONE)
    /*
     * GPIO interrupt must be checked before the keypad interrupt. The GPIO
     * status bit is reset when the register is read.
     */
     
	     g_interrupt = 80;
    if (AI_CheckITSource (ARMIO_GPIO_INT)) {
    #if 0
    #ifdef RVM_MPM_SWE
      /* check if the SWE has been started */
      MPM_InterruptHandler ();
    #else
      UAF_DTRInterruptHandler ();
    #endif
    #endif
	  /* Jeffrey, 02/26/04, add this line from 188 */
	  gpio_handler();
	}

    if (AI_CheckITSource (ARMIO_KEYPDAD_INT))
      kpd_key_handler ();
 #endif
}   

/**
 * function: gpio_handler  hall
 */
void gpio_handler(void)
{
	/* 2003/11/01 Robert.Chen for melody interrupt from GPIO1*/
	/* modify from */
	
	/*
	   AI_MaskIT(2);
	 */
	 
	/* to */
	AI_MaskIT(2);
	/* end Robert.Chen */

    /* Activate HISR to process the key event */
      NU_Activate_HISR(&gpio_hisr_infos.hisr);
	}

/* 2003/11/01 Robert.Chen  Melody HISR entry */
void MI_Melody_Hisr(void)
{
	MaDevDrv_IntHandler();
	AI_UnmaskIT(0x02);
}

/**
 * function: kpd_initialize_keypad_hardware
 */
void Gpio_hisr_initialize(void)
{
   int i;
   
	/* 2003/11/01 Robert.Chen, modify for Melody HISR */
	/* modify from */
   #if 0
   /* HISR creation */
   NU_Create_HISR(&gpio_hisr_infos.hisr,
                  "GPIO_HISR",                  
                  gpio_hisr_entry,
                  2,
                  gpio_hisr_infos.hisr_stack,
                  sizeof(gpio_hisr_infos.hisr_stack));

	AI_UnmaskIT(0x02);
	
   	i = HallOnOff();
	
	if(i){
		AI_SelectIOForIT (2, 0);//ARMIO_FALLING_EDGE
	}
	else{

		AI_SelectIOForIT (2, 1);//ARMIO_RISING_EDGE
	}	
	#endif
	/* to */
	NU_Create_HISR(&gpio_hisr_infos.hisr,
                  "GPIO_HISR",                  
                  MI_Melody_Hisr,
                  2,
                  gpio_hisr_infos.hisr_stack,
                  sizeof(gpio_hisr_infos.hisr_stack));
	
	AI_EnableBit(5); /* MCSI_TXD as GPIO9 */
	AI_ConfigBitAsInput(9); /* GPIO9 as input pin for YMU765 ~IRQ */		
	AI_SelectIOForIT (9, 0); /* GPIO9 as input, falling edge triggered */
	AI_UnmaskIT(0x02);		 /* enable GPIO IRQ */
	
	/* end modify, Robert.Chen */
}
/* end of imported functins, Jeffrey, 02/26/04 */
/* ---------------------------------------------*/

#elif ((BOARD == 43) || (BOARD == 45))

/*--------------------------------------------------------------*/
/*  IQ_KeypadHandler							*/
/*--------------------------------------------------------------*/
/* Parameters :none						*/
/* Return     :	none						*/
/* Functionality :   Handle keypad interrupts  			*/
/*--------------------------------------------------------------*/
void IQ_KeypadHandler(void)
{
 #if (!OP_L1_STANDALONE)
     kpd_key_handler ();
 #endif
}   
	
#endif