/* here we handle horizontal blocks for the update. update_vert will handle spaning multiple pages. we break out each horizontal block in to individual blocks no taller than 64 pixels.  */
static void arcfb_lcd_update_horiz(struct arcfb_par *par, unsigned int left, unsigned int right, unsigned int top, unsigned int h)
/* here we handle horizontal blocks for the update. update_vert will handle spaning multiple pages. we break out each horizontal block in to individual blocks no taller than 64 pixels.  */
static void arcfb_lcd_update_horiz(struct arcfb_par *par, unsigned int left, unsigned int right, unsigned int top, unsigned int h)
{
	unsigned int distance, upper, lower;
	distance = h;
	upper = floor8(top);
	lower = min(upper + distance - 1, ceil64(upper));
	while (distance > 0) {
		distance -= ((lower - upper) + 1 );
		arcfb_lcd_update_vert(par, upper, lower, left, right);
		upper = lower + 1;
		lower = min(upper + distance - 1, ceil64(upper));
	}
}