#!/bin/bash FLASHDEVS=`cat /proc/mtd | grep -e "^mtd" | grep -v -i spi | gawk -e '{print $1}' | sed 's/://'` MTD_DEBUG=`which mtd_debug` if [ -z "$MTD_DEBUG" ] ; then echo "FAIL: mtd_debug utility not found on the system" exit 1 fi READ_TEST=`find /lib* -name mtd_readtest.ko -print` if [ -e "$READ_TEST" ]; then echo "PASS: $READ_TEST exists" else echo "FAIL: mtd_readtest.ko does not exist" exit 1 fi ERRCODE=0 for DV in $FLASHDEVS ; do FNAME=`cat /proc/mtd | grep $DV | gawk -F\" '{print $2}'` FDEV=/dev/$DV MTDSIZE=`$MTD_DEBUG info $FDEV | grep "mtd.size" | gawk -e '{print $3}'` DEVNUM=`echo $DV | grep -o [0-9]*` if [ $MTDSIZE -eq 0 ] ; then echo "SKIP: $FNAME size is $MTDSIZE (skipped)" else $MTD_DEBUG read $FDEV 0 $MTDSIZE /dev/null > /dev/null 2>&1 if [ $? -eq 0 ] ; then echo "PASS: \"$FNAME\" read $MTDSIZE bytes" else echo "FAIL: \"$FNAME\" trying to read $MTDSIZE bytes" ERRCODE=1 fi # mtd_readtest.ko test dmesg -c insmod $READ_TEST dev=$DEVNUM finish=`dmesg | grep -c 'mtd_readtest: finished'` if [ $finish -eq 1 ]; then echo "PASS: mtd_readtest $DEVNUM" else echo "FAIL: mtd_readtest $DEVNUM" ERRCODE=2 fi rmmod $READ_TEST fi done exit $ERRCODE