/* here we start the process of spliting out the fb update into individual blocks of pixels. we end up spliting into 64x64 blocks and finally down to 64x8 pages.  */
static void arcfb_lcd_update(struct arcfb_par *par, unsigned int dx, unsigned int dy, unsigned int w, unsigned int h)
/* here we start the process of spliting out the fb update into individual blocks of pixels. we end up spliting into 64x64 blocks and finally down to 64x8 pages.  */
static void arcfb_lcd_update(struct arcfb_par *par, unsigned int dx, unsigned int dy, unsigned int w, unsigned int h)
{
	unsigned int left, right, distance, y;
	y = floor8(dy);
	h += dy - y;
	h = iceil8(h);
	distance = w;
	left = dx;
	right = min(left + w - 1, ceil64(left));
	while (distance > 0) {
		arcfb_lcd_update_horiz(par, left, right, y, h);
		distance -= ((right - left) + 1);
		left = right + 1;
		right = min(left + distance - 1, ceil64(left));
	}
}