The DC events were triggered by DI counter, but they have priority, in currrent BSP setting, when multi DC events happens, only the highest priority one will be processed.
The DC event was set in _ipu_dc_init(),
_ipu_dc_link_event(ipu, dc_chan, DC_EVT_NL, 2, 3);
_ipu_dc_link_event(ipu, dc_chan, DC_EVT_EOL, 3, 2);
_ipu_dc_link_event(ipu, dc_chan, DC_EVT_NEW_DATA, 1, 1);
With the above code, we can know, 3 DC event had been enabled, New Line, End of Line and New Pixel Data.
Then in ipu_init_sync_panel()
_ipu_dc_write_tmpl(ipu, 2, WROD(0), 0, map, SYNC_WAVE, 8, 5, 1);
_ipu_dc_write_tmpl(ipu, 3, WROD(0), 0, map, SYNC_WAVE, 4, 5, 0);
_ipu_dc_write_tmpl(ipu, 4, WRG, 0, map, NULL_WAVE, 0, 0, 1);
_ipu_dc_write_tmpl(ipu, 1, WROD(0), 0, map, SYNC_WAVE, 0, 5, 1);
We can see events (1 NEW_DATA 2 NL, 3 EOL are triggered by DI counter 5, the active line data counter.)
Maybe you can reference to this link: https://community.freescale.com/docs/DOC-98109
I have some non OS IPU code in uboot file "ipu.c", it can help to you understand the IPU DC and DI code. I had used many Macro to make the depends on DC and DI clearly.