linux/drivers/gpu/drm/exynos
Prathyush K db7e55ae52 drm/exynos: clear windows in fimd dpms off
Changelog v2:
Added details of original patch in chromium kernel

Changelog v1:
When fimd is turned off, we disable the clocks which will stop
the dma. Now if we remove the current framebuffer, we cannot
disable the overlay but the current framebuffer will still be freed.
When fimd resumes, the dma will continue from where it left off
and will throw a PAGE FAULT since the memory was freed.

This patch fixes the above problem by disabling the fimd windows
before disabling the fimd clocks. It also keeps track of which
windows were currently active by setting the 'resume' flag. When
fimd resumes, the window with a resume flag set is enabled again.

Now if a current fb is removed when fimd is off, fimd_win_disable
will set the 'resume' flag of that window to zero and return.
So when fimd resumes, that window will not be resumed.

This patch is based on the following two patches:
http://git.chromium.org/gitweb/?p=chromiumos/third_party/kernel.git;a=commitdiff;h=341e973c967304976a762211b6465b0074de62ef
http://git.chromium.org/gitweb/?p=chromiumos/third_party/kernel.git;a=commitdiff;h=cfa22e49b7408547c73532c4bb03de47cc034a05
These two patches are rebased onto the current kernel with
additional changes like removing 'fimd_win_commit' call from
the resume function since this is taken care by encoder
dpms, and the modification of resume flag in win_disable.

Signed-off-by: Prathyush K <prathyush.k@samsung.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Stephane Marchesin <marcheu@chromium.org>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
2012-12-13 06:05:45 -08:00
..
exynos_ddc.c Merge branch 'exynos-drm-next' of git://git.infradead.org/users/kmpark/linux-samsung into drm-next 2012-10-07 21:06:33 +10:00
exynos_drm_buf.c drm/exynos: remove 'pages' and 'page_size' elements in exynos gem buffer 2012-12-05 14:39:20 +09:00
exynos_drm_buf.h drm/exynos: remove 'pages' and 'page_size' elements in exynos gem buffer 2012-12-05 14:39:20 +09:00
exynos_drm_connector.c drm/exynos: fix display on issue 2012-10-31 06:11:29 -07:00
exynos_drm_connector.h drm/exynos: fix display power call issue. 2012-10-04 10:06:01 +09:00
exynos_drm_core.c Merge branch 'exynos-drm-next' of git://git.infradead.org/users/kmpark/linux-samsung into drm-next 2012-10-07 21:06:33 +10:00
exynos_drm_crtc.c drm/exynos: hold event_lock while accessing pageflip_event_list 2012-11-29 03:30:33 -08:00
exynos_drm_crtc.h drm/exynos: update overlay via plane from crtc 2012-07-27 11:13:53 +09:00
exynos_drm_dmabuf.c drm/exynos: add dmabuf attach/detach callbacks. 2012-12-13 06:05:43 -08:00
exynos_drm_dmabuf.h drm/exynos: added drm prime feature. 2012-05-08 18:46:32 +09:00
exynos_drm_drv.c drm: exynos: moved exynos drm hdmi device registration to drm driver 2012-12-13 06:05:43 -08:00
exynos_drm_drv.h drm/exynos: make wait_for_vblank a manager op 2012-12-13 06:05:43 -08:00
exynos_drm_encoder.c drm/exynos: make wait_for_vblank a manager op 2012-12-13 06:05:43 -08:00
exynos_drm_encoder.h drm/exynos: make sure that overlay data are updated 2012-12-05 14:39:19 +09:00
exynos_drm_fb.c drm/exynos: make sure that overlay data are updated 2012-12-05 14:39:19 +09:00
exynos_drm_fb.h drm/exynos: check NV12M format specific to Exynos properly 2012-10-04 10:06:00 +09:00
exynos_drm_fbdev.c drm/exynos: use sgt instead of pages for framebuffer address 2012-12-05 14:39:21 +09:00
exynos_drm_fbdev.h
exynos_drm_fimd.c drm/exynos: clear windows in fimd dpms off 2012-12-13 06:05:45 -08:00
exynos_drm_g2d.c drm/exynos: Fix potential NULL pointer dereference 2012-12-05 14:39:21 +09:00
exynos_drm_g2d.h drm/exynos: add G2D driver 2012-05-17 20:14:48 +09:00
exynos_drm_gem.c drm/exynos: remove 'pages' and 'page_size' elements in exynos gem buffer 2012-12-05 14:39:20 +09:00
exynos_drm_gem.h drm/exynos: remove 'pages' and 'page_size' elements in exynos gem buffer 2012-12-05 14:39:20 +09:00
exynos_drm_hdmi.c drm/exynos: move hdmi's wait_for_vblank to manager_ops 2012-12-13 06:05:43 -08:00
exynos_drm_hdmi.h drm/exynos: move hdmi's wait_for_vblank to manager_ops 2012-12-13 06:05:43 -08:00
exynos_drm_iommu.c drm/exynos: add iommu support for exynos drm framework 2012-11-29 03:30:35 -08:00
exynos_drm_iommu.h drm/exynos: add iommu support for exynos drm framework 2012-11-29 03:30:35 -08:00
exynos_drm_plane.c drm/exynos: remove unnecessary code. 2012-11-29 03:30:33 -08:00
exynos_drm_plane.h drm/exynos: add plane enable/disable 2012-07-27 11:13:54 +09:00
exynos_drm_vidi.c drm/exynos: fix lockdep for event_lock wrt. vbl_time_lock 2012-11-29 03:30:34 -08:00
exynos_drm_vidi.h drm/exynos: added virtual display driver. 2012-03-21 10:15:49 +00:00
exynos_hdmi.c drm/exynos: sending AVI and AUI info frames 2012-12-05 14:39:23 +09:00
exynos_hdmi.h drm/exynos: cleanup exynos_hdmi.h 2012-03-20 09:41:45 +00:00
exynos_hdmiphy.c Merge branch 'exynos-drm-next' of git://git.infradead.org/users/kmpark/linux-samsung into drm-next 2012-10-07 21:06:33 +10:00
exynos_mixer.c drm/exynos: clear windows in mixer dpms off 2012-12-13 06:05:44 -08:00
Kconfig drm/exynos: add iommu support for exynos drm framework 2012-11-29 03:30:35 -08:00
Makefile drm/exynos: add iommu support for exynos drm framework 2012-11-29 03:30:35 -08:00
regs-hdmi.h drm/exynos: sending AVI and AUI info frames 2012-12-05 14:39:23 +09:00
regs-mixer.h drm: exynos: hdmi: add support for exynos5 mixer 2012-10-05 19:15:10 +09:00
regs-vp.h drm/exynos: added hdmi display support 2011-12-29 11:21:42 +09:00