:
#
#       @(#) lkcfg 7.1 94/12/19 SCOINC
#
#	Copyright (C) The Santa Cruz Operation, 1994
#	This Module contains Proprietary Information of
#	The Santa Cruz Operation, and should be treated as Confidential.

#
# 	pnt MDI driver Link Kit configuration script
#

[ "$#" != "5" ] && {
	echo "Usage:\n\t$0 <-ird> INIT_DB_RECORD MDI_driver Board_number"
	exit $FAIL
}

LLI_ROOT=`llipathmap`
. $LLI_ROOT/lib/libcfg.sh
PATH=$PATH:$LLI_ROOT/bin
option=$1
INITDBR=$2
AOFFILE=$3
drv=$4
bd=$5
SYSTEM_FILE=$MKMOKROOT/etc/conf/sdevice.d/$drv
MASTER_FILE=$MKMOKROOT/etc/conf/cf.d/mdevice
DRIVER_DIR=$MKMOKROOT/etc/conf/pack.d/$drv

# de-configure driver
[ "$option" = "-d" ] && {
	# removes the driver from the system
	[ -f $SYSTEM_FILE ] && {
		set_system_info $SYSTEM_FILE $bd "N" 0 0 0 0 0 0 0

		awk '{ if ( $2 == "Y" ) exit 1 }' $SYSTEM_FILE && idinstall -d $drv
	}
	exit $OK
}

[ -f "$INITDBR" ] || {
	echo "No INIT DB RECORD, \"$INITBDR\" found"
	exit $FAIL
}

cd $LLI_ROOT/ID/$drv
for i in System Master Node Driver.o Space.c space.h pnt.h
do
	[ -f "$i" ] || {
		echo "$drv: File, \"$LLI_ROOT/ID/$drv/$i\" not found"
		exit $FAIL
	}
done

AOF=`basename $AOFFILE`

case $AOF in
pnt)
	BASE_IO=`stzget $INITDBR BASE_IO SELECT` || {
		echo "$drv(ISA): BASE_IO: SELECT does not exist in stanza file"
		exit $FAIL
	}

	BASE_IO_SIZE=`stzget $AOFFILE BASE_IO SIZE` || {
		echo "$drv(ISA): BASE_IO: SIZE does not exist in stanza file"
		exit $FAIL
	}
	IRQ=`stzget $INITDBR IRQ SELECT` || IRQ="0"
	DMA=`stzget $INITDBR DMA SELECT` || DMA="-1"

	if [ "$BASE_IO" = "auto" ]
	then
		BASE_IO="0"
		EIO="0"
		IRQ="0"
		DMA="-1"
	else
		EIO=`hex_add $BASE_IO $BASE_IO_SIZE`
	fi
	;;
pnt-eisa)
	SLOT=`stzget $INITDBR SLOT SELECT` || {
		echo "$drv(EISA): SLOT: SELECT does not exist in stanza file"
		exit $FAIL
	}
	BASE_IO="${SLOT}00"
	EIO="${SLOT}FF"
	IRQ="0"
	DMA="-1"
	;;
pnt-pci)
	PCI_DEV=`stzget $INITDBR PCI_DEV SELECT` || {
		echo "$drv(PCI): PCI_DEV: SELECT does not exist in stanza file"
		exit $FAIL
	}
	PCI_BUS=`stzget $INITDBR PCI_BUS SELECT` || {
		echo "$drv(PCI): PCI_BUS: SELECT does not exist in stanza file"
		exit $FAIL
	}
	PCI_FUNC=`stzget $INITDBR PCI_FUNC SELECT` || {
		echo "$drv(PCI): PCI_FUNC: SELECT does not exist in stanza file"
		exit $FAIL
	}
	IRQ="0"
	BASE_IO="0"
	EIO="0"
	DMA="-1"
	;;
esac

	BUFFERS=`stzget $INITDBR BUFFERS SELECT` || BUFFERS="32"
	TP=`stzget $INITDBR TP SELECT` || TP="0"
	FDUP=`stzget $INITDBR FDUP SELECT` || FDUP="0"
	DMAROTATE=`stzget $INITDBR DMAROTATE SELECT` || DMAROTATE="0"
	PCNET2=`stzget $INITDBR PCNET2 SELECT` || PCNET2="0"

# set a few system file fields
# check to see if the driver is in the link-kit
[ -f $SYSTEM_FILE ] || {
	idinstall -a -e -k $drv
	idinstall -u -k -H $drv
}

case $AOF in
pnt-pci)
	set_header_info $drv $bd PCI_BUS $PCI_BUS
	set_header_info $drv $bd PCI_DEV $PCI_DEV
	set_header_info $drv $bd PCI_FUNC $PCI_FUNC
	;;
esac
set_header_info $drv $bd DMA $DMA
set_header_info $drv $bd TX_BUFFERS $BUFFERS
set_header_info $drv $bd RX_BUFFERS $BUFFERS
set_header_info $drv $bd TP $TP
set_header_info $drv $bd FDUP $FDUP
set_header_info $drv $bd DMAROTATE $DMAROTATE
set_header_info $drv $bd PCNET2 $PCNET2

# set the system file information
set_system_info $SYSTEM_FILE $bd Y 0 4 $IRQ $BASE_IO $EIO 0 0

exit $OK
