diff options
author | Aaron Ding <aaronding@google.com> | 2021-05-19 13:18:49 +0800 |
---|---|---|
committer | Aaron Ding <aaronding@google.com> | 2021-05-19 13:35:26 +0800 |
commit | bb4beafe47aa8c97eaa5f4fb25a91ca0a798ddf4 (patch) | |
tree | 5adf562502cae6ba76ba78597f4479d11030be42 /init.insmod.sh | |
parent | 4414b92594727edb13a402d6ea1d860c07b3b8b0 (diff) | |
download | gs201-bb4beafe47aa8c97eaa5f4fb25a91ca0a798ddf4.tar.gz |
Create gs201 device folder baseline
clone from gs101 sha 9d1c97c2
Bug: 183183095
Change-Id: Ie7112bdf0aceb33c9e1956aa52e961b670582733
Diffstat (limited to 'init.insmod.sh')
-rwxr-xr-x | init.insmod.sh | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/init.insmod.sh b/init.insmod.sh new file mode 100755 index 0000000..a49fae5 --- /dev/null +++ b/init.insmod.sh @@ -0,0 +1,69 @@ +#!/vendor/bin/sh + +############################################################# +### init.insmod.cfg format: ### +### ----------------------------------------------------- ### +### [insmod|setprop|enable/moprobe|wait] [path|prop name] ### +### ... ### +############################################################# + +modules_dir= + +for f in /vendor/lib/modules/*/modules.dep /vendor/lib/modules/modules.dep; do + if [[ -f "$f" ]]; then + modules_dir="$(dirname "$f")" + break + fi +done + +if [[ -z "${modules_dir}" ]]; then + echo "Unable to locate kernel modules directory" 2>&1 + exit 1 +fi + +# imitates wait_for_file() in init +wait_for_file() +{ + filename="${1}" + timeout="${2:-5}" + + expiry=$(($(date "+%s")+timeout)) + while [[ ! -e "${filename}" ]] && [[ "$(date "+%s")" -le "${expiry}" ]] + do + sleep 0.01 + done +} + +install_display_drivers() +{ + panel_drv=`getprop ro.boot.primary_panel_drv` + if [[ -z "$panel_drv" ]]; then + panel_drv="panel-samsung-emul" + fi + modprobe -d "${modules_dir}" exynos-drm.ko + modprobe -d "${modules_dir}" $panel_drv.ko +} + +if [ $# -eq 1 ]; then + cfg_file=$1 +else + # Set property even if there is no insmod config + # to unblock early-boot trigger + setprop vendor.common.modules.ready + setprop vendor.device.modules.ready + exit 1 +fi + +if [ -f $cfg_file ]; then + while IFS="|" read -r action arg + do + case $action in + "insmod") insmod $arg ;; + "setprop") setprop $arg 1 ;; + "enable") echo 1 > $arg ;; + "modprobe") modprobe -a -d "${modules_dir}" $arg ;; + "wait") wait_for_file $arg ;; + "install_display_drivers") install_display_drivers ;; + esac + done < $cfg_file +fi |