summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2014-12-24 12:17:07 +0100
committerHans de Goede <hdegoede@redhat.com>2015-01-14 14:56:39 +0100
commite2bbdfb1e3a3def3586703622a4dade46019f943 (patch)
tree2b772d2c0d087a21f040cb13fa587afcfd5d65eb /drivers
parent2fbf091a547177fcf1a4b31b01ee0636c2a4aedc (diff)
downloadu-boot-e2bbdfb1e3a3def3586703622a4dade46019f943.tar.gz
u-boot-e2bbdfb1e3a3def3586703622a4dade46019f943.tar.xz
u-boot-e2bbdfb1e3a3def3586703622a4dade46019f943.zip
sunxi: video: Add support for VGA via external DACs connected to the LCD pins
Add support for external DACs connected to the parallel LCD interface driving a VGA connector, such as found on the Olimex A13 boards. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Ian Campbell <ijc@hellion.org.uk>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/sunxi_display.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
index 98ff94245d..e01c8f5b2c 100644
--- a/drivers/video/sunxi_display.c
+++ b/drivers/video/sunxi_display.c
@@ -767,6 +767,12 @@ static void sunxi_mode_set(const struct ctfb_res_modes *mode,
sunxi_lcdc_backlight_enable();
break;
case sunxi_monitor_vga:
+#ifdef CONFIG_VIDEO_VGA_VIA_LCD
+ sunxi_composer_mode_set(mode, address);
+ sunxi_lcdc_tcon0_mode_set(mode);
+ sunxi_composer_enable();
+ sunxi_lcdc_enable();
+#endif
break;
}
}
@@ -808,6 +814,8 @@ void *video_hw_init(void)
hpd = video_get_option_int(options, "hpd", 1);
edid = video_get_option_int(options, "edid", 1);
sunxi_display.monitor = sunxi_monitor_dvi;
+#elif defined CONFIG_VIDEO_VGA_VIA_LCD
+ sunxi_display.monitor = sunxi_monitor_vga;
#else
sunxi_display.monitor = sunxi_monitor_lcd;
#endif
@@ -860,8 +868,13 @@ void *video_hw_init(void)
printf("LCD not supported on this board\n");
return NULL;
case sunxi_monitor_vga:
+#ifdef CONFIG_VIDEO_VGA_VIA_LCD
+ sunxi_display.depth = 18;
+ break;
+#else
printf("VGA not supported on this board\n");
return NULL;
+#endif
}
if (mode->vmode != FB_VMODE_NONINTERLACED) {
@@ -914,6 +927,7 @@ int sunxi_simplefb_setup(void *blob)
pipeline = "de_be0-lcd0";
break;
case sunxi_monitor_vga:
+ pipeline = "de_be0-lcd0";
break;
}