drm/exynos: check crtc's dpms mode at SetCrtc
authorInki Dae <inki.dae@samsung.com>
Fri, 14 Sep 2012 04:29:47 +0000 (13:29 +0900)
committerInki Dae <inki.dae@samsung.com>
Thu, 4 Oct 2012 01:06:01 +0000 (10:06 +0900)
when fb changing is requested, crtc's dpms mode should be on.
if not on, return -EPERM so that the hardware can't be accessed.
if user requesed dpms off and next SetCrtc with an another fb
then the hardware can be accessed with dpms off to write overlay
data onto some registers so this patch will prevent from accessing
the hardware with dpms off.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_crtc.c

index 07c5d2a0bdc0e1e14bbbc67decc63f3764386519..ac004a3288da291a6295e48173e5a29d0811de65 100644 (file)
@@ -155,6 +155,12 @@ static int exynos_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
 
        DRM_DEBUG_KMS("%s\n", __FILE__);
 
+       /* when framebuffer changing is requested, crtc's dpms should be on */
+       if (exynos_crtc->dpms > DRM_MODE_DPMS_ON) {
+               DRM_ERROR("failed framebuffer changing request.\n");
+               return -EPERM;
+       }
+
        crtc_w = crtc->fb->width - x;
        crtc_h = crtc->fb->height - y;