11bd4fe43Sopenharmony_ci#!/bin/sh 21bd4fe43Sopenharmony_ci# Copyright (C) 2021 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved. 31bd4fe43Sopenharmony_ci 41bd4fe43Sopenharmony_ci# Usage: ./load3516dv300 [ -r|-i|-a ] [ sensor0~1 ] 51bd4fe43Sopenharmony_ci# -r : rmmod all modules 61bd4fe43Sopenharmony_ci# -i : insmod all modules 71bd4fe43Sopenharmony_ci# -a : rmmod all modules and then insmod them 81bd4fe43Sopenharmony_ci# e.g: RAW: ./load3516dv300 -i -sensor0 imx335 -sensor1 imx335 91bd4fe43Sopenharmony_ci# e.g: BT1120/DC : ./load3516dv300 -i -sensor0 imx327 -sensor1 imx327 -osmem 128 -yuv0 1 101bd4fe43Sopenharmony_ci# e.g: BT656 : ./load3516dv300 -i -sensor0 imx327 -sensor1 imx327 -osmem 128 -yuv0 2 111bd4fe43Sopenharmony_ci 121bd4fe43Sopenharmony_ci####################Variables Definition########################## 131bd4fe43Sopenharmony_ci 141bd4fe43Sopenharmony_ciSNS_TYPE0=imx335; # sensor type 151bd4fe43Sopenharmony_ciSNS_TYPE1=NULL; # sensor type 161bd4fe43Sopenharmony_ciYUV_TYPE0=0; # 0 -- raw, 1 -- bt1120/DC, 2 --bt656 171bd4fe43Sopenharmony_ciCHIP_TYPE=hi3516dv300; # chip type 181bd4fe43Sopenharmony_ci#DDR start:0x80000000, kernel start:0x80000000, OS(128M); MMZ start:0x88000000 191bd4fe43Sopenharmony_cimem_total=512 # 512M, total mem 201bd4fe43Sopenharmony_cimem_start=0x80000000 # phy mem start 211bd4fe43Sopenharmony_cios_mem_size=128 # 128M, os mem 221bd4fe43Sopenharmony_cimmz_start=0x88000000; # mmz start addr 231bd4fe43Sopenharmony_cimmz_size=384M; # 384M, mmz size 241bd4fe43Sopenharmony_ci################################################################## 251bd4fe43Sopenharmony_ci 261bd4fe43Sopenharmony_cireport_error() 271bd4fe43Sopenharmony_ci{ 281bd4fe43Sopenharmony_ci echo "******* Error: There's something wrong, please check! *****" 291bd4fe43Sopenharmony_ci exit 1 301bd4fe43Sopenharmony_ci} 311bd4fe43Sopenharmony_ci 321bd4fe43Sopenharmony_ciinsert_isp() 331bd4fe43Sopenharmony_ci{ 341bd4fe43Sopenharmony_ci insmod hi3516cv500_isp.ko 351bd4fe43Sopenharmony_ci} 361bd4fe43Sopenharmony_ci 371bd4fe43Sopenharmony_ci 381bd4fe43Sopenharmony_ciinsert_ko() 391bd4fe43Sopenharmony_ci{ 401bd4fe43Sopenharmony_ci # driver load 411bd4fe43Sopenharmony_ci #insmod hi_osal.ko anony=1 mmz_allocator=hisi mmz=anonymous,0,$mmz_start,$mmz_size || report_error 421bd4fe43Sopenharmony_ci insmod hi_osal.ko anony=1 mmz_allocator=hisi mmz=anonymous,0,0xA8000000,384M 431bd4fe43Sopenharmony_ci insmod hi_irq.ko 441bd4fe43Sopenharmony_ci insmod hi_proc.ko 451bd4fe43Sopenharmony_ci 461bd4fe43Sopenharmony_ci # sys config 471bd4fe43Sopenharmony_ci insmod sys_config.ko chip=$CHIP_TYPE sensors=sns0=$SNS_TYPE0,sns1=$SNS_TYPE1, g_cmos_yuv_flag=$YUV_TYPE0 481bd4fe43Sopenharmony_ci insmod hi3516cv500_base.ko 491bd4fe43Sopenharmony_ci insmod hi3516cv500_sys.ko 501bd4fe43Sopenharmony_ci insmod hi3516cv500_tde.ko 511bd4fe43Sopenharmony_ci insmod hi3516cv500_vo_dev.ko 521bd4fe43Sopenharmony_ci insmod hifb.ko video="hifb:vram0_size:16200" # default fb0:1080p 531bd4fe43Sopenharmony_ci insmod hi3516cv500_hdmi.ko 541bd4fe43Sopenharmony_ci 551bd4fe43Sopenharmony_ci insmod hi_mipi_rx.ko 561bd4fe43Sopenharmony_ci} 571bd4fe43Sopenharmony_ci 581bd4fe43Sopenharmony_ciremove_ko() 591bd4fe43Sopenharmony_ci{ 601bd4fe43Sopenharmony_ci rmmod hi_mipi_rx 611bd4fe43Sopenharmony_ci rmmod hifb 621bd4fe43Sopenharmony_ci rmmod hi3516cv500_vo_dev.ko 631bd4fe43Sopenharmony_ci rmmod hi3516cv500_tde 641bd4fe43Sopenharmony_ci rmmod hi3516cv500_hdmi 651bd4fe43Sopenharmony_ci rmmod hi3516cv500_sys 661bd4fe43Sopenharmony_ci rmmod hi3516cv500_base 671bd4fe43Sopenharmony_ci rmmod sys_config 681bd4fe43Sopenharmony_ci 691bd4fe43Sopenharmony_ci rmmod hi_irq.ko 701bd4fe43Sopenharmony_ci rmmod hi_proc.ko 711bd4fe43Sopenharmony_ci rmmod hi_osal 721bd4fe43Sopenharmony_ci rmmod hi_securec.ko 731bd4fe43Sopenharmony_ci} 741bd4fe43Sopenharmony_ci 751bd4fe43Sopenharmony_cisys_restore() 761bd4fe43Sopenharmony_ci{ 771bd4fe43Sopenharmony_ci #################################################### 781bd4fe43Sopenharmony_ci clkcfg_hi3516cv500.sh > /dev/null 791bd4fe43Sopenharmony_ci 801bd4fe43Sopenharmony_ci # system configuration 811bd4fe43Sopenharmony_ci sysctl_hi3516cv500.sh # > /dev/null 821bd4fe43Sopenharmony_ci sns_config; 831bd4fe43Sopenharmony_ci} 841bd4fe43Sopenharmony_ci 851bd4fe43Sopenharmony_ciload_usage() 861bd4fe43Sopenharmony_ci{ 871bd4fe43Sopenharmony_ci echo "Usage: ./load3516dv300 [-option] [sensor0~1]" 881bd4fe43Sopenharmony_ci echo "options:" 891bd4fe43Sopenharmony_ci echo " -i insert modules" 901bd4fe43Sopenharmony_ci echo " -r remove modules" 911bd4fe43Sopenharmony_ci echo " -a remove modules first, then insert modules" 921bd4fe43Sopenharmony_ci echo " -sensor sensor_name config sensor type [default: imx335]" 931bd4fe43Sopenharmony_ci echo " -total mem_size config total mem size [unit: M, default: 512]" 941bd4fe43Sopenharmony_ci echo " -osmem os_mem_size config os mem size [unit: M, default: 128]" 951bd4fe43Sopenharmony_ci echo " -h help information" 961bd4fe43Sopenharmony_ci echo -e "Available sensors: imx327 imx335 os05a imx307" 971bd4fe43Sopenharmony_ci echo -e "for example: ./load3516dv300 -i -sensor0 imx335 -sensor1 imx335\n" 981bd4fe43Sopenharmony_ci} 991bd4fe43Sopenharmony_ci 1001bd4fe43Sopenharmony_cicalc_mmz_info() 1011bd4fe43Sopenharmony_ci{ 1021bd4fe43Sopenharmony_ci mmz_start=`echo "$mem_start $os_mem_size" | 1031bd4fe43Sopenharmony_ci awk 'BEGIN { temp = 0; } 1041bd4fe43Sopenharmony_ci { 1051bd4fe43Sopenharmony_ci temp = $1/1024/1024 + $2; 1061bd4fe43Sopenharmony_ci } 1071bd4fe43Sopenharmony_ci END { printf("0x%x00000\n", temp); }'` 1081bd4fe43Sopenharmony_ci 1091bd4fe43Sopenharmony_ci mmz_size=`echo "$mem_total $os_mem_size" | 1101bd4fe43Sopenharmony_ci awk 'BEGIN { temp = 0; } 1111bd4fe43Sopenharmony_ci { 1121bd4fe43Sopenharmony_ci temp = $1 - $2; 1131bd4fe43Sopenharmony_ci } 1141bd4fe43Sopenharmony_ci END { printf("%dM\n", temp); }'` 1151bd4fe43Sopenharmony_ci echo "mmz_start: $mmz_start, mmz_size: $mmz_size" 1161bd4fe43Sopenharmony_ci} 1171bd4fe43Sopenharmony_ci 1181bd4fe43Sopenharmony_ci######################parse arg################################### 1191bd4fe43Sopenharmony_cib_arg_sensor0=0 1201bd4fe43Sopenharmony_cib_arg_sensor1=0 1211bd4fe43Sopenharmony_cib_arg_yuv_type0=0 1221bd4fe43Sopenharmony_cib_arg_insmod=0 1231bd4fe43Sopenharmony_cib_arg_remove=0 1241bd4fe43Sopenharmony_cib_arg_restore=0 1251bd4fe43Sopenharmony_cib_arg_total_mem=0 1261bd4fe43Sopenharmony_cib_arg_os_mem=0 1271bd4fe43Sopenharmony_ci 1281bd4fe43Sopenharmony_cifor arg in $@ 1291bd4fe43Sopenharmony_cido 1301bd4fe43Sopenharmony_ci if [ $b_arg_sensor0 -eq 1 ] ; then 1311bd4fe43Sopenharmony_ci b_arg_sensor0=0; 1321bd4fe43Sopenharmony_ci SNS_TYPE0=$arg; 1331bd4fe43Sopenharmony_ci fi 1341bd4fe43Sopenharmony_ci if [ $b_arg_sensor1 -eq 1 ] ; then 1351bd4fe43Sopenharmony_ci b_arg_sensor1=0; 1361bd4fe43Sopenharmony_ci SNS_TYPE1=$arg; 1371bd4fe43Sopenharmony_ci fi 1381bd4fe43Sopenharmony_ci if [ $b_arg_total_mem -eq 1 ]; then 1391bd4fe43Sopenharmony_ci b_arg_total_mem=0; 1401bd4fe43Sopenharmony_ci mem_total=$arg; 1411bd4fe43Sopenharmony_ci 1421bd4fe43Sopenharmony_ci if [ -z $mem_total ]; then 1431bd4fe43Sopenharmony_ci echo "[error] mem_total is null" 1441bd4fe43Sopenharmony_ci exit; 1451bd4fe43Sopenharmony_ci fi 1461bd4fe43Sopenharmony_ci fi 1471bd4fe43Sopenharmony_ci 1481bd4fe43Sopenharmony_ci if [ $b_arg_os_mem -eq 1 ] ; then 1491bd4fe43Sopenharmony_ci b_arg_os_mem=0; 1501bd4fe43Sopenharmony_ci os_mem_size=$arg; 1511bd4fe43Sopenharmony_ci 1521bd4fe43Sopenharmony_ci if [ -z $os_mem_size ]; then 1531bd4fe43Sopenharmony_ci echo "[error] os_mem_size is null" 1541bd4fe43Sopenharmony_ci exit; 1551bd4fe43Sopenharmony_ci fi 1561bd4fe43Sopenharmony_ci fi 1571bd4fe43Sopenharmony_ci 1581bd4fe43Sopenharmony_ci if [ $b_arg_yuv_type0 -eq 1 ] ; then 1591bd4fe43Sopenharmony_ci b_arg_yuv_type0=0; 1601bd4fe43Sopenharmony_ci YUV_TYPE0=$arg; 1611bd4fe43Sopenharmony_ci fi 1621bd4fe43Sopenharmony_ci 1631bd4fe43Sopenharmony_ci case $arg in 1641bd4fe43Sopenharmony_ci "-i") 1651bd4fe43Sopenharmony_ci b_arg_insmod=1; 1661bd4fe43Sopenharmony_ci ;; 1671bd4fe43Sopenharmony_ci "-r") 1681bd4fe43Sopenharmony_ci b_arg_remove=1; 1691bd4fe43Sopenharmony_ci ;; 1701bd4fe43Sopenharmony_ci "-a") 1711bd4fe43Sopenharmony_ci b_arg_insmod=1; 1721bd4fe43Sopenharmony_ci b_arg_remove=1; 1731bd4fe43Sopenharmony_ci ;; 1741bd4fe43Sopenharmony_ci "-h") 1751bd4fe43Sopenharmony_ci load_usage; 1761bd4fe43Sopenharmony_ci ;; 1771bd4fe43Sopenharmony_ci "-sensor0") 1781bd4fe43Sopenharmony_ci b_arg_sensor0=1; 1791bd4fe43Sopenharmony_ci ;; 1801bd4fe43Sopenharmony_ci "-sensor") 1811bd4fe43Sopenharmony_ci b_arg_sensor0=1; 1821bd4fe43Sopenharmony_ci ;; 1831bd4fe43Sopenharmony_ci "-sensor1") 1841bd4fe43Sopenharmony_ci b_arg_sensor1=1; 1851bd4fe43Sopenharmony_ci ;; 1861bd4fe43Sopenharmony_ci "-osmem") 1871bd4fe43Sopenharmony_ci b_arg_os_mem=1; 1881bd4fe43Sopenharmony_ci ;; 1891bd4fe43Sopenharmony_ci "-yuv0") 1901bd4fe43Sopenharmony_ci b_arg_yuv_type0=1; 1911bd4fe43Sopenharmony_ci ;; 1921bd4fe43Sopenharmony_ci "-total") 1931bd4fe43Sopenharmony_ci b_arg_total_mem=1; 1941bd4fe43Sopenharmony_ci ;; 1951bd4fe43Sopenharmony_ci "-restore") 1961bd4fe43Sopenharmony_ci b_arg_restore=1; 1971bd4fe43Sopenharmony_ci ;; 1981bd4fe43Sopenharmony_ci esac 1991bd4fe43Sopenharmony_cidone 2001bd4fe43Sopenharmony_ci#######################parse arg end######################## 2011bd4fe43Sopenharmony_ciif [ $os_mem_size -ge $mem_total ] ; then 2021bd4fe43Sopenharmony_ci echo "[err] os_mem[$os_mem_size], over total_mem[$mem_total]" 2031bd4fe43Sopenharmony_ci exit; 2041bd4fe43Sopenharmony_cifi 2051bd4fe43Sopenharmony_ci 2061bd4fe43Sopenharmony_cicalc_mmz_info; 2071bd4fe43Sopenharmony_ci 2081bd4fe43Sopenharmony_ci#######################Action############################### 2091bd4fe43Sopenharmony_ci 2101bd4fe43Sopenharmony_ciif [ $# -lt 1 ]; then 2111bd4fe43Sopenharmony_ci load_usage; 2121bd4fe43Sopenharmony_ci exit 0; 2131bd4fe43Sopenharmony_cifi 2141bd4fe43Sopenharmony_ci 2151bd4fe43Sopenharmony_ci 2161bd4fe43Sopenharmony_ciif [ $b_arg_remove -eq 1 ]; then 2171bd4fe43Sopenharmony_ci remove_ko; 2181bd4fe43Sopenharmony_cifi 2191bd4fe43Sopenharmony_ci 2201bd4fe43Sopenharmony_ciif [ $b_arg_insmod -eq 1 ]; then 2211bd4fe43Sopenharmony_ci insert_ko; 2221bd4fe43Sopenharmony_cifi 2231bd4fe43Sopenharmony_ci 2241bd4fe43Sopenharmony_ciif [ $b_arg_restore -eq 1 ]; then 2251bd4fe43Sopenharmony_ci sys_restore; 2261bd4fe43Sopenharmony_cifi 2271bd4fe43Sopenharmony_ci 228