2022-06-12 16:42:27 -05:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
2016-01-12 09:30:18 -06:00
|
|
|
if { [info exists CPUTAPID] } {
|
|
|
|
set _CPUTAPID $CPUTAPID
|
|
|
|
} else {
|
|
|
|
set _CPUTAPID 0x38289013
|
|
|
|
}
|
|
|
|
|
|
|
|
jtag newtap quark_d20xx quark -irlen 8 -irmask 0xff -expected-id $_CPUTAPID -disable
|
|
|
|
jtag newtap quark_d20xx cltap -irlen 8 -irmask 0xff -expected-id 0x0e786013 -enable
|
|
|
|
|
|
|
|
proc quark_d20xx_tapenable {} {
|
|
|
|
echo "enabling quark core tap"
|
|
|
|
irscan quark_d20xx.cltap 0x11
|
|
|
|
drscan quark_d20xx.cltap 12 1
|
|
|
|
runtest 10
|
|
|
|
}
|
|
|
|
|
|
|
|
proc quark_d20xx_tapdisable {} {
|
|
|
|
echo "disabling quark core tap"
|
|
|
|
irscan quark_d20xx.cltap 0x11
|
|
|
|
drscan quark_d20xx.cltap 12 0
|
|
|
|
runtest 10
|
|
|
|
}
|
|
|
|
|
|
|
|
proc quark_d20xx_setup {} {
|
|
|
|
jtag tapenable quark_d20xx.quark
|
|
|
|
}
|
|
|
|
|
|
|
|
jtag configure quark_d20xx.quark -event tap-enable \
|
|
|
|
"quark_d20xx_tapenable"
|
|
|
|
|
|
|
|
jtag configure quark_d20xx.quark -event tap-disable \
|
|
|
|
"quark_d20xx_tapdisable"
|
|
|
|
|
|
|
|
target create quark_d20xx.quark quark_d20xx -endian little -chain-position quark_d20xx.quark
|
|
|
|
|
|
|
|
quark_d20xx.quark configure -event reset-start {
|
|
|
|
# need to halt the target to write to memory
|
|
|
|
if {[quark_d20xx.quark curstate] ne "halted"} { halt }
|
|
|
|
# set resetbreak via the core tap
|
|
|
|
irscan quark_d20xx.quark 0x35 ; drscan quark_d20xx.quark 1 0x1
|
|
|
|
# trigger a warm reset
|
|
|
|
mww 0xb0800570 0x2
|
|
|
|
# clear resetbreak
|
|
|
|
irscan quark_d20xx.quark 0x35 ; drscan quark_d20xx.quark 1 0x0
|
|
|
|
}
|
|
|
|
|
|
|
|
jtag configure quark_d20xx.quark -event setup \
|
|
|
|
"quark_d20xx_setup"
|