aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/exynos_drm_drv.c
diff options
context:
space:
mode:
authorInki Dae <inki.dae@samsung.com>2011-10-14 00:29:51 -0400
committerDave Airlie <airlied@redhat.com>2011-10-18 05:01:19 -0400
commitccf4d883f82e10053fa5806f2cd35401012bec84 (patch)
tree8d9058f2cd1161d4351db83d961b84e9fe1ebe47 /drivers/gpu/drm/exynos/exynos_drm_drv.c
parentf6b98252946496de86bd4e89a8b7ef12ec48d97c (diff)
drm/exynos: fixed page flip bug.
in case of using two drivers such as fimd and hdmi controller that they have their own hardware interrupt, drm framework doesn't provide pipe number corresponding to it. so the pipe should be set to event's from specific crtc. Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_drv.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index a190348ed9b..83810cbe3c1 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -124,6 +124,19 @@ static int exynos_drm_unload(struct drm_device *dev)
124 return 0; 124 return 0;
125} 125}
126 126
127static void exynos_drm_preclose(struct drm_device *dev,
128 struct drm_file *file_priv)
129{
130 struct exynos_drm_private *dev_priv = dev->dev_private;
131
132 /*
133 * drm framework frees all events at release time,
134 * so private event list should be cleared.
135 */
136 if (!list_empty(&dev_priv->pageflip_event_list))
137 INIT_LIST_HEAD(&dev_priv->pageflip_event_list);
138}
139
127static void exynos_drm_lastclose(struct drm_device *dev) 140static void exynos_drm_lastclose(struct drm_device *dev)
128{ 141{
129 DRM_DEBUG_DRIVER("%s\n", __FILE__); 142 DRM_DEBUG_DRIVER("%s\n", __FILE__);
@@ -152,6 +165,7 @@ static struct drm_driver exynos_drm_driver = {
152 DRIVER_MODESET | DRIVER_GEM, 165 DRIVER_MODESET | DRIVER_GEM,
153 .load = exynos_drm_load, 166 .load = exynos_drm_load,
154 .unload = exynos_drm_unload, 167 .unload = exynos_drm_unload,
168 .preclose = exynos_drm_preclose,
155 .lastclose = exynos_drm_lastclose, 169 .lastclose = exynos_drm_lastclose,
156 .get_vblank_counter = drm_vblank_count, 170 .get_vblank_counter = drm_vblank_count,
157 .enable_vblank = exynos_drm_crtc_enable_vblank, 171 .enable_vblank = exynos_drm_crtc_enable_vblank,