Below is the code I used to register an interrupt for EPWM0, but the call Sciclient_rmIrqSet failed
static int32_t gIntIndex = CSLR_R5FSS0_CORE0_INTR_EPWM0_EPWM_ETINT_0; static int32_t configureIntrRouter(void) { int32_t status; struct tisci_msg_rm_irq_set_req rmIrqReq; struct tisci_msg_rm_irq_set_resp rmIrqResp; memset (&rmIrqReq,0,sizeof(rmIrqReq)); rmIrqReq.secondary_host = TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST; rmIrqReq.src_id = TISCI_DEV_EPWM0; rmIrqReq.src_index = 0; /* Set the destination interrupt */ rmIrqReq.valid_params |= TISCI_MSG_VALUE_RM_DST_ID_VALID; rmIrqReq.valid_params |= TISCI_MSG_VALUE_RM_DST_HOST_IRQ_VALID; rmIrqReq.dst_id = TISCI_DEV_R5FSS0_CORE0; rmIrqReq.dst_host_irq = gIntIndex; issLogPrintf("[%s:%d] src_id=%d\n",__func__, __LINE__,rmIrqReq.src_id); issLogPrintf("[%s:%d] src_index=%d\n",__func__, __LINE__,rmIrqReq.src_index); issLogPrintf("[%s:%d] dst_id=%d\n",__func__, __LINE__,rmIrqReq.dst_id); issLogPrintf("[%s:%d] dst_host_irq=%d\n",__func__, __LINE__,rmIrqReq.dst_host_irq); status = Sciclient_rmIrqSet(&rmIrqReq, &rmIrqResp, SCICLIENT_SERVICE_WAIT_FOREVER); if (status != 0) { issprint("Sciclient_rmIrqSet err: %d ,index:%d!!!\n", status, gIntIndex); } return status; }
The following are the registration parameters
[MCU2_0] 23.525313 s: [configureIntrRouter:853] src_id=160 [MCU2_0] 23.525350 s: [configureIntrRouter:854] src_index=0 [MCU2_0] 23.525383 s: [configureIntrRouter:855] dst_id=279 [MCU2_0] 23.525416 s: [configureIntrRouter:856] dst_host_irq=104 [MCU2_0] 23.526154 s: [ DRV ][ epwm.c:configureIntrRouter:860 ] Sciclient_rmIrqSet err: -1 ,index:104!!!
Thank you for your support and suggestions!