SPRUIL1D May 2019 – December 2024 DRA829J , DRA829J-Q1 , DRA829V , DRA829V-Q1 , TDA4VM , TDA4VM-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-105 lists the modules' hardcoded parameters used for this example:
| Parameter | Value NAVSS0 | From Table | Description |
|---|---|---|---|
| RA_UDMAP0_RX | 300 | 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-106 the variables and their respective calculations for this example.
| Variable | Calculations/Value | Description |
|---|---|---|
| R# | = (RA_UDMAP0_RX + 16) = (300 + 16) = 316 | 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-107 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[316]_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 |