SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
Each EMIF controller is able to generate one interrupt request which is connected to the IRQ_CROSSBAR module.Totally, there are two interrupt lines connected to two IRQ_CROSSBAR inputs. EMIF1 produces EMIF1_IRQ and EMIF2 produces EMIF2_IRQ. These interrupt lines can be asserted by one of the interrupt events listed in Table 15-72.
Each EMIF controller generates an interrupt on its interrupt line only if the interrupts are enabled by setting to 0x1 the corresponding bits in the EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_SET register. These interrupts can be disabled by setting to 0x1 the corresponding bits in the EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_CLEAR register. After the interrupt has been serviced the corresponding status flag must be cleared by software. This is done by setting to 0x1 the corresponding bit in the EMIF_SYSTEM_OCP_INTERRUPT_STATUS register which also clears the corresponding bit in the EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS register. The status flags in the EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS register are set even if the corresponding interrupt is disabled unlike those in the EMIF_SYSTEM_OCP_INTERRUPT_STATUS register, which are set only if the corresponding interrupt is enabled. An interrupt is also generated by the EMIF controller, if certain bit in the EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS register is set to 0x1 and the corresponding interrupt is enabled through the EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_SET register. This feature is useful when user software debugging is performed. In addition, even if interrupts are not enabled, certain status bit in EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS register can be cleared by setting to 0x1 the corresponding bit in the EMIF_SYSTEM_OCP_INTERRUPT_STATUS register.
The EMIF sets both the EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS[0] ERR_SYS and EMIF_SYSTEM_OCP_INTERRUPT_STATUS[0] ERR_SYS bits to 0x1, if access request for an unsupported command type, an unsupported addressing mode or an access request to an unsupported MAddrSpace is received. If such an error occurs, it is due to bad programming of the DMM. For more information about addressing, see Section 15.2, Dynamic Memory Manager.
The EMIF sets both the EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS[3] WR_ECC_ERR_SYS and EMIF_SYSTEM_OCP_INTERRUPT_STATUS[3] WR_ECC_ERR_SYS bits to 0x1, if a write access with byte count that is not multiple of the ECC quanta or with a non ECC quanta aligned address is performed within the address range protected by the ECC.
The EMIF sets both the EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS[4] TWOBIT_ECC_ERR_SYS and EMIF_SYSTEM_OCP_INTERRUPT_STATUS[4] TWOBIT_ECC_ERR_SYS bits to 0x1, if 2-bit ECC error for a read access performed within the address range protected by the ECC occurs.
The EMIF sets both the EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS[5] ONEBIT_ECC_ERR_SYS and EMIF_SYSTEM_OCP_INTERRUPT_STATUS[5] ONEBIT_ECC_ERR_SYS bits to 0x1, if the threshold for 1-bit ECC error is reached. For more information about the EMIF ECC feature, see Section 15.3.4.14, Error Correction And Detection Feature.
Table 15-72 lists the event flags and their corresponding event mask bits of the sources which can cause module interrupts.
Event Flag | Event Mask | Description |
---|---|---|
EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS[5] ONEBIT_ECC_ERR_SYS/ EMIF_SYSTEM_OCP_INTERRUPT_STATUS[5] ONEBIT_ECC_ERR_SYS | EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_SET[5] ONEBIT_ECC_ERR_SYS/ EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_CLEAR[5] ONEBIT_ECC_ERR_SYS | Interrupt if one bit ECC error threshold is reached |
EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS[4] TWOBIT_ECC_ERR_SYS/ EMIF_SYSTEM_OCP_INTERRUPT_STATUS[4] TWOBIT_ECC_ERR_SYS | EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_SET[4] TWOBIT_ECC_ERR_SYS/ EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_CLEAR[4] TWOBIT_ECC_ERR_SYS | Interrupt for two bit error detection |
EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS[3] WR_ECC_ERR_SYS/ EMIF_SYSTEM_OCP_INTERRUPT_STATUS[3] WR_ECC_ERR_SYS | EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_SET[3] WR_ECC_ERR_SYS/ EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_CLEAR[3] WR_ECC_ERR_SYS | Interrupt for memory access made to a non-quanta aligned location or done with byte count not multiple of the ECC quanta |
EMIF_SYSTEM_OCP_INTERRUPT_RAW_STATUS[0] ERR_SYS/ EMIF_SYSTEM_OCP_INTERRUPT_STATUS[0] ERR_SYS | EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_SET[0] EN_ERR_SYS/ EMIF_SYSTEM_OCP_INTERRUPT_ENABLE_CLEAR[0] EN_ERR_SYS | Interrupt for command or address error |