Skip to content

Commit

Permalink
OMAP: DSS2: Make partial update width even
Browse files Browse the repository at this point in the history
There are some strange problems with DSI and updates with odd widths. One
particular problem is that HS TX timeout triggers easily with updates with
odd widths.

This patch makes the updates widths even, circumventing the problem. There
should be no ill side effects with increasing the update area slightly to
make the width even.

Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
  • Loading branch information
Tomi Valkeinen committed May 18, 2010
1 parent 279fcd4 commit f49a951
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions drivers/video/omap2/dss/manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -940,6 +940,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,
Expand Down Expand Up @@ -968,6 +984,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
Expand Down Expand Up @@ -1029,6 +1047,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);
}
Expand Down

0 comments on commit f49a951

Please sign in to comment.