_csl_intc2.h

来自「dsp在音频处理中的运用」· C头文件 代码 · 共 470 行

H
470
字号
/*****************************************************\ *  Copyright 2003, Texas Instruments Incorporated.  * *  All rights reserved.                             * *  Restricted rights to use, duplicate or disclose  * *  this   code   are  granted   through  contract.  * *                                                   * * "@(#) PSP/CSL  3.0.0.0  (2003-09-30)              *\*****************************************************/#ifndef _CSL_INTC2_H_#define _CSL_INTC2_H_#include <csl.h>#include <soc.h>#include <cslr_intc2.h>/**************************************************************************\* INTC2 global macro declarations\**************************************************************************/#define _CSL_INTC2_EVT_CNT                             (128) /* Number of Events                                             *//**************************************************************************\* INTC2 global typedef declarations\**************************************************************************//* Interrupt Priority */typedef enum {    __CSL_INTC2_PRIORITY_DEFAULT     =                  0} _CSL_Intc2Priority;/* Interrupt Routing */typedef enum {    __CSL_INTC2_ROUTE_IRQ            =                  0,    __CSL_INTC2_ROUTE_FIQ            =                  1} _CSL_Intc2Route;/* Interrupt Sensitivity */typedef enum {    _CSL_INTC2_SENSE_FALLINGEDGE    =                  0,    _CSL_INTC2_SENSE_LOWLEVEL       =                  1} _CSL_Intc2Sense;/* Interrupt Enable/Disable State */typedef enum {    _CSL_INTC2_STATE_ENABLE         =                  0,    _CSL_INTC2_STATE_DISABLE        =                  1} _CSL_Intc2EventEnableState;/* Global Interrupt Enable/Disable State */typedef enum {    _CSL_INTC2_GBLSTATE_ENABLE      =                  0,    _CSL_INTC2_GBLSTATE_DISABLE     =                  1} _CSL_Intc2GlobalEnableState;/* The Interrupt Event-ID */typedef int _CSL_Intc2EventId;/* Interrupt setup-structure */typedef struct _CSL_Intc2Setup {    _CSL_Intc2Priority       priority;    _CSL_Intc2Route          route;    _CSL_Intc2Sense          sense;} _CSL_Intc2Setup;/**************************************************************************\* INTC2 global function declarations\**************************************************************************//**************************************************************************\* INTC2 inline function declarations\**************************************************************************/inline void  _CSL_intc2Init(    void);inline _CSL_Intc2Priority  _CSL_intc2GetPriority(    _CSL_Intc2EventId                        evtId);inline void  _CSL_intc2SetPriority(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Priority                       priority);inline _CSL_Intc2Route  _CSL_intc2GetRoute(    _CSL_Intc2EventId                        evtId);inline void  _CSL_intc2SetRoute(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Route                          route_IRQ_or_FIQ);inline _CSL_Intc2Sense  _CSL_intc2GetSense(    _CSL_Intc2EventId                        evtId);inline void  _CSL_intc2SetSense(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Sense                          sense);inline void  _CSL_intc2Setup(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Setup                          *setup);inline void  _CSL_intc2GetSetup(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Setup                          *setup);inline _CSL_Intc2EventId  _CSL_intc2GetActiveFIQ(    void);inline _CSL_Intc2EventId  _CSL_intc2GetActiveIRQ(    void);inline void  _CSL_intc2AckFIQ(    void);inline void  _CSL_intc2AckIRQ(    void);inline _CSL_Intc2EventEnableState  _CSL_intc2Enable(    _CSL_Intc2EventId                        evtId);inline _CSL_Intc2EventEnableState  _CSL_intc2Disable(    _CSL_Intc2EventId                        evtId);inline _CSL_Intc2EventEnableState  _CSL_intc2Restore(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2EventEnableState               enState);inline Bool  _CSL_intc2Test(    _CSL_Intc2EventId                        evtId);inline void  _CSL_intc2Set(    _CSL_Intc2EventId                        evtId);inline void  _CSL_intc2Clear(    _CSL_Intc2EventId                        evtId);inline void  _CSL_intc2Reset(    _CSL_Intc2EventId                        evtId);inline _CSL_Intc2GlobalEnableState  _CSL_intc2GlobalEnable(    void);inline _CSL_Intc2GlobalEnableState  _CSL_intc2GlobalDisable(    void);inline _CSL_Intc2GlobalEnableState  _CSL_intc2GlobalRestore(    _CSL_Intc2GlobalEnableState              globalEn);/**************************************************************************\* INTC2 inline function definitions\**************************************************************************/inline void  _CSL_intc2Init(    void){}/*------------------------------------------------------------------------*/inline _CSL_Intc2Priority  _CSL_intc2GetPriority(    _CSL_Intc2EventId                        evtId){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    return (_CSL_Intc2Priority)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_PRIORITY);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2SetPriority(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Priority                       priority){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_PRIORITY, priority);}/*------------------------------------------------------------------------*/inline _CSL_Intc2Route  _CSL_intc2GetRoute(    _CSL_Intc2EventId                        evtId){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    return (_CSL_Intc2Route)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_FIQ);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2SetRoute(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Route                          route_IRQ_or_FIQ){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_FIQ, route_IRQ_or_FIQ);}/*------------------------------------------------------------------------*/inline _CSL_Intc2Sense  _CSL_intc2GetSense(    _CSL_Intc2EventId                        evtId){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    return (_CSL_Intc2Sense)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_SENSE_EDGE);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2SetSense(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Sense                          sense){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt], INTC2_ILR_SENSE_EDGE, sense);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2Setup(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Setup                          *setup){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    ((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt] =       CSL_FMK(INTC2_ILR_PRIORITY,   setup->priority)     | CSL_FMK(INTC2_ILR_SENSE_EDGE, setup->sense)     | CSL_FMK(INTC2_ILR_FIQ,        setup->route);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2GetSetup(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2Setup                          *setup){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    register int ilr;    ilr = ((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ILR[evt];    setup->priority = (_CSL_Intc2Priority)CSL_FEXT(ilr, INTC2_ILR_PRIORITY);    setup->sense    = (_CSL_Intc2Sense)CSL_FEXT(ilr, INTC2_ILR_SENSE_EDGE);    setup->route    = (_CSL_Intc2Route)CSL_FEXT(ilr, INTC2_ILR_FIQ);}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventId  _CSL_intc2GetActiveFIQ(    void){    return (_CSL_Intc2EventId)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].SFR, INTC2_SFR_IRQ);}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventId  _CSL_intc2GetActiveIRQ(    void){    return (_CSL_Intc2EventId)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].SIR, INTC2_SIR_IRQ);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2AckFIQ(    void){    CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_NEW_FIQ_AGR, 1);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2AckIRQ(    void){    CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_NEW_IRQ_AGR, 1);}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventEnableState  _CSL_intc2Enable(    _CSL_Intc2EventId                        evtId){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    _CSL_Intc2EventEnableState en;    en = (_CSL_Intc2EventEnableState)CSL_FEXTR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt);    CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt, CSL_INTC1_MIR_MASK_ENABLE);    return en;}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventEnableState  _CSL_intc2Disable(    _CSL_Intc2EventId                        evtId){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    _CSL_Intc2EventEnableState en;    en = (_CSL_Intc2EventEnableState)CSL_FEXTR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt);    CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt, CSL_INTC1_MIR_MASK_DISABLE);    return en;}/*------------------------------------------------------------------------*/inline _CSL_Intc2EventEnableState  _CSL_intc2Restore(    _CSL_Intc2EventId                        evtId,    _CSL_Intc2EventEnableState               enState){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    _CSL_Intc2EventEnableState en;    en = (_CSL_Intc2EventEnableState)CSL_FEXTR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt);    CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evtId, evtId, enState);    return en;}/*------------------------------------------------------------------------*/inline Bool  _CSL_intc2Test(    _CSL_Intc2EventId                        evtId){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    return (Bool)CSL_FEXTR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ITR, evt, evt);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2Set(    _CSL_Intc2EventId                        evtId){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ISR, evt, evt, CSL_INTC1_ISR_SET);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2Clear(    _CSL_Intc2EventId                        evtId){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ITR, evt, evt, CSL_INTC1_ITR_RESET);}/*------------------------------------------------------------------------*/inline void  _CSL_intc2Reset(    _CSL_Intc2EventId                        evtId){    register int sect   = (int)evtId >> 5;    register int evt    = (int)evtId & 0x1F;    CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].MIR, evt, evt, CSL_INTC1_MIR_MASK_DISABLE); /* disable */    CSL_FINSR(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[sect].ITR, evt, evt, CSL_INTC1_ITR_RESET); /* clear */}/*------------------------------------------------------------------------*/inline _CSL_Intc2GlobalEnableState  _CSL_intc2GlobalEnable(    void){    _CSL_Intc2GlobalEnableState en;    en = (_CSL_Intc2GlobalEnableState)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK);    CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK, 0);    return en;}/*------------------------------------------------------------------------*/inline _CSL_Intc2GlobalEnableState  _CSL_intc2GlobalDisable(    void){    _CSL_Intc2GlobalEnableState en;    en = (_CSL_Intc2GlobalEnableState)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK);    CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK, 0);    return en;}/*------------------------------------------------------------------------*/inline _CSL_Intc2GlobalEnableState  _CSL_intc2GlobalRestore(    _CSL_Intc2GlobalEnableState              globalEn){    _CSL_Intc2GlobalEnableState en;    en = (_CSL_Intc2GlobalEnableState)CSL_FEXT(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK);    CSL_FINS(((CSL_Intc2RegsOvly)CSL_INTC2_REGS)->SECT[0].ICR, INTC2_ICR_GLOBAL_MASK, globalEn);    return en;}/*------------------------------------------------------------------------*/#endif

⌨️ 快捷键说明

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