summaryrefslogtreecommitdiff
path: root/sys/src/9/bitsy/bitsyreset.s
diff options
context:
space:
mode:
Diffstat (limited to 'sys/src/9/bitsy/bitsyreset.s')
-rw-r--r--sys/src/9/bitsy/bitsyreset.s103
1 files changed, 0 insertions, 103 deletions
diff --git a/sys/src/9/bitsy/bitsyreset.s b/sys/src/9/bitsy/bitsyreset.s
deleted file mode 100644
index b3607ae09..000000000
--- a/sys/src/9/bitsy/bitsyreset.s
+++ /dev/null
@@ -1,103 +0,0 @@
-#include "mem.h"
-
- // Bitsy development board uses two banks: KM416S4030C,
- // 12 row address bits, 8 col address bits
- // Bitsy uses two banks KM416S8030C, 12 row address bits,
- // 9 col address bits
- // Have to set DRAC0 to 14 row bits or else you only get 8 col bits
- // from the formfactor unit configuration registers: 0xF3536257
-mdcnfg: // DRAM Configuration Register 10.2.1
- WORD 1<<0 | 1<<2 | 0<<3 | 0x5<<4 | 0x3<<8 | 3<<12 | 3<<14
-mdrefr0: // DRAM Refresh Control Register 10.2.2
- WORD 1<<0 | 0x200<<4 | 1<<21 | 1<<22 | 1 <<31
-mdrefr1: // DRAM Refresh Control Register 10.2.2
- WORD 1<<0 | 0x200<<4 | 1<<21 | 1<<22
-mdrefr2: // DRAM Refresh Control Register 10.2.2
- WORD 1<<0 | 0x200<<4 | 1<<20 | 1<<21 | 1<<22
-
- /* MDCAS settings from [1] Table 10-3 (page 10-18) */
-waveform0:
- WORD 0xAAAAAAA7
-waveform1:
- WORD 0xAAAAAAAA
-waveform2:
- WORD 0xAAAAAAAA
-
-delay: // delay without using memory
- mov $100, r1 // 200MHz: 100 × (2 instructions @ 5 ns) == 1 ms
-l1:
- sub $1, r1
- bgt l1
- sub $1, r0
- bgt delay
- ret
-
-reset:
- mov $INTREGS+4, r0 // turn off interrupts
- mov $0, (r0)
-
- // Is this necessary on wakeup?
- mov $POWERREGS+14, r0 // set clock speed to 191.7MHz
- mov $0xb, (r0)
-
- // This is necessary on hard reset, but not on sleep reset
- mov $0x80, r0 // wait ±128 µs
- bl delay
-
- /* check to see if we're operating out of DRAM */
- bic $0x000000ff, pc, r4
- bic $0x0000ff00, r4
- bic $0x00ff0000, r4
- cmp r4, $PHYSDRAM0
- beq dram
-
-dramwakeup:
-
- mov $POWERREGS+0x4, r1 // Clear DH in Power Manager Sleep Status Register
- bic $(1<<3), (r1) // DH == DRAM Hold
- // This releases nCAS/DQM and nRAS/nSDCS pins to make DRAM exit selfrefresh
-
- /* Set up the DRAM in banks 0 and 1 [1] 10.3 */
- mov $MEMCONFREGS, r1
-
- mov mdrefr0, r2 // Turn on K1RUN
- mov r2, 0x1c(r1)
-
- mov mdrefr1, r2 // Turn off SLFRSH
- mov r2, 0x1c(r1)
-
- mov mdrefr2, r2 // Turn on E1PIN
- mov r2, 0x1c(r1)
-
- mov waveform0, r2
- mov r2, 0x4(r1)
-
- mov waveform1, r2
- mov r2, 0x8(r1)
-
- mov waveform2, r2
- mov r2, 0xc(r1)
-
- mov $PHYSDRAM0, r0
- mov 0x00(r0), r2 // Eight non-burst read cycles
- mov 0x20(r0), r2
- mov 0x40(r0), r2
- mov 0x60(r0), r2
- mov 0x80(r0), r2
- mov 0xa0(r0), r2
- mov 0xc0(r0), r2
- mov 0xe0(r0), r2
-
- mov mdcnfg, r2 // Enable memory banks
- mov r2, 0x0(r1)
-
- // Is there any use in turning on EAPD and KAPD in the MDREFR register?
-
- ret
-
-
-
-
-dram:
-
-