#!/bin/sh

# SPDX-FileCopyrightText: 2019-2021 Unisoc (Shanghai) Technologies Co., Ltd.
#
# SPDX-License-Identifier: LicenseRef-Unisoc-General-1.0

# Start all init scripts in /etc/rcS.d and /etc/rc5.d
# executing them in numerical order.
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

dev=`ls /sbin | grep mdev`

#       Make sure proc is mounted
#
[ -d "/proc/1" ] || mount /proc

found=0


if [ -f /run/uni-mode ]; then
     let found=`grep "sprdboot.mode=cali" /run/uni-mode -o | wc -l`
else
     let found=`grep "sprdboot.mode=cali" /proc/cmdline -o | wc -l`
fi

if [ $found -ne 0 ]; then

    ##engpc, modem_control,cp_disk
    if [ "$dev" == "mdev" ];then
        /bin/sh /etc/init.d/mdev
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
    else
        /bin/sh /etc/init.d/sysfs.sh
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
        /bin/sh /etc/init.d/udev start
    fi
    /bin/sh /etc/init.d/syslog start
    /bin/sh /etc/init.d/engpc-init start
    #/bin/sh /etc/init.d/cp_diskserver-init
    #/bin/sh /etc/init.d/modem_control-init start
    /bin/sh /etc/default/uni-mode/calibrator-mode.sh
    exit 0

fi


if [ -f /run/uni-mode ]; then
     let found=`grep "sprdboot.mode=autotest" /run/uni-mode -o | wc -l`
else
     let found=`grep "sprdboot.mode=autotest" /proc/cmdline -o | wc -l`
fi

if [ $found -ne 0 ]; then

    ##engpc, modem_control,cp_disk
    if [ "$dev" == "mdev" ];then
        /bin/sh /etc/init.d/mdev
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
    else
        /bin/sh /etc/init.d/sysfs.sh
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
        /bin/sh /etc/init.d/udev start
    fi
    /bin/sh /etc/init.d/syslog start
    /bin/sh /etc/init.d/engpc-init start
    #/bin/sh /etc/init.d/cp_diskserver-init
    #/bin/sh /etc/init.d/modem_control-init start
    /bin/sh /etc/default/uni-mode/auto-test-mode.sh
    exit 0
fi


if [ -f /run/uni-mode ]; then
     let found=`grep "sprdboot.mode=factorytest" /run/uni-mode -o | wc -l`
else
     let found=`grep "sprdboot.mode=factorytest" /proc/cmdline -o | wc -l`
fi

if [ $found -ne 0 ]; then

    ##factorytest
    if [ "$dev" == "mdev" ];then
        /bin/sh /etc/init.d/mdev
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
    else
        /bin/sh /etc/init.d/sysfs.sh
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
        /bin/sh /etc/init.d/udev start
    fi
    /bin/sh /etc/init.d/syslog start
    /bin/sh /etc/init.d/camera.sh
    ./usr/bin/audiohaltest &
   # /bin/sh /etc/init.d/cp_diskserver-init start
    /bin/sh /etc/init.d/adbd-init start
   # /bin/sh /etc/init.d/modem_control-init start
    /bin/sh /etc/init.d/nativemmi-init start
    /bin/sh /etc/default/uni-mode/factory-test-mode.sh
    exit 0

fi


if [ -f /run/uni-mode ]; then
     let found=`grep "sprdboot.mode=charger" /run/uni-mode -o | wc -l`
else
     let found=`grep "sprdboot.mode=charger" /proc/cmdline -o | wc -l`
fi

if [ $found -ne 0 ]; then

    ##charge
    if [ "$dev" == "mdev" ];then
        /bin/sh /etc/init.d/mdev
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
    else
        /bin/sh /etc/init.d/sysfs.sh
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
        /bin/sh /etc/init.d/udev start
    fi
    /bin/sh /etc/init.d/modutils.sh
    /bin/sh /etc/init.d/populate-volatile.sh start
    /bin/sh /etc/init.d/dbus-1 start
    /bin/sh /etc/init.d/charge-init start
    /bin/sh /etc/init.d/thermald-init.sh start
    /bin/sh /etc/default/uni-mode/power-off-charge-mode.sh
    exit 0

fi


if [ -f /run/uni-mode ]; then
     let found=`grep "update_recovery=1" /run/uni-mode -o | wc -l`
else
     let found=`grep "update_recovery=1" /proc/cmdline -o | wc -l`
fi

if [ $found -ne 0 ]; then

    echo "Enter update recovery!!!"
    if [ "$dev" == "mdev" ];then
        /bin/sh /etc/init.d/mdev
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
    else
        /bin/sh /etc/init.d/sysfs.sh
        /bin/sh /etc/init.d/mount_emmc.sh
        /bin/sh /etc/init.d/mountall.sh
        /bin/sh /etc/init.d/mount_sd.sh
        /bin/sh /etc/init.d/udev start
    fi
    /bin/sh /etc/init.d/hostname.sh
    /bin/sh /etc/init.d/populate-volatile.sh
    /bin/sh /etc/init.d/udc.sh
#    /bin/sh /etc/init.d/networking start
#    /bin/sh /etc/init.d/ofono start
    /bin/sh /etc/init.d/adbd-init start
    exit 0
fi

for i in /etc/rcS.d/S??* /etc/rc5.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
	*.sh)
	    # Source shell script for speed.
	    (
		trap - INT QUIT TSTP
		set start
		. $i
	    )
	    ;;
	*)
	    # No sh extension, so fork subprocess.
	    $i start
	    ;;
    esac
done

