Hi,
one of my customers has brought up an issue with the dsplink notify component in which the GPP was unable to generate an interrupt to the DSP. After the customer was doing a lot of debug, he found a potential issue with the KICK0/1 registers being in a locked state. The current workaround is to add code in the da8xxgem_hal_intgen.c to unlock the KICK registers everytime before the interrupt bit is set. This allows the interrupt to be generated correctly and the DSP can see it.
The following code was added to da8xxgem_hal_intgen.c
case DSP_IntCtrlCmd_Send:
{ index = ARM2DSP_INT_INDEX (intId) ; addr = halObject->baseCfgBus + halObject->offsetSysModule + OFFSET_CHIPSIG ; index = ARM2DSP_INT_INDEX (intId) ;
/* Unlock the kick0 area */
*((
volatile Uint32 *) ( halObject->baseCfgBus
+ halObject->offsetSysModule + OFFSET_KICK0 )) = KICK0_UNLOCKVAL ;
/* Unlock the kick1 area */
*((
volatile Uint32 *) ( halObject->baseCfgBus
+ halObject->offsetSysModule + OFFSET_KICK1)) = KICK1_UNLOCKVAL ; SET_BIT (*((Uint32 *) addr), (index + BITPOS_ARM2DSPINTSET)) ; }
break;
Can the DSPLINK team confirm that this is a necessary change? Has there been a later version of DSPLINK in which this is fixed?
Thanks,
--Gunter