#!/bin/sh

echo makedevs: $*

# These definitions must match the definitions in sis1100_var.h
MINORBITS=8
MINORCARDBITS=2
MINORTYPEBITS=2
MINORUSERBITS=`expr $MINORBITS - $MINORCARDBITS - $MINORTYPEBITS`
# USERBITS overwrites MINORUSERBITS
USERBITS=1

# minornumber: ccttuuuu

module=sis1100.o
basename=sis1100_
devdir=/tmp
mode=666
owner=root
group=wheel

types0="vme"
types1="ram"
types2="ctrl"
types3="dsp"

mkname () {
    card=$1
    type=$2
    user=$3
    tname=`eval echo \\\$types$type`
    name=$devdir/${basename}`printf '%d%d' $card $user`$tname
    echo $name
}

shiftv () {
    val=$1
    i=$2
    while [ $i -gt 0 ]; do
        val=`expr $val \* 2`
        i=`expr $i - 1`
    done
    echo $val
}

MAXCARDS=`shiftv 1 $MINORCARDBITS`
#echo MAXCARDS $MAXCARDS
CARDSHIFT=`expr $MINORUSERBITS + $MINORTYPEBITS`
TYPESHIFT=$MINORUSERBITS
MAXTYPES=`shiftv 1 $MINORTYPEBITS`
#echo MAXTYPES $MAXTYPES
MAXUSER=`shiftv 1 $USERBITS`
#echo MAXUSER $MAXUSER

rm -f $devdir/${basename}*

card=`expr $MAXCARDS - 1`
while [ $card -ge 0 ]; do
    #echo card $card
    type=`expr $MAXTYPES - 1`
        while [ $type -ge 0 ]; do
            #echo "  " type $type
            user=`expr $MAXUSER - 1`
            while [ $user -ge 0 ]; do
                #echo "    " user $user
                cardbits=`shiftv $card $CARDSHIFT`
                typebits=`shiftv $type $TYPESHIFT`
                minorbits=`expr $cardbits + $typebits + $user`
                #echo "      " bits `printf '%x' $minorbits`
                name=`mkname $card $type $user`
                #echo mknod $name c $3 $minorbits
                mknod $name c $3 $minorbits
                user=`expr $user - 1`
            done
            type=`expr $type - 1`
        done
    card=`expr $card - 1`
done

chown $owner $devdir/${basename}*
chgrp $group $devdir/${basename}*
chmod $mode $devdir/${basename}*
