# SPDX-License-Identifier: GPL-2.0-or-later

#
# Ethernut 3 board configuration file
#
# http://www.ethernut.de/en/hardware/enut3/


# AT91R40008-66AU ARM7TDMI Microcontroller
# 256kB internal RAM
source [find target/at91r40008.cfg]


# AT49BV322A-70TU NOR Flash
# 2M x 16 mode at address 0x10000000
# Common flash interface supported
#
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cfi 0x10000000 0x400000 2 2 $_TARGETNAME


# Micrel MIC2775-29YM5 Supervisor
# Reset output will remain active for 280ms (maximum)
#
adapter srst delay 300
jtag_ntrst_delay 300


arm7_9 fast_memory_access enable
arm7_9 dcc_downloads enable
adapter speed 16000


# Target events
#
$_TARGETNAME configure -event reset-init { board_init }

# Initialize board hardware
#
proc board_init { } {
	board_remap
	flash probe 0
}

# Memory remap
#
proc board_remap {{VERBOSE 0}} {
	# CS0: NOR flash
	#      16MB @ 0x10000000
	#      16-bit data bus
	#      4 wait states
	#
	mww 0xffe00000 0x1000212d

	# CS1: Ethernet controller
	#      1MB @ 0x20000000
	#      16-bit data bus
	#      2 wait states
	#      Byte select access
	#
	mww 0xffe00004 0x20003025

	# CS2: CPLD registers
	#      1MB @ 0x21000000
	#      8-bit data bus
	#      2 wait states
	#
	mww 0xffe00008 0x21002026

	# CS3: Expansion bus
	#      1MB @ 0x22000000
	#      8-bit data bus
	#      8 wait states
	#
	mww 0xffe00010 0x22002e3e

	# Remap command
	#
	mww 0xffe00020 0x00000001

	if {$VERBOSE != 0} {
		echo "0x00000000 RAM"
		echo "0x10000000 Flash"
		echo "0x20000000 Ethernet"
		echo "0x21000000 CPLD"
		echo "0x22000000 Expansion"
	}
}
