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

# Knovative KC-100 cable modem

# TNETC4401PYP, 208-QFP U3
source [find target/tnetc4401.cfg]

# 14-pin EJTAG on JP1. Standard pinout, 1-3-5-7-9-11 = nTRST-TDI-TDO-TMS-TCK-nSRST. Use 2 for GND.
# Was initially disabled in hardware; had to add a solder bridge reenabling R124, R125 on back.
reset_config trst_and_srst separate

# 16Mb Intel CFI flash. Note this CPU has an internal ROM at 0x1FC0000 (phys) for cold boot.
# All that really does is some minimal checks before jumping to external flash at 0x00000000 phys.
# That is remapped to 0xB0000000 uncached, 0x90000000 cached.
flash bank intel cfi 0xB0000000 0x200000 2 2 $_TARGETNAME

# Perform this after a clean reboot, halt, and reset init (which should also leave it halted).
proc kc100_dump_flash {} {
	echo "Probing 48 TSOP Intel CFI flash chip (2MB)..."
	flash probe intel
	echo "Dumping 2MB flash chip to flashdump.bin.
	flash read_bank 0 flashdump.bin 0 0x200000
}

#TODO figure out memory init sequence to be able to dump from cached segment instead

# There is also a serial console on JP2, 3-5-6 = TX-RX-GND. 9600/8/N/1.

# Possibly of note, this modem's ancient ethernet port does not support Auto-MDIX.

# This modem in many ways appears to be essentially a clone of the SB5120. See usbjtag.com.
# The firmware/OS is also susceptible to many of the same procedures in "Hacking the Cable Modem"
# by DerEngel (Ryan Harris), available from No Starch Press.
