![]() |
![]() |
Functions | |
| int | IRQ_plug (Uint16 EventId, IRQ_IsrPtr funcAddr) |
| int | _IRQ_plug (Uint16 EventId, IRQ_IsrPtr funcAddr) |
| CSL_Status | IRQ_init (CSL_IRQ_Dispatch *dispatchTable, Uint16 biosPresent) |
| CSL_Status | IRQ_clear (Uint16 EventId) |
| void | IRQ_clearAll (void) |
| CSL_Status | IRQ_config (Uint16 EventId, CSL_IRQ_Config *config) |
| CSL_Status | IRQ_getConfig (Uint16 EventId, CSL_IRQ_Config *config) |
| int | IRQ_disable (Uint16 EventId) |
| void | IRQ_disableAll (void) |
| int | IRQ_enable (Uint16 EventId) |
| CSL_Status | IRQ_restore (Uint16 EventId, int value) |
| CSL_Status | IRQ_getArg (Uint16 EventId, Uint32 *arg) |
| CSL_Status | IRQ_map (Uint16 EventId) |
| CSL_Status | IRQ_setArg (Uint16 EventId, Uint32 val) |
| CSL_Status | IRQ_setVecs (Uint32 Ivpd) |
| CSL_Status | IRQ_test (Uint16 EventId, Bool *IntStatus) |
| Bool | IRQ_globalDisable () |
| Bool | IRQ_globalEnable () |
| void | IRQ_globalRestore (Bool val) |
| int _IRQ_plug | ( | Uint16 | EventId, |
| IRQ_IsrPtr | funcAddr | ||
| ) |
============================================================================
IRQ_plug
Description
This function is used to register the ISR routine for the corresponding interrupt event.This is defined in assembly file - csl_irqplug.asm
Arguments
EventId Interrupt Event Number
funcAddr ISR function Address
* Pre Condition
IRQ_setVecs API should be called before calling this API
Post Condition
Register ISR with Interrupt event number
Modifies
1. update vector table
Example
interrupt void ISR_routine(void);
CSL_Status status;
Uint32 vectorAddress;
// Adress for interrupt vector table
extern void VECSTART(void); // defined in vector table
...
// to set the interrupt vector table address
status = IRQ_setVecs((Uint32)&VECSTART);
IRQ_plug(SAR_EVENT,&ISR_routine);
...
============================================================================
| CSL_Status IRQ_clear | ( | Uint16 | EventId | ) |
============================================================================
IRQ_clear
Description
This function acknowledge the interrupt by clearing the corresponding Interrupt flag .
Arguments
eventId Event Id for the peripheral in IFR Register
Return Value CSL_Status
Pre Condition
IRQ_setVecs and IRQ_plug API should be called before calling this API
Post Condition
IFR Register bit will be cleared
Modifies
1. The status variable
2. IFR Register Example
Uint16 EventId;
CSL_status status;
...
status = IRQ_clear(EventId);
============================================================================
References CSL_INTC_BIT_SET, IRQ_globalDisable(), IRQ_globalRestore(), RCV2_EVENT, SINT31_EVENT, and XMT3_EVENT.
| void IRQ_clearAll | ( | void | ) |
============================================================================
IRQ_clearAll
Description
This function clears all the interrupts. Both IFR0 and IFR1 are cleared by this function.
Arguments
None
Return Value None
Pre Condition
None
Post Condition
Clears All the interrupt
Modifies
Interrupt Flag Registers
Example
IRQ_clearAll();
============================================================================
References CSL_INTC_IFR_RESET.
| CSL_Status IRQ_config | ( | Uint16 | EventId, |
| CSL_IRQ_Config * | config | ||
| ) |
============================================================================
IRQ_config
Description
This API function is used to update ISR function and its arguments passed in config structure for the corresponding event in dispatch table Arguments
EventId Id for peripheral in IFR and IER Registers .
config Config structure
* Return Value CSL_Status
Pre Condition
IRQ_init API should be called before this API call
Post Condition
It updates CSL_IrqDataObj structure Modifies
1. The status variable
2. Hardware Registers
Example
interrupt void ISR_routine(void);
CSL_Status status;
// Adress for interrupt vector table
extern void VECSTART(void);
IRQ_Config config;
Uint16 EventId;
status = IRQ_init();
...
// to set the interrupt vector table address
IRQ_setVecs((Uint32)&VECSTART);
...
config.funcAddr = &ISR_routine;
status = IRQ_config(EventId,&config);
...
============================================================================
References CSL_IRQ_Config::cacheCtrl, CSL_IRQ_Dispatch::cacheCtrl, CSL_IRQ_DATA, CSL_IRQ_Config::funcAddr, CSL_IRQ_Dispatch::funcAddr, CSL_IRQ_Config::funcArg, CSL_IRQ_Dispatch::funcArg, CSL_IRQ_Config::ierMask, CSL_IRQ_Dispatch::ierMask, CSL_IrqDataObj::IrqDispatchTable, and SINT31_EVENT.
| int IRQ_disable | ( | Uint16 | EventId | ) |
============================================================================
IRQ_disable
Description
It disables the corresponding interrupt in IER Register and also return the previous bit mask value
Arguments
EventId Id for peripheral in IFR and IER Registers
* Return Value IER Register value before enabling
Pre Condition
IRQ_setVecs andIRQ_plug API should be called before calling this API
Post Condition
It disabled the corresponding interrupt bit in IER Register
Modifies
IER h/w Registers
Example
Uint16 EventId;
int old_IER;
old_IER = IRQ_disable(EventId);
============================================================================
References CSL_INTC_BIT_RESET, IRQ_globalDisable(), IRQ_globalRestore(), RCV2_EVENT, SINT31_EVENT, and XMT3_EVENT.
| void IRQ_disableAll | ( | void | ) |
============================================================================
IRQ_disableAll
Description
This function disables all the interrupts avaible on C5505 DSP. Both IER0 and IER1 are cleared by this function
Arguments
None
* Return Value None
Pre Condition
None
Post Condition
Disables all the interrupts
Modifies
Interrupt Enable Registers
Example
IRQ_disableAll();
============================================================================
| int IRQ_enable | ( | Uint16 | EventId | ) |
============================================================================
IRQ_enable
Description
It enables the corresponding interrupt bit in IER Register and also return the previous bit mask value
Arguments
EventId Id for peripheral in IFR and IER Registers
* Return Value IER Register value before enabling
Pre Condition
IRQ_setVecs and IRQ_plug API should be called before calling this API
Post Condition
It set the corresponding interrupt bit to 1 in IER Register
Modifies
IER CPU Registers
Example
Uint16 EventId;
int old_IER;
old_IER = IRQ_enable(EventId);
============================================================================
============================================================================
IRQ_enable
Description
It enables the corresponding interrupt bit in IER Register and also return the previous bit mask value
Arguments
EventId Id for peripheral in IFR and IER Registers
* Return Value IER Register value before enabling
Pre Condition
IRQ_setVecs andIRQ_plug API should be called before calling this API
Post Condition
It set the corresponding interrupt bit to 1 in IER Register
Modifies
IER CPU Registers
Example
Uint16 EventId;
int old_IER;
old_IER = IRQ_enable(EventId);
============================================================================
References CSL_INTC_BIT_SET, IRQ_globalDisable(), IRQ_globalRestore(), RCV2_EVENT, SINT31_EVENT, and XMT3_EVENT.
| CSL_Status IRQ_getArg | ( | Uint16 | EventId, |
| Uint32 * | arg | ||
| ) |
============================================================================
IRQ_getArg
Description
It gets the ISR function arguments correspond to eventId
Arguments
EventId Id for peripheral in IFR and IER Registers
* Return Value CSL_Status
Pre Condition
IRQ_init,IRQ_config should be called before calling this API
Post Condition
Modifies
arg variable
Example
Uint16 EventId;
Uint32 arg;
CSL_Status status;
status = IRQ_getArg(EventId,&arg);
============================================================================
References CSL_IRQ_DATA, CSL_IRQ_Dispatch::funcArg, CSL_IrqDataObj::IrqDispatchTable, and SINT31_EVENT.
| CSL_Status IRQ_getConfig | ( | Uint16 | EventId, |
| CSL_IRQ_Config * | config | ||
| ) |
============================================================================
IRQ_getConfig
Description
It reads the configuration values (function address,arguments etc) from global IRQ data object structure
Arguments
EventId Id for peripheral in IFR and IER Registers
config Config structure
Return Value CSL_Status
Pre Condition
IRQ_config should be called before calling this API
Post Condition
The configuration structure will be populated
Modifies
1.status 2.config structure Example
// Global IRQ object structure
CSL_IrqDataObj CSL_IrqData;
CSL_Status status;
IRQ_Config config;
Uint16 EventId;
...
status = IRQ_config(EventId,&config);
...
status = IRQ_getConfig(EventId,&config);
============================================================================
References CSL_IRQ_Dispatch::cacheCtrl, CSL_IRQ_Config::cacheCtrl, CSL_IRQ_DATA, CSL_IRQ_Dispatch::funcAddr, CSL_IRQ_Config::funcAddr, CSL_IRQ_Dispatch::funcArg, CSL_IRQ_Config::funcArg, CSL_IRQ_Dispatch::ierMask, CSL_IRQ_Config::ierMask, CSL_IrqDataObj::IrqDispatchTable, and SINT31_EVENT.
| Bool IRQ_globalDisable | ( | ) |
============================================================================
IRQ_globalDisable
Description
It disables the interrupt globally by disabling INTM bit and also return the previous mask value for INTM bit
Arguments
*
Return Value Bool
Pre Condition
None
Post Condition
set INTM bit to 1 in ST1 CPU Register
Modifies 1. ST1 CPU Register Example
Bool oldMask;
....
oldMask = IRQ_globalDisable();
============================================================================
Referenced by IRQ_clear(), IRQ_disable(), IRQ_enable(), IRQ_restore(), IRQ_setVecs(), IRQ_test(), MMC_read(), MMC_write(), USB_confDmaRx(), USB_confDmaTx(), USB_initDma(), and USB_initQueueManager().
| Bool IRQ_globalEnable | ( | ) |
============================================================================
IRQ_globalEnable
Description
It enables the interrupt globally by enabling INTM bit and also return the previous mask value for INTM bit
Arguments
*
Return Value Bool
Pre Condition
None
Post Condition
set INTM bit to 0 in ST1 CPU Register
Modifies 1.ST1 CPU Register Example
Bool oldMask;
....
oldMask = IRQ_globalEnable();
============================================================================
| void IRQ_globalRestore | ( | Bool | value | ) |
============================================================================
IRQ_globalRestore
Description
It sets INTM bit to the value passed in the API
Arguments
val - INTM bit value
* Return Value void
Pre Condition
IRQ_globalDisable or IRQ_globalEnable should be called
Post Condition
set or clear INTM bit in ST1 CPU Register
Modifies 1. ST1 CPU Register Example
Bool val;
....
IRQ_globalRestore(val);
============================================================================
Referenced by IRQ_clear(), IRQ_disable(), IRQ_enable(), IRQ_restore(), IRQ_setVecs(), IRQ_test(), MMC_read(), MMC_write(), USB_confDmaRx(), USB_confDmaTx(), USB_initDma(), and USB_initQueueManager().
| CSL_Status IRQ_init | ( | CSL_IRQ_Dispatch * | dispatchTable, |
| Uint16 | biosPresent | ||
| ) |
============================================================================
IRQ_init
Description
This is the initialization function for INTC module. This function initializes the CSL INTC data structures
Arguments
dispatchTable - Dispatch table
biosPresent - DspBios is present or not
* Return Value CSL_Status
Post Condition
Initializes CSL data structures
Modifies
1. The status variable
2. Update CSL_IrqDataObj structure
Example
CSL_Status status;
CSL_IRQ_Dispatch dispatchTable
...
status = IRQ_init(&dispatchTable,0);
...
============================================================================
References CSL_IrqDataObj::biosPresent, CSL_IRQ_DATA, INV, IRQ_EVENT_CNT, IRQ_MASK32, CSL_IrqDataObj::IrqDispatchTable, CSL_IrqDataObj::IrqEventTable, and CSL_IrqDataObj::IrqIntTable.
| CSL_Status IRQ_map | ( | Uint16 | EventId | ) |
============================================================================
IRQ_map
Description
It initialize the interrupt table with the event mask value for the corresponding event id
Arguments
EventId Id for peripheral in IFR and IER Registers
* Return Value CSL_Status
Pre Condition
IRQ_init should be called before calling this API
Post Condition
Modifies
CSL_IrqData structure
Example
Uint16 EventId;
CSL_Status status;
status = IRQ_map(EventId);
============================================================================
References CSL_IRQ_DATA, IRQ_MASK32, CSL_IrqDataObj::IrqIntTable, and SINT31_EVENT.
| int IRQ_plug | ( | Uint16 | EventId, |
| IRQ_IsrPtr | funcAddr | ||
| ) |
============================================================================
IRQ_plug
Description
This function is used to register the ISR routine for the corresponding interrupt event.This is defined in assembly file - csl_irqplug.asm
Arguments
EventId Interrupt Event Number
funcAddr ISR function Address
* Pre Condition
IRQ_setVecs API should be called before calling this API
Post Condition
Register ISR with Interrupt event number
Modifies
1. update vector table
Example
interrupt void ISR_routine(void);
CSL_Status status;
Uint32 vectorAddress;
// Adress for interrupt vector table
extern void VECSTART(void); // defined in vector table
...
// to set the interrupt vector table address
status = IRQ_setVecs((Uint32)&VECSTART);
IRQ_plug(SAR_EVENT,&ISR_routine);
...
============================================================================
| CSL_Status IRQ_restore | ( | Uint16 | EventId, |
| int | value | ||
| ) |
============================================================================
IRQ_restore
Description
It restores the given value in IER Register passed in API
Arguments
EventId Id for peripheral in IFR and IER Registers
value bit value - 1 or 0
* Return Value CSL_Status
Pre Condition
IRQ_enable or IRQ_disable should be called before calling this API
Post Condition
It configures the given bit value in IER Register
Modifies
IER CPU Registers
Example
Uint16 EventId;
int value;
CSL_Status status;
value = IRQ_enable(EventId);
..
status = IRQ_restore(EventId,value);
============================================================================
References IRQ_globalDisable(), IRQ_globalRestore(), RCV2_EVENT, SINT31_EVENT, and XMT3_EVENT.
| CSL_Status IRQ_setArg | ( | Uint16 | EventId, |
| Uint32 | val | ||
| ) |
============================================================================
IRQ_setArg
Description
It sets the ISR function arguments correspond to the eventId
Arguments
EventId Id for peripheral in IFR and IER Registers
val value for ISR arguments
* Return Value CSL_Status
Pre Condition
IRQ_init should be called before calling this API
Post Condition
Modifies
CSL_IrqData structure
Example
Uint16 EventId;
Uint32 val;
CSL_Status status;
status = IRQ_setArg(EventId,val);
============================================================================
============================================================================
IRQ_setArg
Description
It sets the ISR function arguments correspond to the eventId
Arguments
EventId Id for peripheral in IFR and IMR Registers
val value for ISR arguments
* Return Value CSL_Status
Pre Condition
IRQ_init should be called before calling this API
Post Condition
Modifies
status
Example
// Global IRQ object structure
CSL_IrqDataObj CSL_IrqData;
Uint16 EventId;
Uint32 val;
CSL_Status status;
status = IRQ_setArg(EventId,val);
============================================================================
References CSL_IRQ_DATA, CSL_IRQ_Dispatch::funcArg, CSL_IrqDataObj::IrqDispatchTable, and SINT31_EVENT.
| CSL_Status IRQ_setVecs | ( | Uint32 | Ivpd | ) |
============================================================================
IRQ_setVecs
Description
It stores the Interrupt vector table address in Interrupt vector pointer DSP and Interrupt vector pointer host Registers
Arguments
Ivpd Interrupt Vector Pointer Address
* Return Value CSL_Status
Pre Condition
None
Post Condition
It sets IVPD and IVPH CPU Registers
Modifies
IVPD and IVPH CPU Registers
Example
// Interrupt Vector Table Address
Uint32 Ivpd;
CSL_Status status;
status = IRQ_setVecs(Ivpd);
============================================================================
============================================================================
IRQ_setVecs
Description
It stores the Interrupt vector table address in Interrupt vector pointer DSP and Interrupt vector pointer host Registers
Arguments
Ivpd Interrupt Vector Pointer Address
* Return Value CSL_Status
Pre Condition
None
Post Condition
It sets IVPD and IVPH CPU Registers
Modifies
IVPD and IVPH CPU Registers
Example
// Interrupt Vector Table Address
Uint32 Ivpd;
CSL_Status status;
status = IRQ_setVecs(Ivpd);
============================================================================
References CSL_CPU_IVPD_MASK, CSL_CPU_IVPD_SHIFT, IRQ_globalDisable(), and IRQ_globalRestore().
| CSL_Status IRQ_test | ( | Uint16 | EventId, |
| Bool * | IntStatus | ||
| ) |
============================================================================
IRQ_test
Description
It reads the status bit for the particular event from IFR Registers
Arguments
EventId Interrupt Vector Pointer Address
* IntStatus to store Interrupt Status bit in IFR Register
* Return Value CSL_Status
Pre Condition
IRQ_init should be called before calling this API
Post Condition
It stores the IFR bit value in IntStatus variable
Modifies
1. IntStatus - to store Interrupt flag bit
Example
Uint16 EventId;
CSL_Status status;
bool IntStatus;
status = IRQ_test(EventId,&IntStatus);
============================================================================
============================================================================
IRQ_test
Description
It gets the status bit for the particular Interupt from IFR Registers
Arguments
EventId Interrupt Vector Pointer Address
* IntStatus to store Interrupt Status bit in IFR Register
* Return Value CSL_Status
Pre Condition
IRQ_init should be called before calling this API
Post Condition
It stores the IFR bit value in IntStatus variable
Modifies
1. IntStatus - to store Interrupt flag bit
Example
Uint16 EventId;
CSL_Status status;
bool IntStatus;
status = IRQ_test(EventId,&IntStatus);
============================================================================
References IRQ_globalDisable(), IRQ_globalRestore(), RCV2_EVENT, SINT31_EVENT, and XMT3_EVENT.
1.7.4