Whenever ywrap scrolling is selected together with 180 degree screen
rotation, 2.6.15-rc6 and earlier versions are broken.  fb_pan_display()
expects non-negative yoffsets, but ud_update_start() calls it with
yoffsets down to -(yres - font height).  This patch transforms yoffset
to the correct range 0 ...  vyres-1.
Some obviously unneeded parentheses are removed, too.
Verified with cyblafb, should be applied before 2.6.15-final because it
does fix the framebuffer rotation code introduced early in the 2.6.15
release cycle.
Signed-off-by: Knut Petersen <Knut_Petersen@t-online.de>
Acked-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
 int ud_update_start(struct fb_info *info)
 {
        struct fbcon_ops *ops = info->fbcon_par;
-       u32 xoffset, yoffset;
+       int xoffset, yoffset;
        u32 vyres = GETVYRES(ops->p->scrollmode, info);
        u32 vxres = GETVXRES(ops->p->scrollmode, info);
        int err;
 
-       xoffset = (vxres - info->var.xres) - ops->var.xoffset;
-       yoffset = (vyres - info->var.yres) - ops->var.yoffset;
+       xoffset = vxres - info->var.xres - ops->var.xoffset;
+       yoffset = vyres - info->var.yres - ops->var.yoffset;
+       if (yoffset < 0)
+               yoffset += vyres;
        ops->var.xoffset = xoffset;
        ops->var.yoffset = yoffset;
        err = fb_pan_display(info, &ops->var);