#!/bin/bash 
module="edt"
device="edt"
group="wheel"
mode="666"

lspci=`which lspci 2>/dev/null`

if [ "$lspci" == "" ] ; then
	if [ -x /usr/bin/lspci ]; then
		lspci=/usr/bin/lspci
	elif [ -x /usr/sbin/lspci ]; then 
		lspci=/usr/sbin/lspci
	elif [ -x /bin/lspci ]; then
		lspci=/bin/lspci
	elif [ -x /sbin/lspci ]; then
		lspci=/sbin/lspci
	else 
		echo "FATAL ERROR: It looks like you don't have 'lspci'!"
		echo "Make sure the that pciutil package is installed on your system."
		exit 1
	fi
fi

lsmod=`which lsmod 2>/dev/null`

if [ "$lsmod" == "" ] ; then
	if [ -x /usr/bin/lsmod ]; then
		lsmod=/usr/bin/lsmod
	elif [ -x /usr/sbin/lsmod ]; then 
		lsmod=/usr/sbin/lsmod
	elif [ -x /bin/lsmod ]; then
		lsmod=/bin/lsmod
	elif [ -x /sbin/lsmod ]; then
		lsmod=/sbin/lsmod
	else 
		echo "FATAL ERROR: It looks like you don't have 'lsmod'!"
		echo "Make sure that the pciutil package is installed on your system."
		exit 1
	fi
fi

function check_run_pdvload()
{
	RUN_PDVLOAD="n"
	
	if [ -f /opt/EDTpdv/.run_pdvload ] ; then 
	
		RUN_PDVLOAD=`cat /opt/EDTpdv/.run_pdvload`

		if [ $RUN_PDVLOAD == "y" ] ; then 
	
		     cd /opt/EDTpdv 
		
		     ./pdvload
		fi

	fi

}

function check_run_pcdload()
{
	RUN_PCDLOAD="n"
	
	if [ -f /opt/EDTpcd/.run_pcdload ] ; then 
	
		RUN_PCDLOAD=`cat /opt/EDTpcd/.run_pcdload`

		if [ $RUN_PCDLOAD == "y" ] ; then 
	
		     cd /opt/EDTpcd 
		
		     ./pcdload
		fi
	fi
}


function load_edt_module()
{


	# call modprobe

	echo "/sbin/modprobe edt"
	/sbin/modprobe edt


	major=`cat /proc/devices | awk "\\$2==\"$module\" {print \\$1}"`
	echo major is $major
}

#ID names to values map
let P11W_ID=0x0000
let P16D_ID=0x0001
let PDV_ID=0x0010
let PCD20_ID=0x0011
let PCD40_ID=0x0012
let PCD60_ID=0x0013
let PDVK_ID=0x0014
let PDV44_ID=0x0015
let PDVAERO_ID=0x0016
let PDVCL_ID=0x0034
let PGP20_ID=0x0021
let PGP40_ID=0x0022
let PGP60_ID=0x0023
let PDVRGB_ID=0x0024
let PGP_RGB_ID=0x0024
let PGP_THARAS_ID=0x0025
let PGP_ECL_ID=0x0026
let PCD_16_ID=0x0027
let P53B_ID=0x0020
let PDVFOI_ID=0x0030
let PDVFCI_AIAG_ID=0x0038
let PDVFCI_USPS_ID=0x0039
let PCDFCI_SIM_ID=0x003a
let PCDFCI_PCD_ID=0x003b
let PSS4_ID=0x0040
let PSS16_ID=0x0041
let PCDA_ID=0x0044
let PCDA16_ID=0x0045
let PCDCL_ID=0x0046
let PDVA_ID=0x0048
let PDVA16_ID=0x0049
let PDVCL2_ID=0x004a
let PE4CDA16_ID=0x004b
let PDVFOX_ID=0x004c
let PCDFOX_ID=0x004e
let PGS4_ID=0x0050
let PGS16_ID=0x0051
let USB_ID=0x0060
let DMY_ID=0x0080
let DMYK_ID=0x0081
let DMYFOI_ID=0x0081
let DMY44_ID=0x0081
let PE8DVFOX_ID=0x0090
let PE4DVCL_ID=0x0091
let PE4DVAFOX_ID=0x0092
let PE8DVCL_ID=0x0093
let PE4DVFCI_ID=0x0094
let PE8DVFCI_ID=0x0095
let PE8LX1_ID=0x0096
let PE4CDA_ID=0x0047
let PE8LX16_ID=0x0097
let PE8LX16_LS_ID=0x0098
let PE4AMC16_ID=0x009A
let PE8DVCLS_ID=0x009B
let PE8LX32_ID=0x009C
let PE1DVVL_ID=0x009D
let PE4DVVLFOX_ID=0x009E
let PC104ICB_ID=0x009F
let PE8G3S5_ID=0x00a0
let WSU1_ID=0x00a1
let SNAP1_ID=0x00a2
let PE4DVVL_ID=0x00a3
let PE4BL_RADIO_ID=0x00a4
let PE1BL_TIMING_ID=0x00a5
let PE8BL_NIC_ID=0x00a6
let LCRBOOT_ID=0x00a7
let PE8G2V7_ID=0x00a8
let PE8VLCLS_ID=0x00a9
let PE8G3KU_ID=0x00aa
let PE8G3A5_ID=0x00ab
let PE4BL_LFRADIO_ID=0x00ad
let PE8BL_E3NIC_ID=0x00ae
let PE4BL_TXRADIO_ID=0x00af
let PE8G2CML_ID=0x00b0

function build_boardids()
{
	ids=`$lspci -d 123d:* -n | awk 'BEGIN {FS=":"} ; {print "0x" $NF}' | awk '{print $1}'`
	declare -i board # board is an integer

	echo "ids = $ids"

	board_ids=""

	##
	## The following sorts the boards according to the order of the
	## device structs in the driver so that minor numbers match.
	##
	for board in $ids ; do 
		if [ $board -eq $P11W_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $P16D_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDV_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVA_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVA16_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVFOX_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4DVAFOX_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8DVFOX_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4DVVLFOX_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVFCI_AIAG_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVFCI_USPS_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVK_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVFOI_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDV44_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVCL_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE1DVVL_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4DVVL_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4DVCL_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8DVCL_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PC104ICB_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVAERO_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PGP_RGB_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCDA_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PSS4_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PGS4_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCD20_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCD40_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCD60_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PGP20_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PGP40_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PGP60_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PGP_ECL_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCD_16_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PSS16_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PGS16_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCDA16_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4CDA16_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4CDA_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCDFOX_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCDFCI_SIM_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCDFCI_PCD_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PGP_THARAS_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PCDCL_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PDVCL2_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4DVFCI_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8DVFCI_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8LX1_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8LX16_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8LX16_LS_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8LX32_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4AMC16_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8DVCLS_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8VLCLS_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8G3S5_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8G3A5_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $WSU1_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $SNAP1_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4BL_RADIO_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4BL_LFRADIO_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8BL_E3NIC_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE4BL_TXRADIO_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE1BL_TIMING_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8BL_NIC_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $LCRBOOT_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8G2V7_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8G3KU_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $PE8G2CML_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done
	for board in $ids ; do 
		if [ $board -eq $P53B_ID ] ; then
			board_ids="$board_ids $board"
		fi
	done

	ids="$board_ids"
	echo "sorted ids = $ids"

}


function build_links()
{

	echo "Build Links..."
	# keep independent indices for individual boards

	index=0
	p11windex=0
	p16dindex=0
	pcdindex=0
	pdvindex=0
	devindex=0


	rm -f /dev/edt* /dev/pdv* /dev/pcicd* /dev/p16d* /dev/p11w*

	declare -i board # board is an integer

	for board in $ids ; do

	echo BOARD $board

	if [ $board -ne $P53B_ID ] ; then

		echo "devindex = $devindex"

		echo "Setting up board $board ($module$index)"
		mknod /dev/${device}${index} c $major $devindex
		echo "mknod /dev/${device}${index} c $major $devindex"
		chgrp $group /dev/${device}[0-9]*
		chmod $mode  /dev/${device}[0-9]*

		case $board in 
		$P11W_ID ) 
			echo "Type P11W"
			edt_devname="p11w"
			ln -s /dev/${device}${index} /dev/${edt_devname}${p11windex}
			p11windex=`expr ${p11windex} + 1`
		let devindex=devindex+1
			;;

		$P16D_ID ) 
			echo "Type P16D"
			edt_devname="p16d"
			ln -s /dev/${device}${index} /dev/${edt_devname}${p16dindex}
			p16dindex=`expr ${p16dindex} + 1`
		let devindex=devindex+1
			;;

		$PDV_ID | $PDV44_ID | $PDVAERO_ID | $PDVK_ID | $PDVFCI_AIAG_ID  | $PDVA_ID )
			echo "Type PDV"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
			pdvindex=`expr $pdvindex + 1`
		let devindex=devindex+1
			;;

		$PE8LX1_ID )
			echo "Type PE8 LX1"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
			pcdindex=`expr $pcdindex + 1`
		let devindex=devindex+1
			;;

		$PCDFCI_PCD_ID )
			echo "Type FCI CD"
			devname="pcicd"
			ln -s /dev/${device}${index} /dev/${devname}${pcdindex}
			pcdindex=`expr $pcdindex + 1`
		let devindex=devindex+1
			;;

		$PE1BL_TIMING_ID )
			echo "Type LCR TIMING BLADE"
			devname="pcicd"
			ln -s /dev/${device}${index} /dev/${devname}${pcdindex}
			pcdindex=`expr $pcdindex + 1`
		let devindex=devindex+1
			;;

		$LCRBOOT_ID )
			echo "Type LCR BOOT"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;


		$PDVCL2_ID )
			echo "Type PDV-CLS (PDV-CL2)"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 4 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PE8DVCLS_ID )
			echo "Type PE8DV-CLS "
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 2 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PE8VLCLS_ID )
			echo "Type VisionLink CLS "
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 2 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PE4DVAFOX_ID | $PE8DVFOX_ID )
			echo "Type PEDV-FOX"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 4 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PE4DVCL_ID | $PE8DVCL_ID )
			echo "Type PEDV-CL"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 3 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PE4DVVLFOX_ID )
			echo "Type ImageLink-FOX"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 3 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PE1DVVL_ID )
			echo "Type ImageLink-F1"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 3 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PE4DVVL_ID )
			echo "Type ImageLink-F4"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 3 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PC104ICB_ID )
			echo "Type PC104-ICB"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 3 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PDVFOX_ID )
			echo "Type PDV-FOX"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 4 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;
		$PDVFCI_USPS_ID )
			echo "Type DV-FCI"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 2 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PDVCL_ID )
			echo "Type PDVCL"
			edt_devname="pdv"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pdvindex}
					minor=0
			while
					[ ${minor} -lt 3 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pdvindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pdvindex=pdvindex+1

			;;

		$PE4CDA_ID | $PCD20_ID | $PCD40_ID | $PCD60_ID | $PGP20_ID | $PGP40_ID | $PGP60_ID | $PGP_ECL_ID | $PSS4_ID |  $PCDA_ID | $PCDFOX_ID | $PGS4_ID | $PCDFCI_SIM_ID | $PCDCL_ID )

			echo "Type PCD"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 4 ]
					do
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PGP_THARAS_ID )

			echo "Type PCD Tharas"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
			minor=0
			mknod /dev/${device}${index}_${minor} c $major $devindex
			ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
			chgrp $group /dev/${device}${index}_${minor}
			chmod $mode /dev/${device}${index}_${minor}
			let devindex=devindex+1
			ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PCD_16_ID | $PSS16_ID | $PCDA16_ID | $PE4CDA16_ID | $PGS16_ID ) 

			echo "Type PCD-16"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE8LX32_ID )

			echo "Type PE8 LX32"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 32 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE8G2V7_ID )

			echo "Type PE8 G2V7"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 32 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE8BL_NIC_ID )

			echo "Type LCR NIC BLADE"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE4BL_RADIO_ID )

			echo "Type LCR RADIO BLADE"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE4BL_LFRADIO_ID )

			echo "Type LCR LF RADIO BLADE"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE8BL_E3NIC_ID )

			echo "Type LCR E3 NIC BLADE"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;


		$PE4BL_TXRADIO_ID )

			echo "Type LCR TX RADIO BLADE"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE8LX16_ID | $PE8LX16_LS_ID | $PE4AMC16_ID )

			echo "Type PE8 LX16"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE8G3S5_ID )

			echo "Type PE8 G3S5"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE8G3A5_ID )

			echo "Type PE8 G3A5"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$WSU1_ID | $SNAP1_ID )

			echo "Type WSU1/SNAP1"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;
		$PE8G3KU_ID )

			echo "Type PE8 G3KU"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$PE8G2CML_ID )

			echo "Type PE8 G2CML"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		$UNKNOWNAF_ID )

			echo "Type UNKNOWN AF"
			edt_devname="pcicd"
			ln -s /dev/${device}${index} /dev/${edt_devname}${pcdindex}
					minor=0
			while
					[ ${minor} -lt 16 ]
					do
							echo mknod /dev/${device}${index}_${minor} c $major $devindex
							mknod /dev/${device}${index}_${minor} c $major $devindex
							ln -s /dev/${device}${index}_${minor} /dev/${edt_devname}${pcdindex}_${minor}
							chgrp $group /dev/${device}${index}_${minor}
							chmod $mode /dev/${device}${index}_${minor}
							let minor=minor+1
				let devindex=devindex+1
					done
					ls -l /dev/${device}${index}*
			let pcdindex=pcdindex+1

			;;

		* ) 
			echo "Unknown EDT Board"

			;;
		esac

		index=`expr $index + 1`

	fi

	done


	ln -s /dev/${device}0 /dev/${device}


}


function edtload()
{

	echo "function edtload:"

	  build_boardids

	if [ "$ids" == "" ] ; then
	    echo "No EDT boards found; exiting edtinit"
	    return
	fi
	
	load_edt_module

	  build_links

	check_run_pdvload
	check_run_pcdload

	grep "dev.pcd.reserved_pages" /etc/sysctl.conf > /tmp/pcd.reserve

	if [ $? -eq 0 ]; then
	    pages=`cut -d= -f 2 /tmp/pcd.reserve | sed 's: ::g'`
	    echo "Reserving $pages pages"
	    sysctl -w dev.pcd.reserved_pages=$pages
	fi


}

function edt_unload()
{

   	echo "function edt_unload: Unloading module $module"

	if [ "`$lsmod |grep \"^$module\b\"`" != "" ]; then

		/sbin/rmmod $module || exit 1
	fi


	# Remove stale nodes

	rm -f /dev/${device}[0-3] /dev/${device}
	rm -f /dev/${device}priv
	rm -f /dev/${device}pipe[0-3] /dev/${device}pipe
	rm -f /dev/${device}single
	rm -f /dev/${device}uid
	rm -f /dev/${device}wuid

	rm -f /dev/pcicd*
	rm -f /dev/pdv*
	rm -f /dev/p16d*
	rm -f /dev/p11w*
	rm -f /dev/edt*


}


case $1 in
	start)

	$lsmod | grep "\<edt\>"  > /dev/null

	if [ $? = 0 ] ; then

		echo "Edt module already loaded - removing"

		edt_unload

	fi

	edtload
	
	  ;;

	  stop)
	  
	  edt_unload

	  ;;

	  restart)

	  edt_unload

	  edtload

	  ;;

esac

exit 0
