summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2009-10-03 13:05:08 +0000
committerRafaël Carré <rafael.carre@gmail.com>2009-10-03 13:05:08 +0000
commitfcc6a68c6e71426ecb955a1f328d5e14f8a2ee84 (patch)
tree0e4b59039801bb21eccd7cd7deb0e50055e1a82e
parent22933cc19cdbaf61a037caae4d69699a5b0dc4c2 (diff)
downloadrockbox-fcc6a68c6e71426ecb955a1f328d5e14f8a2ee84.tar.gz
rockbox-fcc6a68c6e71426ecb955a1f328d5e14f8a2ee84.zip
Samsung YH920 LCD
Remove unused lcd_mono_data Replace a loop in partial update function by asm lcd_write_data() Remove a variable only used in this loop (x) and rename x0 to x git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22888 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/samsung/yh920/lcd-as-yh920.S35
-rw-r--r--firmware/target/arm/samsung/yh920/lcd-yh920.c10
2 files changed, 4 insertions, 41 deletions
diff --git a/firmware/target/arm/samsung/yh920/lcd-as-yh920.S b/firmware/target/arm/samsung/yh920/lcd-as-yh920.S
index 382c468097..9444954041 100644
--- a/firmware/target/arm/samsung/yh920/lcd-as-yh920.S
+++ b/firmware/target/arm/samsung/yh920/lcd-as-yh920.S
@@ -56,41 +56,6 @@ lcd_write_data:
56 .size lcd_write_data,.-lcd_write_data 56 .size lcd_write_data,.-lcd_write_data
57 57
58 58
59 .global lcd_mono_data
60 .type lcd_mono_data,%function
61
62lcd_mono_data:
63 stmfd sp!, {r4, lr}
64 ldr lr, =LCD1_BASE
65 ldr r12, =lcd_dibits
66
67.mloop:
68 ldrb r2, [r0], #1
69 mov r3, r2, lsr #4
70 ldrb r4, [r12, r3]
71
721:
73 ldr r3, [lr]
74 tst r3, #LCD1_BUSY_MASK
75 bne 1b
76 str r4, [lr, #0x10]
77
78 and r3, r2, #0x0f
79 ldrb r4, [r12, r3]
801:
81 ldr r3, [lr]
82 tst r3, #LCD1_BUSY_MASK
83 bne 1b
84 str r4, [lr, #0x10]
85
86 subs r1, r1, #1
87 bne .mloop
88
89 ldmfd sp!, {r4, pc}
90
91 .size lcd_mono_data,.-lcd_mono_data
92
93
94 .global lcd_grey_data 59 .global lcd_grey_data
95 .type lcd_grey_data,%function 60 .type lcd_grey_data,%function
96 61
diff --git a/firmware/target/arm/samsung/yh920/lcd-yh920.c b/firmware/target/arm/samsung/yh920/lcd-yh920.c
index 73b9ae502b..d24396050a 100644
--- a/firmware/target/arm/samsung/yh920/lcd-yh920.c
+++ b/firmware/target/arm/samsung/yh920/lcd-yh920.c
@@ -237,11 +237,10 @@ void lcd_blit_grey_phase(unsigned char *values, unsigned char *phases,
237 237
238/* Update a fraction of the display. */ 238/* Update a fraction of the display. */
239/* void lcd_update_rect(int, int, int, int) ICODE_ATTR; */ 239/* void lcd_update_rect(int, int, int, int) ICODE_ATTR; */
240void lcd_update_rect(int x0, int y, int width, int height) 240void lcd_update_rect(int x, int y, int width, int height)
241{ 241{
242 const fb_data *addr; 242 const fb_data *addr;
243 int ymax; 243 int ymax;
244 int x = x0;
245 244
246 /* The Y coordinates have to work on even 8 pixel rows */ 245 /* The Y coordinates have to work on even 8 pixel rows */
247 ymax = (y + height-1) >> 2; 246 ymax = (y + height-1) >> 2;
@@ -258,13 +257,12 @@ void lcd_update_rect(int x0, int y, int width, int height)
258 for (; y <= ymax; y++) 257 for (; y <= ymax; y++)
259 { 258 {
260 lcd_write_reg(LCD_CNTL_PAGE, y); 259 lcd_write_reg(LCD_CNTL_PAGE, y);
261 lcd_write_reg(LCD_CNTL_COLUMN, x0); 260 lcd_write_reg(LCD_CNTL_COLUMN, x);
262 261
263 addr = &lcd_framebuffer[y][x0]; 262 addr = &lcd_framebuffer[y][x];
264 263
265 lcd_send_cmd(LCD_CNTL_DATA_WRITE); 264 lcd_send_cmd(LCD_CNTL_DATA_WRITE);
266 for (x = 0; x < width; x++) 265 lcd_write_data(addr, width);
267 lcd_send_data(*addr++);
268 } 266 }
269} 267}
270 268