📄 csl_intcaux.h
字号:
/* ============================================================================
* Copyright (c) Texas Instruments Inc 2002, 2003, 2004, 2005
*
* Use of this software is controlled by the terms and conditions found in the
* license agreement under which this software has been supplied.
* ===========================================================================
*/
/* @file csl_intcAux.h
*
* @brief Header file for functional layer of CSL
*
* PATH $(CSLPATH)\\inc
*/
/* =============================================================================
* Revision History
* ===============
* 12-Jun-2004 Ruchika Kharwar File Created
* 16-Mar-2005 brn modified for doxygen documentation and removed redundant
CSL_intcInterruptEnable, CSL_intcInterruptDisable and
CSL_intcInterruptRestore functions.
27-Mar-2006 ds Removed Read access to Write only EVTSET[3] and EVTCLR[3]
registers
* =============================================================================
*/
#ifndef _CSL_INTCAUX_H
#define _CSL_INTCAUX_H
#include <csl_intc.h>
/* External definition for _CSL_intcEventOffsetMap */
extern Int8 *_CSL_intcEventOffsetMap;
/* External definition for _CSL_intcAllocMask */
extern CSL_BitMask32* _CSL_intcAllocMask;
/* External definition for _CSL_intcEventHandlerRecord */
extern CSL_IntcEventHandlerRecord* _CSL_intcEventHandlerRecord;
/* External definition for _CSL_intcNumEvents */
extern Uint16 _CSL_intcNumEvents;
/* ============================================================================
* @n@b CSL_intcMapEventVector
*
* @b Description
* This API Maps the event to the given CPU vector
*
* @b Arguments
* @verbatim
eventId Intc event Identifier
vectId Intc vector identifier
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n CSL_intcInit() must be invoked before this call.
*
* <b> Post Condition </b>
* @n Maps the event to the given CPU vector
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcVectId vectId;
CSL_IntcEventId eventId;
...
CSL_intcMapEventVector(eventId, vectId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE void CSL_intcMapEventVector (
CSL_IntcEventId eventId,
CSL_IntcVectId vectId
)
{
Int bitLow;
if (vectId < CSL_INTC_VECTID_8) {
bitLow = (vectId - 4) * 8;
CSL_FINSR(((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->INTMUX1, \
bitLow+6,bitLow,eventId);
}
else {
if (vectId < CSL_INTC_VECTID_12) {
bitLow = (vectId - 8) * 8;
CSL_FINSR(((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->INTMUX2, \
bitLow+6,bitLow,eventId);
}
else {
bitLow = (vectId - 12) * 8;
CSL_FINSR(((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->INTMUX3, \
bitLow+6,bitLow,eventId);
}
}
}
/* ============================================================================
* @n@b CSL_intcEventEnable
*
* @b Description
* This API enables particular event (EVTMASK0/1/2/3 bit programmation)
*
* @b Arguments
* @verbatim
eventId Intc event Identifier
@endverbatim
*
* <b> Return Value </b>
* CSL_IntcEventEnableState - Previous state
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n Particular event will be enabled
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_IntcEventEnableState prevState;
...
prevState = CSL_intcEventEnable(eventId);
...
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE CSL_IntcEventEnableState CSL_intcEventEnable (
CSL_IntcEventId eventId
)
{
Int _x;
Int _y;
Int _regVal;
CSL_IntcEventEnableState _oldState;
_y = eventId >> 5;
_x = eventId & 0x1f;
_regVal = ((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[_y];
_oldState = CSL_FEXTR(_regVal,_x,_x);
CSL_FINSR(_regVal,_x,_x,0);
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[_y] = _regVal;
return _oldState;
}
/* ============================================================================
* @n@b CSL_intcEventDisable
*
* @b Description
* This API disables particular event (EVTMASK0/1/2/3 bit programmation)
*
* @b Arguments
* @verbatim
eventId Intc event Identifier
@endverbatim
*
* <b> Return Value </b>
* CSL_IntcEventEnableState - Previous state
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n Particular event will be disabled
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_IntcEventEnableState eventStat;
...
eventStat = CSL_intcEventDisable(eventId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE CSL_IntcEventEnableState CSL_intcEventDisable (
CSL_IntcEventId eventId
)
{
Int _x;
Int _y;
Int _regVal;
CSL_IntcEventEnableState oldState;
_y = eventId >> 5;
_x = eventId & 0x1f;
_regVal = ((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[_y];
oldState = CSL_FEXTR(_regVal,_x,_x);
CSL_FINSR(_regVal,_x,_x,1);
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[_y] = _regVal;
return oldState;
}
/* ============================================================================
* @n@b CSL_intcEventRestore
*
* @b Description
* This API restores particular event (EVTMASK0/1/2/3 bit programmation)
*
* @b Arguments
* @verbatim
eventId Intc event Identifier
restoreVal Restore value
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n particular event will be restored
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_IntcEventEnableState restoreVal;
CSL_IntcEventEnableState eventStat;
...
eventStat = CSL_intcEventResore(eventId, restoreVal);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE void CSL_intcEventRestore(
CSL_IntcEventId eventId,
CSL_IntcEventEnableState restoreVal
)
{
Int _x;
Int _y;
_y = eventId >> 5;
_x = eventId & 0x1F;
CSL_FINSR(((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[_y], _x, _x, \
restoreVal);
}
/* ============================================================================
* @n@b CSL_intcEventSet
*
* @b Description
* This API sets Event (EVTMASK0/1/2/3 bit programmation)
*
* @b Arguments
* @verbatim
eventId Intc event identifier
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n Particular event will set
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
...
CSL_intcEventSet(eventId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE void CSL_intcEventSet(
CSL_IntcEventId eventId
)
{
Int _x;
Int _y;
_y = eventId >> 5;
_x = eventId & 0x1F;
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTSET[_y] = CSL_FMKR(_x,_x,1);
}
/* ============================================================================
* @n@b CSL_intcEventClear
*
* @b Description
* This API clears particular event (EVTMASK0/1/2/3 bit programmation)
*
* @b Arguments
* @verbatim
eventId Intc event identifier
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n Particular event will be cleared
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
...
CSL_intcEventClear(eventId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE void CSL_intcEventClear (
CSL_IntcEventId eventId
)
{
Int _x;
Int _y;
_y = eventId >> 5;
_x = eventId & 0x1F;
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTCLR[_y] = CSL_FMKR(_x,_x,1);
}
/* ============================================================================
* @n@b CSL_intcCombinedEventClear
*
* @b Description
* This API clears particular combined events
* (EVTMASK0/1/2/3 bit programmation)
*
* @b Arguments
* @verbatim
eventId Intc event identifier
clearMask Bit Mask of events to be cleared
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n Particular combined event will be cleared
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_BitMask32 clearMask;
...
CSL_intcEventClear(eventId, clearMask);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE void CSL_intcCombinedEventClear(
CSL_IntcEventId eventId,
CSL_BitMask32 clearMask
)
{
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTCLR[eventId] = clearMask;
}
/* ============================================================================
* @n@b CSL_intcCombinedEventGet
*
* @b Description
* This API gets particular combined events
* (EVTMASK0/1/2/3 bit programmation)
*
* @b Arguments
* @verbatim
eventId Intc event identifier
@endverbatim
*
* <b> Return Value </b>
* CSL_BitMask32 - The combined events information
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_BitMask32 combEvtStat;
...
combEvtStat = CSL_intcEventClear(eventId);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE CSL_BitMask32 CSL_intcCombinedEventGet(
CSL_IntcEventId eventId
)
{
return (((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->MEVTFLAG[eventId]);
}
/* ============================================================================
* @n@b CSL_intcCombinedEventEnable
*
* @b Description
* This API enables particular combined events
*
* @b Arguments
* @verbatim
eventId event identifier
enableMask BitMask of events to be enabled
@endverbatim
*
* <b> Return Value </b>
* CSL_BitMask32 - previous state
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_BitMask32 enableMask;
CSL_BitMask32 combEvtStat;
...
combEvtStat = CSL_intCombinedEventEnable(eventId, enableMask);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE CSL_BitMask32 CSL_intcCombinedEventEnable(
CSL_IntcEventId eventId,
CSL_BitMask32 enableMask
)
{
CSL_BitMask32 evtMask =
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[eventId];
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[eventId] = ~enableMask;
return evtMask;
}
/** ============================================================================
* @n@b CSL_intcCombinedEventDisable
*
* @b Description
* This API disables particular combined events
*
* @b Arguments
* @verbatim
eventId Intc event identifier
enableMask Bit Mask of events to be disabled
@endverbatim
*
* <b> Return Value </b>
* CSL_BitMask32 - previous state
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_BitMask32 disableMask;
CSL_BitMask32 combEvtStat;
...
combEvtStat=CSL_intCombinedEventDisable(eventId, disableMask);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE CSL_BitMask32 CSL_intcCombinedEventDisable (
CSL_IntcEventId eventId,
CSL_BitMask32 enableMask
)
{
CSL_BitMask32 evtMask =
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[eventId];
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[eventId] = enableMask;
return evtMask ;
}
/* ============================================================================
* @n@b CSL_intcCombinedEventRestore
*
* @b Description
* This API restores particular combined events
*
* @b Arguments
* @verbatim
eventId Intc event identifier
restoreMask Bit Mask of events to be restored
@endverbatim
*
* <b> Return Value </b>
* None
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n INTC hardware registers
*
* @b Example
* @verbatim
CSL_IntcEventId eventId;
CSL_BitMask32 restoreMask;
CSL_BitMask32 combEvtStat;
...
combEvtStat=CSL_intCombinedEventRestore(eventId, restoreMask);
...
@endverbatim
* ===========================================================================
*/
CSL_IDEF_INLINE void CSL_intcCombinedEventRestore(
CSL_IntcEventId eventId,
CSL_BitMask32 restoreMask
)
{
((CSL_IntcRegsOvly)CSL_INTC_0_REGS)->EVTMASK[eventId] = restoreMask;
}
/* ============================================================================
* @n@b CSL_intcInterruptDropEnable
*
* @b Description
* This API enables interrupts for which drop detection
*
* @b Arguments
* @verbatim
dropMask Vector id mask
@endverbatim
*
* <b> Return Value </b>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -