I am writing EDMA driver for OMAPL138 for EDMA 1 with base address 0x01E30000 has given in omap-l138.pdf and I am trying to register ISR for event 91. My code is given below. I am using Channel 0 for transfers . ISR is not being called.
int edma_register_isr(void *isr_func, struct edma_prv_data *pdata)
{
/* TODO: User is required to define this function */
Hwi_Params hwiParams;
Hwi_Handle myHwi;
Error_Block eb;
System_printf("Registering ISR\n");
REGW32(DSP_INTMUX1,(91<<0));
/* Initialize error block and hwiParams to default values */
Error_init(&eb);
Hwi_Params_init(&hwiParams);
/* Set ISR parameters */
hwiParams.arg =(unsigned int)pdata ; /* Set your prvdata structure */
hwiParams.eventId =91; /* INT Num*/
hwiParams.enableInt = FALSE;
/* Create a Hwi object for interrupt number 91
* that invokes ISR with argument*/
myHwi = Hwi_create(4,isr_func, &hwiParams, &eb);
if (myHwi == NULL) {
System_abort("Hwi create failed");
}
/* enable both interrupts */
Hwi_enableInterrupt(4);
return 0;
}
My ISR functions has prints which are not being printed.
I have prints for IPR register before issuing start and after the end of transfer, which shows that the interrupts have occured. (IPR = 1). I have also enabled interrupts by writing 0xffffffff in IESR register.