From 8a87a46328d2e248cf11e1d2588ef42d67110b73 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 28 Jan 2014 17:34:19 +0100 Subject: video: tegra: remove special clocks for Tegra 2 Remove special clocks for Tegra 2, but use backup clock source instead. This allows to run all common used resolution within the drivers -1/+9% allowed band for pixelclock exactness. --- arch/arm/mach-tegra/board-colibri_t20-panel.c | 3 +- drivers/video/tegra/dc/mode.c | 135 ++++++++++++-------------- 2 files changed, 62 insertions(+), 76 deletions(-) diff --git a/arch/arm/mach-tegra/board-colibri_t20-panel.c b/arch/arm/mach-tegra/board-colibri_t20-panel.c index c4746590d209..4c11b6c7f6e1 100644 --- a/arch/arm/mach-tegra/board-colibri_t20-panel.c +++ b/arch/arm/mach-tegra/board-colibri_t20-panel.c @@ -235,7 +235,8 @@ static struct tegra_dc_out_pin colibri_t20_dc_out_pins[] = { static struct tegra_dc_out colibri_t20_disp1_out = { .type = TEGRA_DC_OUT_RGB, -// .parent_clk = "pll_c", + .parent_clk = "pll_p", + .parent_clk_backup = "pll_d", .max_pixclock = KHZ2PICOS(162000), diff --git a/drivers/video/tegra/dc/mode.c b/drivers/video/tegra/dc/mode.c index f61d0bf7d6da..f5cd4fb0cdea 100644 --- a/drivers/video/tegra/dc/mode.c +++ b/drivers/video/tegra/dc/mode.c @@ -27,25 +27,6 @@ #include "dc_priv.h" const struct fb_videomode tegra_modes[] = { - /* TouchRevolution Fusion 10" aka Chunghwa Picture Tubes - * CLAA100NC05 10.1 inch 1024x600 single channel LVDS panel - */ - { - .name = "1024x600", - .refresh = 60, - .xres = 1024, - .yres = 600, - .pixclock = KHZ2PICOS(48000), - .left_margin = 104, - .right_margin = 43, - .upper_margin = 24, - .lower_margin = 20, - .hsync_len = 5, - .vsync_len = 5, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .flag = FB_FLAG_RATIO_16_9, - .vmode = FB_VMODE_NONINTERLACED - }, /* EDT 5.7" ET070080DH or TouchRevolution Fusion 7" */ { .name = "800x480", @@ -63,50 +44,23 @@ const struct fb_videomode tegra_modes[] = { .flag = FB_FLAG_RATIO_16_9, .vmode = FB_VMODE_NONINTERLACED }, - /* Portrait modes */ - { - .name = "480x640", - .refresh = 60, - .xres = 480, - .yres = 640, - .pixclock = 55555, - .left_margin = 20, - .right_margin = 8, - .upper_margin = 7, - .lower_margin = 8, - .hsync_len = 4, - .vsync_len = 1, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .vmode = FB_VMODE_NONINTERLACED - }, - { - .name = "540x960", - .refresh = 60, - .xres = 540, - .yres = 960, - .pixclock = 100000, - .left_margin = 32, - .right_margin = 32, - .upper_margin = 1, - .lower_margin = 2, - .hsync_len = 16, - .vsync_len = 1, - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - .vmode = FB_VMODE_NONINTERLACED - }, + /* TouchRevolution Fusion 10" aka Chunghwa Picture Tubes + * CLAA100NC05 10.1 inch 1024x600 single channel LVDS panel + */ { - .name = "720x1280", + .name = "1024x600", .refresh = 60, - .xres = 720, - .yres = 1280, - .pixclock = 16282, - .left_margin = 100, - .right_margin = 4, - .upper_margin = 14, - .lower_margin = 4, - .hsync_len = 4, - .vsync_len = 4, + .xres = 1024, + .yres = 600, + .pixclock = KHZ2PICOS(48000), + .left_margin = 104, + .right_margin = 43, + .upper_margin = 24, + .lower_margin = 20, + .hsync_len = 5, + .vsync_len = 5, .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + .flag = FB_FLAG_RATIO_16_9, .vmode = FB_VMODE_NONINTERLACED }, { @@ -129,11 +83,7 @@ const struct fb_videomode tegra_modes[] = { .refresh = 60, .xres = 1680, .yres = 1050, -#ifdef CONFIG_MACH_COLIBRI_T20 - .pixclock = KHZ2PICOS(144000), -#else .pixclock = KHZ2PICOS(147140), -#endif .hsync_len = 184, /* h_sync_width */ .vsync_len = 3, /* v_sync_width */ .left_margin = 288, /* h_back_porch */ @@ -148,14 +98,7 @@ const struct fb_videomode tegra_modes[] = { .refresh = 60, .xres = 1920, .yres = 1080, -#ifdef CONFIG_MACH_COLIBRI_T20 -/* We need to choose too small pixelclocks because parent clock system - * doesn't allow exact pixelclocks - */ - .pixclock = KHZ2PICOS(144000), -#else .pixclock = KHZ2PICOS(148500), -#endif .hsync_len = 44, /* h_sync_width */ .vsync_len = 5, /* v_sync_width */ .left_margin = 148, /* h_back_porch */ @@ -170,11 +113,7 @@ const struct fb_videomode tegra_modes[] = { .refresh = 60, .xres = 1920, .yres = 1200, -#ifdef CONFIG_MACH_COLIBRI_T20 - .pixclock = KHZ2PICOS(144000), -#else .pixclock = KHZ2PICOS(154000), -#endif .hsync_len = 32, /* h_sync_width */ .vsync_len = 6, /* v_sync_width */ .left_margin = 80, /* h_back_porch */ @@ -184,6 +123,52 @@ const struct fb_videomode tegra_modes[] = { .vmode = FB_VMODE_NONINTERLACED, .sync = 0, }, + /* Portrait modes */ + { + .name = "480x640", + .refresh = 60, + .xres = 480, + .yres = 640, + .pixclock = 55555, + .left_margin = 20, + .right_margin = 8, + .upper_margin = 7, + .lower_margin = 8, + .hsync_len = 4, + .vsync_len = 1, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + .vmode = FB_VMODE_NONINTERLACED + }, + { + .name = "540x960", + .refresh = 60, + .xres = 540, + .yres = 960, + .pixclock = 100000, + .left_margin = 32, + .right_margin = 32, + .upper_margin = 1, + .lower_margin = 2, + .hsync_len = 16, + .vsync_len = 1, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + .vmode = FB_VMODE_NONINTERLACED + }, + { + .name = "720x1280", + .refresh = 60, + .xres = 720, + .yres = 1280, + .pixclock = 16282, + .left_margin = 100, + .right_margin = 4, + .upper_margin = 14, + .lower_margin = 4, + .hsync_len = 4, + .vsync_len = 4, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + .vmode = FB_VMODE_NONINTERLACED + }, }; /* try to find best matching mode using our modes, VESA and CEA modes from -- cgit v1.2.3