SPRUJ28E November 2021 – September 2024 AM68 , AM68A , TDA4AL-Q1 , TDA4VE-Q1 , TDA4VL-Q1
This section uses the following example to illustrate how to configure the NAVSS interrupt support for a specific use-case:
Using NAVSS0, use A72 MPU interrupt 7 for UDMAP0 receive ring 16 (assumptions: use up/down event 10, NAVSS0_UDMASS_INTR_AGGR0 for interrupt aggregation, and virtual interrupt 3).
Table 10-97 lists the modules' hardcoded parameters used for this example:
Parameter | Value NAVSS0 | From Table | Description |
---|---|---|---|
RA_UDMAP0_RX | RINGACC Ring Mapping | Starting ring number for UDMA0 receive channels | |
RA_RING_CNT | 1024 | NAVSS0_RINGACC0 Configuration Parameters | Number of total rings supported |
IA_SEVI | 4608 | Interrupt Aggregators Parameters | NAVSS0_UDMASS_INTR_AGGR0 Steerable Event Input (SEVI) count |
IA_VINTR | 256 | Interrupt Aggregators Parameters | NAVSS0_UDMASS_INTR_AGGR0 Virtual Interrupt (VINTR) count |
IR_IBASE | 0 | NAVSS Interrupt Router Input Mapping | Interrupt-Router-input-interrupt base for NAVSS0_UDMASS_INTR_AGGR0 |
EO | 0 | Global event Map | Event offset. Destination is NAVSS0_UDMASS_INTR_AGGR0 |
CC_IBASE | 0 | NAVSS0 Hardware Requests | Interrupt-requests-to-CC base |
Table 10-98 the variables and their respective calculations for this example.
Variable | Calculations/Value | Description |
---|---|---|
R# | = (RA_UDMAP0_RX + 16) + 16) | Receive ring 16 translates to ring number |
E# | 10 | Zero-relative event number from PSILSS to NAVSS0_UDMASS_INTR_AGGR0 |
GE# | = (EO + E#) = (0 + 10) = 10 | Global event number (event 10 to be sent to NAVSS0_UDMASS_INTR_AGGR0) |
VI# | = 3 | VI# = 3 is per example assumptions. VI# could get any value 0 – IA_VINTR-1. |
SB# | = 200 | Must be in the range (VI#×64) – (( VI#×64)+63) = 192 – 255 in order to drive VI# 3. We will use 200 for this example. |
OI# | = (A72_IBASE + 7) = (0 + 7) = 7 | OI# = 7 is per example assumptions. OI# could get any value 0 – 119 to drive an A72 interrupt. |
Table 10-99 shows software register writes that will configure the NAVSS to produce the desired interrupt per the example description.
Module | Register | Value to Write | Description |
---|---|---|---|
RINGACC0 | RING[R#]_EVT (EVENT_j) | RING[]_EVT = GE# = 10 | Ring event number must be specified as a global event number |
INTR_AGGR0 | ENTRY[E#]_INTMAP (IMAP_j) | ENTRY[10]_INTMAP = (((SB#/64)&0x1FF)<<8) | (SB#%64) = (3<<8) | 8 = 0x308 | regnum = SB# / 64 bitnum = SB# % 64 |
INTR_AGGR0 | VINT[SB#/64]_ENABLE_SET (ENABLE_SET_j) | VINT[3]_ENABLE_SET = 1<<(SB# % 64) = 1<<8 = 0x100 | Enable interrupt |
INTR_ROUTER0 | INTERRUPT_CONTROL[OI#] (MUXCNTL_y) | INTERRUPT_CONTROL[7] = IR_IBASE + VI# = 0 + 3 = 3 | Route interrupt |