drm/omap: fix WB height with interlace
When using WB capture from interlaced source, we need to halve the picture heights correctly. Unfortunately the current dispc_ovl_setup_common() doesn't deal with interlace very neatly, so the end result is a bit messy. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by: Benoit Parrot <bparrot@ti.com>
This commit is contained in:
parent
b994e53c2c
commit
1317ef2113
|
@ -2597,6 +2597,7 @@ static int dispc_ovl_setup_common(struct dispc_device *dispc,
|
|||
out_width = out_width == 0 ? width : out_width;
|
||||
out_height = out_height == 0 ? height : out_height;
|
||||
|
||||
if (plane != OMAP_DSS_WB) {
|
||||
if (ilace && height == out_height)
|
||||
fieldmode = true;
|
||||
|
||||
|
@ -2606,9 +2607,9 @@ static int dispc_ovl_setup_common(struct dispc_device *dispc,
|
|||
pos_y /= 2;
|
||||
out_height /= 2;
|
||||
|
||||
DSSDBG("adjusting for ilace: height %d, pos_y %d, "
|
||||
"out_height %d\n", in_height, pos_y,
|
||||
out_height);
|
||||
DSSDBG("adjusting for ilace: height %d, pos_y %d, out_height %d\n",
|
||||
in_height, pos_y, out_height);
|
||||
}
|
||||
}
|
||||
|
||||
if (!dispc_ovl_color_mode_supported(dispc, plane, fourcc))
|
||||
|
@ -2771,6 +2772,9 @@ int dispc_wb_setup(struct dispc_device *dispc,
|
|||
enum omap_overlay_caps caps =
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA;
|
||||
|
||||
if (vm->flags & DISPLAY_FLAGS_INTERLACED)
|
||||
in_height /= 2;
|
||||
|
||||
DSSDBG("dispc_wb_setup, pa %x, pa_uv %x, %d,%d -> %dx%d, cmode %x, "
|
||||
"rot %d\n", wi->paddr, wi->p_uv_addr, in_width,
|
||||
in_height, wi->width, wi->height, wi->fourcc, wi->rotation);
|
||||
|
|
Loading…
Reference in New Issue