#!/bin/sh
# Useage: load [ -r ] [ -i ]
#         -r : rmmod all modules
#         -i : insmod all modules
#    default : rmmod all moules and then insmod them
#
# It is release load script.

TS_MOD_DRV_EXIST=""

EXTDRV_DIR=./extdrv/
HIFB_DIR=./
TDE_DIR=./

BOOT_CMD_LINE=`grep -i 'mem=64M' /proc/cmdline`
if [ "$BOOT_CMD_LINE" = "" ]; then
				BOOT_CMD2_LINE=`grep -i 'mem=96M' /proc/cmdline`
				if [ "$BOOT_CMD2_LINE" = "" ]; then
								BOOT_CMD3_LINE=`grep -i 'mem=48M' /proc/cmdline`
								if [ "$BOOT_CMD3_LINE" = "" ]; then
											BOOT_CMD4_LINE=`grep -i 'mem=50M' /proc/cmdline`
											if [ "$BOOT_CMD4_LINE" = "" ]; then
        											CMP_128M="56"
        							else
        											CMP_128M="50"
        							fi
        				else
        							CMP_128M="48"
        				fi
        else
        				CMP_128M="96"
        fi				
else
        CMP_128M="64"
fi

echo $CMP_128M

insert_ko()
{
    if [ "$CMP_128M" = "48" ]; then
        echo "current version 128M  48sys memory"
        insmod /lib/modules/2.6.24-rt1-hi3515v100/misc/mmz.ko mmz=anonymous,0,0xC3000000,80M anony=1;
    else
		    if [ "$CMP_128M" = "56" ]; then
		        echo "current version 128M  56sys memory"
		        insmod /lib/modules/2.6.24-rt1-hi3515v100/misc/mmz.ko mmz=anonymous,0,0xC3800000,72M anony=1;    		    
    		else
    				if [ "$CMP_128M" = "96" ]; then
	     	  			echo "current version 96M 256M memory"
	      	  		insmod /lib/modules/2.6.24-rt1-hi3515v100/misc/mmz.ko mmz=anonymous,0,0xC6000000,160M anony=1;
    				else
		    				if [ "$CMP_128M" = "50" ]; then
			     	  			echo "current version 50M 128M memory"
			      	  		insmod /lib/modules/2.6.24-rt1-hi3515v100/misc/mmz.ko mmz=anonymous,0,0xC3200000,78M anony=1;
			      	  else
	     	  					echo "current version 256M memory"
	      	  				insmod /lib/modules/2.6.24-rt1-hi3515v100/misc/mmz.ko mmz=anonymous,0,0xC4000000,192M anony=1;
	      	  		fi
	     			fi
	     	fi
    fi
    
    #modprobe fb
    insmod $EXTDRV_DIR/hidmac.ko
    insmod $EXTDRV_DIR/gpioi2c.ko
    insmod $EXTDRV_DIR/gpio.ko
    
	  insmod extdrv/ncdecoder.ko norm=1
	  NCDECODER_MOD_DRV_EXIST=`grep -i 'ncdecoder'  /proc/modules`
	  if [ "$NCDECODER_MOD_DRV_EXIST" = "" ]; then
		  insmod $EXTDRV_DIR/nvp1104a_3515.ko cpu=3515
	    TS_MOD_DRV_EXIST=`grep -i 'nvp1104a'  /proc/modules`
	    if [ "$TS_MOD_DRV_EXIST" = "" ]; then
	    		#echo "current decode is cx25838"
		   		#insmod $EXTDRV_DIR/cx25838.ko
		   		#TS_MOD_DRV_EXIST=`grep -i 'cx25838'  /proc/modules`
		   		#if [ "$TS_MOD_DRV_EXIST" = "" ]; then
	 		    	insmod $EXTDRV_DIR/tw2864.ko
	 		    #fi
	    fi
		fi
		    
    insmod $EXTDRV_DIR/tlv_aic23.ko
    insmod $EXTDRV_DIR/fgpio.ko
    insmod $EXTDRV_DIR/hi_ir.ko
    insmod $EXTDRV_DIR/wdt.ko
    insmod $EXTDRV_DIR/encryptgpio.ko
    insmod $EXTDRV_DIR/cryptomemory.ko
    
    if [ "$CMP_128M" = "48" ]; then
    	insmod hifb.ko video="hifb:vram0_size=1024,vram1_size=5242880,vram2_size=1024,vram3_size=1024,vram4_size=7340032"
    else
    	if [ "$CMP_128M" = "56" ]; then
    		insmod hifb.ko video="hifb:vram0_size=1024,vram1_size=5242880,vram2_size=1024,vram3_size=1024,vram4_size=7340032"
    	else
    		if [ "$CMP_128M" = "50" ]; then
    			insmod hifb.ko video="hifb:vram0_size=1024,vram1_size=5242880,vram2_size=1024,vram3_size=1024,vram4_size=7340032"
    		else
    			insmod hifb.ko video="hifb:vram0_size=1024,vram1_size=16588800,vram2_size=1024,vram3_size=1024,vram4_size=10485760"
    		fi
    	fi
    fi
    
    #insmod $HIFB_DIR/hifb.ko video="hifb:vram0_size=4000000,vram1_size=2000000,vram2_size=2000000,vram3_size=2000000,vram4_size=2000000"
    insmod $TDE_DIR/tde.ko
    insmod hi3515_base.ko
    insmod hi3515_sys.ko
    insmod hi3515_dsu.ko
    insmod hi3515_vd.ko
    insmod hi3515_vou.ko
    insmod hi3515_viu.ko
    insmod hi3515_chnl.ko
    insmod hi3515_vdec.ko nc_alg=1
    insmod hi3515_venc.ko
    insmod hi3515_group.ko
    insmod hi3515_vpp.ko
    insmod hi3515_md.ko
    insmod hi3515_h264e.ko
    insmod hi3515_h264d.ko
    insmod hi3515_jpege.ko
    insmod hi3515_jpegd.ko
    insmod hi3515_sio.ko
    insmod hi3515_ai.ko
    insmod hi3515_ao.ko
    insmod hi3515_aenc.ko
    insmod hi3515_adec.ko

    insmod extdrv/ds1307.ko
    mknod /dev/ds1307 c 50 0
    
    echo 2 >/proc/cpu/alignment
    echo 2000 > /proc/sys/vm/min_free_kbytes
 }

remove_ko()
{
	rmmod hi3515_adec
    rmmod hi3515_aenc
    rmmod hi3515_ai
    rmmod hi3515_ao
    rmmod hi3515_sio
	rmmod hi3515_jpegd
	rmmod hi3515_jpege
	rmmod hi3515_h264d
	rmmod hi3515_h264e
	rmmod hi3515_md
	rmmod hi3515_vpp
	rmmod hi3515_vdec
	rmmod hi3515_venc
	rmmod hi3515_group
	rmmod hi3515_chnl
	rmmod hi3515_dsu
    rmmod hi3515_vou
    rmmod hi3515_vd
    rmmod hi3515_viu
	rmmod hi3515_sys
	rmmod hi3515_base
	rmmod hifb
	rmmod tde
	rmmod tw2865
	#rmmod adv_7441
	rmmod gpioi2c
	rmmod hidmac
	rmmod fb
	rmmod mmz
}

# Use "sh xxx" can execute script even it has no executable attribute.
# !!! Must execute before insert module. For pin-multiplexing is configed here.
sh ./sysctl_hi3515.sh

# load module.
if [ "$1" = "-i" ]
then
	insert_ko
fi

if [ "$1" = "-r" ]
then
	remove_ko
fi

if [ $# -eq 0 ]
then
	remove_ko
	insert_ko
fi

