329 lines
6.1 KiB
Bash
329 lines
6.1 KiB
Bash
#!/bin/sh
|
|
# Useage: ./load3521d [ -r|-i|-a ] [ ad ]
|
|
# -r : rmmod all modules
|
|
# -i : insmod all modules
|
|
# default : rmmod all moules and then insmod them
|
|
#
|
|
|
|
####################Variables Definition##########################
|
|
AD_TYPE=6134 # ad type
|
|
|
|
mem_total=512; # 512M, total mem
|
|
mem_start=0x80000000; # phy mem start
|
|
|
|
os_mem_size=200; # 64M, os mem
|
|
mmz_start=0x8C800000; # mmz start addr
|
|
mmz_size=312M; # 128M, mmz size
|
|
board_mode="demo"; # demo or sck
|
|
if [ "`cat /link/config/fac`" == "SH" ]; then
|
|
mem_total=1024; # 512M, total mem
|
|
mem_start=0x80000000; # phy mem start
|
|
|
|
os_mem_size=256; # 64M, os mem
|
|
mmz_start=0x90000000; # mmz start addr
|
|
mmz_size=768M; # 128M, mmz size
|
|
board_mode="demo"; # demo or sck
|
|
fi
|
|
|
|
##################################################################
|
|
b_arg_demb=1
|
|
|
|
report_error()
|
|
{
|
|
echo "******* Error: There's something wrong, please check! *****"
|
|
exit 1
|
|
}
|
|
|
|
insert_audio()
|
|
{
|
|
insmod hi3521d_aio.ko
|
|
insmod hi3521d_ai.ko
|
|
insmod hi3521d_ao.ko
|
|
insmod hi3521d_aenc.ko
|
|
insmod hi3521d_adec.ko
|
|
# insmod extdrv/tlv_320aic31.ko
|
|
}
|
|
|
|
remove_audio()
|
|
{
|
|
# rmmod tlv_320aic31.ko
|
|
rmmod hi3521d_adec
|
|
rmmod hi3521d_aenc
|
|
rmmod hi3521d_ao
|
|
rmmod hi3521d_ai
|
|
rmmod hi3521d_aio
|
|
}
|
|
|
|
insert_ad()
|
|
{
|
|
case $AD_TYPE in
|
|
6134)
|
|
insmod extdrv/nvp6134_ex.ko
|
|
;;
|
|
2823)
|
|
insmod extdrv/tp2823.ko
|
|
;;
|
|
6574)
|
|
insmod extdrv/rn6574.ko
|
|
;;
|
|
*)
|
|
echo "xxxx Invalid ad type $AD_TYPE xxxx"
|
|
report_error
|
|
;;
|
|
esac
|
|
}
|
|
|
|
remove_ad()
|
|
{
|
|
case $AD_TYPE in
|
|
6134)
|
|
rmmod nvp6134_ex.ko
|
|
;;
|
|
2823)
|
|
rmmod tp2823
|
|
;;
|
|
6574)
|
|
rmmod rn6574
|
|
;;
|
|
*)
|
|
echo "xxxx Invalid ad type $AD_TYPE xxxx"
|
|
report_error
|
|
;;
|
|
esac
|
|
}
|
|
|
|
|
|
insert_ko()
|
|
{
|
|
# sys_config(drv/sys_config): pinmux and ddr priority configuration
|
|
insmod sys_config.ko mode=$board_mode
|
|
#echo $board_mode;
|
|
# osal load (contains mmz.ko/hiuser.ko/media.ko)
|
|
insmod hi_osal.ko mmz=anonymous,0,$mmz_start,$mmz_size anony=1 || report_error
|
|
insmod hi_base.ko vb_force_exit=1
|
|
insmod hi3521d_sys.ko mem_total=$mem_total
|
|
if [[ $? -ne 0 ]]; then
|
|
exit;
|
|
fi
|
|
insmod hi3521d_vdec.ko
|
|
insmod hi3521d_vfmw.ko
|
|
insmod hi3521d_jpegd.ko
|
|
insmod hi3521d_tde.ko
|
|
insmod hi3521d_region.ko
|
|
insmod hi3521d_vgs.ko
|
|
insmod hi3521d_viu.ko detect_err_frame=-1;
|
|
|
|
insmod hi3521d_vpss.ko
|
|
insmod hi3521d_vou.ko
|
|
insmod hifb.ko video="hifb:vram0_size:32400,vram1_size:8100" softcursor="off"
|
|
insmod hi3521d_hdmi.ko
|
|
|
|
insmod hi3521d_rc.ko
|
|
insmod hi3521d_venc.ko
|
|
insmod hi3521d_chnl.ko
|
|
insmod hi3521d_vedu.ko
|
|
insmod hi3521d_h264e.ko H264eOneStreamBuffer=1
|
|
insmod hi3521d_h265e.ko H265eOneStreamBuffer=1
|
|
insmod hi3521d_jpege.ko
|
|
insmod hi3521d_vda.ko
|
|
insmod hi3521d_ive.ko
|
|
insmod hi_rtc.ko
|
|
insmod wdt.ko
|
|
insmod hi_ir.ko
|
|
insmod extdrv/gpio_com_drv.ko
|
|
|
|
if [ "`cat /link/config/fac`" == "SH" ]; then
|
|
insmod extdrv/gs2971a.ko
|
|
insmod extdrv/8821cu_21.ko
|
|
insmod extdrv/8852bu_21.ko
|
|
else
|
|
insmod extdrv/gpioi2c010_drv.ko
|
|
insmod extdrv/gpioi2c032_drv.ko
|
|
insmod extdrv/8821cu.ko
|
|
insmod extdrv/8852bu.ko
|
|
fi
|
|
insmod extdrv/sha204drv.ko
|
|
|
|
|
|
#echo "==== Your input AD type is $AD_TYPE ===="
|
|
# insert_ad
|
|
|
|
insert_audio
|
|
|
|
}
|
|
|
|
remove_ko()
|
|
{
|
|
remove_audio
|
|
remove_ad
|
|
|
|
rmmod hi3521d_ive
|
|
rmmod hi3521d_vda
|
|
|
|
|
|
rmmod hi3521d_jpege
|
|
rmmod hi3521d_h264e
|
|
rmmod hi3521d_h265e
|
|
rmmod hi3521d_vedu
|
|
rmmod hi3521d_chnl
|
|
rmmod hi3521d_venc
|
|
rmmod hi3521d_rc
|
|
|
|
rmmod hi3521d_hdmi
|
|
rmmod hifb
|
|
rmmod hi3521d_vou
|
|
rmmod hi3521d_vpss
|
|
rmmod hi3521d_viu
|
|
|
|
rmmod hi3521d_vgs
|
|
rmmod hi3521d_region
|
|
rmmod hi3521d_tde
|
|
|
|
rmmod hi3521d_jpegd
|
|
rmmod hi3521d_vfmw
|
|
rmmod hi3521d_vdec
|
|
rmmod hi3521d_sys
|
|
rmmod hi_base
|
|
rmmod hi_osal
|
|
rmmod sys_config
|
|
}
|
|
|
|
load_usage()
|
|
{
|
|
echo "Usage: ./load3521d [-option] [ad_name]"
|
|
echo "options:"
|
|
echo " -i insert modules"
|
|
echo " -r remove modules"
|
|
echo " -a remove modules first, then insert modules"
|
|
echo " -ad ad_name config AD type [default: nvp6134]"
|
|
echo " -total mem_size config total mem size [unit: M, default: 2048]"
|
|
echo " -osmem os_mem_size config os mem size [unit: M, default: 64]"
|
|
echo " -mode demo config board type [demo or sck, default: demo]"
|
|
echo " -h help information"
|
|
echo -e "Available ad: nvp6134, tp2823"
|
|
echo -e "notes: osmem option can't be used when mmz zone partition is enable\n\n"
|
|
echo -e "for example: ./load3521d -a -ad 6134 -total 2048 -osmem 64\n"
|
|
}
|
|
|
|
calc_mmz_info()
|
|
{
|
|
mmz_start=`echo "$mem_start $os_mem_size" |
|
|
awk 'BEGIN { temp = 0; }
|
|
{
|
|
temp = $1/1024/1024 + $2;
|
|
}
|
|
END { printf("0x%x00000\n", temp); }'`
|
|
|
|
mmz_size=`echo "$mem_total $os_mem_size" |
|
|
awk 'BEGIN { temp = 0; }
|
|
{
|
|
temp = $1 - $2;
|
|
}
|
|
END { printf("%dM\n", temp); }'`
|
|
echo "mmz_start: $mmz_start, mmz_size: $mmz_size"
|
|
}
|
|
|
|
|
|
######################parse arg###################################
|
|
b_arg_os_mem=0
|
|
b_arg_total_mem=0
|
|
b_arg_ad=0
|
|
b_arg_insmod=0
|
|
b_arg_remove=0
|
|
b_arg_mode=0
|
|
|
|
for arg in $@
|
|
do
|
|
if [ $b_arg_total_mem -eq 1 ]; then
|
|
b_arg_total_mem=0;
|
|
mem_total=$arg;
|
|
|
|
if [ -z $mem_total ]; then
|
|
echo "[error] mem_total is null"
|
|
exit;
|
|
fi
|
|
fi
|
|
|
|
if [ $b_arg_mode -eq 1 ]; then
|
|
b_arg_mode=0;
|
|
board_mode=$arg;
|
|
|
|
if [ -z $board_mode ]; then
|
|
echo "[error] board_mode is null"
|
|
exit;
|
|
fi
|
|
fi
|
|
|
|
if [ $b_arg_os_mem -eq 1 ] ; then
|
|
b_arg_os_mem=0;
|
|
os_mem_size=$arg;
|
|
|
|
if [ -z $os_mem_size ]; then
|
|
echo "[error] os_mem_size is null"
|
|
exit;
|
|
fi
|
|
fi
|
|
|
|
if [ $b_arg_ad -eq 1 ] ; then
|
|
b_arg_ad=0
|
|
AD_TYPE=$arg;
|
|
fi
|
|
|
|
case $arg in
|
|
"-i")
|
|
b_arg_insmod=1;
|
|
;;
|
|
|
|
"-r")
|
|
b_arg_remove=1;
|
|
;;
|
|
"-a")
|
|
b_arg_insmod=1;
|
|
b_arg_remove=1;
|
|
;;
|
|
|
|
"-h")
|
|
load_usage;
|
|
;;
|
|
|
|
"-ad")
|
|
b_arg_ad=1;
|
|
;;
|
|
|
|
"-osmem")
|
|
b_arg_os_mem=1;
|
|
;;
|
|
"-total")
|
|
b_arg_total_mem=1;
|
|
;;
|
|
"-mode")
|
|
b_arg_mode=1;
|
|
;;
|
|
esac
|
|
|
|
|
|
|
|
done
|
|
#######################parse arg end########################
|
|
|
|
if [ $os_mem_size -ge $mem_total ] ; then
|
|
echo "[err] os_mem[$os_mem_size], over total_mem[$mem_total]"
|
|
exit;
|
|
fi
|
|
|
|
calc_mmz_info;
|
|
|
|
#######################Action###############################
|
|
|
|
if [ $# -lt 1 ]; then
|
|
load_usage;
|
|
exit 0;
|
|
fi
|
|
|
|
if [ $b_arg_remove -eq 1 ]; then
|
|
remove_ko;
|
|
fi
|
|
if [ $b_arg_insmod -eq 1 ]; then
|
|
insert_ko;
|
|
fi
|