1
0
mirror of git://projects.qi-hardware.com/wernermisc.git synced 2024-11-23 19:48:29 +02:00
wernermisc/m1/patches/rtems/milkymist-videoformat.patch

118 lines
3.4 KiB
Diff
Raw Permalink Normal View History

Date: Fri, 25 Nov 2011 16:22:29 +0100
From: S?bastien Bourdeauducq <sebastien@milkymist.org>
To: "Milkymist One, Milkymist SoC and Flickernoise developers' list"
<devel@lists.milkymist.org>
Subject: [Milkymist-devel] RTEMS patch for video formats
[-- Attachment #1 --]
[-- Type: text/plain, Encoding: 7bit, Size: 0.5K --]
Hi,
The attached patch implements RTEMS driver support for different video
formats.
S-Video and Component are untested, because I do not have suitable
sources. However, when using these modes, feeding the composite signal
into the Y input gives a greyscale picture, so they likely work.
I'm also sending a screenshot of the new video input settings dialog.
When in composite mode, I'm planning to add keyboard shortcuts to
switch between the 3 inputs live.
S.
Index: rtems/c/src/lib/libbsp/lm32/shared/milkymist_video/milkymist_video.h
===================================================================
--- rtems.orig/c/src/lib/libbsp/lm32/shared/milkymist_video/milkymist_video.h 2011-08-01 10:48:40.000000000 -0300
+++ rtems/c/src/lib/libbsp/lm32/shared/milkymist_video/milkymist_video.h 2011-11-26 01:09:16.000000000 -0300
@@ -8,7 +8,7 @@
*
* $Id: milkymist_video.h,v 1.1 2011/08/01 13:48:40 joel Exp $
*
- * COPYRIGHT (c) 2010 Sebastien Bourdeauducq
+ * COPYRIGHT (c) 2010, 2011 Sebastien Bourdeauducq
*/
#ifndef __MILKYMIST_VIDEO_H_
@@ -33,6 +33,16 @@
#define VIDEO_SET_REGISTER 0x5609
#define VIDEO_GET_REGISTER 0x560a
+#define VIDEO_SET_FORMAT 0x560b
+
+enum {
+ VIDEO_FORMAT_CVBS6 = 0,
+ VIDEO_FORMAT_CVBS5,
+ VIDEO_FORMAT_CVBS4,
+ VIDEO_FORMAT_SVIDEO,
+ VIDEO_FORMAT_COMPONENT,
+};
+
rtems_device_driver video_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
Index: rtems/c/src/lib/libbsp/lm32/shared/milkymist_video/video.c
===================================================================
--- rtems.orig/c/src/lib/libbsp/lm32/shared/milkymist_video/video.c 2011-08-01 10:48:40.000000000 -0300
+++ rtems/c/src/lib/libbsp/lm32/shared/milkymist_video/video.c 2011-11-26 01:09:16.000000000 -0300
@@ -267,6 +267,37 @@
);
}
+static void set_format(int format)
+{
+ switch(format) {
+ case VIDEO_FORMAT_CVBS6:
+ write_reg(0x00, 0x00);
+ write_reg(0xc3, 0x05);
+ write_reg(0xc4, 0x80);
+ break;
+ case VIDEO_FORMAT_CVBS5:
+ write_reg(0x00, 0x00);
+ write_reg(0xc3, 0x0d);
+ write_reg(0xc4, 0x80);
+ break;
+ case VIDEO_FORMAT_CVBS4:
+ write_reg(0x00, 0x00);
+ write_reg(0xc3, 0x04);
+ write_reg(0xc4, 0x80);
+ break;
+ case VIDEO_FORMAT_SVIDEO:
+ write_reg(0x00, 0x06);
+ write_reg(0xc3, 0xd5);
+ write_reg(0xc4, 0x80);
+ break;
+ case VIDEO_FORMAT_COMPONENT:
+ write_reg(0x00, 0x09);
+ write_reg(0xc3, 0x45);
+ write_reg(0xc4, 0x8d);
+ break;
+ }
+}
+
rtems_device_driver video_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
@@ -333,7 +364,7 @@
break;
case VIDEO_SET_REGISTER:
- write_reg(((unsigned int )a & 0xffff0000) >> 16,
+ write_reg(((unsigned int)a & 0xffff0000) >> 16,
(unsigned int)a & 0x0000ffff);
sc = RTEMS_SUCCESSFUL;
break;
@@ -342,6 +373,11 @@
sc = RTEMS_SUCCESSFUL;
break;
+ case VIDEO_SET_FORMAT:
+ set_format((int)a);
+ sc = RTEMS_SUCCESSFUL;
+ break;
+
default:
sc = RTEMS_UNSATISFIED;
break;