#!/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