mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			581 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			581 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| #
 | |
| # This is part of OpenIPC.org project | 2022.01.07
 | |
| #
 | |
| 
 | |
| # 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_TYPE0=$(fw_printenv -n sensor)
 | |
| SNS_TYPE0=${SNS_TYPE:=ov4689}
 | |
| 
 | |
| report_error() {
 | |
| 	echo "******* Error: There's something wrong, please check! *****"
 | |
| 	exit 1
 | |
| }
 | |
| 
 | |
| insert_osal() {
 | |
| 	insmod hi_osal.ko mmz=anonymous,0,$mmz_start,$mmz_size anony=1 || report_error
 | |
| }
 | |
| 
 | |
| insert_detect() {
 | |
| 	cd /lib/modules/3.18.20/hisilicon
 | |
| 	insert_osal
 | |
| 	insmod hi3519v101_base.ko
 | |
| 	insmod hi3519v101_sys.ko vi_vpss_online=$b_arg_online sensor=$SNS_TYPE0,$SNS_TYPE1 mem_total=$mem_total
 | |
| 	insert_isp
 | |
| 	insmod hi_sensor_i2c.ko
 | |
| 	insmod hi_sensor_spi.ko
 | |
| }
 | |
| 
 | |
| remove_detect() {
 | |
| 	rmmod hi_sensor_spi
 | |
| 	rmmod hi_sensor_i2c
 | |
| 	rmmod hi3519v101_isp
 | |
| 	rmmod hi3519v101_sys
 | |
| 	rmmod hi3519v101_base
 | |
| 	rmmod hi_osal
 | |
| }
 | |
| 
 | |
| insert_audio() {
 | |
| 	insmod hi3519v101_aio.ko
 | |
| 	insmod hi3519v101_ai.ko
 | |
| 	insmod hi3519v101_ao.ko
 | |
| 	insmod hi3519v101_aenc.ko
 | |
| 	insmod hi3519v101_adec.ko
 | |
| 	insmod hi_acodec.ko
 | |
| 	#insmod extdrv/hi_tlv320aic31.ko
 | |
| }
 | |
| 
 | |
| remove_audio() {
 | |
| 	rmmod hi_acodec
 | |
| 	#rmmod hi_tlv320aic31
 | |
| 	rmmod hi3519v101_adec
 | |
| 	rmmod hi3519v101_aenc
 | |
| 	rmmod hi3519v101_ao
 | |
| 	rmmod hi3519v101_ai
 | |
| 	rmmod hi3519v101_aio
 | |
| }
 | |
| 
 | |
| spi0_4wire_pin_mux() {
 | |
| 	#pinmux
 | |
| 	devmem 0x1204018c 32 0x1 #SPI0_SCLK
 | |
| 	devmem 0x12040190 32 0x1 #SPI0_SD0
 | |
| 	devmem 0x12040194 32 0x1 #SPI0_SDI
 | |
| 	devmem 0x12040198 32 0x1 #SPI0_CSN
 | |
| 
 | |
| 	#drive capability
 | |
| 	devmem 0x12040998 32 0x150 #SPI0_SCLK
 | |
| 	devmem 0x1204099c 32 0x160 #SPI0_SD0
 | |
| 	devmem 0x120409a0 32 0x160 #SPI0_SDI
 | |
| 	devmem 0x120409a4 32 0x160 #SPI0_CSN
 | |
| }
 | |
| spi1_4wire_pin_mux() {
 | |
| 	#pinmux
 | |
| 	devmem 0x12040018 32 0x1 #SPI1_SCLK
 | |
| 	devmem 0x1204001c 32 0x1 #SPI1_SD0
 | |
| 	devmem 0x12040020 32 0x1 #SPI1_SDI
 | |
| 	devmem 0x12040024 32 0x1 #SPI1_CSN
 | |
| 
 | |
| 	#drive capability
 | |
| 	devmem 0x12040818 32 0x150 #SPI1_SCLK
 | |
| 	devmem 0x1204081C 32 0x160 #SPI1_SD0
 | |
| 	devmem 0x12040820 32 0x160 #SPI1_SDI
 | |
| 	devmem 0x12040824 32 0x160 #SPI1_CSN
 | |
| }
 | |
| spi0_3wire_pin_mux() {
 | |
| 	#pinmux
 | |
| 	devmem 0x1204018c 32 0x3 #SPI0_3WIRE_CLK
 | |
| 	devmem 0x12040190 32 0x3 #SPI0_3WIRE_DATA
 | |
| 	devmem 0x12040198 32 0x3 #SPI0_3WIRE_CSN
 | |
| 
 | |
| 	#drive capability
 | |
| 	devmem 0x12040998 32 0x150 #SPI0_3WIRE_CLK
 | |
| 	devmem 0x1204099c 32 0x160 #SPI0_3WIRE_DATA
 | |
| 	devmem 0x120409a4 32 0x160 #SPI0_3WIRE_CSN
 | |
| }
 | |
| i2c0_pin_mux() {
 | |
| 	#pinmux
 | |
| 	devmem 0x12040190 32 0x2 #I2C0_SDA
 | |
| 	devmem 0x1204018c 32 0x2 #I2C0_SCL
 | |
| 
 | |
| 	#drive capability
 | |
| 	devmem 0x1204099c 32 0x120 #I2C0_SDA
 | |
| 	devmem 0x12040998 32 0x120 #I2C0_SCL
 | |
| }
 | |
| i2c1_pin_mux() {
 | |
| 	#pinmux
 | |
| 	devmem 0x1204001c 32 0x2 #I2C1_SDA
 | |
| 	devmem 0x12040018 32 0x2 #I2C1_SCL
 | |
| 
 | |
| 	#drive capability
 | |
| 	devmem 0x1204081c 32 0x120 #I2C1_SDA
 | |
| 	devmem 0x12040818 32 0x120 #I2C1_SCL
 | |
| }
 | |
| 
 | |
| insert_sns() {
 | |
| 	local tmp=0
 | |
| 	local tmp1
 | |
| 	local tmp2
 | |
| 	if [ ${SNS_TYPE0} != "NULL" ]; then
 | |
| 		case $SNS_TYPE0 in
 | |
| 		imx226)
 | |
| 			tmp=0x11
 | |
| 			devmem 0x12010040 32 0x11 # sensor0 clk_en, 72MHz
 | |
| 			# SDK config:     IVE:396M,  GDC:475M,  VGS:500M,  VEDU:600M,   VPSS:300M
 | |
| 			#imx226: viu0:600M,isp0:600M, viu1:300M,isp1:300M
 | |
| 			devmem 0x1201004c 32 0x00094c23
 | |
| 			devmem 0x12010054 32 0x00024041
 | |
| 			spi0_4wire_pin_mux
 | |
| 			insmod extdrv/hi_ssp_sony.ko
 | |
| 			;;
 | |
| 		imx274)
 | |
| 			tmp=0x11
 | |
| 			devmem 0x12010040 32 0x11 # sensor0 clk_en, 72MHz
 | |
| 			# SDK config:     IVE:396M,  GDC:475M,  VGS:500M,  VEDU:600M,   VPSS:300M
 | |
| 			#imx274:viu0: 600M,isp0:300M, viu1:300M,isp1:300M
 | |
| 			devmem 0x1201004c 32 0x00094c23
 | |
| 			devmem 0x12010054 32 0x0004041
 | |
| 			spi0_4wire_pin_mux
 | |
| 			insmod extdrv/hi_ssp_sony.ko
 | |
| 			;;
 | |
| 		imx274_mipi)
 | |
| 			tmp=0x14
 | |
| 			# SDK config:     IVE:396M,  GDC:475M,  VGS:500M,  VEDU:600M,   VPSS:300M
 | |
| 			#	viu0:300M,isp0:300M, viu1:300M,isp1:300M
 | |
| 			devmem 0x1201004c 32 0x00094c21
 | |
| 			devmem 0x12010054 32 0x0004041
 | |
| 			devmem 0x12010040 32 0x14 # sensor0 clk_en, 24MHz
 | |
| 			i2c0_pin_mux
 | |
| 			;;
 | |
| 		imx290)
 | |
| 			tmp=0x18
 | |
| 			# SDK config:     IVE:396M,  GDC:475M,  VGS:500M,  VEDU:600M,   VPSS:300M
 | |
| 			#imx290:viu0:340M,isp0:214M, viu1:340M,isp1:214M
 | |
| 			devmem 0x1201004c 32 0x00094c24
 | |
| 			devmem 0x12010054 32 0x0004
 | |
| 			devmem 0x12010040 32 0x18 # sensor0 clk_en, 37.125MHz
 | |
| 			i2c0_pin_mux
 | |
| 			;;
 | |
| 		ov4689)
 | |
| 			tmp=0x14
 | |
| 			# SDK config:     IVE:396M,  GDC:475M,  VGS:500M,  VEDU:600M,   VPSS:300M
 | |
| 			#ov4689:	viu0:300M,isp0:300M, viu1:300M,isp1:300M
 | |
| 			devmem 0x1201004c 32 0x00094c21
 | |
| 			devmem 0x12010054 32 0x0004041
 | |
| 			devmem 0x12010040 32 0x14 # sensor0 clk_en, 24MHz
 | |
| 			i2c0_pin_mux
 | |
| 			;;
 | |
| 		os08a10)
 | |
| 			tmp=0x14
 | |
| 			# SDK config:     IVE:396M,  GDC:475M,  VGS:500M,  VEDU:600M,   VPSS:300M
 | |
| 			#os08a10:	viu0: 600M, isp0:300M, viu1:300M,isp1:300M
 | |
| 			devmem 0x1201004c 32 0x00094c23
 | |
| 			devmem 0x12010054 32 0x0004041
 | |
| 			devmem 0x12010040 32 0x14 # sensor0 clk_en, 24MHz
 | |
| 			i2c0_pin_mux
 | |
| 			;;
 | |
| 		bt1120)
 | |
| 			# SDK config:     IVE:396M,  GDC:475M,  VGS:500M,  VEDU:600M,   VPSS:300M
 | |
| 			#	viu0:300M,isp0:300M, viu1:300M,isp1:300M
 | |
| 			devmem 0x1201004c 32 0x00094c21
 | |
| 			devmem 0x12010054 32 0x0004041
 | |
| 			devmem 0x113c6200 32 0x0 #disable dehaze
 | |
| 			devmem 0x113d1400 32 0x0 #disable acm
 | |
| 			devmem 0x113c5200 32 0x0 #disable sharpen
 | |
| 			#devmem 0x20670000 32 0x0;
 | |
| 			;;
 | |
| 		*)
 | |
| 			echo "xxxx Invalid sensor type $SNS_TYPE0 xxxx"
 | |
| 			report_error
 | |
| 			;;
 | |
| 		esac
 | |
| 	fi
 | |
| 
 | |
| 	if [ ${SNS_TYPE1} != "NULL" ]; then
 | |
| 		case $SNS_TYPE1 in
 | |
| 		imx290)
 | |
| 			tmp1=0x1800
 | |
| 			tmp2=$((tmp + tmp1))
 | |
| 			devmem 0x12010040 32 $tmp2 # sensor1 clk_en, 37.125MHz
 | |
| 			i2c1_pin_mux
 | |
| 			;;
 | |
| 		ov4689)
 | |
| 			tmp1=0x1400
 | |
| 			tmp2=$((tmp + tmp1))
 | |
| 			devmem 0x12010040 32 $tmp2 # sensor1 clk_en, 24MHz
 | |
| 			i2c1_pin_mux
 | |
| 			;;
 | |
| 		os08a10)
 | |
| 			tmp1=0x1400
 | |
| 			tmp2=$((tmp + tmp1))
 | |
| 			devmem 0x12010040 32 $tmp2 # sensor1 clk_en, 24MHz
 | |
| 			i2c1_pin_mux
 | |
| 			;;
 | |
| 		bt1120)
 | |
| 			devmem 0x114c6200 32 0x0 #disable dehaze
 | |
| 			devmem 0x114d1400 32 0x0 #disable acm
 | |
| 			devmem 0x114c5200 32 0x0 #disable sharpen
 | |
| 			#devmem 0x20670000 32 0x0;
 | |
| 			;;
 | |
| 		*)
 | |
| 			echo "xxxx Invalid sensor type $SNS_TYPE1 xxxx"
 | |
| 			report_error
 | |
| 			;;
 | |
| 		esac
 | |
| 	fi
 | |
| 
 | |
| 	if [ ${WORK_MODE} != "NULL" ]; then
 | |
| 		case $WORK_MODE in
 | |
| 		stitching)
 | |
| 			devmem 0x12040184 32 0x1 # SENSOR0 HS from VI0 HS
 | |
| 			devmem 0x12040188 32 0x1 # SENSOR0 VS from VI0 VS
 | |
| 			devmem 0x12040010 32 0x1 # SENSOR1 HS from VI0 HS
 | |
| 			devmem 0x12040014 32 0x1 # SENSOR1 VS from VI0 VS
 | |
| 			;;
 | |
| 		single_pipe)
 | |
| 			devmem 0x12040184 32 0x1 # SENSOR0 HS from VI0 HS
 | |
| 			devmem 0x12040188 32 0x1 # SENSOR0 VS from VI0 VS
 | |
| 			devmem 0x12040010 32 0x2 # SENSOR1 HS from VI1 HS
 | |
| 			devmem 0x12040014 32 0x2 # SENSOR1 VS from VI1 VS
 | |
| 			;;
 | |
| 		double_pipe)
 | |
| 			tmp1=$((tmp << 8))
 | |
| 			tmp2=$((tmp + tmp1))
 | |
| 			devmem 0x12010040 32 $tmp2 # sensor0 clk + sensor1 clk
 | |
| 			devmem 0x12040184 32 0x2   # SENSOR0 HS from VI1 HS
 | |
| 			devmem 0x12040188 32 0x2   # SENSOR0 VS from VI1 VS
 | |
| 			#devmem 0x12040010 32 0x1;    # SENSOR1 HS from VI0 HS
 | |
| 			#devmem 0x12040014 32 0x1;    # SENSOR1 VS from VI0 VS
 | |
| 			devmem 0x1201004c 32 0x00094c21 #double pipe,VI0,ISP0:300M,if inapposite,change it.
 | |
| 			devmem 0x12010054 32 0x0004041  #double pipe,VI1,ISP1:300M
 | |
| 			;;
 | |
| 		*)
 | |
| 			echo "xxxx Invalid work mode $WORK_MODE xxxx"
 | |
| 			report_error
 | |
| 			;;
 | |
| 		esac
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| remove_sns() {
 | |
| 	rmmod hi_ssp_sony &>/dev/null
 | |
| 	rmmod hi_sensor_spi &>/dev/null
 | |
| }
 | |
| 
 | |
| insert_isp() {
 | |
| 	case $SNS_TYPE0 in
 | |
| 	imx117)
 | |
| 		insmod hi3519v101_isp.ko update_pos=1 proc_param=30
 | |
| 		;;
 | |
| 	*)
 | |
| 		insmod hi3519v101_isp.ko proc_param=30
 | |
| 		;;
 | |
| 	esac
 | |
| }
 | |
| 
 | |
| vicap1_pwrdn() {
 | |
| 	devmem 0x1201003c 32 0x333303ff
 | |
| 	devmem 0x120a012c 32 0x3
 | |
| 	devmem 0x120a012c 32 0x2
 | |
| 	devmem 0x1201003c 32 0x120003ff
 | |
| }
 | |
| sys_config() {
 | |
| 	# pinmux configuration
 | |
| 	sh ./pinmux.sh -net -vi >/dev/null
 | |
| 
 | |
| 	if [ ${SNS_TYPE1} != "NULL" ]; then
 | |
| 		vicap1_pwrdn >/dev/null
 | |
| 	fi
 | |
| 	if [ ${WORK_MODE} == "double_pipe" ]; then
 | |
| 		vicap1_pwrdn >/dev/null
 | |
| 	fi
 | |
| 	#vicap1_pwrdn;
 | |
| 	#vicap1_pwrdn > /dev/null
 | |
| 
 | |
| 	# clock configuration
 | |
| 	sh clkcfg.sh >/dev/null
 | |
| 	# system configuration
 | |
| 	sh sysctl.sh $b_arg_online >/dev/null
 | |
| }
 | |
| 
 | |
| insert_ko() {
 | |
| 	# sys config
 | |
| 	sys_config
 | |
| 
 | |
| 	# driver load
 | |
| 	insert_osal
 | |
| 	insmod hi3519v101_base.ko
 | |
| 
 | |
| 	insmod hi3519v101_sys.ko vi_vpss_online=$b_arg_online sensor=$SNS_TYPE0,$SNS_TYPE1 mem_total=$mem_total
 | |
| 
 | |
| 	#insmod hi3519v101_tde.ko
 | |
| 	insmod hi3519v101_region.ko
 | |
| 	insmod hi3519v101_fisheye.ko
 | |
| 	#insmod hi3519v101_vgs.ko
 | |
| 
 | |
| 	insert_isp
 | |
| 	insmod hi3519v101_viu.ko detect_err_frame=10 delay_line=500
 | |
| 	insmod hi3519v101_vpss.ko
 | |
| 	#insmod hi3519v101_vou.ko
 | |
| 	#insmod hi3519v101_vou.ko detectCycle=0 #close dac detect
 | |
| 	#insmod hi3519v101_vou.ko transparentTransmit=1 #enable transparentTransmit
 | |
| 	#insmod hifb.ko video="hifb:vram0_size:1620"     # default pal
 | |
| 
 | |
| 	insmod hi3519v101_rc.ko
 | |
| 	insmod hi3519v101_venc.ko
 | |
| 	insmod hi3519v101_chnl.ko
 | |
| 	insmod hi3519v101_vedu.ko
 | |
| 	insmod hi3519v101_h264e.ko
 | |
| 	insmod hi3519v101_h265e.ko
 | |
| 	insmod hi3519v101_jpege.ko
 | |
| 	#insmod hi3519v101_ive.ko save_power=1
 | |
| 	insmod hi3519v101_photo.ko
 | |
| 	#
 | |
| 	insmod extdrv/hi_sensor_i2c.ko
 | |
| 	insmod extdrv/hi_pwm.ko
 | |
| 	insmod extdrv/hi_piris.ko
 | |
| 
 | |
| 	insert_audio
 | |
| 
 | |
| 	insmod hi_mipi.ko
 | |
| 	insmod hi_user.ko
 | |
| 
 | |
| 	insert_sns
 | |
| 	# sh ./pinmux.sh -vo BT1120 > /dev/null
 | |
| 	devmem 0x12010044 32 0x4ff0
 | |
| 
 | |
| 	devmem 0x12010044 32 0x4
 | |
| 	echo "==== Your input Sensor0 type is $SNS_TYPE0 ===="
 | |
| 	echo "==== Your input Sensor1 type is $SNS_TYPE1 ===="
 | |
| }
 | |
| 
 | |
| remove_ko() {
 | |
| 	remove_audio
 | |
| 	remove_sns
 | |
| 	rmmod hi_user
 | |
| 	rmmod hi_pwm
 | |
| 	rmmod hi_piris
 | |
| 
 | |
| 	#rmmod hi3519v101_photo
 | |
| 	rmmod hi3519v101_ive
 | |
| 
 | |
| 	rmmod hi3519v101_rc
 | |
| 	rmmod hi3519v101_jpege
 | |
| 	rmmod hi3519v101_h264e
 | |
| 	rmmod hi3519v101_h265e
 | |
| 	rmmod hi3519v101_vedu
 | |
| 	rmmod hi3519v101_chnl
 | |
| 	rmmod hi3519v101_venc
 | |
| 
 | |
| 	#rmmod hifb
 | |
| 	#rmmod hi3519v101_vou
 | |
| 	rmmod hi3519v101_vpss
 | |
| 	rmmod hi3519v101_isp
 | |
| 	rmmod hi3519v101_viu
 | |
| 	rmmod hi_mipi
 | |
| 	rmmod hi3519v101_fisheye
 | |
| 
 | |
| 	#rmmod hi3519v101_vgs
 | |
| 	rmmod hi3519v101_region
 | |
| 	#rmmod hi3519v101_tde
 | |
| 
 | |
| 	rmmod hi_sensor_i2c &>/dev/null
 | |
| 	rmmod hi_ssp_3wire.ko &>/dev/null
 | |
| 
 | |
| 	rmmod hi3519v101_sys
 | |
| 	rmmod hi3519v101_base
 | |
| 	rmmod hi_osal
 | |
| }
 | |
| 
 | |
| sys_restore() {
 | |
| 	####################################################
 | |
| 	clkcfg.sh >/dev/null
 | |
| 
 | |
| 	# system configuration
 | |
| 	sysctl.sh $b_arg_online # > /dev/null
 | |
| 	insert_sns
 | |
| }
 | |
| 
 | |
| load_usage() {
 | |
| 	echo "Usage:  ./load3519v101 [-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: imx274]"
 | |
| 	echo "    -osmem os_mem_size       config os mem size [unit: M, default: 64]"
 | |
| 	echo "    -total_mem_size          config total mem size [unit: M, default: 512]"
 | |
| 	echo "    -offline                 vi/vpss offline"
 | |
| 	echo "    -h                       help information"
 | |
| 	echo -e "Available sensors: imx274, imx226, imx290, ov4689 ,os08a10"
 | |
| 	echo -e "workmode: stitching,single_pipe,double_pipe"
 | |
| 	echo -e "notes: osmem option can't be used when mmz zone partition is enable\n\n"
 | |
| 	echo -e "for example online:  ./load3519v101 -a -sensor0 ov4689 -sensor1 ov4689 -osmem 64 -total 512\n"
 | |
| 	echo -e "            offline: ./load3519v101 -a -sensor0 imx274 -osmem 64 -total 512 -offline\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_sensor0=0
 | |
| b_arg_sensor1=0
 | |
| b_arg_insmod=0
 | |
| b_arg_remove=0
 | |
| b_arg_online=1
 | |
| b_arg_restore=0
 | |
| b_arg_mode=0
 | |
| b_arg_total_mem=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
 | |
| 
 | |
| 		if [ $os_mem_size -ge $mem_total ]; then
 | |
| 			echo "[err] os_mem[$os_mem_size], over total_mem[$mem_total]"
 | |
| 			exit
 | |
| 		fi
 | |
| 	fi
 | |
| 
 | |
| 	if [ $b_arg_sensor0 -eq 1 ]; then
 | |
| 		b_arg_sensor0=0
 | |
| 		SNS_TYPE0=$arg
 | |
| 	fi
 | |
| 	if [ $b_arg_sensor1 -eq 1 ]; then
 | |
| 		b_arg_sensor1=0
 | |
| 		SNS_TYPE1=$arg
 | |
| 	fi
 | |
| 	if [ $b_arg_mode -eq 1 ]; then
 | |
| 		b_arg_mode=0
 | |
| 		WORK_MODE=$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
 | |
| 		;;
 | |
| 	"-sensor0")
 | |
| 		b_arg_sensor0=1
 | |
| 		;;
 | |
| 	"-sensor")
 | |
| 		b_arg_sensor0=1
 | |
| 		;;
 | |
| 	"-sensor1")
 | |
| 		b_arg_sensor1=1
 | |
| 		;;
 | |
| 	"-osmem")
 | |
| 		b_arg_os_mem=1
 | |
| 		;;
 | |
| 	"-total")
 | |
| 		b_arg_total_mem=1
 | |
| 		;;
 | |
| 	"-restore")
 | |
| 		b_arg_restore=1
 | |
| 		;;
 | |
| 	"-offline")
 | |
| 		b_arg_online=0
 | |
| 		;;
 | |
| 	"-workmode")
 | |
| 		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
 | |
| 
 | |
| # Sensor config
 | |
| # SENSOR=${SENSOR:=imx307}
 | |
| #
 | |
| if [ -n "$SENSOR" ]; then
 | |
| 	logger -s -p daemon.info -t hisilicon "Manualy set SENSOR as ${SENSOR}"
 | |
| else
 | |
| 	if fw_printenv -n sensor >/dev/null; then
 | |
| 		SENSOR_ENV=$(fw_printenv -n sensor)
 | |
| 		export SENSOR=${SENSOR_ENV}
 | |
| 		logger -s -p daemon.info -t hisilicon "Get data from environment and set SENSOR as ${SENSOR}"
 | |
| 	else
 | |
| 		insert_detect
 | |
| 		SENSOR_DETECT=$(ipcinfo -s)
 | |
| 		export SENSOR=${SENSOR_DETECT:=unknown}
 | |
| 		remove_detect
 | |
| 		logger -s -p daemon.info -t hisilicon "Get data from ipcinfo and set SENSOR as ${SENSOR}"
 | |
| 		fw_setenv sensor $SENSOR && logger -s -p daemon.info -t hisilicon "Write detected ${SENSOR} to U-Boot ENV"
 | |
| 	fi
 | |
| 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
 |