#
# Copyright 2015 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import init.angler.usb.rc
import init.angler.diag.rc
import init.angler.sensorhub.rc
on early-init
mount debugfs debugfs /sys/kernel/debug
chown system system /sys/kernel/debug/kgsl/proc
on init
# Load persistent dm-verity state
verity_load_state
# Set permissions for persist partition
mkdir /persist 0771 system system
mkdir /firmware 0771 system system
symlink /sdcard /storage/sdcard0
# Setup zram options
write /sys/block/zram0/comp_algorithm lz4
write /sys/block/zram0/max_comp_streams 4
write /proc/sys/vm/page-cluster 0
on fs
mount_all ./fstab.angler
swapon_all ./fstab.angler
restorecon_recursive /persist
mkdir /persist/data/sfs 0700 system system
mkdir /persist/data/tz 0700 system system
# Enable rmnet data and aggregation
setprop persist.rmnet.mux enabled
setprop persist.rmnet.data.enable true
setprop persist.data.wda.enable true
setprop persist.data.df.agg.dl_pkt 10
setprop persist.data.df.agg.dl_size 4096
on early-boot
# set RLIMIT_MEMLOCK to 64MB
setrlimit 8 67108864 67108864
# Update dm-verity state and set partition.*.verified properties
verity_update_state
on boot
# execute script to set initial CPU settings
# don't run as a service to avoid race conditions
exec - root system -- /system/bin/init.angler.power.sh
# Enable DEBUG_SUSPEND, DEBUG_EXIT_SUSPEND, and DEBUG_WAKEUP
write /sys/module/wakelock/parameters/debug_mask 7
# add a cpuset for the camera daemon
# we want all the little cores for camera
mkdir /dev/cpuset/camera-daemon
write /dev/cpuset/camera-daemon/cpus 0
write /dev/cpuset/camera-daemon/mems 0
chown system system /dev/cpuset/camera-daemon
chown system system /dev/cpuset/camera-daemon/tasks
chmod 0664 /dev/cpuset/camera-daemon/tasks
# update foreground cpuset now that processors are up
# reserve CPU 3 for the top app and camera daemon
write /dev/cpuset/foreground/cpus 0-2,4-7
write /dev/cpuset/foreground/boost/cpus 4-7
write /dev/cpuset/background/cpus 0
write /dev/cpuset/system-background/cpus 0-2
write /dev/cpuset/top-app/cpus 0-7
write /dev/cpuset/camera-daemon/cpus 0-3
# setup permissions for fb0 related nodes
chown radio radio /sys/class/graphics/fb0/dynamic_dsitiming
# create symlink for fb1 as HDMI
symlink /dev/graphics/fb1 /dev/graphics/hdmi
# setup permissions for fb1 related nodes
chown system graphics /sys/class/graphics/fb1/hpd
chown system graphics /sys/class/graphics/fb1/vendor_name
chown system graphics /sys/class/graphics/fb1/product_description
chmod 0664 /sys/devices/virtual/graphics/fb1/hpd
chmod 0664 /sys/devices/virtual/graphics/fb1/vendor_name
chmod 0664 /sys/devices/virtual/graphics/fb1/product_description
#Create QMUX deamon socket
mkdir /dev/socket/qmux_radio 0770 radio radio
chmod 2770 /dev/socket/qmux_radio
mkdir /dev/socket/qmux_audio 0770 media audio
chmod 2770 /dev/socket/qmux_audio
mkdir /dev/socket/qmux_gps 0770 gps gps
chmod 2770 /dev/socket/qmux_gps
setprop wifi.interface wlan0
#wifi sar
chown radio radio /sys/module/wifi_sar/parameters/wifi_tx_power_limit
#compass compensation
chown root system /sys/class/power_supply/battery/compass_compensation
write /sys/bus/platform/drivers/xhci_msm_hsic/unbind msm_hsic_host
write /sys/module/rmnet_usb/parameters/mux_enabled 1
write /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links 8
write /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev 17
write /sys/module/rmnet_usb/parameters/rmnet_data_init 1
chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait
# Assign TCP buffer thresholds to be ceiling value of technology maximums
# Increased technology maximums should be reflected here.
write /proc/sys/net/core/rmem_max 8388608
write /proc/sys/net/core/wmem_max 8388608
# Leds
chown system system /sys/class/leds/red/on_off_ms
chown system system /sys/class/leds/green/on_off_ms
chown system system /sys/class/leds/blue/on_off_ms
chown system system /sys/class/leds/red/rgb_start
# GPU Tuning
chown root system /sys/class/kgsl/kgsl-3d0/dispatch/inflight
chmod 0660 /sys/class/kgsl/kgsl-3d0/dispatch/inflight
chown root system /sys/class/kgsl/kgsl-3d0/dispatch/inflight_low_latency
chmod 0660 /sys/class/kgsl/kgsl-3d0/dispatch/inflight_low_latency
write /sys/block/mmcblk0/queue/rq_affinity 0
write /sys/block/mmcblk0/queue/scheduler noop
on property:init.svc.per_mgr=running
start per_proxy
on property:sys.shutdown.requested=*
stop per_proxy
on post-fs
symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice
start qseecomd
exec - root root system -- /system/bin/init.angler.qseecomd.sh
on post-fs-data
write /sys/kernel/boot_adsp/boot 1
# Ecc_Handler qcril.db
mkdir /data/misc/radio 0770 system radio
setprop vold.post_fs_data_done 1
mkdir /data/misc/qsee 0770 system system
mkdir /data/fpc 0700 system system
#Create folder for mm-qcamera-daemon
mkdir /data/misc/camera 0770 camera camera
#Create folder for display calibration data
mkdir /data/misc/display 0770 system graphics
# Create /data/time folder for time-services
mkdir /data/time/ 0700 system system
mkdir /data/audio/ 0770 media audio
# Create folder for perf daemon
mkdir /data/misc/perfd 0755 root system
chmod 2755 /data/misc/perfd
mkdir /data/system/perfd 0770 root system
rm /data/system/perfd/default_values
chmod 2770 /data/system/perfd
setprop ro.min_freq_0 384000
setprop ro.min_freq_4 384000
# Create the directories used by CnE subsystem
mkdir /data/connectivity 0771 system system
chown system system /data/connectivity
#Create directory from IMS services
mkdir /data/shared 0755
chown system system /data/shared
# Mark the copy complete flag to not completed
write /data/misc/radio/copy_complete 0
chown radio radio /data/misc/radio/copy_complete
chmod 0660 /data/misc/radio/copy_complete
# Configure bluetooth
chmod 0660 /proc/bluetooth/sleep/lpm
chmod 0660 /proc/bluetooth/sleep/btwrite
chmod 0660 /sys/class/rfkill/rfkill0/state
chmod 0660 /dev/ttyHS0
chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm
chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite
chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state
chown bluetooth net_bt_stack /dev/ttyHS0
# Create nfc local data
mkdir /data/nfc 0770 nfc nfc
#modify access for speaker calibdata
chown system system /persist/audio/speaker_calibdata.bin
chmod 0444 /persist/audio/speaker_calibdata.bin
#modify access for laser calibration data
chmod 0710 /persist/data
chmod 0440 /persist/data/st_offset
chmod 0440 /persist/data/st_xtalk
chown system system /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
chmod 0660 /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
chown system system /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
chmod 0660 /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
chown system system /sys/class/devfreq/qcom,gpubw.70/min_freq
chmod 0660 /sys/class/devfreq/qcom,gpubw.70/min_freq
chown system system /sys/devices/system/cpu/cpu4/online
chmod 0660 /sys/devices/system/cpu/cpu4/online
chown system system /sys/devices/system/cpu/cpu5/online
chmod 0660 /sys/devices/system/cpu/cpu5/online
chown system system /sys/devices/system/cpu/cpu6/online
chmod 0660 /sys/devices/system/cpu/cpu6/online
chown system system /sys/devices/system/cpu/cpu7/online
chmod 0660 /sys/devices/system/cpu/cpu7/online
on charger
#set cpu4,5 online first, or they can't get into low power consumption mode
write /sys/devices/system/cpu/cpu4/online 1
write /sys/devices/system/cpu/cpu5/online 1
#low power governing
write /sys/devices/soc.0/qcom,bcl.60/mode disable
write /sys/devices/soc.0/qcom,bcl.60/hotplug_mask 0
write /sys/devices/soc.0/qcom,bcl.60/hotplug_soc_mask 0
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive
write /sys/devices/system/cpu/cpu1/online 0
write /sys/devices/system/cpu/cpu2/online 0
write /sys/devices/system/cpu/cpu3/online 0
write /sys/devices/system/cpu/cpu4/online 0
write /sys/devices/system/cpu/cpu5/online 0
write /sys/devices/system/cpu/cpu6/online 0
write /sys/devices/system/cpu/cpu7/online 0
on property:sys.boot_completed=1
#allow CPUs to go in deeper idle state than C0
write /sys/module/lpm_levels/parameters/sleep_disabled 0
# Search the laser device under /dev/input, then create symlink
service InputEventFind /vendor/bin/InputEventFind
class main
oneshot
service ssr_setup /system/bin/ssr_setup
oneshot
disabled
service ss_ramdump /system/bin/subsystem_ramdump
class main
user system
group system
disabled
on property:persist.sys.ssr.restart_level=*
start ssr_setup
on property:persist.sys.ssr.enable_ramdumps=1
write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
start ss_ramdump
on property:persist.sys.ssr.enable_ramdumps=0
write /sys/module/subsystem_restart/parameters/enable_ramdumps 0
service charger /sbin/healthd -c
class charger
group log
seclabel u:r:healthd:s0
writepid /dev/cpuset/system-background/tasks
service per_mgr /vendor/bin/pm-service
class core
user root
group system net_raw
writepid /dev/cpuset/system-background/tasks
service per_proxy /vendor/bin/pm-proxy
class core
user root
group system net_raw
writepid /dev/cpuset/system-background/tasks
disabled
service rmt_storage /vendor/bin/rmt_storage
class core
user root
group system wakelock
writepid /dev/cpuset/system-background/tasks
service qseecomd /vendor/bin/qseecomd
class core
user root
group root
writepid /dev/cpuset/system-background/tasks
service irsc_util /vendor/bin/irsc_util "/vendor/etc/sec_config"
class main
user root
oneshot
service thermal-engine /vendor/bin/thermal-engine
class main
user root
socket thermal-send-client stream 0660 system system
socket thermal-recv-client stream 0660 system system
socket thermal-recv-passive-client stream 0660 system system
group root radio system
writepid /dev/cpuset/system-background/tasks
# QMUX must be in multiple groups to support external process connections
service qmuxd /vendor/bin/qmuxd
class main
user radio
group radio audio bluetooth wakelock gps
writepid /dev/cpuset/system-background/tasks
service perfd /vendor/bin/perfd
class main
user root
group system
writepid /dev/cpuset/system-background/tasks
service netmgrd /vendor/bin/netmgrd
class main
group radio system wakelock
writepid /dev/cpuset/system-background/tasks
service qti /vendor/bin/qti
class main
user radio
group radio net_raw usb net_admin
writepid /dev/cpuset/system-background/tasks
service time_daemon /vendor/bin/time_daemon
class late_start
user root
group root
writepid /dev/cpuset/system-background/tasks
service loc_launcher /vendor/bin/loc_launcher
class late_start
group gps inet net_raw net_admin wifi
writepid /dev/cpuset/system-background/tasks
# bugreport is triggered by holding down volume down, volume up and power
service bugreport /system/bin/dumpstate -d -p -B -z \
-o /data/user_de/0/com.android.shell/files/bugreports/bugreport
class main
disabled
oneshot
keycodes 114 115 116
# start camera server as daemon
service qcamerasvr /vendor/bin/mm-qcamera-daemon
class late_start
user camera
group camera system inet input graphics
writepid /dev/cpuset/camera-daemon/tasks
service fingerprintd /system/bin/fingerprintd
class late_start
user system
group input
writepid /dev/cpuset/system-background/tasks
service p2p_supplicant /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/system/etc/wifi/p2p_supplicant_overlay.conf \
-O/data/misc/wifi/sockets \
-m/data/misc/wifi/p2p_supplicant.conf \
-puse_p2p_group_interface=1p2p_device=1 \
-e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
service wpa_supplicant /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/system/etc/wifi/wpa_supplicant_overlay.conf \
-e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
service imsqmidaemon /system/bin/imsqmidaemon
class main
user system
socket ims_qmid stream 0660 system radio
group radio net_raw log diag
writepid /dev/cpuset/system-background/tasks
service imsdatadaemon /system/bin/imsdatadaemon
class main
user system
socket ims_datad stream 0660 system radio
group system wifi radio inet net_raw log diag net_admin
writepid /dev/cpuset/system-background/tasks
disabled
on property:sys.ims.QMI_DAEMON_STATUS=1
start imsdatadaemon
service imscmservice /system/bin/imscmservice
class main
user system
group radio net_raw diag diag log
writepid /dev/cpuset/system-background/tasks
service cnd /vendor/bin/cnd
class late_start
socket cnd stream 660 root inet
group root wakelock
writepid /dev/cpuset/system-background/tasks
on property:ro.boot.hardware.revision=ANGLER-V1
write /sys/module/bcmdhd/parameters/nvram_path \
/system/etc/wifi/bcmdhd-pme.cal
on property:ro.boot.hardware.revision=ANGLER-V2
write /sys/module/bcmdhd/parameters/nvram_path \
/system/etc/wifi/bcmdhd-pme.cal
on property:ro.boot.wifi_cal=2
write /sys/module/bcmdhd/parameters/nvram_path \
/system/etc/wifi/bcmdhd-low.cal
on property:ro.boot.wifi_cal=3
write /sys/module/bcmdhd/parameters/nvram_path \
/system/etc/wifi/bcmdhd-high.cal
on property:ro.boot.hardware.sku=H1511
setprop ro.boot.wificountrycode US
service mcfg-sh /system/bin/init.mcfg.sh
class late_start
user radio
group radio system
oneshot
service oem_qmi_server /vendor/bin/oem_qmi_server
class main
user root
group system radio
service msm_irqbalance /vendor/bin/msm_irqbalance -f /vendor/etc/msm_irqbalance.conf
socket msm_irqbalance seqpacket 660 root system
class core
user root
group root
writepid /dev/cpuset/system-background/tasks
#start atfwd as daemon
service atfwd /vendor/bin/ATFWD-daemon
class late_start
user system
group system radio
service ppd /system/bin/mm-pp-daemon
class late_start
user system
socket pps stream 0660 system system
group system graphics
on property:init.svc.surfaceflinger=stopped
stop ppd
service diag_test_server /vendor/bin/diag_test_server
class core
user root
disabled
on property:ro.boot.mode=hw-factory
start diag_test_server