OEMInterruptHandler not called for SSP3 interrupt RRS feed

  • Question

  • I added SSP driver to a PXA270 CE 5.0 platform, it works fine with SSP2 port but doesn't work for SSP3 port because I never got SSP3 interrupt, however if I add the following to OEMInterruptHandler, if ((icip & 1) && (icmr & 1)) return SYSINTR_SSP3, then SSP3 works too.  The problem is although bit 0 of icip and icmr is both set, OEMInterruptHandler is not called for SSP3 interrupt, it is normally when the scheduler interrupt happens that I have the chance to check the SSP3 interrupt.  Is there any register I could have missed that can cause this issue?

    One obvious thing is SSP3 IRQ is defined as 0 in ichp and icip, the OEMInterruptHanlder in WINCE500\Platform\COMMON\src\arm\intel\pxa27x\intr\intr.c has the following code.

        // Determine the IRQ of the highest priority pending interrupt
        irq = (UINT16)((g_pICReg->ichp >> 16) & 0x3F);

        if (irq == 0)
    This is obviously a bug, because it should be SSP3 interrupt when irq is 0 in the above code.  But my platform OEMInterruptHandler doesn't have this bug, I still don't get SSP3 interrupt. Could it be a bug in functions calling OEMInterruptHandler?  Is the source code available?

    Another clue is when ((icip & 1) && (icmr & 1)) happens, VAL_IRQ bit of ichp is not set, it is set for all other interrupts. 

    • Edited by VACE Wednesday, January 11, 2012 8:22 PM
    Wednesday, January 11, 2012 7:54 PM

All replies

  •  if ((icip & 1) && (icmr & 1)) return SYSINTR_SSP3

    is just the simplified version to show the logic, actually I am calling SSP3ISR function to mask the interrupt etc.

    Wednesday, January 11, 2012 8:17 PM
  • In short, on CE 5.0 PXA270 platform, if bit 0 of icmr and icip is set for SSP3, what could be the possible reason that OEMInterruptHandler is not triggered or VAL_IRQ bit of ichp not set?
    • Edited by VACE Wednesday, January 11, 2012 8:22 PM
    Wednesday, January 11, 2012 8:21 PM