summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorJon Mayo <jmayo@nvidia.com>2011-07-07 18:34:12 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:47:42 -0800
commit42138dfbc2b47f803928f82c1841395c68c80270 (patch)
treec0e03592e3baf54c2d665d1423f1b76fd225b1a9 /drivers/video
parent0622ec5c0158daa485cb0bc0b3905a0997a32edc (diff)
video: tegra: dc: only set supported filters
Not all windows are created equal, only set vertical or horizontal filters when the window supports them. Bug 850852 Original-Change-Id: I69b40ff47fd8ed8499857408c249ddd35299ae95 Reviewed-on: http://git-master/r/40132 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: R339412d8ca44cd3bbe69f4af8c9bdde32a6d56c7
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/tegra/dc/dc.c11
-rw-r--r--drivers/video/tegra/dc/dc_priv.h4
2 files changed, 11 insertions, 4 deletions
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c
index a2cd916332c1..10768ac60aac 100644
--- a/drivers/video/tegra/dc/dc.c
+++ b/drivers/video/tegra/dc/dc.c
@@ -811,8 +811,6 @@ int tegra_dc_update_windows(struct tegra_dc_win *windows[], int n)
return -EFAULT;
}
- tegra_dc_set_dynamic_emc(windows, n);
-
if (no_vsync)
tegra_dc_writel(dc, WRITE_MUX_ACTIVE | READ_MUX_ACTIVE, DC_CMD_STATE_ACCESS);
else
@@ -926,6 +924,13 @@ int tegra_dc_update_windows(struct tegra_dc_win *windows[], int n)
else if (tegra_dc_fmt_bpp(win->fmt) < 24)
val |= COLOR_EXPAND;
+ /* only B and C have H filer, force it on if scaling */
+ if (win->idx != 0 && win->w != win->out_w)
+ win->flags |= TEGRA_WIN_FLAG_H_FILTER;
+ /* only B has V filter, set it if scaling */
+ if (win->idx == 1 && win->h != win->out_h)
+ win->flags |= TEGRA_WIN_FLAG_V_FILTER;
+
if (WIN_USE_H_FILTER(win))
val |= H_FILTER_ENABLE;
if (WIN_USE_V_FILTER(win))
@@ -950,6 +955,8 @@ int tegra_dc_update_windows(struct tegra_dc_win *windows[], int n)
}
}
+ tegra_dc_set_dynamic_emc(windows, n);
+
tegra_dc_writel(dc, update_mask << 8, DC_CMD_STATE_CONTROL);
if (!no_vsync) {
diff --git a/drivers/video/tegra/dc/dc_priv.h b/drivers/video/tegra/dc/dc_priv.h
index efc2b972a342..1e9b17fe1769 100644
--- a/drivers/video/tegra/dc/dc_priv.h
+++ b/drivers/video/tegra/dc/dc_priv.h
@@ -28,8 +28,8 @@
#define WIN_IS_TILED(win) ((win)->flags & TEGRA_WIN_FLAG_TILED)
#define WIN_IS_ENABLED(win) ((win)->flags & TEGRA_WIN_FLAG_ENABLED)
-#define WIN_USE_V_FILTER(win) ((win)->h != (win)->out_h)
-#define WIN_USE_H_FILTER(win) ((win)->w != (win)->out_w)
+#define WIN_USE_V_FILTER(win) ((win)->flags & TEGRA_WIN_FLAG_V_FILTER)
+#define WIN_USE_H_FILTER(win) ((win)->flags & TEGRA_WIN_FLAG_H_FILTER)
#define NEED_UPDATE_EMC_ON_EVERY_FRAME (windows_idle_detection_time == 0)