summaryrefslogtreecommitdiff
path: root/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c')
-rw-r--r--firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c b/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c
index 2d8d25cf31..8e36ff59d1 100644
--- a/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c
+++ b/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c
@@ -335,6 +335,8 @@ static void lcd_setup_rect(int x, int x_end, int y, int y_end)
335 lcd_write(0x35, x_end); /* MEM_X2 */ 335 lcd_write(0x35, x_end); /* MEM_X2 */
336 lcd_write(0x36, y); /* MEM_Y1 */ 336 lcd_write(0x36, y); /* MEM_Y1 */
337 lcd_write(0x37, y_end); /* MEM_Y2 */ 337 lcd_write(0x37, y_end); /* MEM_Y2 */
338
339 lcd_write_cmd(0x08); /* DDRAM_DATA_ACCESS_PORT */
338 } 340 }
339 else { 341 else {
340 lcd_write_cmd(0x0A); 342 lcd_write_cmd(0x0A);
@@ -342,6 +344,8 @@ static void lcd_setup_rect(int x, int x_end, int y, int y_end)
342 lcd_write_nibbles(x_end); 344 lcd_write_nibbles(x_end);
343 lcd_write_nibbles(y); 345 lcd_write_nibbles(y);
344 lcd_write_nibbles(y_end); 346 lcd_write_nibbles(y_end);
347
348 lcd_write_cmd(0x0C);
345 } 349 }
346} 350}
347 351
@@ -396,6 +400,12 @@ void lcd_update_rect(int x, int y, int width, int height)
396 return; 400 return;
397 } 401 }
398 402
403 /* align horizontal position to even for wisechip display */
404 if (lcd_type == 0) {
405 x = x & ~1;
406 x_end = (x_end + 1) & ~1;
407 }
408
399 /* correct rectangle (if necessary) */ 409 /* correct rectangle (if necessary) */
400 if (x < 0) { 410 if (x < 0) {
401 x = 0; 411 x = 0;
@@ -415,7 +425,6 @@ void lcd_update_rect(int x, int y, int width, int height)
415 lcd_setup_rect(x, x_end - 1, y, y_end - 1); 425 lcd_setup_rect(x, x_end - 1, y, y_end - 1);
416 426
417 /* write to GRAM */ 427 /* write to GRAM */
418 lcd_write_cmd((lcd_type == 0) ? 0x08 : 0x0C); /* DDRAM_DATA_ACCESS_PORT */
419 for (row = y; row < y_end; row++) { 428 for (row = y; row < y_end; row++) {
420 lcd_write_data(&lcd_framebuffer[row][x], width); 429 lcd_write_data(&lcd_framebuffer[row][x], width);
421 } 430 }