328 lines
7.1 KiB
Bash
328 lines
7.1 KiB
Bash
#!/bin/sh
|
|
# Usage: ./load524v100 [ -r|-i|-a ] [ -ad xxx ]
|
|
# -r : rmmod all modules
|
|
# -i : insmod all modules
|
|
# default : rmmod all moules and then insmod them
|
|
# e.g: ./load524v100 -i
|
|
|
|
|
|
####################Variables Definition##########################
|
|
#DDR start:0x40000000; kernel start:0x40000000, OS(256M); MMZ start:0x50000000
|
|
mem_total=2048 # 2048M, total mem
|
|
mem_start=0x40000000 # phy mem start
|
|
|
|
os_mem_size=256 # 256M, os mem
|
|
|
|
mmz_start=0x50000000; # mmz start addr
|
|
mmz_size=1792M; # 1792M, mmz size
|
|
reserve_mem_size=0 # 0M, reserve mmz size
|
|
|
|
ad_type=nvp6158 #nvp6158,tp2854b, tp2856
|
|
##################################################################
|
|
|
|
report_error()
|
|
{
|
|
echo "******* Error: There's something wrong, please check! *****"
|
|
exit 1
|
|
}
|
|
|
|
insert_audio()
|
|
{
|
|
insmod ot_aio.ko
|
|
insmod ot_ai.ko
|
|
insmod ot_ao.ko
|
|
insmod ot_aenc.ko
|
|
insmod ot_adec.ko
|
|
|
|
insmod extdrv/ot_es8388.ko
|
|
}
|
|
|
|
remove_audio()
|
|
{
|
|
rmmod ot_adec
|
|
rmmod ot_aenc
|
|
rmmod ot_ao
|
|
rmmod ot_ai
|
|
rmmod ot_aio
|
|
|
|
rmmod ot_es8388
|
|
}
|
|
|
|
get_board_type()
|
|
{
|
|
case $ad_type in
|
|
tp2854b)
|
|
board_type=0
|
|
;;
|
|
tp2856)
|
|
board_type=0
|
|
;;
|
|
nvp6158)
|
|
board_type=1
|
|
;;
|
|
*)
|
|
echo "xxxx Invalid ad type $ad_type xxxx"
|
|
report_error;;
|
|
esac
|
|
}
|
|
|
|
insert_sys_config()
|
|
{
|
|
# vo_digital="bt.1120", "bt.656"
|
|
insmod sys_config.ko chip="ss524v100" g_board_type=$board_type vo_digital="bt.1120"
|
|
}
|
|
|
|
insert_ad()
|
|
{
|
|
case $ad_type in
|
|
tp2854b)
|
|
insmod extdrv/ot_tp2854b.ko chips=4;
|
|
;;
|
|
tp2856)
|
|
insmod extdrv/ot_tp2856.ko chips=2;
|
|
;;
|
|
nvp6158)
|
|
insmod extdrv/ot_nvp6158.ko;
|
|
;;
|
|
*)
|
|
echo "xxxx Invalid ad type $ad_type xxxx"
|
|
report_error;;
|
|
esac
|
|
|
|
if [ $board_type = 0 ]; then
|
|
insmod ot_mipi_rx.ko
|
|
fi
|
|
}
|
|
|
|
remove_ad()
|
|
{
|
|
case $ad_type in
|
|
tp2854b)
|
|
rmmod ot_tp2854b.ko;
|
|
board_type=0;
|
|
;;
|
|
tp2856)
|
|
rmmod ot_tp2856.ko;
|
|
board_type=0;
|
|
;;
|
|
nvp6158)
|
|
rmmod ot_nvp6158.ko;
|
|
board_type=1
|
|
;;
|
|
*)
|
|
echo "xxxx Invalid ad type $ad_type xxxx"
|
|
report_error;;
|
|
esac
|
|
|
|
if [ $board_type = 0 ]; then
|
|
rmmod ot_mipi_rx.ko
|
|
fi
|
|
}
|
|
|
|
insert_ko()
|
|
{
|
|
get_board_type
|
|
insert_sys_config
|
|
|
|
# driver load
|
|
insmod ot_osal.ko anony=1 mmz_allocator=ot mmz=anonymous,0,$mmz_start,$mmz_size || report_error
|
|
insmod ot_base.ko
|
|
insmod ot_sys.ko
|
|
insmod ot_tde.ko
|
|
insmod ot_rgn.ko
|
|
insmod ot_vgs.ko
|
|
insmod ot_vi.ko
|
|
insmod ot_vpss.ko
|
|
insmod ot_vo.ko
|
|
insmod gfbg.ko video="gfbg:vram0_size:32400,vram1_size:16200,vram2_size:256,vram3_size:4052" # default fb0:4k*2*2/1024,fb1:1080p*4*2/1024,fb2:256*256*4,fb3:4k/2/1024
|
|
|
|
insmod ot_chnl.ko
|
|
insmod ot_vedu.ko
|
|
insmod ot_rc.ko
|
|
insmod ot_venc.ko
|
|
insmod ot_h264e.ko
|
|
insmod ot_h265e.ko
|
|
insmod ot_jpege.ko
|
|
insmod ot_jpegd.ko
|
|
insmod ot_vfmw.ko
|
|
insmod ot_vdec.ko
|
|
insmod ot_vda.ko
|
|
insmod ot_ive.ko save_power=1
|
|
insmod ot_nnie.ko nnie_save_power=1 nnie_max_mem_info_num=32
|
|
insmod ot_mau.ko mau_save_power=1 mau_max_mem_info_num=32
|
|
insert_ad
|
|
#insmod extdrv/ot_lt8618sx.ko norm=23 Use_DDRCLK=0 #norm 23:HDMI_1080P60 32:HDMI_4KP30 Use_DDRCLK 0:SINGLE 1:DUAL
|
|
insert_audio
|
|
|
|
insmod ot_hdmi.ko
|
|
insmod ot_user.ko
|
|
}
|
|
|
|
remove_ko()
|
|
{
|
|
rmmod ot_user
|
|
remove_audio
|
|
rmmod ot_hdmi.ko
|
|
#rmmod ot_lt8618sx.ko
|
|
remove_ad
|
|
rmmod ot_mau
|
|
rmmod ot_nnie
|
|
rmmod ot_ive
|
|
rmmod ot_vda
|
|
rmmod ot_vdec
|
|
rmmod ot_vfmw
|
|
rmmod ot_jpegd
|
|
rmmod ot_rc
|
|
rmmod ot_jpege
|
|
rmmod ot_h264e
|
|
rmmod ot_h265e
|
|
rmmod ot_venc
|
|
rmmod ot_vedu
|
|
rmmod ot_chnl
|
|
rmmod gfbg
|
|
rmmod ot_vo
|
|
rmmod ot_vpss
|
|
rmmod ot_vi
|
|
|
|
rmmod ot_vgs
|
|
rmmod ot_rgn
|
|
rmmod ot_tde
|
|
|
|
# rmmod ot_sensor_i2c &> /dev/null
|
|
# rmmod ot_sensor_spi &> /dev/null
|
|
rmmod ot_sys
|
|
rmmod ot_base
|
|
rmmod ot_osal
|
|
rmmod sys_config
|
|
}
|
|
|
|
load_usage()
|
|
{
|
|
echo "Usage: ./load524v100 [option]"
|
|
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: tp2854b]"
|
|
echo " -total mem_size config total mem size [unit: M, default: 2048]"
|
|
echo " -osmem os_mem_size config os mem size [unit: M, default: 256]"
|
|
echo " -h help information"
|
|
echo -e "for example: ./load524v100 -a -ad tp2854b\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 $reserve_mem_size" |
|
|
awk 'BEGIN { temp = 0; }
|
|
{
|
|
temp = $1 - $2 - $3;
|
|
}
|
|
END { printf("%dM\n", temp); }'`
|
|
echo "mmz_start: $mmz_start, mmz_size: $mmz_size"
|
|
}
|
|
|
|
######################parse arg###################################
|
|
b_arg_insmod=0
|
|
b_arg_remove=0
|
|
b_arg_restore=0
|
|
b_arg_ad=0
|
|
b_arg_total_mem=0
|
|
b_arg_os_mem=0
|
|
b_mem_out_config=0
|
|
board_type=0 #0:mipi,1:bt656
|
|
|
|
for arg in $@
|
|
do
|
|
if [ $b_arg_ad -eq 1 ] ; then
|
|
b_arg_ad=0;
|
|
ad_type=$arg;
|
|
fi
|
|
|
|
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_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
|
|
|
|
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;
|
|
;;
|
|
"-osmem")
|
|
b_arg_os_mem=1;
|
|
b_mem_out_config=1;
|
|
;;
|
|
"-total")
|
|
b_arg_total_mem=1;
|
|
b_mem_out_config=1;
|
|
;;
|
|
"-restore")
|
|
b_arg_restore=1;
|
|
;;
|
|
"-ad")
|
|
b_arg_ad=1;
|
|
;;
|
|
esac
|
|
done
|
|
#######################parse arg end########################
|
|
if [ $os_mem_size -ge $(($mem_total - $reserve_mem_size)) ] ; then
|
|
echo "[err] os_mem[$os_mem_size], over total_mem[$mem_total] - reserve_mem[$reserve_mem_size]"
|
|
exit;
|
|
fi
|
|
|
|
if [ $b_mem_out_config -eq 1 ]; then
|
|
calc_mmz_info;
|
|
fi
|
|
|
|
|
|
#######################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
|
|
|
|
if [ $b_arg_restore -eq 1 ]; then
|
|
sys_restore;
|
|
fi
|