const InterruptIpu_NUM_EVES |
|
Maximum number of EVE cores
#define InterruptIpu_NUM_EVES (UInt8)4
DETAILS
Although your device may have fewer EVE cores, NUM_EVES represents
the maximum number of EVEs that may be present on a Vayu system.
const InterruptIpu_NUM_EVE_MBX |
|
Number of internal EVE mailboxes
DETAILS
Each EVE core has 3 mailboxes.
Although your device may have fewer EVE cores, NUM_EVE_MBX represents
the maximum number of EVE mailboxes (including all EVE cores) that may
be present.
const InterruptIpu_NUM_SYS_MBX |
|
Number of System mailboxes used by IPC
#define InterruptIpu_NUM_SYS_MBX (UInt8)4
DETAILS
This represents the number of System mailboxes used by IPC. IPC
currently uses system mailboxes 5, 6, 7 and 8.
struct InterruptIpu_IntInfo |
|
typedef struct InterruptIpu_IntInfo {
UInt localIntId;
UInt remoteIntId;
UInt intVectorId;
} InterruptIpu_IntInfo;
config InterruptIpu_ducatiCtrlBaseAddr // module-wide |
|
Base address for the Ducati CTRL register
extern const UInt32 InterruptIpu_ducatiCtrlBaseAddr;
config InterruptIpu_mailboxBaseAddr // module-wide |
|
Base address for the mailbox subsystems
DETAILS
The mailboxBaseAddr array indicates the virtual addresses through
which IPC will access various mailboxes. The specific mailbox addresses
each array index maps to follows:
- 0 - EVE1 MBX0
- 1 - EVE1 MBX1
- 2 - EVE1 MBX2 (unused, do not assign)
- 3 - EVE2 MBX0
- 4 - EVE2 MBX1
- 5 - EVE2 MBX2 (unused, do not assign)
- 6 - EVE3 MBX0
- 7 - EVE3 MBX1
- 8 - EVE1 MBX2 (unused, do not assign)
- 9 - EVE4 MBX0
- 10 - EVE4 MBX1
- 11 - EVE1 MBX2 (unused, do not assign)
- 12 - System Mailbox 5
- 13 - System Mailbox 6
- 14 - System Mailbox 7
- 15 - System Mailbox 8
Note that these mailboxes are not accessible at their physical
addresses (in the 0x4XXX_XXXX range). So default virtual addresses
through which these mailboxes will be accessed are assigned in the
0x6XXX_XXXX range. Users must ensure these virtual addresses are
correctly mapped to the 0x4XXX_XXXX-based phys addrs in each IPUs AMMU.
InterruptIpu_intClear() // module-wide |
|
Clear interrupt
ARGUMENTS
remoteProcId
Remote MultiProc Id
intInfo
Information needed to configure interrupt line
RETURNS
Value (if any) of the interrupt before
it was cleared
InterruptIpu_intDisable() // module-wide |
|
Disables the interrupt corresponding to intId
ARGUMENTS
remoteProcId
Remote MultiProc Id
intInfo
Information needed to configure interrupt line
InterruptIpu_intEnable() // module-wide |
|
Enables the interrupt corresponding to intId
ARGUMENTS
remoteProcId
Remote MultiProc Id
intInfo
Information needed to configure interrupt line
InterruptIpu_intRegister() // module-wide |
|
Register an interrupt line to a remote processor
Void InterruptIpu_intRegister(
UInt16 remoteProcId,
IInterrupt_IntInfo *
intInfo,
Fxn func,
UArg arg);
ARGUMENTS
remoteProcId
Remote MultiProc Id
intInfo
Information needed to configure interrupt line
func
Function to register.
arg
Argument that will be passed to func
InterruptIpu_intSend() // module-wide |
|
Send interrupt to the remote processor
ARGUMENTS
remoteProcId
Remote MultiProc Id
intInfo
Information needed to configure interrupt line
arg
Argument for sending interrupt.
InterruptIpu_intUnregister() // module-wide |
|
Unregister an interrupt line to a remote processor
ARGUMENTS
remoteProcId
Remote MultiProc Id
intInfo
Information needed to configure interrupt line
Module-Wide Built-Ins |
|
// Get this module's unique id
Bool InterruptIpu_Module_startupDone();
// Test if this module has completed startup
// The heap from which this module allocates memory
Bool InterruptIpu_Module_hasMask();
// Test whether this module has a diagnostics mask
Bits16 InterruptIpu_Module_getMask();
// Returns the diagnostics mask for this module
Void InterruptIpu_Module_setMask(Bits16 mask);
// Set the diagnostics mask for this module
const InterruptIpu.NUM_EVES |
|
Maximum number of EVE cores
const InterruptIpu.NUM_EVES = 4;
DETAILS
Although your device may have fewer EVE cores, NUM_EVES represents
the maximum number of EVEs that may be present on a Vayu system.
C SYNOPSIS
const InterruptIpu.NUM_EVE_MBX |
|
Number of internal EVE mailboxes
DETAILS
Each EVE core has 3 mailboxes.
Although your device may have fewer EVE cores, NUM_EVE_MBX represents
the maximum number of EVE mailboxes (including all EVE cores) that may
be present.
C SYNOPSIS
const InterruptIpu.NUM_SYS_MBX |
|
Number of System mailboxes used by IPC
const InterruptIpu.NUM_SYS_MBX = 4;
DETAILS
This represents the number of System mailboxes used by IPC. IPC
currently uses system mailboxes 5, 6, 7 and 8.
C SYNOPSIS
struct InterruptIpu.IntInfo |
|
var obj = new InterruptIpu.IntInfo;
obj.localIntId = UInt ...
obj.remoteIntId = UInt ...
obj.intVectorId = UInt ...
C SYNOPSIS
config InterruptIpu.ducatiCtrlBaseAddr // module-wide |
|
Base address for the Ducati CTRL register
InterruptIpu.ducatiCtrlBaseAddr = UInt32 0x40001000;
C SYNOPSIS
config InterruptIpu.mailboxBaseAddr // module-wide |
|
Base address for the mailbox subsystems
DETAILS
The mailboxBaseAddr array indicates the virtual addresses through
which IPC will access various mailboxes. The specific mailbox addresses
each array index maps to follows:
- 0 - EVE1 MBX0
- 1 - EVE1 MBX1
- 2 - EVE1 MBX2 (unused, do not assign)
- 3 - EVE2 MBX0
- 4 - EVE2 MBX1
- 5 - EVE2 MBX2 (unused, do not assign)
- 6 - EVE3 MBX0
- 7 - EVE3 MBX1
- 8 - EVE1 MBX2 (unused, do not assign)
- 9 - EVE4 MBX0
- 10 - EVE4 MBX1
- 11 - EVE1 MBX2 (unused, do not assign)
- 12 - System Mailbox 5
- 13 - System Mailbox 6
- 14 - System Mailbox 7
- 15 - System Mailbox 8
Note that these mailboxes are not accessible at their physical
addresses (in the 0x4XXX_XXXX range). So default virtual addresses
through which these mailboxes will be accessed are assigned in the
0x6XXX_XXXX range. Users must ensure these virtual addresses are
correctly mapped to the 0x4XXX_XXXX-based phys addrs in each IPUs AMMU.
C SYNOPSIS
metaonly config InterruptIpu.common$ // module-wide |
|
Common module configuration parameters
DETAILS
All modules have this configuration parameter. Its name
contains the '$' character to ensure it does not conflict with
configuration parameters declared by the module. This allows
new configuration parameters to be added in the future without
any chance of breaking existing modules.