All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/exynos: fimd: Get signal polarities from device tree
@ 2013-05-01 19:06 Tomasz Figa
  2013-05-01 20:00 ` Daniel Vetter
  2013-06-05 18:13 ` Tomasz Figa
  0 siblings, 2 replies; 7+ messages in thread
From: Tomasz Figa @ 2013-05-01 19:06 UTC (permalink / raw)
  To: dri-devel; +Cc: linux-samsung-soc, inki.dae, jy0922.shim, t.figa, Tomasz Figa

This patch modifies the driver to perform two stage parsing of video
timings from device tree, to get timing information as struct videomode,
which contains more data than struct fb_videomode.

Thanks to this change, information about polarity of control signals
(VSYNC, HSYNC, VDEN, VCLK) can be retrieved, in addition to standard
video timings.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
---
 drivers/gpu/drm/exynos/exynos_drm_fimd.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
index a1669d4..9023efa 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -21,7 +21,9 @@
 #include <linux/pm_runtime.h>
 
 #include <video/of_display_timing.h>
+#include <video/of_videomode.h>
 #include <video/samsung_fimd.h>
+#include <video/videomode.h>
 #include <drm/exynos_drm.h>
 
 #include "exynos_drm_drv.h"
@@ -928,18 +930,30 @@ static int fimd_probe(struct platform_device *pdev)
 	DRM_DEBUG_KMS("%s\n", __FILE__);
 
 	if (pdev->dev.of_node) {
+		struct videomode vm;
+
 		pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
 		if (!pdata) {
 			DRM_ERROR("memory allocation for pdata failed\n");
 			return -ENOMEM;
 		}
 
-		ret = of_get_fb_videomode(dev->of_node, &pdata->panel.timing,
-					OF_USE_NATIVE_MODE);
+		ret = of_get_videomode(dev->of_node, &vm, OF_USE_NATIVE_MODE);
 		if (ret) {
 			DRM_ERROR("failed: of_get_fb_videomode() : %d\n", ret);
 			return ret;
 		}
+
+		fb_videomode_from_videomode(&vm, &pdata->panel.timing);
+
+		if (vm.flags & DISPLAY_FLAGS_VSYNC_LOW)
+			pdata->vidcon1 |= VIDCON1_INV_VSYNC;
+		if (vm.flags & DISPLAY_FLAGS_HSYNC_LOW)
+			pdata->vidcon1 |= VIDCON1_INV_HSYNC;
+		if (vm.flags & DISPLAY_FLAGS_DE_LOW)
+			pdata->vidcon1 |= VIDCON1_INV_VDEN;
+		if (vm.flags & DISPLAY_FLAGS_PIXDATA_NEGEDGE)
+			pdata->vidcon1 |= VIDCON1_INV_VCLK;
 	} else {
 		pdata = pdev->dev.platform_data;
 		if (!pdata) {
-- 
1.8.2.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-06-07  0:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-01 19:06 [PATCH] drm/exynos: fimd: Get signal polarities from device tree Tomasz Figa
2013-05-01 20:00 ` Daniel Vetter
2013-05-19 11:32   ` Tomasz Figa
2013-06-06  4:30     ` Joonyoung Shim
2013-06-06  9:47       ` Tomasz Figa
2013-06-07  0:27         ` Joonyoung Shim
2013-06-05 18:13 ` Tomasz Figa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.