This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ti-processor-sdk0301的 LCDDMA_CTRL Register的Frame Mode问题,急!

drivers/gpu/drm/tilcdc/tilcdc_crtc.c中:

if (stat & LCDC_END_OF_FRAME0) {
unsigned long flags;
bool skip_event = false;
ktime_t now;

now = ktime_get();

drm_flip_work_commit(&tilcdc_crtc->unref_work, priv->wq);

spin_lock_irqsave(&tilcdc_crtc->irq_lock, flags);

tilcdc_crtc->last_vblank = now;

if (tilcdc_crtc->next_fb) {
set_scanout(crtc, tilcdc_crtc->next_fb);
tilcdc_crtc->next_fb = NULL;
skip_event = true;
}

datasheet 13.5.16,没有用到DMA ping-pongs,问题:

(1)请问TI为什么不用 ping-pongs模式?

(2)如何开启 ping-pongs模式,有相关的参考文档吗?

(3)如果使用 ping-pongs是否可以解决 tilcdc_crtc_irq(0x00000020): FIFO underfow问题?

  • #1. 什么芯片啊?

    #2. LCD在我看来通常没有必要用ping pong buffer。因为LCD的显示是DMA把buffer的数据反复的往LCD接口送,buffer里是什么就送什么。除非有什么特殊要求,比如更新一幅图像,先把图像放到buffer里,然后切换ping pong buffer,这样刷出来就是一辐完整的图像,如果是CPU一边往buffer里写图像的数据,一边刷,则可能会看到图像从上往下更新的过程,这也只是说有可能,在于CPU往buffer更新图像的内存访问速度。

    #3. 不能。FIFO underflow是LCD 的DMA往LCD FIFO搬数据来不及,是因为buffer所在的内存带宽问题,比如说有多个master在访问,导致EDMA的访问delay了,进而FIFO没有数据往外送。