#!/bin/sh
# create by c55300 2009-07-17
# Useage: load_master [ -r ] [ -i ]
#         -r : rmmod all modules
#         -i : insmod all modules
#    default : rmmod all moules and then insmod them
#
# It is release load script.

MCC_DRV_PATH=/lib/modules/2.6.24-rt1-hi3520v100/misc/
PCI_BOOT_PATH=/opt/pci_boot/
#PCI_BOOT_PATH=$PWD/pci_boot/
PCIT_DRV_PATH=/lib/modules/2.6.24-rt1-hi3520v100/misc/
MPP_KO_PATH=$PWD
PCIV_KO_PATH=$PWD
	
remove_ko()
{
	rmmod hi3520_pciv_fmwm.ko
	rmmod hi3520_vd
	rmmod hi3520_dsu
	rmmod hi3520_vou
	rmmod hi3520_viu
	rmmod hi3520_vdec
	rmmod hi3520_simd
	rmmod hi3520_venc
	rmmod hi3520_group
	rmmod hi3520_vpp
	rmmod hi3520_md
	rmmod hi3520_adec
	rmmod hi3520_aenc
	rmmod hi3520_ai
	rmmod hi3520_ao
	rmmod hi3520_sys
	rmmod hi3520_base
	rmmod hifb
	rmmod tde
	rmmod tw2865
	rmmod adv_7441
	rmmod gpioi2c
	rmmod mcc_usrdev
	rmmod ipcmcom
	rmmod fb
	rmmod mmz
}

insert_ko_pci_master()
{
#16 D1 alloc memory

	modprobe mmz mmz=anonymous,0,0xC0000000,32M:ddr16,0,0xE0F00000,15M anony=1;
	modprobe fb
	insmod $MCC_DRV_PATH/ipcmcom.ko cpuid=36 mem_start=0xE1E00000 mem_size=0x200000
	
	insmod $MCC_DRV_PATH/mcc_usrdev.ko
	
	insmod extdrv/gpio.ko
	insmod extdrv/gpioi2c.ko
	
	VIDEO_FMT_RET=`cat "/etc/init.d/VideoFormat.dat"`
	if [ "$VIDEO_FMT_RET" = "1" ] ; then
		insmod extdrv/m340.ko in_norm=11 out_norm=1 m_bright=100 m_cont=120 m_sat=135 m_hue=128 m_sharp=0 m_3dnr=37 m_rgain=131 m_ggain=123 m_bgain=128 m_roffset=128 m_goffset=128 m_boffset=128
	else
		insmod extdrv/m340.ko in_norm=10 out_norm=0 m_bright=100 m_cont=120 m_sat=135 m_hue=128 m_sharp=0 m_3dnr=17 m_rgain=131 m_ggain=123 m_bgain=128 m_roffset=128 m_goffset=128 m_boffset=128
	fi
	
	insmod extdrv/ncdecoder.ko norm=1
	NCDECODER_MOD_DRV_EXIST=`grep -i 'ncdecoder'  /proc/modules`
	if [ "$NCDECODER_MOD_DRV_EXIST" = "" ]; then
		insmod extdrv/tw2864_16cif.ko norm=2
		insmod extdrv/nvp1104a.ko
	else
		insmod extdrv/nvc1700.ko norm=0 testmode=1 clk=1
	fi

	#insmod extdrv/sil9034.ko norm=5
	insmod extdrv/tlv_aic23.ko
	insmod extdrv/ds1307.ko
	mknod /dev/ds1307 c 50 0
	#insmod extdrv/adv_7441.ko
	insmod extdrv/encryptgpio.ko
	insmod extdrv/cryptomemory.ko
	#insmod extdrv/atp862x.ko
	
	insmod hifb.ko video="hifb:vram0_size=2073600,vram1_size=16588800,vram2_size=1024,vram3_size=10485760,vram4_size=1024"
	insmod tde.ko g_TdeArmChoice=0 g_TdeServiceChoice=0
	
	insmod hi3520_base.ko
	insmod hi3520_sys.ko
	insmod hi3520_dsu.ko
	insmod hi3520_vd.ko
	insmod hi3520_vou.ko
	insmod hi3520_viu.ko
	insmod hi3520_simd.ko
	insmod hi3520_vdec.ko nc_alg=1
	insmod hi3520_venc.ko
	insmod hi3520_group.ko
	insmod hi3520_vpp.ko
	insmod hi3520_md.ko
	insmod hi3520_adec.ko
	insmod hi3520_aenc.ko
	insmod hi3520_ai.ko
	insmod hi3520_ao.ko
	insmod hi3520_pciv_fmwm.ko
	
	modprobe vfat              
	modprobe nls_ascii        
	modprobe nls_iso8859-2   
	modprobe scsi_mod       
	
	modprobe nls_base
	modprobe nls_cp437
	modprobe fat
	modprobe msdos
	modprobe nls_iso8859-1
	modprobe libata
	
	modprobe usbhid   
	modprobe evdev    
	modprobe mousedev 
	
	#about sata
	modprobe scsi_mod
	modprobe sd_mod  
	modprobe sata_sil
	
	modprobe usbcore      
	modprobe ohci-hcd     
	modprobe ehci-hcd
	modprobe usb-storage
	
	#cdrom
	modprobe sg
	modprobe cdrom
	modprobe isofs
	modprobe sr_mod
	
	
	echo 2 >/proc/cpu/alignment
	insmod ./as-iosched.ko                     # IO㷨loopcfq_ioscheddeadline-ioschedѡ    
  echo "anticipatory" > /sys/block/sda/queue/scheduler
  echo "anticipatory" > /sys/block/sdb/queue/scheduler
  echo "anticipatory" > /sys/block/sdc/queue/scheduler
  echo "anticipatory" > /sys/block/sdd/queue/scheduler
  echo "anticipatory" > /sys/block/sde/queue/scheduler
  echo "anticipatory" > /sys/block/sdf/queue/scheduler
  echo "anticipatory" > /sys/block/sdg/queue/scheduler
  echo "anticipatory" > /sys/block/sdh/queue/scheduler
	echo 2000 > /proc/sys/vm/min_free_kbytes

	#insmod $PCIV_KO_PATH/hi3520_pciv.ko;
	echo "************************ load hi3520 mpp ok ********************************"
}

insert_ko_pci_slave()
{
#16 D1 alloc memory

	modprobe mmz mmz=anonymous,0,0xC2000000,4M:ddr16,0,0xE0F00000,15M anony=1;
	modprobe fb
	insmod $MCC_DRV_PATH/ipcmcom.ko cpuid=36 mem_start=0xE1E00000 mem_size=0x200000
	
	insmod $MCC_DRV_PATH/mcc_usrdev.ko
	
	#insmod extdrv/gpioi2c.ko
	#insmod extdrv/m240.ko chn_mode=2 in_norm=5 out_norm=9
	#insmod extdrv/tw2864_16cif.ko norm=2
	#insmod extdrv/ds1307.ko
	#mknod /dev/ds1307 c 50 0
	
	#insmod hifb.ko video="hifb:vram0_size=2073600,vram1_size=16588800,vram2_size=1024,vram3_size=10485760,vram4_size=1024"
	insmod tde.ko g_TdeArmChoice=0 g_TdeServiceChoice=0
	
	insmod hi3520_base.ko
	insmod hi3520_sys.ko
	insmod hi3520_dsu.ko
	insmod hi3520_vd.ko
	insmod hi3520_vou.ko
	insmod hi3520_viu.ko
	insmod hi3520_simd.ko
	insmod hi3520_vdec.ko nc_alg=1
	insmod hi3520_venc.ko
	insmod hi3520_group.ko
	insmod hi3520_vpp.ko
	insmod hi3520_md.ko
	insmod hi3520_adec.ko
	insmod hi3520_aenc.ko
	insmod hi3520_ai.ko
	insmod hi3520_ao.ko
	insmod hi3520_pciv_fmwm.ko
	
	modprobe ohci-hcd     
	modprobe ehci-hcd
	modprobe usbhid   
	modprobe evdev    
	modprobe mousedev 
	
	modprobe usbcore      
	modprobe usb-storage
	
	echo 2 >/proc/cpu/alignment
	insmod ./as-iosched.ko                     # IO㷨loopcfq_ioscheddeadline-ioschedѡ    
	echo "anticipatory" > /sys/block/sda/queue/scheduler  
	echo 2000 > /proc/sys/vm/min_free_kbytes

	#insmod $PCIV_KO_PATH/hi3520_pciv.ko;
	echo "************************ load hi3520 mpp ok ********************************"
}


insert_ko_single()
{
#16 CIF alloc memory master hi3520 arm11

        modprobe mmz mmz=anonymous,0,0xC0000000,32M:ddr16,0,0xE0F00000,15M anony=1;
	modprobe fb
	
	insmod $MCC_DRV_PATH/ipcmcom.ko cpuid=36 mem_start=0xE1E00000 mem_size=0x200000
	insmod $MCC_DRV_PATH/mcc_usrdev.ko
	
	insmod extdrv/gpio.ko
	insmod extdrv/gpioi2c.ko
	
	VIDEO_FMT_RET=`cat "/etc/init.d/VideoFormat.dat"`
	if [ "$VIDEO_FMT_RET" = "1" ] ; then
		insmod extdrv/m340.ko in_norm=11 out_norm=1 m_bright=100 m_cont=120 m_sat=135 m_hue=128 m_sharp=0 m_3dnr=37 m_rgain=131 m_ggain=123 m_bgain=128 m_roffset=128 m_goffset=128 m_boffset=128
	else
		insmod extdrv/m340.ko in_norm=10 out_norm=0 m_bright=100 m_cont=120 m_sat=135 m_hue=128 m_sharp=0 m_3dnr=17 m_rgain=131 m_ggain=123 m_bgain=128 m_roffset=128 m_goffset=128 m_boffset=128
	fi
	
	insmod extdrv/ncdecoder.ko norm=1
	NCDECODER_MOD_DRV_EXIST=`grep -i 'ncdecoder'  /proc/modules`
	if [ "$NCDECODER_MOD_DRV_EXIST" = "" ]; then
		insmod extdrv/tw2864_16cif.ko norm=2
		insmod extdrv/nvp1104a.ko
	else
		insmod extdrv/nvc1700.ko norm=0 testmode=1 clk=1
	fi
	
	#insmod extdrv/sil9034.ko norm=6
	insmod extdrv/tlv_aic23.ko
	insmod extdrv/ds1307.ko
	mknod /dev/ds1307 c 50 0
	#insmod extdrv/adv_7441.ko
	insmod extdrv/encryptgpio.ko
	insmod extdrv/cryptomemory.ko
	#insmod extdrv/atp862x.ko
	
	insmod hifb.ko video="hifb:vram0_size=2073600,vram1_size=16588800,vram2_size=1024,vram3_size=10485760,vram4_size=1024"
	insmod tde.ko g_TdeArmChoice=0 g_TdeServiceChoice=0
	
	insmod hi3520_base.ko
	insmod hi3520_sys.ko
	insmod hi3520_dsu.ko
	insmod hi3520_vd.ko
	insmod hi3520_vou.ko
	insmod hi3520_viu.ko
	insmod hi3520_simd.ko
	insmod hi3520_vdec.ko nc_alg=1
	insmod hi3520_venc.ko
	insmod hi3520_group.ko
	insmod hi3520_vpp.ko
	insmod hi3520_md.ko
	insmod hi3520_adec.ko
	insmod hi3520_aenc.ko
	insmod hi3520_ai.ko
	insmod hi3520_ao.ko
	insmod hi3520_pciv_fmwm.ko
	
	modprobe vfat              
	modprobe nls_ascii        
	modprobe nls_iso8859-2   
	modprobe scsi_mod       
	
	modprobe nls_base
	modprobe nls_cp437
	modprobe fat
	modprobe msdos
	modprobe nls_iso8859-1
	modprobe libata
	
	modprobe usbhid   
	modprobe evdev    
	modprobe mousedev 
	
	#about sata
	modprobe scsi_mod
	modprobe sd_mod  
	modprobe sata_sil
	
	modprobe usbcore      
	modprobe ohci-hcd     
	modprobe ehci-hcd
	modprobe usb-storage
	
	#cdrom
	modprobe sg
	modprobe cdrom
	modprobe isofs
	modprobe sr_mod
	
		
	echo 2 >/proc/cpu/alignment
	
	insmod ./as-iosched.ko                     # ???IO?????1Dloop?cfq_iosched?deadline-iosched????
        echo "anticipatory" > /sys/block/sda/queue/scheduler
        echo "anticipatory" > /sys/block/sdb/queue/scheduler
        echo "anticipatory" > /sys/block/sdc/queue/scheduler
        echo "anticipatory" > /sys/block/sdd/queue/scheduler
        echo "anticipatory" > /sys/block/sde/queue/scheduler
        echo "anticipatory" > /sys/block/sdf/queue/scheduler
        echo "anticipatory" > /sys/block/sdg/queue/scheduler
        echo "anticipatory" > /sys/block/sdh/queue/scheduler
        echo 2000 > /proc/sys/vm/min_free_kbytes
        
        #modprobe af_packet
        #chmod +x ./insert_pppoe.sh
        #sh ./insert_pppoe.sh
}

chmod +x sysctl_asic.sh
sh ./sysctl_asic.sh

if [ "$1" = "-i" ]
then
	insert_ko_pci_master
fi

if [ "$1" = "-k" ]
then
	insert_ko_pci_slave
fi


if [ "$1" = "-s" ]
then
	insert_ko_single
fi

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

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