video: add display_timing and videomode
[linux-2.6-block.git] / drivers / video / videomode.c
diff --git a/drivers/video/videomode.c b/drivers/video/videomode.c
new file mode 100644 (file)
index 0000000..21c47a2
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * generic display timing functions
+ *
+ * Copyright (c) 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>, Pengutronix
+ *
+ * This file is released under the GPLv2
+ */
+
+#include <linux/errno.h>
+#include <linux/export.h>
+#include <video/display_timing.h>
+#include <video/videomode.h>
+
+int videomode_from_timing(const struct display_timings *disp,
+                         struct videomode *vm, unsigned int index)
+{
+       struct display_timing *dt;
+
+       dt = display_timings_get(disp, index);
+       if (!dt)
+               return -EINVAL;
+
+       vm->pixelclock = display_timing_get_value(&dt->pixelclock, TE_TYP);
+       vm->hactive = display_timing_get_value(&dt->hactive, TE_TYP);
+       vm->hfront_porch = display_timing_get_value(&dt->hfront_porch, TE_TYP);
+       vm->hback_porch = display_timing_get_value(&dt->hback_porch, TE_TYP);
+       vm->hsync_len = display_timing_get_value(&dt->hsync_len, TE_TYP);
+
+       vm->vactive = display_timing_get_value(&dt->vactive, TE_TYP);
+       vm->vfront_porch = display_timing_get_value(&dt->vfront_porch, TE_TYP);
+       vm->vback_porch = display_timing_get_value(&dt->vback_porch, TE_TYP);
+       vm->vsync_len = display_timing_get_value(&dt->vsync_len, TE_TYP);
+
+       vm->dmt_flags = dt->dmt_flags;
+       vm->data_flags = dt->data_flags;
+
+       return 0;
+}
+EXPORT_SYMBOL_GPL(videomode_from_timing);