diff options
Diffstat (limited to 'rbutil/mkamsboot/dualboot/dualboot.S')
-rw-r--r-- | rbutil/mkamsboot/dualboot/dualboot.S | 63 |
1 files changed, 9 insertions, 54 deletions
diff --git a/rbutil/mkamsboot/dualboot/dualboot.S b/rbutil/mkamsboot/dualboot/dualboot.S index 4e4dbe5505..d5bb6610c1 100644 --- a/rbutil/mkamsboot/dualboot/dualboot.S +++ b/rbutil/mkamsboot/dualboot/dualboot.S | |||
@@ -28,9 +28,7 @@ | |||
28 | .set GPIOD, 0xC80E0000 | 28 | .set GPIOD, 0xC80E0000 |
29 | .set CGU_PROC, 0xC80F0010 | 29 | .set CGU_PROC, 0xC80F0010 |
30 | .set CGU_PERI, 0xC80F0014 | 30 | .set CGU_PERI, 0xC80F0014 |
31 | .set CGU_DBOP, 0xC80F0038 | ||
32 | .set CCU_IO, 0xC810000C | 31 | .set CCU_IO, 0xC810000C |
33 | .set DBOP, 0xC8120000 | ||
34 | .set I2C_BASE, 0xC8070000 | 32 | .set I2C_BASE, 0xC8070000 |
35 | .set I2C_DATA, 0x00 | 33 | .set I2C_DATA, 0x00 |
36 | .set I2C_SLAD0, 0x04 | 34 | .set I2C_SLAD0, 0x04 |
@@ -149,6 +147,15 @@ uclcopy: | |||
149 | cmp r1, #0 /* C3 = #0 means button pressed */ | 147 | cmp r1, #0 /* C3 = #0 means button pressed */ |
150 | beq boot_of | 148 | beq boot_of |
151 | 149 | ||
150 | #elif defined(SANSA_C200V2) | ||
151 | ldr r0, =GPIOC | ||
152 | mov r1, #0 | ||
153 | str r1, [r0, #0x400] | ||
154 | ldr r1, [r0, #0x10] /* read pin C2 */ | ||
155 | |||
156 | cmp r1, #0 /* C2 = #0 means button pressed */ | ||
157 | beq boot_of | ||
158 | |||
152 | #elif defined(SANSA_FUZEV2) | 159 | #elif defined(SANSA_FUZEV2) |
153 | ldr r0, =GPIOC | 160 | ldr r0, =GPIOC |
154 | mov r1, #0 | 161 | mov r1, #0 |
@@ -200,58 +207,6 @@ uclcopy: | |||
200 | cmp r1, #0 | 207 | cmp r1, #0 |
201 | bne boot_of | 208 | bne boot_of |
202 | 209 | ||
203 | #elif defined(SANSA_C200V2) | ||
204 | .set BUTTON_LEFT, (1<< 2) | ||
205 | .set BUTTON_DOWN, (1<< 3) | ||
206 | .set BUTTON_SELECT, (1<< 4) | ||
207 | .set BUTTON_UP, (1<< 5) | ||
208 | .set BUTTON_RIGHT, (1<< 6) | ||
209 | .set BUTTON_HOLD, (1<<12) | ||
210 | |||
211 | ldr r0, =CGU_DBOP | ||
212 | mov r1, #(1<<3) @ DBOP freq = PCLK, clock enabled | ||
213 | str r1, [r0] | ||
214 | |||
215 | @ AFSEL needs to be set for this to work | ||
216 | ldr r2, =GPIOB | ||
217 | mov r1, #0xc | ||
218 | str r1, [r2, #0x420] @ GPIOB_AFSEL | ||
219 | ldr r2, =GPIOC | ||
220 | mov r1, #0xff | ||
221 | str r1, [r2, #0x420] @ GPIOC_AFSEL | ||
222 | |||
223 | ldr r0, =DBOP | ||
224 | @ TIMPOL doesn't matter here since we don't need | ||
225 | @ the control signals. | ||
226 | |||
227 | @ 16 bit data width | ||
228 | @ enable write | ||
229 | @ tri-state output | ||
230 | ldr r1, =0x00091000 | ||
231 | str r1, [r0, #8] @ DBOP_CTRL | ||
232 | |||
233 | ldr r1, =0xf0ff @ precharge | ||
234 | str r1, [r0, #0x10] @ DBOP_DOUT | ||
235 | |||
236 | 2: ldr r1, [r0, #0xc] @ DOBP_STAT | ||
237 | ands r1, r1, #(1<<10) | ||
238 | beq 2b @ make sure fifo is empty | ||
239 | |||
240 | @ 16 bit data width | ||
241 | @ start read | ||
242 | @ tri-state output | ||
243 | @ strobe time 31 | ||
244 | ldr r1, =0x0008901f | ||
245 | str r1, [r0, #8] @ DBOP_CTRL | ||
246 | |||
247 | 3: ldr r1, [r0, #0xc] @ DOBP_STAT | ||
248 | ands r1, r1, #(1<<16) | ||
249 | beq 3b @ wait for valid data | ||
250 | |||
251 | ldrh r1, [r0, #0x14] @ DBOP_DIN | ||
252 | |||
253 | tst r1, #BUTTON_LEFT @ boot of? | ||
254 | beq boot_of | ||
255 | #elif defined(SANSA_M200V4) | 210 | #elif defined(SANSA_M200V4) |
256 | .set row, (1<<5) /* enable output on A5 */ | 211 | .set row, (1<<5) /* enable output on A5 */ |
257 | .set col, (1<<0) /* read keyscan column A0 */ | 212 | .set col, (1<<0) /* read keyscan column A0 */ |