From 2b437262092baa53210246a5a389b8fec49e562a Mon Sep 17 00:00:00 2001 From: Pedro Perez de Heredia Date: Wed, 1 Feb 2012 12:40:29 +0100 Subject: ccxmx53: add VGA resolution (640x480) to VGA interface (#41569) Signed-off-by: Pedro Perez de Heredia (cherry picked from commit f843b14a08a5f26ecd47ebcfde9110db1769723a) --- arch/arm/mach-mx5/devices_ccwmx53.c | 4 +++- drivers/video/mxc/tve.c | 21 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-mx5/devices_ccwmx53.c b/arch/arm/mach-mx5/devices_ccwmx53.c index 21981e933b7d..e764164db3f0 100644 --- a/arch/arm/mach-mx5/devices_ccwmx53.c +++ b/arch/arm/mach-mx5/devices_ccwmx53.c @@ -792,7 +792,9 @@ int __init ccwmx5x_init_fb(void) } else { /* Pass the video configuration as mode string */ pr_info("VGA: string %s", p); - if (!strcmp(p, "800x600")) { + if (!strcmp(p, "640x480")) { + strcpy(mx53_fb_data[i].mode_str, "VGA-VGA"); + } else if (!strcmp(p, "800x600")) { strcpy(mx53_fb_data[i].mode_str, "VGA-SVGA"); } else if (!strcmp(p, "1024x768")) { strcpy(mx53_fb_data[i].mode_str, "VGA-XGA"); diff --git a/drivers/video/mxc/tve.c b/drivers/video/mxc/tve.c index 701494aae0db..384f706ace53 100644 --- a/drivers/video/mxc/tve.c +++ b/drivers/video/mxc/tve.c @@ -97,6 +97,7 @@ #define TVOUT_FMT_VGA_XGA 11 #define TVOUT_FMT_VGA_SXGA 12 #define TVOUT_FMT_VGA_WSXGA 13 +#define TVOUT_FMT_VGA_VGA 14 #define IPU_DISP_PORT 1 @@ -292,6 +293,15 @@ static struct fb_videomode video_modes_vga[] = { 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_DETAILED,}, + { + /* VGA 640x480-60 25M pixel clk output */ + "VGA-VGA", 60, 640, 480, 39682, + 48, 16, + 33, 10, + 96, 2, + 0, + FB_VMODE_NONINTERLACED, + FB_MODE_IS_DETAILED,}, }; enum tvout_mode { @@ -353,7 +363,8 @@ static inline int is_vga_mode(int mode) return ((mode == TVOUT_FMT_VGA_SVGA) || (mode == TVOUT_FMT_VGA_XGA) || (mode == TVOUT_FMT_VGA_SXGA) - || (mode == TVOUT_FMT_VGA_WSXGA)); + || (mode == TVOUT_FMT_VGA_WSXGA) + || (mode == TVOUT_FMT_VGA_VGA)); } static inline int valid_mode(int mode) @@ -413,6 +424,9 @@ static int get_video_mode(struct fb_info *fbi, int *fmt) } else if (fb_mode_is_equal(fbi->mode, &video_modes_vga[3])) { *fmt = IPU_PIX_FMT_GBR24; mode = TVOUT_FMT_VGA_WSXGA; + } else if (fb_mode_is_equal(fbi->mode, &video_modes_vga[4])) { + *fmt = IPU_PIX_FMT_GBR24; + mode = TVOUT_FMT_VGA_VGA; } else { *fmt = IPU_PIX_FMT_YUV444; mode = TVOUT_FMT_OFF; @@ -563,6 +577,11 @@ static int tve_setup(int mode) tve_clock_rate = 294280000; di1_clock_rate = 147140000; break; + case TVOUT_FMT_VGA_VGA: + parent_clock_rate = 201602741; + tve_clock_rate = 50400685; + di1_clock_rate = 25200342; + break; } if (enabled) clk_disable(tve.clk); -- cgit v1.2.3