#!/bin/sh
#
# /sbin/cpufreq
#
# (C)opyright Tecomat a.s.
#
# 2011/09/12 Hosek Martin <hosek@tecomat.cz>
#

CUR_SPEED=`cat /proc/sys/cpu/0/speed`
MIN_SPEED=`cat /proc/sys/cpu/0/speed-min`
MAX_SPEED=`cat /proc/sys/cpu/0/speed-max`

RAM_SIZE=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`

MODULNO=`mpinfo | grep modulNo | sed s/'^.*: '/''/`

if [ $(($RAM_SIZE \> 32000)) = 0 ]; then

    case "${MODULNO:0:1}" in
	A|P)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'000'/`
	    ;;
	B)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'100'/`
    	    ;;
	C)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'200'/`
	    ;;
	D)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'300'/`
	    ;;
	E)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'400'/`
	    ;;
	F)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'500'/`
	    ;;
	G)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'600'/`
	    ;;
	J)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'700'/`
	    ;;
	K)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'800'/`
	    ;;
	L)
	    MODULNO=`echo $MODULNO | sed s/'^.'/'900'/`
	    ;;
    esac

    case "${MODULNO:3:1}" in
	P)
    	    MODULNO=`echo $MODULNO | sed s/'. '/'00 '/`
	    ;;
	O|0)
	    MODULNO=`echo $MODULNO | sed s/'. '/'10 '/`
	    ;;
	N)
    	    MODULNO=`echo $MODULNO | sed s/'. '/'11 '/`
	    ;;
	D)
	    MODULNO=`echo $MODULNO | sed s/'. '/'12 '/`
	    ;;
    esac

MODULNO=`echo $MODULNO | sed s/' '/''/`
MODULNO=`echo $MODULNO | sed s/'^0*'/''/`

# 200MHz < B5 0385 => 400MHz

    if [ $(($MODULNO \< 10050385)) = 1 ]; then
	MAX_SPEED="200000"
    fi
fi

Help ()
{
    echo "  Usage: cpufreq [min|max]"
    echo
    echo "  Current CPU frequency $(($CUR_SPEED / 1000)) Mhz."
    echo
    echo "  Min CPU frequency $(($MIN_SPEED / 1000)) Mhz."
    echo "  Max CPU frequency $(($MAX_SPEED / 1000)) Mhz."

    exit 1
}

if [ "$1" == "" ]; then
    Help
fi

case "$1" in
    min)
	SPEED=`echo $MIN_SPEED`
	;;
    max)
	SPEED=`echo $MAX_SPEED`
	;;
    *)
	Help
	;;
esac

echo -n "Change CPU frequency from $(($CUR_SPEED / 1000)) Mhz to $(($SPEED / 1000)) Mhz..."

    echo $SPEED > /proc/sys/cpu/0/speed

echo "done."
