Hi,
I was tracing the interrupt code for dm6436 vpbe drivers, but now I am a little confused.
At the end of each frame, an interrupt occurs and DDC_VPBEIsr function is executed.
DDC_VPBEIsr is mainly in three parts, operations for interlaced mode, operations for progressive mode and callback operations.
So far it is ok. I am using interlaced mode.
It gets the venc field if it is odd or even, using LLC_getVencField. I suppose this is related to interlaced mode characteristics: the odd lines of a field is read first, and the even lines are read.
If this register field value is equal with the venc handler's field value;
and if the register field value is equal with odd field enum value, then DDC_VPBEUpdateFreeQueue is called for window planes.
else if the register field value is equal with even field enum value, then DDC_VPBEUpdateFbAdress is called for window planes.
Unfortunaletly I couldnt understand this logic. I think it calls the DDC_VPBEUpdateFbAdress on the even lines; because of even lines are read hence the current frame is ended and the next frame shall be processed.
But why the free queue is used on the odd fields. Besides, why are there two queues such as active and free?
I think what I need is a document where I can read the vpbe interrupt and queue logic, how they work ext... But there is no document for this, I think.
I will be appreciated if you help me,
Thanks,
Erman