##################################################################
# Settings taken from OpenOCD Version 0.7.0
##################################################################
##################################################################
# daemon configuration
##################################################################
telnet_port 4444
gdb_port 3333

##################################################################
# interface taken from scripts/interface/arm-usb-ocd.cfg
##################################################################
#
# Olimex ARM-USB-OCD
#
# http://www.olimex.com/dev/arm-usb-ocd.html
#

interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG"
ft2232_layout "olimex-jtag"
ft2232_vid_pid 0x15BA 0x0003

##################################################################
# Board-specific stuff
##################################################################

adapter_khz 1000
reset_config trst_and_srst srst_pulls_trst

##################################################################
# target taken from scripts/target/lpc3131.cfg
##################################################################

if { [info exists CHIPNAME] } {
   set _CHIPNAME $CHIPNAME
} else {
   set _CHIPNAME lpc3131
}

if { [info exists ENDIAN] } {
   set _ENDIAN $ENDIAN
} else {
   set _ENDIAN little
}

# ARM926EJS core
if { [info exists CPUTAPID] } {
   set _CPUTAPID $CPUTAPID
} else {
   set _CPUTAPID 0x07926f0f
}

# Scan Tap
# Wired to seperate STDO pin on the lpc3131, externally muxed to TDO on ea3131 module
# JTAGSEL pin must be 0 to activate, which reassigns arm tdo to a pass through.
if { [info exists SJCTAPID] } {
   set _SJCTAPID $SJCTAPID
} else {
   set _SJCTAPID 0x1541E02B
}

jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID

##################################################################
# various symbol definitions, to avoid hard-wiring addresses
##################################################################

global lpc313x
set lpc313x [ dict create ]

# Physical addresses for controllers and memory
dict set lpc313x sram0			0x11028000
dict set lpc313x sram1			0x11040000
dict set lpc313x uart			0x15001000
dict set lpc313x cgu			0x13004000
dict set lpc313x ioconfig		0x13003000
dict set lpc313x sysconfig		0x13002800
dict set lpc313x wdt			0x13002400

##################################################################
# Target configuration
##################################################################

adapter_nsrst_delay 1000
jtag_ntrst_delay 0

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm926ejs -endian $_ENDIAN -chain-position $_TARGETNAME

$_TARGETNAME invoke-event halted

$_TARGETNAME configure -work-area-phys [dict get $lpc313x sram0] -work-area-size 0x30000 -work-area-backup 0

$_TARGETNAME configure -event reset-init {
	echo "\nRunning reset init script for LPC3131\n"
	halt
	wait_halt
	reg cpsr 0xa00000d3	;#Supervisor mode
	reg pc 0x11029000
	poll
	sleep 500
}

arm7_9 fast_memory_access enable
arm7_9 dcc_downloads enable