summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/fb.c
diff options
context:
space:
mode:
authorJon Mayo <jmayo@nvidia.com>2011-03-11 14:39:26 -0800
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:44:58 -0800
commit0207f39caeabda56e3de6e3949c17faa01b2e20d (patch)
tree5ad0c432c76881d9e1e37a619d80ed5f33250462 /drivers/video/tegra/fb.c
parent7d15cd76dbc2aaf3aac3322664500bc80877ebe7 (diff)
video: tegra: calculate h_ref_to_sync for mode
add tegra_dc_set_fb_mode() to create tegra_dc_mode from fb_videmode. Original-Change-Id: Icfaf99ab1c14b64f52b5b382bc8b94ed2e8306db Reviewed-on: http://git-master/r/22689 Reviewed-by: Jonathan Mayo <jmayo@nvidia.com> Tested-by: Jonathan Mayo <jmayo@nvidia.com> Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com> Original-Change-Id: I233b15e1c88e0946752cac1251d5122a1f50a579 Rebase-Id: R7e280e6d4a1e2f2432ec4ca85bfcf209fd55c9dc
Diffstat (limited to 'drivers/video/tegra/fb.c')
-rw-r--r--drivers/video/tegra/fb.c34
1 files changed, 3 insertions, 31 deletions
diff --git a/drivers/video/tegra/fb.c b/drivers/video/tegra/fb.c
index 0d2c991074a5..c8cb7d5aad96 100644
--- a/drivers/video/tegra/fb.c
+++ b/drivers/video/tegra/fb.c
@@ -174,7 +174,7 @@ static int tegra_fb_set_par(struct fb_info *info)
}
if (var->pixclock) {
- struct tegra_dc_mode mode;
+ bool stereo;
info->mode = (struct fb_videomode *)
fb_find_best_mode(var, &info->modelist);
@@ -183,42 +183,14 @@ static int tegra_fb_set_par(struct fb_info *info)
return -EINVAL;
}
- mode.pclk = PICOS2KHZ(info->mode->pixclock) * 1000;
- mode.h_ref_to_sync = 1;
- mode.v_ref_to_sync = 1;
- mode.h_sync_width = info->mode->hsync_len;
- mode.v_sync_width = info->mode->vsync_len;
- mode.h_back_porch = info->mode->left_margin;
- mode.v_back_porch = info->mode->upper_margin;
- mode.h_active = info->mode->xres;
- mode.v_active = info->mode->yres;
- mode.h_front_porch = info->mode->right_margin;
- mode.v_front_porch = info->mode->lower_margin;
/*
* only enable stereo if the mode supports it and
* client requests it
*/
- mode.stereo_mode = !!(var->vmode & info->mode->vmode &
+ stereo = !!(var->vmode & info->mode->vmode &
FB_VMODE_STEREO_FRAME_PACK);
- if (mode.stereo_mode) {
- mode.pclk *= 2;
- /* total v_active = yres*2 + activespace */
- mode.v_active = info->mode->yres*2 +
- info->mode->vsync_len +
- info->mode->upper_margin +
- info->mode->lower_margin;
- }
-
- mode.flags = 0;
-
- if (!(info->mode->sync & FB_SYNC_HOR_HIGH_ACT))
- mode.flags |= TEGRA_DC_MODE_FLAG_NEG_H_SYNC;
-
- if (!(info->mode->sync & FB_SYNC_VERT_HIGH_ACT))
- mode.flags |= TEGRA_DC_MODE_FLAG_NEG_V_SYNC;
-
- tegra_dc_set_mode(tegra_fb->win->dc, &mode);
+ tegra_dc_set_fb_mode(tegra_fb->win->dc, info->mode, stereo);
tegra_fb->win->w = info->mode->xres;
tegra_fb->win->h = info->mode->yres;