summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2009-10-03 13:56:23 +0000
committerRafaël Carré <rafael.carre@gmail.com>2009-10-03 13:56:23 +0000
commit71db2d74b57cab09a90c0d042a40452e1a93edc0 (patch)
tree2ebce939666ea5505cfbad62695816ea7efd5de3
parentccf2078150e9ccd9edafeccd209f93ca60a7ada5 (diff)
downloadrockbox-71db2d74b57cab09a90c0d042a40452e1a93edc0.zip
rockbox-71db2d74b57cab09a90c0d042a40452e1a93edc0.tar.gz
rockbox-71db2d74b57cab09a90c0d042a40452e1a93edc0.tar.bz2
rockbox-71db2d74b57cab09a90c0d042a40452e1a93edc0.tar.xz
Samsung YH920 : fix lcd_blit_mono displaying twice too wide
lcd_write_data() wrote twice too much pixels to the controller The fix is the same than r22885, vertically packed 2bpp displays use 8-bits fb_data while horizontally packed 2bpp use 16-bits fb_data git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22893 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/samsung/yh920/lcd-as-yh920.S26
1 files changed, 15 insertions, 11 deletions
diff --git a/firmware/target/arm/samsung/yh920/lcd-as-yh920.S b/firmware/target/arm/samsung/yh920/lcd-as-yh920.S
index 9444954..2c7f511 100644
--- a/firmware/target/arm/samsung/yh920/lcd-as-yh920.S
+++ b/firmware/target/arm/samsung/yh920/lcd-as-yh920.S
@@ -27,27 +27,31 @@
.align 2
+/* Writes an array of pixels of specified width (in 8 bits unit)
+ *
+ * Arguments:
+ * r0 : pixels array
+ * r1 : number of pixels in 8 bits unit
+ *
+ * Register usage:
+ * r2 : LCD_CONTROL value / pixel value
+ * r3 : lcd bridge address
+ */
+
.global lcd_write_data
.type lcd_write_data,%function
lcd_write_data:
- ldr r12, =LCD1_BASE
+ ldr r3, =LCD1_BASE
.loop:
- ldrb r2, [r0], #1
-
1:
- ldr r3, [r12]
- tst r3, #LCD1_BUSY_MASK
+ ldr r2, [r3]
+ tst r2, #LCD1_BUSY_MASK
bne 1b
- str r2, [r12, #0x10]
ldrb r2, [r0], #1
-1:
- ldr r3, [r12]
- tst r3, #LCD1_BUSY_MASK
- bne 1b
- str r2, [r12, #0x10]
+ str r2, [r3, #0x10]
subs r1, r1, #1
bne .loop