]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
fbdev: sh_mobile_lcdc: Fix overlay registers update during pan operation
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Thu, 19 Jul 2012 00:29:52 +0000 (02:29 +0200)
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Thu, 19 Jul 2012 10:15:26 +0000 (12:15 +0200)
Updating overlay registers require switching to overlay update mode.
This was correctly done when configuring the overlay format and size,
but not when updating the base address registers during pan operation.
Fix it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
drivers/video/sh_mobile_lcdcfb.c

index d82c1dedc4676d99f7d73935228d2910e29babb4..a5027099fb4c8929c3ada7006e8a8e047a2d4738 100644 (file)
@@ -1539,9 +1539,14 @@ static int sh_mobile_lcdc_overlay_pan(struct fb_var_screeninfo *var,
                ovl->base_addr_c = base_addr_c;
        }
 
+       lcdc_write(ovl->channel->lcdc, LDBCR, LDBCR_UPC(ovl->index));
+
        lcdc_write_overlay(ovl, LDBnBSAYR(ovl->index), ovl->base_addr_y);
        lcdc_write_overlay(ovl, LDBnBSACR(ovl->index), ovl->base_addr_c);
 
+       lcdc_write(ovl->channel->lcdc, LDBCR,
+                  LDBCR_UPF(ovl->index) | LDBCR_UPD(ovl->index));
+
        ovl->pan_offset = pan_offset;
 
        return 0;