Hi all,
First, I have learned many things about VICP when searched this forum and I wanted to thank all of the contributors.
Could you help me to find out how to synchronize with the VICP on DM6446 device.
I have been reading all available documents for VICP, but am still unsure how interrupts that are asserted by the VICP are getting to the C64+ side of the device. DM6446 data manual states that VICP events 9, 10, 11 are available only to the ARM interrupt controller.
On the VICPLIB library (sprc831) FAQ web page there are discussed the VICP interrupts only for DM648 device (Q.5 and Q.6), which does not have an ARM CPU, so the events 27, 28, 29 are directly mapped to the C64+ interrupt controller.
In any situation neither event is deliberately explained in the documentation, or (shame on me) I wasn't able to find any description.
On the other hand, the VICPLIB that I have to use, is targeted to run on the C64+ CPU side of the DM6446 device, but apparently without an option of getting an interrupt from the VICP, since the DSP interrupt controller does not get any of the VICP events. (I wonder though where gets the DSQINT (EDMA3) event? By mere name similarity with ASQINT (VICP Sqr ARM interrupt) I would guess that the DSQINT might be an unspecified VICP Sqr DSP interrupt, but of course, I wouldn't guess that.)
Does that mean that it is the job for e.g. Linux on the ARM side to catch the VICP interrupts and signal to DSP/BIOS threads?
What might be other options that would not include an interaction with the ARM side? Could it just be a completion interrupt from EDMA3 controller? If yes, then it must be the EDMA3 LLD that calls the CPIS_isr() function upon receiving EDMA3 events 8, 9, 10, 11. Is it correct?
Examples in the VICPLIB include a CPIS_isr() function, but I was unable to find out which event it is intended to service.
Thank you all who responded,
Andrew