mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			564 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			564 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| #
 | |
| # This is part of OpenIPC.org project | 2021.12.01
 | |
| #
 | |
| # ar0237 imx290 imx307 imx323 imx385 jxf22 ov2718 ov2718_2a sc2235
 | |
| 
 | |
| 
 | |
| # SoC detect
 | |
| chipid=$(ipcinfo --chip_id)
 | |
| 
 | |
| # MMZ config
 | |
| mem_start=0x80000000;                             # phy mem start
 | |
| 
 | |
| mem_total=$(fw_printenv -n totalmem | tr -d 'M')
 | |
| mem_total=${mem_total:=64}
 | |
| 
 | |
| os_mem_size=$(fw_printenv -n osmem | tr -d 'M')
 | |
| os_mem_size=${os_mem_size:=32}
 | |
| 
 | |
| # Sensor config
 | |
| # SNS_TYPE=$(awk -F '=' '$1=="sensor"{print $2}' RS=" " /proc/cmdline)
 | |
| SNS_TYPE=$(fw_printenv -n sensor)
 | |
| SNS_TYPE=${SNS_TYPE:=ar0237_i2c_dc}
 | |
| 
 | |
| 
 | |
| 
 | |
| ##################################################################
 | |
| 
 | |
| #if [ ${chipid} = "hi3516ev100" ]; then
 | |
| #	mem_total=64;                             # 64M, total mem
 | |
| #	os_mem_size=32;                           # 32M, os mem
 | |
| #	mmz_start=0x82000000;                     # mmz start addr, is calculated automatically
 | |
| #	mmz_size=32M;                             # 32M, mmz size, is calculated automatically
 | |
| #elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| #	mem_total=128;                            # 128M, total mem
 | |
| #	os_mem_size=40;                           # 40M, os mem
 | |
| #	mmz_start=0x82800000;                     # mmz start addr, is calculated automatically
 | |
| #	mmz_size=88M;                             # 88M, mmz size, is calculated automatically
 | |
| #else
 | |
| #	echo "Wrong chip_id: ${chipid}";
 | |
| #	exit 1;
 | |
| #fi
 | |
| #
 | |
| # Checker
 | |
| #echo "${chipid}: ${mem_total}/${os_mem_size} | ${mem_start}/${mmz_start} | ${mmz_size}"
 | |
| 
 | |
| ####################vo config#################################
 | |
| 
 | |
| #vou interface mode: default(cvbs), bt656, lcd
 | |
| vou_intf_mode="default";
 | |
| 
 | |
| ##################################################################
 | |
| 
 | |
| ####################clk config####################################
 | |
| 
 | |
| vedu_frequency=198000000;  # 198M, vedu clock frequency
 | |
| vgs_frequency=297000000;   # 297M, vgs clock frequency
 | |
| vpss_frequency=250000000;  # 250M, vpss clock frequency
 | |
| ive_frequency=297000000;   # 297M, ive clock frequency
 | |
| 
 | |
| ##################################################################
 | |
| 
 | |
| report_error()
 | |
| {
 | |
| 	echo "******* Error: There's something wrong, please check! *****"
 | |
| 	exit 1
 | |
| }
 | |
| 
 | |
| insert_audio()
 | |
| {
 | |
| 	insmod hi3516cv300_aio.ko
 | |
| 	insmod hi3516cv300_ai.ko
 | |
| 	insmod hi3516cv300_ao.ko
 | |
| 	insmod hi3516cv300_aenc.ko
 | |
| 	insmod hi3516cv300_adec.ko
 | |
| 	insmod hi_acodec.ko
 | |
| 	#insmod extdrv/hi_tlv320aic31.ko
 | |
| 	echo "insert audio"
 | |
| }
 | |
| 
 | |
| remove_audio()
 | |
| {
 | |
| 	#rmmod hi_tlv320aic31.ko
 | |
| 	rmmod hi3516cv300_adec
 | |
| 	rmmod hi3516cv300_aenc
 | |
| 	rmmod hi3516cv300_ao
 | |
| 	rmmod hi3516cv300_ai
 | |
| 	rmmod hi_acodec
 | |
| 	rmmod hi3516cv300_aio
 | |
| 	echo "remove audio"
 | |
| }
 | |
| 
 | |
| bus_type="i2c";
 | |
| pinmux_mode="i2c_mipi";
 | |
| sensor_clk_freq=37125000;
 | |
| intf_mode="default"
 | |
| 
 | |
| ####################sensor note#################################
 | |
| 
 | |
| #if you want to configure a new sensor, maybe you need to know the sensor parameters as follows
 | |
| #(1)bus_type: i2c or ssp, write and read sensor register.
 | |
| #(2)pinmux_mode: i2c_mipi/ssp_mipi/i2c_dc/ssp_dc. For example, if the bus_type is i2c and the sensor output DC sequence, the pinmux_mode would be i2c_dc.
 | |
| #(3)sensor_clk_freq: sensor clock frequency, please read the datasheet about sensor.
 | |
| #(4)intf_mode: if the interface mode of viu is bt1120, the value should be bt1120, else default.
 | |
| #(5)viu_frequency: viu clock frequecny, you can adjust different frequency when the scene changed.
 | |
| #(6)isp_div: isp clock divider. Input clock frequency is the same as viu clock frequency.
 | |
| 
 | |
| ##################################################################
 | |
| insert_sns()
 | |
| {
 | |
|     case $SNS_TYPE in
 | |
| 
 | |
| 	ar0237)
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_mipi";
 | |
| 			sensor_clk_freq=27000000;
 | |
| 			intf_mode="default";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 				isp_div=1;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 				isp_div=2;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
|             ;;
 | |
| 
 | |
| 	ar0237_i2c_dc)
 | |
| 			# This was added by ZigFisher
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_dc";
 | |
| 			sensor_clk_freq=27000000;
 | |
| 			intf_mode="default";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 				isp_div=1;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 				isp_div=2;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
|             ;;
 | |
| 
 | |
| 	bt1120)
 | |
| 			intf_mode="bt1120";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
| 			isp_div=1;                                    # isp div clk, freq = viu_clk_freq / div
 | |
|             ;;
 | |
| 
 | |
| 	imx290|imx327)
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_mipi";
 | |
| 			sensor_clk_freq=37125000;
 | |
| 			intf_mode="default";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 				isp_div=1;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 				isp_div=2;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
|             ;;
 | |
| 
 | |
| 	imx291_i2c_lvds|imx307_i2c_lvds)
 | |
| 			# This was added by @widgetii
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_mipi";
 | |
| 			sensor_clk_freq=37125000;
 | |
| 			intf_mode="default";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 				isp_div=1;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 				isp_div=2;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
|             ;;
 | |
| 
 | |
| 	imx307_i2c*)
 | |
| 			# This was added by ZigFisher
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_mipi";
 | |
| 			sensor_clk_freq=37125000;
 | |
| 			intf_mode="default";
 | |
| 			isp_div=1;                                    # isp div clk, freq = viu_clk_freq / div
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
|             ;;
 | |
| 
 | |
| 	imx323_spi*)
 | |
| 			# This was added by ZigFisher
 | |
| 			bus_type="ssp";
 | |
| 			pinmux_mode="ssp_dc";
 | |
| 			sensor_clk_freq=37125000;
 | |
| 			intf_mode="default";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 				isp_div=1;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 				isp_div=2;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
|             ;;
 | |
| 
 | |
| 	imx323_i2c*)
 | |
| 			# This was added by ZigFisher
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_dc";
 | |
| 			sensor_clk_freq=37125000;
 | |
| 			intf_mode="default";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 				isp_div=1;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 				isp_div=2;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
|             ;;
 | |
| 
 | |
| 	imx385)
 | |
| 			# get from hi3516cv300 profile (!!! check viu_frequency and isp_div !!!)
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_mipi";
 | |
| 			sensor_clk_freq=37125000;
 | |
| 			intf_mode="default";
 | |
| 			viu_frequency=198000000;  # 198M, viu clock frequency
 | |
| 			isp_div=1;                # isp div clk, freq = viu_clk_freq / div
 | |
|             ;;
 | |
| 
 | |
| 	jxf22)
 | |
| 			# get from hi3516ev100 profile (!!! check viu_frequency and isp_div !!!)
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_mipi";
 | |
| 			sensor_clk_freq=24000000;
 | |
| 			intf_mode="default";
 | |
| 			viu_frequency=83300000;   # 83.3M, viu clock frequency
 | |
| 			isp_div=1;                # isp div clk, freq = viu_clk_freq / div
 | |
| 			echo "66" > /sys/class/gpio/export;     # GPIO8_2
 | |
| 			echo "out" > /sys/class/gpio/gpio66/direction;
 | |
| 			echo "0" > /sys/class/gpio/gpio66/value;
 | |
|             ;;
 | |
| 
 | |
| 	jxf22_i2c_dc)
 | |
| 			# This was added by ZigFisher
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_dc";
 | |
| 			sensor_clk_freq=24000000;
 | |
| 			intf_mode="default";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 				isp_div=1;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 				isp_div=2;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
| 			echo "66" > /sys/class/gpio/export;     # GPIO8_2
 | |
| 			echo "out" > /sys/class/gpio/gpio66/direction;
 | |
| 			echo "0" > /sys/class/gpio/gpio66/value;
 | |
|             ;;
 | |
| 
 | |
| 	ov2718)
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_mipi";
 | |
| 			sensor_clk_freq=24000000;
 | |
| 			intf_mode="default";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 				isp_div=1;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 				isp_div=2;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
|             ;;
 | |
| 
 | |
| 	ov2718_2a)
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_mipi";
 | |
| 			sensor_clk_freq=24000000;
 | |
| 			intf_mode="default";
 | |
| 			viu_frequency=250000000;  # 250M, viu clock frequency
 | |
| 			isp_div=1;                # isp div clk, freq = viu_clk_freq / div
 | |
|             ;;
 | |
| 
 | |
| 	sc2235p_i2c_dc)
 | |
| 			# This was added by ZigFisher
 | |
| 			bus_type="i2c";
 | |
| 			pinmux_mode="i2c_dc";
 | |
| 			sensor_clk_freq=27000000;
 | |
| 			intf_mode="default";
 | |
| 			if [ ${chipid} = "hi3516ev100" ]; then
 | |
| 				viu_frequency=83300000;               # 83.3M, viu clock frequency
 | |
| 				isp_div=1;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			elif [ ${chipid} = "hi3516cv300" ]; then
 | |
| 				viu_frequency=198000000;              # 198M, viu clock frequency
 | |
| 				isp_div=2;                            # isp div clk, freq = viu_clk_freq / div
 | |
| 			else
 | |
| 				echo "Wrong chip_id: ${chipid}";
 | |
| 				exit 1;
 | |
| 			fi
 | |
|             ;;
 | |
| 
 | |
|         *)
 | |
|             echo "xxxx Invalid sensor type $SNS_TYPE xxxx"
 | |
|             report_error;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| insert_isp()
 | |
| {
 | |
| 	insmod hi3516cv300_isp.ko update_pos=0  proc_param=30 port_init_delay=0
 | |
| }
 | |
| 
 | |
| insert_ko()
 | |
| {
 | |
| 	insert_sns
 | |
| 	insmod sys_config.ko vi_vpss_online=$b_arg_online
 | |
| 
 | |
| 	# driver load
 | |
| 	insmod hi_osal.ko mmz=anonymous,0,$mmz_start,$mmz_size anony=1 || report_error
 | |
| 	insmod hi3516cv300_wdt.ko
 | |
| 	#insmod hi3516cv300_rtc.ko
 | |
| 	insmod hi3516cv300_base.ko
 | |
| 
 | |
| 	insmod hi3516cv300_sys.ko vi_vpss_online=$b_arg_online sensor=$SNS_TYPE mem_total=$mem_total
 | |
| 
 | |
| 	insmod hi3516cv300_region.ko
 | |
| 	insmod hi3516cv300_vgs.ko vgs_clk_frequency=$vgs_frequency
 | |
| 
 | |
| 	insmod hi3516cv300_viu.ko detect_err_frame=10 viu_clk_frequency=$viu_frequency isp_div=$isp_div input_mode=$intf_mode
 | |
| 	insert_isp;
 | |
| 	insmod hi3516cv300_vpss.ko vpss_clk_frequency=$vpss_frequency
 | |
| 	insmod hi3516cv300_vou.ko vou_mode=$vou_intf_mode
 | |
| 	#insmod hi3516cv300_vou.ko detectCycle=0 vou_mode=$vou_intf_mode #close dac detect
 | |
| 	#insmod hi3516cv300_vou.ko transparentTransmit=1 vou_mode=$vou_intf_mode #enable transparentTransmit
 | |
| 
 | |
| 	insmod hi3516cv300_rc.ko
 | |
| 	insmod hi3516cv300_venc.ko
 | |
| 	insmod hi3516cv300_chnl.ko
 | |
| 	insmod hi3516cv300_vedu.ko vedu_clk_frequency=$vedu_frequency
 | |
| 	insmod hi3516cv300_h264e.ko
 | |
| 	insmod hi3516cv300_h265e.ko
 | |
| 	insmod hi3516cv300_jpege.ko
 | |
| 	insmod hi3516cv300_ive.ko save_power=1 ive_clk_frequency=$ive_frequency
 | |
| 	insmod hi3516cv300_sensor.ko sensor_bus_type=$bus_type sensor_clk_frequency=$sensor_clk_freq sensor_pinmux_mode=$pinmux_mode
 | |
| 	#insmod hi_adc.ko
 | |
| 	#insmod hi_gpio.ko
 | |
| 	#insmod gpioi2c_ex.ko
 | |
| 	#insmod sha_204.ko
 | |
| 	#insmod hi_sensor_i2c.ko
 | |
| 	#insmod hi_ssp_sony.ko
 | |
| 	insmod hi3516cv300_pwm.ko
 | |
| 	insmod hi_piris.ko
 | |
| 	#insmod exfat.ko
 | |
| 	insert_audio
 | |
| 
 | |
| 	insmod hi_mipi.ko
 | |
| 
 | |
| 	echo "==== Your input Sensor type is $SNS_TYPE ===="
 | |
| 
 | |
| }
 | |
| 
 | |
| remove_ko()
 | |
| {
 | |
| 	remove_audio
 | |
| 
 | |
| 	rmmod hi3516cv300_pwm
 | |
| 	rmmod hi_piris
 | |
| 
 | |
| 	rmmod hi3516cv300_sensor
 | |
| 
 | |
| 	rmmod hi3516cv300_ive
 | |
| 
 | |
| 	rmmod hi3516cv300_rc
 | |
| 	rmmod hi3516cv300_jpege
 | |
| 	rmmod hi3516cv300_h264e
 | |
| 	rmmod hi3516cv300_h265e
 | |
| 	rmmod hi3516cv300_vedu
 | |
| 	rmmod hi3516cv300_chnl
 | |
| 	rmmod hi3516cv300_venc
 | |
| 
 | |
| 	rmmod hi3516cv300_vou
 | |
| 	rmmod hi3516cv300_vpss
 | |
| 	rmmod hi3516cv300_isp
 | |
| 	rmmod hi3516cv300_viu
 | |
| 	rmmod hi_mipi
 | |
| 	
 | |
| 	rmmod hi3516cv300_vgs
 | |
| 	rmmod hi3516cv300_region
 | |
| 
 | |
| 	rmmod hi3516cv300_sys
 | |
| 	rmmod hi3516cv300_base
 | |
| 	rmmod hi3516cv300_wdt
 | |
| 	rmmod hi_osal
 | |
| 	rmmod sys_config
 | |
| }
 | |
| 
 | |
| load_usage()
 | |
| {
 | |
| 	echo "Usage:  ./load_universal [-option] [sensor_name]"
 | |
| 	echo "options:"
 | |
| 	echo "    -i                       insert modules"
 | |
| 	echo "    -r                       remove modules"
 | |
| 	echo "    -a                       remove modules first, then insert modules"
 | |
| 	echo "    -sensor sensor_name      config sensor type [default: imx290]"
 | |
| 	echo "    -osmem os_mem_size       config os mem size [unit: M, default: XX]"
 | |
| 	echo "    -total_mem_size          config total mem size [unit: M, default: YY]"
 | |
| 	echo "    -online                  vi/vpss online"
 | |
| 	echo "    -h                       help information"
 | |
| 	echo -e "Available sensors: ar0237 imx290 imx307 imx323 imx385 jxf22 ov2718 ov2718_2a sc2235"
 | |
| 	echo -e "notes: osmem option can't be used when mmz zone partition is enable\n\n"
 | |
| 	echo -e "for example online:   ./load_universal -i -sensor jxf22_i2c_dc -online\n"
 | |
| 	echo -e "            offline:  ./load_universal -i -sensor jxf22_i2c_dc \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_sensor=0
 | |
| b_arg_insmod=0
 | |
| b_arg_remove=0
 | |
| b_arg_online=0
 | |
| b_arg_restore=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_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_sensor -eq 1 ] ; then
 | |
| 		b_arg_sensor=0
 | |
| 		SNS_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;
 | |
| 			;;
 | |
| 		"-sensor")
 | |
| 			b_arg_sensor=1;
 | |
| 			;;
 | |
| 		"-osmem")
 | |
| 			b_arg_os_mem=1;
 | |
| 			;;
 | |
| 		"-total")
 | |
| 			b_arg_total_mem=1;
 | |
| 			;;
 | |
| 		"-restore")
 | |
| 			b_arg_restore=1;
 | |
| 			;;
 | |
| 		"-online")
 | |
| 			b_arg_online=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
 | |
| 	cd /lib/modules/3.18.20/hisilicon
 | |
| 	insert_ko;
 | |
| fi
 | |
| 
 | |
| if [ $b_arg_restore -eq 1 ]; then
 | |
| 	sys_restore;
 | |
| fi
 |