diff options
-rw-r--r-- | firmware/target/arm/samsung/yh920/lcd-as-yh920.S | 55 |
1 files changed, 18 insertions, 37 deletions
diff --git a/firmware/target/arm/samsung/yh920/lcd-as-yh920.S b/firmware/target/arm/samsung/yh920/lcd-as-yh920.S index 93beec4673..382c468097 100644 --- a/firmware/target/arm/samsung/yh920/lcd-as-yh920.S +++ b/firmware/target/arm/samsung/yh920/lcd-as-yh920.S | |||
@@ -103,66 +103,47 @@ lcd_mono_data: | |||
103 | * r2 - pixel block count | 103 | * r2 - pixel block count |
104 | * | 104 | * |
105 | * Register usage: | 105 | * Register usage: |
106 | * r3/r4 - current block of phases | 106 | * r3 - current block of phases |
107 | * r5/r6 - current block of values | 107 | * r4 - current block of values |
108 | * r7 - lcd data accumulator | 108 | * r5 - lcd data accumulator |
109 | * r8 - phase signs mask | 109 | * r12 - phase signs mask |
110 | * lr - lcd bridge address | 110 | * lr - lcd bridge address |
111 | */ | 111 | */ |
112 | 112 | ||
113 | lcd_grey_data: | 113 | lcd_grey_data: |
114 | stmfd sp!, {r4-r7, lr} | 114 | stmfd sp!, {r4-r5, lr} |
115 | mov r12, #0x80 | 115 | mov r12, #0x80 |
116 | orr r12, r12, r12, lsl #8 | 116 | orr r12, r12, r12, lsl #8 |
117 | orr r12, r12, r12, lsl #16 | 117 | orr r12, r12, r12, lsl #16 |
118 | ldr lr, =LCD1_BASE | 118 | ldr lr, =LCD1_BASE |
119 | 119 | ||
120 | .greyloop: | 120 | .greyloop: |
121 | ldmia r1, {r3-r4} /* Fetch 8 pixel phases */ | 121 | ldr r3, [r1] /* Fetch 4 pixel phases */ |
122 | ldmia r0!, {r5-r6} /* Fetch 8 pixel values */ | 122 | ldr r4, [r0], #4 /* Fetch 4 pixel values */ |
123 | 123 | ||
124 | mov r7, #0 | 124 | mov r5, #0 |
125 | tst r3, #0x80 | 125 | tst r3, #0x80 |
126 | orreq r7, r7, #0xc0 | 126 | orreq r5, r5, #0xc0 |
127 | tst r3, #0x8000 | 127 | tst r3, #0x8000 |
128 | orreq r7, r7, #0x30 | 128 | orreq r5, r5, #0x30 |
129 | tst r3, #0x800000 | 129 | tst r3, #0x800000 |
130 | orreq r7, r7, #0x0c | 130 | orreq r5, r5, #0x0c |
131 | tst r3, #0x80000000 | 131 | tst r3, #0x80000000 |
132 | orreq r7, r7, #0x03 | 132 | orreq r5, r5, #0x03 |
133 | bic r3, r3, r12 | 133 | bic r3, r3, r12 |
134 | add r3, r3, r5 | 134 | add r3, r3, r4 |
135 | str r3, [r1], #4 | ||
135 | 136 | ||
136 | 1: | 137 | 1: |
137 | ldr r5, [lr] | 138 | ldr r3, [lr] |
138 | tst r5, #LCD1_BUSY_MASK | 139 | tst r3, #LCD1_BUSY_MASK |
139 | bne 1b | 140 | bne 1b |
140 | 141 | ||
141 | str r7, [lr, #0x10] | 142 | str r5, [lr, #0x10] |
142 | mov r7, #0 | ||
143 | |||
144 | tst r4, #0x80 | ||
145 | orreq r7, r7, #0xc0 | ||
146 | tst r4, #0x8000 | ||
147 | orreq r7, r7, #0x30 | ||
148 | tst r4, #0x800000 | ||
149 | orreq r7, r7, #0x0c | ||
150 | tst r4, #0x80000000 | ||
151 | orreq r7, r7, #0x03 | ||
152 | bic r4, r4, r12 | ||
153 | add r4, r4, r6 | ||
154 | |||
155 | stmia r1!, {r3-r4} | ||
156 | |||
157 | 1: | ||
158 | ldr r5, [lr] | ||
159 | tst r5, #LCD1_BUSY_MASK | ||
160 | bne 1b | ||
161 | str r7, [lr, #0x10] | ||
162 | 143 | ||
163 | subs r2, r2, #1 | 144 | subs r2, r2, #1 |
164 | bne .greyloop | 145 | bne .greyloop |
165 | 146 | ||
166 | ldmfd sp!, {r4-r7, pc} | 147 | ldmfd sp!, {r4-r5, pc} |
167 | .size lcd_grey_data,.-lcd_grey_data | 148 | .size lcd_grey_data,.-lcd_grey_data |
168 | 149 | ||