summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--device.mk4
-rw-r--r--init.angler.qseecomd.sh1
-rwxr-xr-xinit.angler.rc14
-rwxr-xr-xinit.qcom.devstart.sh4
-rwxr-xr-xinit.qcom.devwait.sh8
-rw-r--r--sepolicy/file_contexts3
-rw-r--r--sepolicy/init-devstart-sh.te15
-rw-r--r--sepolicy/init-devwait-sh.te9
8 files changed, 55 insertions, 3 deletions
diff --git a/device.mk b/device.mk
index 0c0a88e..94a8d55 100644
--- a/device.mk
+++ b/device.mk
@@ -42,7 +42,9 @@ PRODUCT_COPY_FILES += \
device/huawei/angler/ueventd.angler.rc:root/ueventd.angler.rc \
device/huawei/angler/init.recovery.angler.rc:root/init.recovery.angler.rc \
device/huawei/angler/init.angler.power.sh:system/bin/init.angler.power.sh \
- device/huawei/angler/uinput-fpc.kl:system/usr/keylayout/uinput-fpc.kl
+ device/huawei/angler/uinput-fpc.kl:system/usr/keylayout/uinput-fpc.kl \
+ device/huawei/angler/init.qcom.devwait.sh:system/bin/init.qcom.devwait.sh \
+ device/huawei/angler/init.qcom.devstart.sh:system/bin/init.qcom.devstart.sh
ifeq ($(TARGET_USES_CHINOOK_SENSORHUB),true)
PRODUCT_COPY_FILES += \
diff --git a/init.angler.qseecomd.sh b/init.angler.qseecomd.sh
index f126a77..25a477d 100644
--- a/init.angler.qseecomd.sh
+++ b/init.angler.qseecomd.sh
@@ -1,5 +1,6 @@
#!/system/bin/sh
+registered="`getprop sys.listeners.registered`"
while [ "$registered" != "true" ]
do
sleep 0.1
diff --git a/init.angler.rc b/init.angler.rc
index 0d6bdd8..afa73e0 100755
--- a/init.angler.rc
+++ b/init.angler.rc
@@ -60,6 +60,9 @@ on early-boot
# Update dm-verity state and set partition.*.verified properties
verity_update_state
+ # Busy loop to wait for devices booted by devstart_sh just in case device not ready
+ exec - root root system -- /system/bin/init.qcom.devwait.sh
+
on boot
# execute script to set initial CPU settings
# don't run as a service to avoid race conditions
@@ -150,7 +153,10 @@ on post-fs
symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice
start qseecomd
+ # Busy loop to wait for qseecomd started
exec - root root system -- /system/bin/init.angler.qseecomd.sh
+ # Start devices by sysfs trigger
+ start devstart_sh
on post-fs-data
# boot time fs tune
@@ -163,8 +169,6 @@ on post-fs-data
write /sys/block/dm-1/queue/read_ahead_kb 2048
write /sys/block/dm-2/queue/read_ahead_kb 2048
- write /sys/kernel/boot_adsp/boot 1
-
# Ecc_Handler qcril.db
mkdir /data/misc/radio 0770 system radio
@@ -499,3 +503,9 @@ service diag_test_server /vendor/bin/diag_test_server
on property:ro.boot.mode=hw-factory
start diag_test_server
+service devstart_sh /system/bin/init.qcom.devstart.sh
+ class main
+ user root
+ group root system
+ disabled
+ oneshot
diff --git a/init.qcom.devstart.sh b/init.qcom.devstart.sh
new file mode 100755
index 0000000..8e8cff5
--- /dev/null
+++ b/init.qcom.devstart.sh
@@ -0,0 +1,4 @@
+#!/system/bin/sh
+
+echo 1 > /sys/kernel/boot_adsp/boot
+setprop sys.qcom.devup 1
diff --git a/init.qcom.devwait.sh b/init.qcom.devwait.sh
new file mode 100755
index 0000000..aeee1d4
--- /dev/null
+++ b/init.qcom.devwait.sh
@@ -0,0 +1,8 @@
+#!/system/bin/sh
+
+up="`getprop sys.qcom.devup`"
+while [ "$up" != "1" ]
+do
+ sleep 0.1
+ up="`getprop sys.qcom.devup`"
+done
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index cee6202..bf39d52 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -79,6 +79,7 @@
/persist/sensors(/.*)? u:object_r:persist_sensors_file:s0
/sys/bus/msm_subsys(/.*)? u:object_r:sysfs_msm_subsys:s0
+/sys/kernel/boot_adsp/boot u:object_r:sysfs_msm_subsys:s0
/sys/devices/bt_bcm4358\.[0-9]+/rfkill/rfkill0/state u:object_r:sysfs_bluetooth_writable:s0
/sys/devices/soc\.0/\w+\.qcom,\w+/subsys[0-9]/restart_level u:object_r:sysfs_msm_subsys_toggle:s0
/sys/devices/soc\.0/fd900000\.qcom,mdss_mdp/qcom,mdss_fb_primary\.[0-9]+/leds(/.*)? u:object_r:sysfs_led:s0
@@ -126,6 +127,8 @@
/vendor/bin/ims_rtp_daemon u:object_r:ims_exec:s0
/system/bin/init\.angler\.power\.sh u:object_r:init-power-sh_exec:s0
/system/bin/init\.angler\.qseecomd\.sh u:object_r:init-angler-qseecomd-sh_exec:s0
+/system/bin/init\.qcom\.devstart\.sh u:object_r:init-qcom-devstart-sh_exec:s0
+/system/bin/init\.qcom\.devwait\.sh u:object_r:init-qcom-devwait-sh_exec:s0
/system/bin/init\.mcfg\.sh u:object_r:init-mcfg-sh_exec:s0
/vendor/bin/irsc_util u:object_r:irsc_util_exec:s0
/vendor/bin/loc_launcher u:object_r:location_exec:s0
diff --git a/sepolicy/init-devstart-sh.te b/sepolicy/init-devstart-sh.te
new file mode 100644
index 0000000..24004d2
--- /dev/null
+++ b/sepolicy/init-devstart-sh.te
@@ -0,0 +1,15 @@
+type init-qcom-devstart-sh, domain;
+type init-qcom-devstart-sh_exec, exec_type, file_type;
+
+init_daemon_domain(init-qcom-devstart-sh)
+
+allow init-qcom-devstart-sh shell_exec:file rx_file_perms;
+
+# execute toybox/toolbox
+allow init-qcom-devstart-sh toolbox_exec:file rx_file_perms;
+
+# Set the sys.qcom.devup property
+set_prop(init-qcom-devstart-sh, system_prop)
+
+# Set boot_adsp and boot_slpi to 1
+allow init-qcom-devstart-sh sysfs_msm_subsys:file w_file_perms;
diff --git a/sepolicy/init-devwait-sh.te b/sepolicy/init-devwait-sh.te
new file mode 100644
index 0000000..1529536
--- /dev/null
+++ b/sepolicy/init-devwait-sh.te
@@ -0,0 +1,9 @@
+type init-qcom-devwait-sh, domain;
+type init-qcom-devwait-sh_exec, exec_type, file_type;
+
+init_daemon_domain(init-qcom-devwait-sh)
+
+allow init-qcom-devwait-sh shell_exec:file rx_file_perms;
+
+# execute toybox/toolbox
+allow init-qcom-devwait-sh toolbox_exec:file rx_file_perms;