source [find interface/sheevaplug.cfg]
 source [find target/feroceon.cfg]
 
-$_TARGETNAME configure -event reset-init { sheevaplug_init }
-
 $_TARGETNAME configure \
        -work-area-phys 0x10000000 \
        -work-area-size 65536 \
 
 proc sheevaplug_init { } {
 
+       # We need to assert DBGRQ while holding nSRST down.
+       # However DBGACK will be set only when nSRST is released.
+       jtag_reset 0 1
+       halt 0
+       jtag_reset 0 0
+       wait_halt
+
        arm926ejs cp15 0 0 1 0 0x00052078
 
        mww 0xD0001400 0x43000C30 #  DDR SDRAM Configuration Register
 
 proc sheevaplug_reflash_uboot { } {
 
-       # reflash the u-Boot binary
-       #reset init
+       # reflash the u-Boot binary and reboot into it
+       sheevaplug_init
        nand probe 0
        nand erase 0 0 4
        nand write 0 uboot.bin 0
 
 proc sheevaplug_load_uboot { } {
 
-       # load u-Boot into RAM
-       #reset init
+       # load u-Boot into RAM and execute it
+       sheevaplug_init
        load_image /tmp/uboot.elf
        verify_image uboot.elf
        resume 0x00600000