CSL_IntcContext intcContext; CSL_IntcEventHandlerRecord EventHandler[30]; CSL_IntcGlobalEnableState state; CSL_IntcParam vectIdMsi; CSL_IntcObj intcObjMsi; CSL_IntcHandle hTestMsi; CSL_IntcEventHandlerRecord EventRecord; //MSI Interrupt Handler static void msi_irq_handler (void* Handle) { ..... } //MSI interrupt routing { /* INTC module initialization */ intcContext.eventhandlerRecord = EventHandler; intcContext.numEvtEntries = 10; /* Open the INTC Module for Vector ID: 4 and Event ID: 17 (C6678 DSP) * Refer to the interrupt architecture and mapping document for the Event ID * PCIEXpress_MSI_INTn (Message Signaled Interrupt Mode) */ vectIdMsi = CSL_INTC_VECTID_4; hTestMsi = CSL_intcOpen (&intcObjMsi, 17, &vectIdMsi, NULL); if (hTestMsi == NULL) { printf("Error: GEM-INTC Open failed for MSI event\n"); return; } /* Register an call-back handler which is invoked when the event occurs. */ EventRecord.handler = &msi_irq_handler; //EventRecord.arg = (void *)hTestMsi; EventRecord.arg = 0; if (CSL_intcPlugEventHandler(hTestMsi, &EventRecord) != CSL_SOK) { printf("Error: GEM-INTC Plug MSI event handler failed\n"); return; } /* Enabling the events. */ if (CSL_intcHwControl(hTestMsi, CSL_INTC_CMD_EVTENABLE, NULL) != CSL_SOK) { printf("Error: GEM-INTC CSL_INTC_CMD_EVTENABLE command failed for MSI event\n"); return; } printf("Debug: GEM-INTC Configuration Completed \n"); }