]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/kernel-video.git/commitdiff
OMAPDSS: OMAPFB: Do not suspend HDMI driver in early suspend.
authorDandawate Saket <dsaket@ti.com>
Thu, 13 Sep 2012 01:12:05 +0000 (18:12 -0700)
committerPraneeth Bajjuri <praneeth@ti.com>
Fri, 12 Jul 2013 22:28:58 +0000 (17:28 -0500)
Issue:
HDMI Audio can be active even if display activity
times out.

Analysis:
To save power approach to suspend panel on an
early suspend call was taken. This call of panel
suspend is done by OMAPLFB on early suspend
callback.

There is no issue in case of LCD since it doesnt
carry any audio. Also we only suspend the default
panel and not all the connected panels.

If hdmi is default display we cut HDMI clocks via
omapfb->blank call with NORMAL enum. HDMI audio
driver will close DMA only after the timeout
in userspace.

So we are voilating the expectation of HDMI audio
driver in case HDMI is default panel.

In case HDMI is default there is almost no use case
with battery power devices.

With this fix we can have an HDMI audio playback
happening when display inactivity times out
triggering early suspend.

Change-Id: I2180a20b1579bec8a3f910a5e349fb219437089a
Signed-off-by: Dandawate Saket <dsaket@ti.com>
drivers/video/omap2/omapfb/omapfb-main.c

index 32eb09212df34d1371412dab22fb7d8fe6226fac..87805861faaad52c785cfe3669d8e089b8d15a8f 100644 (file)
@@ -1401,11 +1401,16 @@ static int omapfb_blank(int blank, struct fb_info *fbi)
 
        case FB_BLANK_NORMAL:
                /* FB_BLANK_NORMAL could be implemented.
-                * Needs DSS additions. */
+                * Do not suspend for HDMI in case of early
+                * suspend since HDMI audio can be active */
+               if (display && display->name &&
+                       strcmp(display->name, "hdmi") == 0) {
+                       DBG("HDMI not suspended\n");
+                       break;
+               }
        case FB_BLANK_VSYNC_SUSPEND:
        case FB_BLANK_HSYNC_SUSPEND:
        case FB_BLANK_POWERDOWN:
-
                if (fbdev->vsync_active)
                        omapfb_disable_vsync(fbdev);