From 6ddfac0806a15a8771725ec4fdc39247f36949ff Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Sun, 11 Dec 2005 00:30:15 +0000 Subject: Patch #1377879 by Anders Kagerin - faster lcd_update_rect() for h300 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8215 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/lcd-h300.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'firmware/drivers/lcd-h300.c') diff --git a/firmware/drivers/lcd-h300.c b/firmware/drivers/lcd-h300.c index 17fe1f530b..91a86defd4 100644 --- a/firmware/drivers/lcd-h300.c +++ b/firmware/drivers/lcd-h300.c @@ -200,11 +200,19 @@ void lcd_update_rect(int x, int y, int width, int height) if(ymax >= LCD_HEIGHT) ymax = LCD_HEIGHT-1; - /* Copy specified rectangle bitmap to hardware */ - for (; y <= ymax; y++) - { - lcd_write_reg(0x21, (x << 8) + y); - lcd_begin_write_gram(); - lcd_write_data ((unsigned short *)&lcd_framebuffer[y][x], width); - } + /* set update window */ + lcd_write_reg(0x44, (ymax<<8) | y); /* horiz ram addr */ + lcd_write_reg(0x45, ((x+width-1)<<8) | x); /* vert ram addr */ + lcd_write_reg(0x21, (x<<8) | y); + lcd_begin_write_gram(); + + /* Copy specified rectangle bitmap to hardware */ + for (; y <= ymax; y++) + { + lcd_write_data ((unsigned short *)&lcd_framebuffer[y][x], width); + } + + /* reset update window */ + lcd_write_reg(0x44, 0xaf00); /* horiz ram addr: 0 - 175 */ + lcd_write_reg(0x45, 0xdb00); /* vert ram addr: 0 - 219 */ } -- cgit v1.2.3