diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/arm/samsung/yh920/lcd-as-yh920.S | 26 |
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 9444954041..2c7f5110bf 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 @@ | |||
27 | .align 2 | 27 | .align 2 |
28 | 28 | ||
29 | 29 | ||
30 | /* Writes an array of pixels of specified width (in 8 bits unit) | ||
31 | * | ||
32 | * Arguments: | ||
33 | * r0 : pixels array | ||
34 | * r1 : number of pixels in 8 bits unit | ||
35 | * | ||
36 | * Register usage: | ||
37 | * r2 : LCD_CONTROL value / pixel value | ||
38 | * r3 : lcd bridge address | ||
39 | */ | ||
40 | |||
30 | .global lcd_write_data | 41 | .global lcd_write_data |
31 | .type lcd_write_data,%function | 42 | .type lcd_write_data,%function |
32 | 43 | ||
33 | lcd_write_data: | 44 | lcd_write_data: |
34 | ldr r12, =LCD1_BASE | 45 | ldr r3, =LCD1_BASE |
35 | 46 | ||
36 | .loop: | 47 | .loop: |
37 | ldrb r2, [r0], #1 | ||
38 | |||
39 | 1: | 48 | 1: |
40 | ldr r3, [r12] | 49 | ldr r2, [r3] |
41 | tst r3, #LCD1_BUSY_MASK | 50 | tst r2, #LCD1_BUSY_MASK |
42 | bne 1b | 51 | bne 1b |
43 | str r2, [r12, #0x10] | ||
44 | 52 | ||
45 | ldrb r2, [r0], #1 | 53 | ldrb r2, [r0], #1 |
46 | 1: | 54 | str r2, [r3, #0x10] |
47 | ldr r3, [r12] | ||
48 | tst r3, #LCD1_BUSY_MASK | ||
49 | bne 1b | ||
50 | str r2, [r12, #0x10] | ||
51 | 55 | ||
52 | subs r1, r1, #1 | 56 | subs r1, r1, #1 |
53 | bne .loop | 57 | bne .loop |