#!/bin/sh
. /ts7500.subr

s="\033[80D\033[39C "
let x=`devmem 0x79000040`
sec=$((x / 100000))
tenths=$((x % 100000 / 1000))
boottime=`printf "%d.%02d" $sec $tenths`
eval `ts7500ctl --info`
echo -n ">> Booted from: "
case $bootdev in
	0x0) 
		echo -n "onboard flash" 
		if [ "$model" = "0x7500" ]; then
			mbrread="spiflashctl --lun 0 -R 1 -z 512"
		else
			mbrread="nandctl -X -R 1 -z 512"
		fi
		;;
	0x1) 
		echo -n "SD card" 
		mbrread="sdctl -R 1 -z 512"
		;;
	0x2|0x3) 
		echo -n "offboard flash" 
		mbrread="spiflashctl --lun 1 -R 1 -z 512"
		;;
esac
echo -e "${s}Booted in: $boottime seconds"

echo -n ">> SBC Model number: "
case $model in
	0x4500|0x7551|0x7552|0x7553|0x7554|0x7550|0x7558) hasnand=1 ;;
	0x7500) hasspi=1 ;;
esac
case $model in
	0x4500) echo -n "TS-4500" ;;
	0x7500) echo -n "TS-7500" ;;
	0x7550) echo -n "TS-7550" ;;
	0x7551) echo -n "WayMedia-7551" ;;
	0x7552) echo -n "TS-7552" ;;
	0x7553) echo -n "TS-7553" ;;
	0x7554) echo -n "Softek Txport-001" ;;
	0x7558) echo -n "TS-7558" ;;
	*) echo -n $model ;;
esac
let submodel="$submodel"
echo -e "${s}SBC Sub-model number: $submodel"

echo -n ">> CPU clock rate: "
cpu=`dmesg | grep "CPU clock at" | sed -e 's,.*CPU clock at ,,'`

echo -n -e "${cpu}${s}RAM size: "
dmesg | egrep "Memory:.*total" | sed -e 's/.* = //' -e 's/ total//'

if [ "$hasnand" = "1" ]; then
	echo -n ">> NAND Flash size: "
	eval `nandctl 2>&1`
	let nandmb="$sectors / 4 / 1024"
	echo -n "${nandmb}MB"
	case "$chipid" in
		0xdc20) chipid="0xdc20 (STMicro)" ;;
		0xdcec) chipid="0xdcec (Samsung)" ;;
		*) chipid="$chipid (Unknown)" ;;
	esac
	echo -e "${s}NAND Flash Type: $chipid"
fi


echo -n ">> MAC number: "
mac=`ifconfig eth0 | grep HWaddr | sed 's/.*HWaddr //'`

let revision="$revision"
echo -e "${mac}${s}SBC FPGA Version: $revision"

echo -n ">> Temperature Sensor: "
t=`gettemp`
echo -e -n "$t degC${s}MODE1 bootstrap: "
let md1="$bootmode & 0x1"
if [ "$md1" -ne 0 ]; then
	echo "OFF"
else
	echo "ON"
fi

echo -n ">> RTC present: "
eval `ts7500ctl --getrtc 2>&1`
if [ "$rtc_present" -eq 1 ]; then echo -n "YES"; else echo -n "NO"; fi

echo -n -e "${s}Date and Time: "
date "+%b %e %Y %T"

if [ "$model" = "0x4500" ]; then
	let baseboard_rev="$baseboard_model >> 6"
	case $baseboard_rev in
	0) rev=RevA ;;
	1) rev=RevB ;;
	2) rev=RevC ;;
	3) rev=RevD ;;
	esac
	
	case $baseboard_model in
	252) baseboard_model="RHRC"; rev="" ;;
	253) baseboard_model="GS-8110"; rev="" ;;
	254) baseboard_model="Ritec"; rev="" ;;
	*) let baseboard_model="$baseboard_model & 0x3f" ;;
	esac
	
	case $baseboard_model in
	2) baseboard_model="TS-8390 $rev" ;;
	4) baseboard_model="TS-8500 $rev" ;;
	5) baseboard_model="TS-8400 $rev" ;;
	6) baseboard_model="TS-8160 $rev" ;;
	7) baseboard_model="TS-8100 $rev" ;;
	8) baseboard_model="TS-8820 $rev" ;;
	10) baseboard_model="TS-8900 $rev" ;;
	63) baseboard_model="TS-8200" ;;
	*) baseboard_model="$baseboard_model $rev" ;;
	esac
	
	echo -n ">> Base board type: $baseboard_model"
	echo -e -n "${s}Base board FPGA Version: "

	case $baseboard_model in
	TS-8200*|TS-8390*|TS-8400*|TS-8500*|TS-9490*|RHRC) msg="not present" ;;
	*) setdiopin 26 0 # ALE asserted
		ts7500ctl -a 0x14 -w 2
		setdiopin 26 1 # ALE deasserted
		setdiopin 25 1 # DIR ? for read
		setdiopin 24 0 # CS asserted
		x=`ts7500ctl -a 0x14 -r`
		let x="$x & 0xf"
		setdiopin 24 1 # CS deasserted
		msg="$x" ;;
	esac

	echo "$msg"
	
fi

echo -n ">> MODE2 bootstrap: "
let sdjp="$bootmode & 0x2"
if [ "$sdjp" -ne 0 ]; then 
	echo -n "OFF"
else
	echo -n "ON"
fi

echo -n -e "${s}SD card size: "
eval `sdctl 2>&1`
let cardsize="$cardsize_sectors / 2 / 1024"
if [ "$cardsize" -eq 0 ]; then
	echo "not present"
else
	echo "${cardsize}MB"
fi

if [ "$hasspi" = "1" ]; then
	echo -n ">> Onboard SPI flash type: "
	eval `spiflashctl --lun 0 2>&1`
	if [ "$sectors" -eq 0 ]; then
	        manufacturer="not present"
	        flashsize="not present"
	else
	        let flashsize="$sectors / 2 / 1024"
		if [ "$manufacturer" = "0xc2" ]; then
			manufacturer="Macronix"
		elif [ "$manufacturer" = "0x20" ]; then
			manufacturer="Micron"
		else
			manufacturer="Unknown"
		fi
		flashsize="${flashsize}MB"
	fi
	sectors=0
	
echo -e "${manufacturer}${s}Onboard SPI flash size: ${flashsize}"
fi
                        
echo -n ">> Offboard SPI flash type: "
eval `spiflashctl --lun 1 2>&1`
if [ "$sectors" -eq 0 ]; then
        manufacturer="not present"
        flashsize="not present"
else
	let flashsize="$sectors / 2 / 1024"
	flashsize="${flashsize}MB"
	if [ "$manufacturer" = "0xc2" ]; then
		manufacturer="Macronix"
	elif [ "$manufacturer" = "0x20" ]; then
		manufacturer="Micron"
	else
		manufacturer="Unknown"
	fi
fi

echo -e "${manufacturer}${s}Offboard SPI flash size: ${flashsize}"
echo -n ">> XUARTs detected: "
eval `xuartctl 2>&1`
echo -n -e "${xuarts_detected}${s}CAN present: "
canok="NO"
ts7500ctl -a 0x50 -w 0x0
x=`ts7500ctl -a 0x52 -r`
if [ "$x" = "0x21" ]; then 
	ts7500ctl -a 0x50 -w 6
	ts7500ctl -a 0x52 -w 0xa5
	ts7500ctl -a 0x50 -w 6
	x=`ts7500ctl -a 0x52 -r`
	if [ "$x" = "0xa5" ]; then canok="YES"; fi
fi
echo "$canok"

echo -n ">> Linux kernel version: "
un=`uname -r`
echo -n -e "${un}${s}Linux kernel date: "
uname -a | sed 's,PREEMPT ,,' | cut -d' ' -f 6-7,10

if [ -n "$tsversions" ]; then 
	eval "$tsversions"; 
else
	eval `tsversions | tr -d .`
fi
busyboxver=`/bin/busybox | head -1 | cut -d' ' -f2`
busybox="$busybox ($busyboxver)"
echo -e ">> Bootrom date: ${bootrom}${s}INITRD date: $initrd"

echo -e ">> ts7500ctl date: ${ts7500ctl}${s}sdctl date: $sdctl"
echo -e ">> canctl date: ${canctl}${s}nandctl date: $nandctl"
echo -e ">> spiflashctl date: ${spiflashctl}${s}xuartctl date: $xuartctl"
echo -e ">> dioctl date: ${dioctl}${s}spictl date: $spictl"
echo -e ">> dmxctl date: ${dmxctl}${s}busybox date: $busybox"
echo -e ">> ts7500.subr date: ${ts7500subr}${s}daqctl date: ${daqctl}"
echo -e ">> linuxrc date: ${linuxrc}${s}rootfs date: ${rootfs}"
echo -e -n ">> MBR date: "
mbrmd5=`($mbrread | dd bs=1 count=446 | md5sum | cut -d' ' -f1)2>/dev/null`
if [ "$mbrmd5" = "26778c7b52416865bce959c2253bfead" ]; then
	mbrdate="Jul 14 2009"
else
	mbrdate="Unknown"
fi
echo "$mbrdate"


