#!/bin/sh
MS=$1
if [ X$MS != Xms -a X$MS != Xusb -a X$MS != Xreset ] ; then
  echo "Parameter Error.($MS) abort..."
  exit
fi

NBLSDM="/usr/local/sony/bin/nblsdm"
NAND=`$NBLSDM list | awk -F_ /sm_rcomp/'{print $3}' | head -1`
LOGGER="logger -t AC_DEBUG"
CTL="/usr/local/anycast/bin/sm_rcomp_ctl"
TEST_THUR=88
TEST_33=b3
TEST_22=a2
TEST_OK=80
TEST_NG=a2

### Anycast stop
/etc/rc.d/init.d/anycast stop

### Clear RCOMP data on NAND
if [ $MS = reset ] ; then
   if [ X$NAND != X ] ; then
     echo "Delete sm_rcomp_$NAND on NAND"
     $NBLSDM delete sm_rcomp_$NAND
     $NBLSDM list
     echo "Deleted RCOMP data on NAND."
   else
     echo "There is no RCOMP data on NAND."
   fi
   exit
fi

### Set parameters by NAND value
VAL=`od -Ax -x -j 0x98 -N 1 /proc/bus/pci/00/00.0  | head -1 | sed   's/^.*\(..\)$/\1/'`
ORG_VAL=$VAL
echo Default RCOMP=$VAL NAND=$NAND
$LOGGER "Default RCOMP=$VAL NAND=$NAND"
case $NAND in
  $TEST_OK)
	echo AC_DEBUG:This MPU/MEM is already checked.\(OK set\)
	$LOGGER "This MPU/MEM is already checked.(OK set)"
	exit
	;;
  $TEST_NG)
	echo AC_DEBUG:This MPU/MEM is NG combination. abort...
	$LOGGER "This MPU/MEM is NG combination."
	exit
	;;
  [1-7][1-7])
	echo AC_DEBUG:Already set NAND=$NAND   abort....
	$LOGGER "Already set NAND=$NAND"
	exit
	;;
  "")
	$CTL $TEST_THUR
	OK_VAL=$TEST_OK
	echo AC_DEBUG:Nothing NAND value set. Going thurgh test mode.
	$LOGGER "Nothing NAND value set. Going thurgh test mode."
	;;
  $TEST_THUR)
	$CTL $TEST_33
	OK_VAL=22
	VAL=33
	echo AC_DEBUG:Thurgh test was false. Going 33 test mode.
	$LOGGER "Thurgh test was false. Going 33 test mode."
	;;
  $TEST_33)
	$CTL $TEST_22
	OK_VAL=11
	VAL=22
	echo AC_DEBUG:33 test was false. Going 22 test mode.
	$LOGGER "33 test was false. Going 22 test mode."
	;;
  $TEST_22)
	$CTL $TEST_NG
	echo AC_DEBUG:22 test was false. This MPU/MEM are NG combination. abort...
	$LOGGER "22 test was false. This MPU/MEM are NG combination."
	exit
	;;
  *)
	echo AC_DEBUG:Unknown value NAND=$NAND  abort...
	$LOGGER "Unknown value NAND=$NAND"
	exit
	;;
esac
echo TEST_VAL=$VAL OK_VAL=$OK_VAL
$LOGGER "TEST_VAL=$VAL OK_VAL=$OK_VAL"

### Memory load program start
killall mem_load_test >/dev/null 2>&1
/usr/local/anycast/bin/mem_load_test 5 >/dev/null 2>&1 &

### CG import/convert program start
/usr/local/anycast/bin/cg_import_test.sh $VAL $MS
if [ $? -ne 0 ]; then
  echo "Please check above error"
  /sbin/setpci -G -s 00:00.0 98=$ORG_VAL,80,$ORG_VAL >/dev/null 2>&1
  exit -1
fi

### Check Memory load program
if pidof mem_load_test >/dev/null 2>&1 ; then
  killall mem_load_test >/dev/null 2>&1
else
  echo "Memory Error. abort...   Please REBOOT"
  logger -t AC_DEBUG "Memory Error"
  exit
fi

### RCOMP permanent
/usr/local/anycast/bin/sm_rcomp_ctl $OK_VAL

### Normal End
echo "MPU/MEMORY test is successful."
