summaryrefslogtreecommitdiff
path: root/drivers/video/omap2/dss/manager.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-21 15:20:57 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-21 15:20:57 -0700
commit1f7f314bf2a77f1d499b41001ebdafb261f00f30 (patch)
treeaa7eddcf09fe38abb274dffb457e3c0949cfbb3d /drivers/video/omap2/dss/manager.c
parent2a8ba8f032160552a3beffab8aae9019ff477504 (diff)
parentfce064cbda85dda330150e8d4d9f6db1a3300023 (diff)
downloadlwn-1f7f314bf2a77f1d499b41001ebdafb261f00f30.tar.gz
lwn-1f7f314bf2a77f1d499b41001ebdafb261f00f30.zip
Merge branch 'for-linus' of git://gitorious.org/linux-omap-dss2/linux
* 'for-linus' of git://gitorious.org/linux-omap-dss2/linux: (23 commits) OMAP: DSS2: Fix omap_dss_probe() error path OMAP: DSS2: omap_dss_probe() conditional compilation cleanup board-omap3-beagle: add DSS2 support OMAP2: DSS: Add missing line for update bg color OMAP3630: DSS2: Updating MAX divider value OMAP: RX51: Update board defconfig OMAP: DSS2: Add ACX565AKM Panel Driver OMAP: RX51: Add Touch Controller in SPI board info OMAP: RX51: Add LCD Panel support OMAP: DSS2: TPO-TD03MTEA1: fix Kconfig dependency OMAP: LCD LS037V7DW01: Add Backlight driver support OMAP: DSS2: Taal: Fix DSI bus locking problem OMAP: DSS2: Taal: add mutex to protect panel data OMAP: DSS2: Make partial update width even OMAP: DSS2: Fix device disable when driver is not loaded OMAP: DSS2: VENC: don't call platform_enable/disable() twice OMAP: DSS2: check lock_fb_info() return value OMAP: DSS2: fix lock_fb_info() and omapfb_lock() locking order OMAP: DSS2: Use vdds_sdi regulator supply in SDI OMAP: DSS2: Remove redundant enable/disable calls from SDI ...
Diffstat (limited to 'drivers/video/omap2/dss/manager.c')
-rw-r--r--drivers/video/omap2/dss/manager.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c
index 0820986d4a68..9e1fbe531bf0 100644
--- a/drivers/video/omap2/dss/manager.c
+++ b/drivers/video/omap2/dss/manager.c
@@ -843,6 +843,7 @@ static void configure_manager(enum omap_channel channel)
c = &dss_cache.manager_cache[channel];
+ dispc_set_default_color(channel, c->default_color);
dispc_set_trans_key(channel, c->trans_key_type, c->trans_key);
dispc_enable_trans_key(channel, c->trans_enabled);
dispc_enable_alpha_blending(channel, c->alpha_enabled);
@@ -940,6 +941,22 @@ static int configure_dispc(void)
return r;
}
+/* Make the coordinates even. There are some strange problems with OMAP and
+ * partial DSI update when the update widths are odd. */
+static void make_even(u16 *x, u16 *w)
+{
+ u16 x1, x2;
+
+ x1 = *x;
+ x2 = *x + *w;
+
+ x1 &= ~1;
+ x2 = ALIGN(x2, 2);
+
+ *x = x1;
+ *w = x2 - x1;
+}
+
/* Configure dispc for partial update. Return possibly modified update
* area */
void dss_setup_partial_planes(struct omap_dss_device *dssdev,
@@ -968,6 +985,8 @@ void dss_setup_partial_planes(struct omap_dss_device *dssdev,
return;
}
+ make_even(&x, &w);
+
spin_lock_irqsave(&dss_cache.lock, flags);
/* We need to show the whole overlay if it is scaled. So look for
@@ -1029,6 +1048,8 @@ void dss_setup_partial_planes(struct omap_dss_device *dssdev,
w = x2 - x1;
h = y2 - y1;
+ make_even(&x, &w);
+
DSSDBG("changing upd area due to ovl(%d) scaling %d,%d %dx%d\n",
i, x, y, w, h);
}