#!/bin/sh

#export CONSOLE=/dev/ttyS0
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/mnt/root/bin:/mnt/root/sbin:/mnt/root:/mnt/root/usr/bin

let x=`devmem 0x3000000c`
sec=$((x / 1000000))
tenths=$((x % 1000000 / 10000))
export BOOTTIME=`printf "%d.%02d" $sec $tenths`
#devmem 0x30000002 16 0x0
mount -t proc proc /proc                                   
mount -t sysfs sysfs /sys                                  
mount -t devpts devpts /dev/pts

ifconfig lo 127.0.0.1 up
route add -net 127.0.0.0 netmask 255.0.0.0 lo

eval `ts4200ctl --info`
export bootdev model baseboard_model

. /ts4200.subr
let dio9=`getdiopin 9`
XCONSOLE=0

if [ "$dio9" == "1" ]; then
  export CONSOLE=/dev/ttyS0
else
  export CONSOLE=/dev/ttyS2
  XCONSOLE=1
  # If the RESET switch is being pushed, wait/feed wdog until released
  while [ "$dio9" == "0" ]; do
    let dio9=`getdiopin 9`
      eval `ts4200ctl --redledon --greenledoff`
  done
fi
ln -sf $CONSOLE /dev/tsconsole
stty -F $CONSOLE ospeed 115200 > /dev/null 2>&1
hostname ts`printf %x $model`
ts4200ctl --resetswitchon --redledoff --greenledon --autofeed 2
sdload
tsversions=`tsversions | tr -d .`
tsversions="$tsversions" bootmsg > $CONSOLE
check-usb-update 0x4200 < /dev/null > /dev/null 2>&1 &
setupclk &


(
  nandctl -z 131072 -X --nbdserver lun0:disc,lun0:part1,lun0:part2,lun0:part3
  nbd-client 127.0.0.1 7525 /dev/nbd0
  nbd-client 127.0.0.1 7526 /dev/nbd1
  nbd-client 127.0.0.1 7527 /dev/nbd2
  nbd-client 127.0.0.1 7528 /dev/nbd3
  x=0
  while [ "$x" -lt 150 -a ! -e /sys/block/mmcblk0/mmcblk0p4/ ]; do
          x=$((x+1))
          sleep .1
  done
  mount -o ro,noatime /dev/mmcblk0p4 /mnt/root

  # Software auto-update
  if [ -x /mnt/root/tsinit ]; then
    /mnt/root/tsinit $XCONSOLE < $CONSOLE > $CONSOLE 2>&1
  fi


) </dev/null >/dev/null 2>&1 &

(
  mount -t tmpfs none /dev/shm
  ifconfig eth0 192.168.0.50 netmask 255.255.255.0
  telnetd
  mount -t tmpfs tmpfs /tmp
) </dev/null >/dev/null 2>&1

(
  export ENV=/shinit
  setsid sh -c 'exec sh <$CONSOLE >$CONSOLE 2>&1'
) <$CONSOLE >$CONSOLE 2>&1
wait


if [ -e /mnt/root/sbin/init ]; then
  killall busybox telnetd >/dev/null 2>&1

  cd /mnt/root
  pivot_root . ./initrd
  ./bin/mount -n --move ./initrd/sys ./sys
  ./bin/mount -n --move ./initrd/proc ./proc
  exec ./usr/sbin/chroot . ./sbin/init < .$CONSOLE > .$CONSOLE 2>&1
fi

