
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 --- board/sunxi/Kconfig | 9 +++++++++ drivers/video/sunxi_display.c | 14 ++++++++++++++ 2 files changed, 23 insertions(+)
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig index 7a8503b..3e42866 100644 --- a/board/sunxi/Kconfig +++ b/board/sunxi/Kconfig @@ -253,6 +253,15 @@ config VIDEO_HDMI ---help--- Say Y here to add support for outputting video over HDMI.
+config VIDEO_VGA_VIA_LCD + boolean "VGA via LCD controller support" + depends on VIDEO + default n + ---help--- + Say Y here to add support for external DACs connected to the parallel + LCD interface driving a VGA connector, such as found on the + Olimex A13 boards. + config VIDEO_LCD_MODE string "LCD panel timing details" depends on VIDEO diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c index 2822cc6..624e5e0 100644 --- a/drivers/video/sunxi_display.c +++ b/drivers/video/sunxi_display.c @@ -768,6 +768,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; } } @@ -798,6 +804,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 @@ -850,8 +858,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) { @@ -904,6 +917,7 @@ int sunxi_simplefb_setup(void *blob) pipeline = "de_be0-lcd0"; break; case sunxi_monitor_vga: + pipeline = "de_be0-lcd0"; break; }