summaryrefslogtreecommitdiff
path: root/firmware/drivers/lcd-h300.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/lcd-h300.c')
-rw-r--r--firmware/drivers/lcd-h300.c22
1 files changed, 15 insertions, 7 deletions
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)
200 if(ymax >= LCD_HEIGHT) 200 if(ymax >= LCD_HEIGHT)
201 ymax = LCD_HEIGHT-1; 201 ymax = LCD_HEIGHT-1;
202 202
203 /* Copy specified rectangle bitmap to hardware */ 203 /* set update window */
204 for (; y <= ymax; y++) 204 lcd_write_reg(0x44, (ymax<<8) | y); /* horiz ram addr */
205 { 205 lcd_write_reg(0x45, ((x+width-1)<<8) | x); /* vert ram addr */
206 lcd_write_reg(0x21, (x << 8) + y); 206 lcd_write_reg(0x21, (x<<8) | y);
207 lcd_begin_write_gram(); 207 lcd_begin_write_gram();
208 lcd_write_data ((unsigned short *)&lcd_framebuffer[y][x], width); 208
209 } 209 /* Copy specified rectangle bitmap to hardware */
210 for (; y <= ymax; y++)
211 {
212 lcd_write_data ((unsigned short *)&lcd_framebuffer[y][x], width);
213 }
214
215 /* reset update window */
216 lcd_write_reg(0x44, 0xaf00); /* horiz ram addr: 0 - 175 */
217 lcd_write_reg(0x45, 0xdb00); /* vert ram addr: 0 - 219 */
210} 218}