1#
2# Copyright (C) 2017 The Android Open-Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17on property:sys.boot_completed=1
18    # Enable bus-dcvs
19    write /sys/class/devfreq/soc:qcom,cpubw/governor "bw_hwmon"
20    write /sys/class/devfreq/soc:qcom,cpubw/polling_interval 50
21    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/mbps_zones "2288 4577 6500 8132 9155 10681"
22    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/sample_ms 4
23    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent 40
24    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory 20
25    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length 10
26    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps 0
27    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/up_scale 250
28    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/idle_mbps 1600
29
30    write /sys/class/devfreq/soc:qcom,llccbw/governor "bw_hwmon"
31    write /sys/class/devfreq/soc:qcom,llccbw/polling_interval 50
32    write /sys/class/devfreq/soc:qcom,llccbw/bw_hwmon/mbps_zones "1720 2929 3879 5931 6881"
33    write /sys/class/devfreq/soc:qcom,llccbw/bw_hwmon/sample_ms 4
34    write /sys/class/devfreq/soc:qcom,llccbw/bw_hwmon/io_percent 80
35    write /sys/class/devfreq/soc:qcom,llccbw/bw_hwmon/hist_memory 20
36    write /sys/class/devfreq/soc:qcom,llccbw/bw_hwmon/hyst_length 10
37    write /sys/class/devfreq/soc:qcom,llccbw/bw_hwmon/guard_band_mbps 0
38    write /sys/class/devfreq/soc:qcom,llccbw/bw_hwmon/up_scale 250
39    write /sys/class/devfreq/soc:qcom,llccbw/bw_hwmon/idle_mbps 1600
40
41    write /sys/class/devfreq/soc:qcom,mincpubw/governor "cpufreq"
42
43    # Enable memlat governor
44    write /sys/class/devfreq/soc:qcom,memlat-cpu0/governor "mem_latency"
45    write /sys/class/devfreq/soc:qcom,memlat-cpu0/polling_interval 10
46    write /sys/class/devfreq/soc:qcom,memlat-cpu0/mem_latency/ratio_ceil 400
47    write /sys/class/devfreq/soc:qcom,memlat-cpu4/governor "mem_latency"
48    write /sys/class/devfreq/soc:qcom,memlat-cpu4/polling_interval 10
49    write /sys/class/devfreq/soc:qcom,memlat-cpu4/mem_latency/ratio_ceil 400
50
51    write /sys/class/devfreq/soc:qcom,l3-cpu0/governor "mem_latency"
52    write /sys/class/devfreq/soc:qcom,l3-cpu0/polling_interval 10
53    write /sys/class/devfreq/soc:qcom,l3-cpu0/mem_latency/ratio_ceil 400
54    write /sys/class/devfreq/soc:qcom,l3-cpu4/governor "mem_latency"
55    write /sys/class/devfreq/soc:qcom,l3-cpu4/polling_interval 10
56    write /sys/class/devfreq/soc:qcom,l3-cpu4/mem_latency/ratio_ceil 4000
57
58    # Turn on sleep modes.
59    write /sys/module/lpm_levels/parameters/sleep_disabled 0
60
61    # Enable idle state listener
62    write /sys/class/drm/card0/device/idle_encoder_mask 1
63    write /sys/class/drm/card0/device/idle_timeout_ms 100
64
65    # Change l3-cdsp to userspace governor
66    write /sys/class/devfreq/soc:qcom,l3-cdsp/governor userspace
67    chown system system /sys/class/devfreq/soc:qcom,l3-cdsp/userspace/set_freq
68
69# Disable console_suspend to get better logging for kernel crashes
70on boot
71    write /sys/module/printk/parameters/console_suspend N
72
73    #Enable suspend to idle mode to reduce latency during suspend/resume
74    write /sys/power/mem_sleep "s2idle"
75
76# If UART is on, enable console_suspend on boot_complete to save power
77on property:sys.boot_completed=1 && property:init.svc.console=running
78    write /sys/module/printk/parameters/console_suspend Y
79