#!/bin/sh
# Useage: ./load [ -r|-i|-a ]
#         -r : rmmod all modules
#         -i : insmod all modules
#    default : rmmod all moules and then insmod them
#


report_error()
{
    echo "******* Error!! Shell exit for error *****"
    exit 1
}

insert_audio()
{
    insmod extdrv/hidmac.ko
    insmod extdrv/tlv_320aic31.ko > /dev/null
    insmod extdrv/acodec.ko
    insmod hi3516_sio.ko
    insmod hi3516_ai.ko
    insmod hi3516_ao.ko
    insmod hi3516_aenc.ko
    insmod hi3516_adec.ko
}

remove_audio()
{
    rmmod hi3516_adec
    rmmod hi3516_aenc
    rmmod hi3516_ao
    rmmod hi3516_ai
    rmmod hi3516_sio
    rmmod acodec
    rmmod tlv_320aic31
    rmmod hidmac
}

insert_ko()
{
    #sh ./pinctrl_16D1_hi3531.sh > /dev/null
    #sh ./pinctrl_4HD_hi3531.sh > /dev/null
    #sh ./pinctrl_8X720P_hi3531.sh > /dev/null
    
    sh ./clkcfg_hi3531_fpga.sh > /dev/null

    insmod mmz.ko mmz=anonymous,0,0x84000000,447M:ddr1,0,0xC0000000,511M anony=1 || report_error
    insmod hi3531_base.ko
    insmod hi3531_sys.ko
    insmod hi3531_tde.ko g_pszTdeMmzName="mmzname" g_u32TdeTmpBufW=800 g_u32TdeTmpBufH=600
    insmod hi3531_dsu.ko
    insmod hi3531_venc.ko
    insmod hi3531_group.ko
    insmod hi3531_chnl.ko
    insmod hi3531_h264e.ko
    insmod hi3531_rc.ko
    insmod hi3531_jpege.ko
    #insmod hi3516_mpeg4e.ko
    insmod hi3531_viu.ko
    insmod hi3531_vou.ko
    insmod hi3531_vpss.ko
    #insmod hi3516_vda.ko
    insmod hi3531_region.ko
    insmod vcmp.ko
    insmod hifb.ko video="hifb:vram0_size:7200,vram1_size:7200,vram2_size:3240,vram3_size:3240,\
                vram4_size:7200,vram5_size:128,vram6_size:128" softcursor="off" \
                apszLayerMmzNames="mmzname0","mmzname1",,"graphics",,"mmzname0"
    insmod hi3531_vdec.ko
    insmod hi3531_vfmw.ko
    insmod extdrv/gpioi2c.ko
    insmod extdrv/tw2865.ko
    #insmod extdrv/sil9024.ko norm=1;  #480I60_4X3
    #insmod extdrv/sil9024.ko norm=2;  #576I50_4X3
    #insmod extdrv/sil9024.ko norm=3;  #480P60_4X3
    #insmod extdrv/sil9024.ko norm=4;  #576P50_4X3
    #insmod extdrv/sil9024.ko norm=5;  #720P60
    insmod extdrv/sil9024.ko norm=6;   #720P50
    #insmod extdrv/sil9024.ko norm=7;  #1080I60
    #insmod extdrv/sil9024.ko norm=8;  #1080I50
    #insmod extdrv/sil9024.ko norm=9;  #1080P60
    #insmod extdrv/sil9024.ko norm=10;  #1080P50
    #insmod extdrv/sil9024.ko norm=11;  #1080P25
    #insmod extdrv/sil9024.ko norm=12;  #1080P30
    
    insmod extdrv/ssp.ko
    #insert_audio

    sh ./sysctl_hi3531_fpga.sh > /dev/null
    #sh ./sysctl_hi3531_asic.sh > /dev/null
}

remove_ko()
{
    #remove_audio
    rmmod sil9024
    rmmod tw2865.ko
    rmmod gpioi2c
    rmmod hifb
    rmmod vcmp
    rmmod hi3531_region
    #rmmod hi3516_vda
    rmmod hi3531_vpss
    rmmod hi3531_vou
    rmmod hi3531_viu
    rmmod hi3531_vfmw.ko
    rmmod hi3531_vdec.ko   
    rmmod hi3531_jpege
    rmmod hi3531_rc
    rmmod hi3531_h264e
    #rmmod hi3516_mpeg4e
    rmmod hi3531_chnl
    rmmod hi3531_group
    rmmod hi3531_venc
    rmmod hi3531_dsu
    rmmod hi3531_tde
    rmmod hi3531_sys
    rmmod hi3531_base
    rmmod mmz
}

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

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

if [ $# -eq 0 ] || [ "$1" = "-a" ]
then
    remove_ko
    insert_ko
fi
