⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csl_irq.h

📁 SEED的VPM642测试程序-板级支持库
💻 H
字号:
/******************************************************************************\
*           Copyright (C) 1999-2000 Texas Instruments Incorporated.
*                           All Rights Reserved
*------------------------------------------------------------------------------
* FILENAME...... csl_irq.h
* DATE CREATED.. 06/09/1999 
* LAST MODIFIED. 10/03/2001
*                - CHIP_RSET()/CHIP_RGET() replaced by CHIP_CRSET()/CHIP_CRGET()
\******************************************************************************/
#ifndef _CSL_IRQ_H_
#define _CSL_IRQ_H_

#include <csl_stdinc.h>
#include <csl_chip.h>
#include <csl_irqhal.h>


#if (IRQ_SUPPORT)
/******************************************************************************\
* scope and inline control macros
\******************************************************************************/
#ifdef __cplusplus
#define CSLAPI extern "C" far 
#else
#define CSLAPI extern far
#endif

#undef  USEDEFS
#undef  IDECL
#undef  IDEF

#ifdef  _IRQ_MOD_
  #define IDECL CSLAPI
  #define USEDEFS
  #define IDEF
#else
  #ifdef  _INLINE
    #define IDECL static inline
    #define USEDEFS
    #define IDEF  static inline
  #else
    #define IDECL CSLAPI
  #endif
#endif


/******************************************************************************\
* global macro declarations
\******************************************************************************/

/* misc global settings */
#define IRQ_INT_CNT     16
#define IRQ_EVENT_CNT   32

/* event id definitions */
#define IRQ_EVT_NA         IRQ_EVENT_CNT
#define IRQ_EVT_DSPINT     0
#define IRQ_EVT_TINT0      1
#define IRQ_EVT_TINT1      2
#define IRQ_EVT_SDINT      3
#define IRQ_EVT_SDINTA     3
#define IRQ_EVT_EXTINT4    4
#define IRQ_EVT_GPINT4     4
#define IRQ_EVT_EXTINT5    5
#define IRQ_EVT_GPINT5     5
#define IRQ_EVT_EXTINT6    6
#define IRQ_EVT_GPINT6     6
#define IRQ_EVT_EXTINT7    7
#define IRQ_EVT_GPINT7     7
#define IRQ_EVT_EDMAINT    8
#define IRQ_EVT_DMAINT0    8
#define IRQ_EVT_EMUDTDMA   9
#define IRQ_EVT_DMAINT1    9
#define IRQ_EVT_EMURTDXRX  10
#define IRQ_EVT_DMAINT2    10
#define IRQ_EVT_EMURTDXTX  11
#define IRQ_EVT_DMAINT3    11
#define IRQ_EVT_XINT0      12
#define IRQ_EVT_RINT0      13
#define IRQ_EVT_XINT1      14
#define IRQ_EVT_RINT1      15
#define IRQ_EVT_GPINT0     16
#define IRQ_EVT_XINT2      17
#define IRQ_EVT_RINT2      18
#define IRQ_EVT_TINT2      19
#define IRQ_EVT_SDINTB     20
#define IRQ_EVT_PCIWAKE    21
#define IRQ_EVT_MDIO       21
#define IRQ_EVT_QDMAERR    22
#define IRQ_EVT_I2CINT0    22 /* 6713 */
#define IRQ_EVT_UINT       23
#define IRQ_EVT_I2CINT1    23 /* 6713 */
#define IRQ_EVT_I2CINT2    23 
#define IRQ_EVT_I2CINT3    22 
#define IRQ_EVT_I2CINT4    23 
#define IRQ_EVT_MACINT     24 /* DM642 */
#define IRQ_EVT_VINT0      25 /* DM642 */
#define IRQ_EVT_VINT1      26 /* DM642 */
#define IRQ_EVT_VINT2      27 /* DM642 */
#define IRQ_EVT_AXINT0     28 /* 6713 / DM642 */
#define IRQ_EVT_ARINT0     29 /* 6713 / DM642 */
#define IRQ_EVT_AXINT3     IRQ_EVT_EXTINT4 /* 6713 */
#define IRQ_EVT_ARINT3     IRQ_EVT_EXTINT5 /* 6713 */
#define IRQ_EVT_VCPINT     30
#define IRQ_EVT_AXINT1     30 /* 6713 */
#define IRQ_EVT_AXINT2     30 /* 6713 */
#define IRQ_EVT_AXINT4     IRQ_EVT_EXTINT6
#define IRQ_EVT_TCPINT     31
#define IRQ_EVT_ARINT1     31 /* 6713 */
#define IRQ_EVT_ARINT2     31 /* 6713 */
#define IRQ_EVT_ARINT4     IRQ_EVT_EXTINT7


/* interrupt masks */
#define IRQ_MASK_NA 0x00000000
#define IRQ_MASK_00 0x00000001
#define IRQ_MASK_01 0x00000002
#define IRQ_MASK_02 0x00000004
#define IRQ_MASK_03 0x00000008
#define IRQ_MASK_04 0x00000010
#define IRQ_MASK_05 0x00000020
#define IRQ_MASK_06 0x00000040
#define IRQ_MASK_07 0x00000080
#define IRQ_MASK_08 0x00000100
#define IRQ_MASK_09 0x00000200
#define IRQ_MASK_10 0x00000400
#define IRQ_MASK_11 0x00000800
#define IRQ_MASK_12 0x00001000
#define IRQ_MASK_13 0x00002000
#define IRQ_MASK_14 0x00004000
#define IRQ_MASK_15 0x00008000

/* defines used with the dispatcher functions */
#define IRQ_CCMASK_NONE        0x00000001u
#define IRQ_CCMASK_PCC_MAPPED  0x00000000u
#define IRQ_CCMASK_PCC_ENABLE  0x00000040u
#define IRQ_CCMASK_PCC_FREEZE  0x00000060u
#define IRQ_CCMASK_PCC_BYPASS  0x00000080u
#define IRQ_CCMASK_DCC_MAPPED  0x00000000u
#define IRQ_CCMASK_DCC_ENABLE  0x00000008u
#define IRQ_CCMASK_DCC_FREEZE  0x0000000Cu
#define IRQ_CCMASK_DCC_BYPASS  0x00000010u
#define IRQ_CCMASK_DEFAULT     IRQ_CCMASK_NONE
#define IRQ_IEMASK_SELF        0x80000000u
#define IRQ_IEMASK_ALL         0x0000FFFFu
#define IRQ_IEMASK_DEFAULT     IRQ_IEMASK_SELF


/* private stuff */
#define _IRQ_DISPATCHTABLE_CNT   (IRQ_INT_CNT)
#define _IRQ_EVENT2INTTABLE_CNT  (IRQ_EVENT_CNT+1)
#define _IRQ_INT2EVENTTABLE_CNT  (IRQ_INT_CNT)


/******************************************************************************\
* global typedef declarations
\******************************************************************************/
typedef struct {
  void   *funcAddr;
  Uint32 ieMask;
  Uint32 ccMask;
  Uint32 funcArg;
} _IRQ_Dispatch;

typedef struct {
  void   *funcAddr;
  Uint32 funcArg;
  Uint32 ccMask;
  Uint32 ieMask;
} IRQ_Config;


/******************************************************************************\
* global variable declarations
\******************************************************************************/

/* private vars */
extern far Uint32 _IRQ_eventTable[IRQ_EVENT_CNT+1];
extern far Uint32 _IRQ_intTable[IRQ_INT_CNT];
extern far _IRQ_Dispatch _IRQ_internalDispatchTable[_IRQ_DISPATCHTABLE_CNT];
extern far _IRQ_Dispatch *_IRQ_dispatchTable;

/******************************************************************************\
* global function declarations
\******************************************************************************/

/* private functions */
CSLAPI void _IRQ_init(Uint32 biosPresent, _IRQ_Dispatch *dispatchTable);

/* API functions */
CSLAPI void IRQ_map(Uint32 eventId, Uint32 intNumber);
CSLAPI void *IRQ_setVecs(void *vecs);
CSLAPI Uint32 IRQ_biosPresent();
CSLAPI void IRQ_hook(int intNum, void *func);

/* These functions only work with the DSP/BIOS HWI dispatcher */
CSLAPI void IRQ_config(Uint32 eventId, IRQ_Config *config);
CSLAPI void IRQ_configArgs(Uint32 eventId, void *funcAddr, Uint32 funcArg,
  Uint32 ccMask, Uint32 ieMask);
CSLAPI void IRQ_getConfig(Uint32 eventId, IRQ_Config *config);
CSLAPI Uint32 IRQ_getArg(Uint32 eventId);
CSLAPI void IRQ_setArg(Uint32 eventId, Uint32 arg);


/******************************************************************************\
* inline function declarations
\******************************************************************************/
IDECL void IRQ_enable(Uint32 eventId);
IDECL Uint32 IRQ_disable(Uint32 eventId);
IDECL void IRQ_restore(Uint32 eventId, Uint32 ie);
IDECL void IRQ_set(Uint32 eventId);
IDECL void IRQ_clear(Uint32 eventId);
IDECL Uint32 IRQ_test(Uint32 eventId);
IDECL void IRQ_reset(Uint32 eventId);
IDECL void IRQ_resetAll();

IDECL void IRQ_globalEnable();
IDECL Uint32 IRQ_globalDisable();
IDECL void IRQ_globalRestore(Uint32 gie);

IDECL void IRQ_nmiEnable();
IDECL void IRQ_nmiDisable();


/******************************************************************************\
* inline function definitions
\******************************************************************************/
#ifdef USEDEFS
/*----------------------------------------------------------------------------*/
IDEF void IRQ_enable(Uint32 eventId) {
  IER |= _IRQ_eventTable[eventId];
}
/*----------------------------------------------------------------------------*/
IDEF Uint32 IRQ_disable(Uint32 eventId) {
  Uint32 ie = IER & _IRQ_eventTable[eventId];
  IER &= ~_IRQ_eventTable[eventId];
  return ie;
}
/*----------------------------------------------------------------------------*/
IDEF void IRQ_restore(Uint32 eventId, Uint32 ie) {
  if (ie) {
    IER |= _IRQ_eventTable[eventId];
  } else {
    IER &= ~_IRQ_eventTable[eventId];
  }
}
/*----------------------------------------------------------------------------*/
IDEF void IRQ_set(Uint32 eventId) {
  ISR = _IRQ_eventTable[eventId];
}
/*----------------------------------------------------------------------------*/
IDEF void IRQ_clear(Uint32 eventId) {
  ICR = _IRQ_eventTable[eventId];
}
/*----------------------------------------------------------------------------*/
IDEF Uint32 IRQ_test(Uint32 eventId) {
  return (Uint32)((IFR & _IRQ_eventTable[eventId]) ? 1 : 0);
}
/*----------------------------------------------------------------------------*/
IDEF void IRQ_globalEnable() {
  CHIP_FSET(CSR,GIE,1);
}
/*----------------------------------------------------------------------------*/
IDEF Uint32 IRQ_globalDisable() {
  Uint32 gie = CHIP_FGET(CSR,GIE);
  CHIP_FSET(CSR,GIE,0);
  return gie;
}
/*----------------------------------------------------------------------------*/
IDEF void IRQ_globalRestore(Uint32 gie) {
  CHIP_FSET(CSR,GIE,gie);
}
/*----------------------------------------------------------------------------*/
IDEF void IRQ_reset(Uint32 eventId) {
  IER &= ~_IRQ_eventTable[eventId];
  ICR = _IRQ_eventTable[eventId];
}
/*----------------------------------------------------------------------------*/
IDEF void IRQ_resetAll() {
  CHIP_FSET(CSR,GIE,0);
  CHIP_CRSET(IER,0x00000000);
  CHIP_CRSET(ICR,0xFFFFFFFF);
}
/*----------------------------------------------------------------------------*/
IDEF void IRQ_nmiEnable() {
  IER |= 0x00000002;
}
/*----------------------------------------------------------------------------*/
IDEF void IRQ_nmiDisable() {
  IER &= ~0x00000002;
}
/*----------------------------------------------------------------------------*/
#endif /* USEDEFS */


#endif /* IRQ_SUPPORT */
#endif /* _CSL_IRQ_H_ */
/******************************************************************************\
* End of csl_irq.h
\******************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -