aboutsummaryrefslogtreecommitdiff
path: root/rootdir/init.qcom.power.rc
diff options
context:
space:
mode:
Diffstat (limited to 'rootdir/init.qcom.power.rc')
-rw-r--r--rootdir/init.qcom.power.rc166
1 files changed, 166 insertions, 0 deletions
diff --git a/rootdir/init.qcom.power.rc b/rootdir/init.qcom.power.rc
new file mode 100644
index 0000000..21035b7
--- /dev/null
+++ b/rootdir/init.qcom.power.rc
@@ -0,0 +1,166 @@
+on boot
+ # add a cpuset for the camera daemon
+ # we want all the little cores for camera
+ mkdir /dev/cpuset/camera-daemon
+ 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 4 for the top app
+ write /dev/cpuset/foreground/cpus 0-3,5-7
+ write /dev/cpuset/foreground/boost/cpus 0-3
+ write /dev/cpuset/background/cpus 4
+ write /dev/cpuset/system-background/cpus 5-7
+ write /dev/cpuset/top-app/cpus 0-7
+ write /dev/cpuset/camera-daemon/cpus 4-7
+
+on enable-low-power
+ # HMP scheduler settings
+ write /proc/sys/kernel/sched_window_stats_policy 3
+ write /proc/sys/kernel/sched_ravg_hist_size 3
+ write /proc/sys/kernel/sched_ravg_window 20000000
+
+ # HMP Task packing settings
+ write /proc/sys/kernel/sched_small_task 20
+ write /sys/devices/system/cpu/cpu0/sched_mostly_idle_load 30
+ write /sys/devices/system/cpu/cpu1/sched_mostly_idle_load 30
+ write /sys/devices/system/cpu/cpu2/sched_mostly_idle_load 30
+ write /sys/devices/system/cpu/cpu3/sched_mostly_idle_load 30
+ write /sys/devices/system/cpu/cpu4/sched_mostly_idle_load 30
+ write /sys/devices/system/cpu/cpu5/sched_mostly_idle_load 30
+ write /sys/devices/system/cpu/cpu6/sched_mostly_idle_load 30
+ write /sys/devices/system/cpu/cpu7/sched_mostly_idle_load 30
+
+ write /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run 3
+ write /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run 3
+ write /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run 3
+ write /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run 3
+ write /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run 3
+ write /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run 3
+ write /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run 3
+ write /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run 3
+
+ write /sys/devices/system/cpu/cpu0/sched_prefer_idle 0
+ write /sys/devices/system/cpu/cpu1/sched_prefer_idle 0
+ write /sys/devices/system/cpu/cpu2/sched_prefer_idle 0
+ write /sys/devices/system/cpu/cpu3/sched_prefer_idle 0
+ write /sys/devices/system/cpu/cpu4/sched_prefer_idle 0
+ write /sys/devices/system/cpu/cpu5/sched_prefer_idle 0
+ write /sys/devices/system/cpu/cpu6/sched_prefer_idle 0
+ write /sys/devices/system/cpu/cpu7/sched_prefer_idle 0
+
+ write /sys/class/devfreq/qcom,mincpubw.53/governor "cpufreq"
+ write /sys/class/devfreq/qcom,cpubw.52/governor "bw_hwmon"
+ write /sys/class/devfreq/qcom,cpubw.52/bw_hwmon/io_percent 20
+ write /sys/class/devfreq/qcom,cpubw.52/bw_hwmon/guard_band_mbps 30
+ write /sys/class/devfreq/qcom,gpubw.39/governor "bw_hwmon"
+ write /sys/class/devfreq/qcom,gpubw.39/bw_hwmon/io_percent 40
+
+ # disable thermal & BCL core_control to update interactive gov settings
+ write /sys/module/msm_thermal/core_control/enabled 0
+ write /sys/devices/soc.0/qcom,bcl.58/mode "disable"
+ write /sys/devices/soc.0/qcom,bcl.58/hotplug_mask 0
+ write /sys/devices/soc.0/qcom,bcl.58/hotplug_soc_mask 0
+ write /sys/devices/soc.0/qcom,bcl.58/mode "enable"
+
+ # enable governor for perf cluster
+ write /sys/devices/system/cpu/cpu0/online 1
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "interactive"
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay "19000 1113600:39000"
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load 85
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate 20000
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq 1113600
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy 0
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads "1 960000:85 1113600:90 1344000:80"
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time 40000
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor 40000
+ write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 960000
+
+ # enable governor for power cluster
+ write /sys/devices/system/cpu/cpu4/online 1
+ write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor "interactive"
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay 39000
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load 90
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate 20000
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq 806400
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy 0
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads "1 800000:90"
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time 40000
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor 40000
+ write /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq 800000
+
+ # re-enable thermal & BCL core_control now
+ write /sys/module/msm_thermal/core_control/enabled 1
+ write /sys/devices/soc.0/qcom,bcl.58/mode "disable"
+ write /sys/devices/soc.0/qcom,bcl.58/hotplug_mask 12
+ write /sys/devices/soc.0/qcom,bcl.58/hotplug_soc_mask 15
+ write /sys/devices/soc.0/qcom,bcl.58/mode "enable"
+
+ # Bring up all cores online
+ write /sys/devices/system/cpu/cpu1/online 1
+ write /sys/devices/system/cpu/cpu2/online 1
+ write /sys/devices/system/cpu/cpu3/online 1
+ write /sys/devices/system/cpu/cpu4/online 1
+ write /sys/devices/system/cpu/cpu5/online 1
+ write /sys/devices/system/cpu/cpu6/online 1
+ write /sys/devices/system/cpu/cpu7/online 1
+
+ # Enable LPM Prediction
+ write /sys/module/lpm_levels/parameters/lpm_prediction 1
+
+ # Enable Low power modes
+ write /sys/module/lpm_levels/parameters/sleep_disabled 0
+
+ # HMP scheduler (big.Little cluster related) settings
+ write /proc/sys/kernel/sched_upmigrate 93
+ write /proc/sys/kernel/sched_downmigrate 83
+
+ # Enable sched guided freq control
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load 1
+ write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif 1
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load 1
+ write /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif 1
+ write /proc/sys/kernel/sched_freq_inc_notify 50000
+ write /proc/sys/kernel/sched_freq_dec_notify 50000
+
+ # Input boost config
+ write /sys/module/cpu_boost/parameters/input_boost_freq 960000
+ write /sys/module/cpu_boost/parameters/input_boost_ms 40
+
+ # Enable core control
+ write /sys/devices/system/cpu/cpu0/core_ctl/min_cpus 0
+ write /sys/devices/system/cpu/cpu0/core_ctl/max_cpus 4
+ write /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres 72
+ write /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres 28
+ write /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms 100
+ write /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster 1
+ write /sys/devices/system/cpu/cpu0/core_ctl/task_thres 4
+
+ # RPS
+ write /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus "f0"
+
+ # Enable dynamic clock gating
+ write /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating 1
+ # Enable timer migration to little cluster
+ write /proc/sys/kernel/power_aware_timer_migration 1
+
+ # Process reclaim
+ write /sys/module/process_reclaim/parameters/enable_process_reclaim 1
+ write /sys/module/process_reclaim/parameters/pressure_min 10
+ write /sys/module/process_reclaim/parameters/per_swap_size 1024
+
+ write /sys/module/process_reclaim/parameters/pressure_max 70
+ write /sys/module/process_reclaim/parameters/swap_opt_eff 30
+
+ rm /data/system/perfd/default_values
+ start perfd
+
+on class_start:late_start
+ trigger enable-low-power
+
+on property:init.svc.recovery=running
+ trigger enable-low-power
+
+on property:dev.bootcomplete=1
+ setprop sys.io.scheduler "bfq"