#!/usr/local/bin/bdmctrl
#
# This script is for use with the bdmctrl utility and allows flashing of
# 5329 Logic PD + Zoom EVB from linux.
#
# Usage ./bdmctrl mcf5329.test /dev/tblcf2 elf_file
#
# see flashlib/README and bdmctrl/README.bdmctrl for more information
#
# you will need to run flashlib/compile_plugins with 5307 as a target
# and copy the resulting intelc3 plugin to the working folder
#

open $1

reset

# SRAMBAR  at 0x80000000
# FLASH    at 0x00000000 (28F160C3)
# DRAM     at 0x40000000

# Turn on RAMBAR1 at address 80000000
write-ctrl 0x0C05 0x80000221

# Disable watchdog timer
write 0xFC098000 0x0000 2

# Init CS0
write 0xFC008000 0x00000000 4
write 0xFC008008 0x00001FA0 4
write 0xFC008004 0x001F0001 4

sleep 100

# SDRAM Initialization

# SDCS0
write 0xFC0B8110 0x40000018 4
# SDCFG1
write 0xFC0B8008 0x53722730 4
# SDCFG2
write 0xFC0B800C 0x56670000 4

# Issue PALL
# SDCR
write 0xFC0B8004 0xE1092002 4

# Issue LEMR
# SDMR
write 0xFC0B8000 0x40010000 4

# Write mode register
# SDMR
write 0xFC0B8000 0x058D0000 4

# Wait a bit
sleep 1000

# Issue PALL
# SDCR
write 0xFC0B8004 0xE1092002 4

# Perform two refresh cycles
# SDCR
write 0xFC0B8004 0xE1092004 4
# SDCR
write 0xFC0B8004 0xE1092004 4

# SDMR
write 0xFC0B8000 0x018D0000 4
# SDCR
write 0xFC0B8004 0x71092C00 4

# Wait a bit
sleep 100

#notify flashlib that we have flash at address 0x00000000, plugin is flashintelc3
flash 0x00000000 flashintelc3

#erase the entire flash
erase 0x00000000 -1

#load our flash plugin
flash-plugin 0x80000000 0x4000 flashintelc3_5307.plugin

#load and verify
load -v $2

# dump some memory at the start of flash for debugging
dump-mem 0x00000000 48 l

execute

wait

