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.

1080p resolution issue on Blaze Tablet

Hi,

When run Blaze Tablet board on Android JelleyBean 4.2.2 from a SD card with guides from Jorjin Wiki (http://jorjin.tropicalwikis.com/wiki/JAJ_2.5-P1_AP_Module_OMAP4_Jelly_Bean_Release_Notes) and with some changes in kernel to change resolution from 720p to 1080p, i get this error:

   omapdss DISPC error: FIFO UNDERFLOW on gfx, disabling the overlay
   omapdss DISPC error: mgr or device is NULL

This error appears every time i have any action on Blaze Tablet board. When i play 1080p videos, i see that videos play not smoothly and i think the reason is due to this error. (an addition, i can play 720p video without any issue, 720 p videos play fast and smooth).

I do not think Blaze Tablet can not play 1080p videos well because this board uses OMAP4460 processor that supports playing full HD video.

Is there any way can solve this issue?

Best regards,

Hoang Duong.

  • Hello,

    According to OMAP4460 TRM Section 10.5.5.1.1.2.2 Subsequence: DISPC Configuration, you should enable the hardware handshake to avoid the DISPC FIFO underflow, that is set DISPC_CONFIGx[16]BUFFERHANDCHECK to 0x1.

    Best Regards,

    Yordan

  • Hi Yordan,

    I found that this error comes from dispc_error_worker function in /drivers/video/omap2/disp.c.

    This is the code that displays this error:

    for (i = 0; i < omap_dss_get_num_overlays(); ++i) {
            struct omap_overlay *ovl;
            unsigned bit;
            ovl = omap_dss_get_overlay(i);
            if (!ovl)
                continue;
            bit = fifo_underflow_bits[i];

            if (bit & errors) {
                DSSERR("FIFO UNDERFLOW on %s, disabling the overlay\n",
                        ovl->name);
                ovl->disable(ovl);
                mdelay(50);
            }
        }

        for (i = 0; i < omap_dss_get_num_overlay_managers(); ++i) {
            struct omap_overlay_manager *mgr;
            unsigned bit;

            mgr = omap_dss_get_overlay_manager(i);
            if ((!mgr) || !mgr->device) {
                DSSERR("mgr or device is NULL\n");
                break;
            }

            if (!mgr->device->first_vsync) {
                DSSERR("First SYNC_LOST.. ignoring\n");
                break;
            }

    I guest that the delay because mdelay function in this code and commented out the line mdelay(50); and 1080p videos play much more smooth, but i do not think this can solve my issue.

    I read the documents you recommended me and i do not know how to set DISPC_CONFIGo[16] BUFFERHANDCHECK to 0x1. I tried using dispc_write_reg function in dispc.c file:

    static inline void dispc_write_reg(const u16 idx, u32 val)
    {
        __raw_writel(val, dispc.base + idx);
    }

    as this code: dispc_write_reg(DISPC_CONFIG, 0x8000) and rebuild kernel, but after that Blaze Tablet board can not boot into kernel. (the DISPC_CONFIG register is defined in dispc.h file at this line: #define DISPC_CONFIG         0x0044). 

    Pls give me a advice for this problem.

  • Hello ,

    I have tested playing a 1080p video on my Blaze board (with OMAP4460 GP ES1.1 device) , flashed with 4AJ 2.5 P2, and there were no error messages during video playback, and the video was playing smooth.

    The DISPC_CONFIGo[16]BUFFERHANDCHECK should be set in the dispc.c file. Here is how it is done in the kernel sources I use on my blaza board:

    void dispc_mgr_enable_fifohandcheck(enum omap_channel channel, bool enable)
    {
        if (channel == OMAP_DSS_CHANNEL_LCD2)
            REG_FLD_MOD(DISPC_CONFIG2, enable ? 1 : 0, 16, 16);
        else
            REG_FLD_MOD(DISPC_CONFIG, enable ? 1 : 0, 16, 16);
    }

    Best Regards,

    Yordan

  • Dear Yordan,

    I will check your solution and post the result soon,

    Thanks you so much,

    Hoang Duong.

  • Hi Yordan,

    I solved my problem with your help,

    Thanks so much.