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.

HDMI at 1080p on OMAP4460 : ICS Kernel

Hello,

I have a custom board based on OMAP4460. I am running ICS on it. The version is http://omappedia.org/wiki/L27.IS.2.P2_OMAP4_Icecream_Sandwich_Release_Notes. I want to achieve HDMI output at 1080p. I see the following error in the kernel log repeatedly.

omapdss DISPC error: GFX_FIFO_UNDERFLOW, disabling GFX
omapdss DISPC error: SYNC_LOST_DIGIT
omapdss DISPC error: SYNC_LOST_DIGIT, disabling TV

What is the reason for this buffer underflow ?

I can see the ICS home screen and status bar[ at 1080p resolution ], but it keeps flickering. 

With 720p HDMI works well with ICS.

In the logcat i observe the following

I/ti_hwc ( 89): clone region is set to (0,0) to (1280,720)
I/ti_hwc ( 89): external display changed (state=0, mirror={disabled tform=0deg}, dock={disabled tform=0deg}, tv=0
I/ti_hwc ( 89): omap4_hwc_device_open(rgb_order=1 nv12_only=0)

E/ti_hwc ( 89): failed to wait for vsync (110)
E/ti_hwc ( 89): Post2 error

Regards,

Sanjay

  • Sanjay,

    Please provide more details like how many displays are there? Do you have LCDs as well or just TV?

    The GFX_FIFO_UNDERFLOW error means that FIFO ran empty while display is on. The FIFO has to be supplied with uninterrupted display data other wise it will generate an error. Whenever this error is generated it will disable the display. That is why you are seeing flickering.

    Regards,

    Chintan

  • Hi Chintan,

    Thank you for the reply. I just have TV. 

    Can I increase the buffer size for GFX overlay ? Any work around ?

    Regards,

    Sanjay

  • The size if programmable in DSS subsystem. But it looks like problem is different. Try this commands and see if it makes any difference.

    # stop
    # setprop persist.hwc.mirroring.region ""
    # start

    Regards,

    Chintan

  • Hi Chintan,

    I tried the setprop commamd, but it did not make any difference.

    How do i find what is causing DISPC_IRQ_GFX_FIFO_UNDERFLOW interrupt  ?

    Regards,

    Sanjay

  • Hi Chintan,

    When i follow these steps

    # stop

    # setprop persist.hwc.mirroring.region ""

    # setprop persist.hwc.mirroring.enabled "1"

    # start

    I observe the following in the logcat

    I/ti_hwc  (   81): clone region is set to (0,0) to (1280,720)    changes to

    I/ti_hwc  (   81): clone region is set to (0,0) to (1920,1080)

    But the following remains the same

    I/ti_hwc ( 81): external display changed (state=0, mirror={disabled tform=0deg}, dock={disabled tform=0deg}, tv=0
    I/ti_hwc ( 81): omap4_hwc_device_open(rgb_order=1 nv12_only=0)
    E/ti_hwc ( 81): failed to wait for vsync (110)
    E/ti_hwc ( 81): Post2 error

    In the logcat I do not find hwc listing all the supported timings and picking the best timing.

    Regards,

    Sanjay

  • There can be several things because of which DISPC_IRQ_GFX_FIFO_UNDERFLOW is generated. It may be because of memory bandwidth, clock & timings or resize ratios. It is not easy to find the root-cause and resolve it for this. You just need make sure everything is in order. You can refer to TRM for more information on this.

    Regards,

    Chintan

  • I suggest you that start looking into the file hwc.c in path mydroid\hardware\ti\omap4xxx\hwc for further debug. It will give you more information and debug pointers. After some more debug you can share some details on this.

    This is because you have only TV as primary display. While Blaze reference platforms are having LCD as primary display and TV as secondary display which can be plugged and unplugged. So in your case the default implementation of hwc.c may not work and might require some customization. Also make sure that you have disbaled all other displays in board file other than TV.

    Regards,

    Chintan