summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/lm32/shared/milkymist_video/video.c
diff options
context:
space:
mode:
authorGedare Bloom <gedare@rtems.org>2011-11-27 17:33:00 +0000
committerGedare Bloom <gedare@rtems.org>2011-11-27 17:33:00 +0000
commit267357adba5b2b2b48abc2d7f39e20b07651aafc (patch)
treed419409dc1a8c61c85fde4010098474bd2422b9b /c/src/lib/libbsp/lm32/shared/milkymist_video/video.c
parent2011-11-27 Sebastien Bourdeauducq <seb@tmplab.org> (diff)
downloadrtems-267357adba5b2b2b48abc2d7f39e20b07651aafc.tar.bz2
2011-11-27 Sebastien Bourdeauducq <seb@tmplab.org>
PR 1972/bsps * milkymist_video/milkymist_video.h, milkymist_video/video.c: Adds an ioctl to implement selection of composite on any connector, S-Video and Component sources on the Milkymist One.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/lm32/shared/milkymist_video/video.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/lm32/shared/milkymist_video/video.c b/c/src/lib/libbsp/lm32/shared/milkymist_video/video.c
index d8d706baaf..6d06f91a99 100644
--- a/c/src/lib/libbsp/lm32/shared/milkymist_video/video.c
+++ b/c/src/lib/libbsp/lm32/shared/milkymist_video/video.c
@@ -267,6 +267,37 @@ static void invalidate_caches(void)
);
}
+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 @@ rtems_device_driver video_control(
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 @@ rtems_device_driver video_control(
sc = RTEMS_SUCCESSFUL;
break;
+ case VIDEO_SET_FORMAT:
+ set_format((int)a);
+ sc = RTEMS_SUCCESSFUL;
+ break;
+
default:
sc = RTEMS_UNSATISFIED;
break;