Skip to content

Commit

Permalink
sunxi: video: Add support for VGA via external DACs connected to the …
Browse files Browse the repository at this point in the history
…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 <[email protected]>
Acked-by: Ian Campbell <[email protected]>
  • Loading branch information
jwrdegoede committed Jan 14, 2015
1 parent 2fbf091 commit e2bbdfb
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
9 changes: 9 additions & 0 deletions board/sunxi/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,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
Expand Down
14 changes: 14 additions & 0 deletions drivers/video/sunxi_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -914,6 +927,7 @@ int sunxi_simplefb_setup(void *blob)
pipeline = "de_be0-lcd0";
break;
case sunxi_monitor_vga:
pipeline = "de_be0-lcd0";
break;
}

Expand Down

0 comments on commit e2bbdfb

Please sign in to comment.