I am now able to get an INTA event to occur (refer to e2e.ti.com/.../415021), but I cannot create a second one.
My ISR is here.
void INTA_Event_isr(UArg arg)
{
Hwi_disable();
CpIntc_disableAllHostInts(0); //disable system interrupts
/* Clear the CIC0 system interrupt */
CpIntc_clearSysInt(0, 50); //clear interrupt event
//breakpoint is here; waiting for interrupt
Event_Transfer_Done = TRUE;
//enable PCIe INTa interrupt
*((uint32_t *)(0x21800000 + 0x184)) = 0x00000001; //LEGACY_A_IRQ_STATUS write to clear
*((uint32_t *)(0x21800000 + 0x18C)) = 0x00000001; //LEGACY_A_IRQ_ENABLE_CLR
*((uint32_t *)(0x21800000 + 0x188)) = 0x00000001; //LEGACY_A_IRQ_ENABLE_SET
*((uint32_t *)(0x02600284)) = 0x00040000; //Clear INTC0 event
*((uint32_t *)(0x21800000 + 0x50)) = 0x00000000; //clear inta event
CpIntc_enableAllHostInts(0);
Hwi_enable();
DMA_Transfer_Done = TRUE;
}
"CpIntc_clearSysInt(0, 50); //clear interrupt event" shouldn't be required, as the CIC should handle this. It is also redundant with the line: "*((uint32_t *)(0x02600284)) = 0x00040000; //Clear INTC0 event"
I also don't think it's necessary to disable/renable the INTA interrupt. I've only done these in an attempt to get the system to reset. For whatever reason, I can basically "one-shot" the system, but I cannot clear the flags and get the ISR to retrigger.
Any ideas to fix this would be appreciated.
Thanks
JW