SPRUIL1D May 2019 – December 2024 DRA829J , DRA829J-Q1 , DRA829V , DRA829V-Q1 , TDA4VM , TDA4VM-Q1
The inter-processor communication registers are used for generating interrupts to the device cores. Any master having access to the CTRL_MMR0 registers can generate an interrupt by writing 1h to the CTRLMMR_IPC_SETx[0] bits. The interrupt is cleared when 1h is written to the CTRLMMR_IPC_CLRx[0] bits. For example, writing 1h to CTRLMMR_IPC_SET8[0] IPC_SET generates an interrupt to A72 core 0, and writing 1h to CTRLMMR_IPC_CLR8[0] IPC_CLR cleares this event. These registers provide also a Source ID facility through the CTRLMMR_IPC_SETx[31-4] IPC_SRC_SET and CTRLMMR_IPC_CLRx[31-4] IPC_SRC_CLR bit fields by which up to 28 different sources of interrupts can be identified. Allocation of the source bits to source processor and meaning is entirely based on software convention. Virtually, anything can be a source for these fields as this is completely controlled by software.
Writing 1h to an IPC_SRC_SET bit sets to 1h both the IPC_SRC_SET and corresponding IPC_SRC_CLR bit. Writing 1h to an IPC_SRC_CLR bit sets to 0h (clears) both the IPC_SRC_CLR and corresponding IPC_SRC_SET bit. The same logic applies also to the IPC_SETx[0] IPC_SET and IPC_CLRx[0] IPC_CLR bits. Table 5-22 summarizes the inter-processor communication (IPC) registers.
IPC Register | Writing 1h to bit 0 results in: | Writing 1h to one of the bits [31-4] results in: |
---|---|---|
CTRLMMR_IPC_SET0 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET6 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET7 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET8 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET9 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET16 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET17 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET18 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET19 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET20 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET21 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET22 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_SET23 |
| setting that bit and the corresponding IPC_SRC_CLR bit to 1h |
CTRLMMR_IPC_CLR0 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR6 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR7 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR8 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR9 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR16 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR17 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR18 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR19 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR20 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR21 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR22 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
CTRLMMR_IPC_CLR23 |
| clearing (set to 0h) that bit and the corresponding IPC_SRC_SET bit |
For latency reasons the IPC registers are not write protected by KICK registers which means that they can be written to without a need for performing unlocking procedure as described in Kick Protection Registers.