summaryrefslogtreecommitdiff
path: root/rbutil
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil')
-rw-r--r--rbutil/mkamsboot/dualboot/dualboot.S63
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
2362: 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
2473: 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 */