#!/bin/sh
#
#    Copyright (c) 2003-2004 Brocade Communications Systems, Inc.
#    All rights reserved.
#
#    File name:	prominst_athena
#
#    The script will install prom package for Athena and Pulsar. 
#
PATH=/bin:/usr/bin:/sbin:/usr/sbin

OK=0
echo "Please avoid powering off the system during prom update."

sb_env=`bootenv secureboot  2> /dev/null`
if test -a /proc/sec_boot_info; then
sb_enabled=`cat /proc/sec_boot_info | grep "SB status" | cut -d ':' -f 2`
else
sb_enabled=0
fi

#
# During HCL, /dev between new and older kernel
# are not synced so create prom/mtd nodes
# for prom install
#
/bin/ls /dev/mtd0 >/dev/null 2>&1
if [ $? -ne 0 ]; then
	mknod --mode=644 /dev/mtd0 c 90 0
fi

/bin/ls /dev/mtd1 >/dev/null 2>&1
if [ $? -ne 0 ]; then
	mknod --mode=644 /dev/mtd1 c 90 2
fi

/bin/ls /dev/prom0 >/dev/null 2>&1
if [ $? -ne 0 ]; then
	/bin/ln -s /dev/mtd0 /dev/prom0
fi

/bin/ls /dev/prom1 >/dev/null 2>&1
if [ $? -ne 0 ]; then
	/bin/ln -s /dev/mtd1 /dev/prom1
fi

if [ $sb_enabled -eq 1 ] || [ "$sb_env" == "yes" ]; then
	/bin/ls /dev/mtd2 >/dev/null 2>&1
	if [ $? -ne 0 ]; then
		mknod --mode=644 /dev/mtd2 c 90 4
	fi

	/bin/ls /dev/mtd3 >/dev/null 2>&1
	if [ $? -ne 0 ]; then
		mknod --mode=644 /dev/mtd3 c 90 6
	fi

	/bin/ls /dev/esbchdr0 >/dev/null 2>&1
	if [ $? -ne 0 ]; then
		/bin/ln -s /dev/mtd2 /dev/esbchdr0
	fi

	/bin/ls /dev/esbchdr1 >/dev/null 2>&1
	if [ $? -ne 0 ]; then
		/bin/ln -s /dev/mtd3 /dev/esbchdr1
	fi
fi

for i in `seq 3`; do
    nohup /sbin/flash_write -i /boot/bootrom.bin \
	-o /dev/prom0 >/dev/null 2>&1

    if [ $? -eq 0 ]; then
		if [ $sb_enabled -eq 1 ] || [ "$sb_env" == "yes" ]; then
       		nohup /sbin/flash_write -i /boot/esbchdr.bin \
			-o /dev/esbchdr0 >/dev/null 2>&1

    		if [ $? -eq 0 ]; then
    			OK=1	
				break;
			fi
		else
			OK=1
			break;
		fi
	fi
done

if [ $OK -eq 1 ]; then
OK=0
	for i in `seq 3`; do
    	nohup /sbin/flash_write -i /boot/bootrom.bin \
		-o /dev/prom1 >/dev/null 2>&1

    	if [ $? -eq 0 ]; then
			if [ $sb_enabled -eq 1 ] || [ "$sb_env" == "yes" ]; then
       			nohup /sbin/flash_write -i /boot/esbchdr.bin \
				-o /dev/esbchdr1 >/dev/null 2>&1

    			if [ $? -eq 0 ]; then
    				OK=1	
					break;
				fi
			else
				OK=1
				break;
			fi
		fi
	done
fi

if [ $OK -ne 1 ]; then
        echo "Failed to write to prom partition!"
        exit 1
fi
