From a64a64897d4683a87cefe47c05e25494185eb733 Mon Sep 17 00:00:00 2001 From: SamarV-121 Date: Mon, 18 May 2020 11:12:10 +0530 Subject: [PATCH] kunlun2: Import power init scripts from bonito Signed-off-by: SamarV-121 --- device.mk | 3 +- rootdir/Android.mk | 8 ++++ rootdir/etc/init.power.rc | 84 +++++++++++++++++++++++++++++++++++++++ rootdir/etc/init.qcom.rc | 47 ++++++++++++++++++++++ 4 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 rootdir/etc/init.power.rc diff --git a/device.mk b/device.mk index 650f71b..6fe319e 100644 --- a/device.mk +++ b/device.mk @@ -39,7 +39,8 @@ PRODUCT_COPY_FILES += \ # Common init scripts PRODUCT_PACKAGES += \ init.qcom.rc \ - init.safailnet.rc + init.safailnet.rc \ + init.power.rc # Device-specific settings PRODUCT_PACKAGES += \ diff --git a/rootdir/Android.mk b/rootdir/Android.mk index f6d6387..fe31923 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -15,3 +15,11 @@ LOCAL_MODULE_CLASS := ETC LOCAL_SRC_FILES := etc/init.safailnet.rc LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/init include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.power.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.power.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/init +include $(BUILD_PREBUILT) diff --git a/rootdir/etc/init.power.rc b/rootdir/etc/init.power.rc new file mode 100644 index 0000000..ec12f80 --- /dev/null +++ b/rootdir/etc/init.power.rc @@ -0,0 +1,84 @@ +# +# Copyright (C) 2017 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. +# + +on property:sys.boot_completed=1 + # Enable bus-dcvs + write /sys/class/devfreq/soc:qcom,cpubw/governor "bw_hwmon" + write /sys/class/devfreq/soc:qcom,cpubw/polling_interval 50 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/mbps_zones "1144 1720 2086 2929 3879 5931 6881" + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/sample_ms 4 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent 68 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory 20 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length 10 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/down_thres 80 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps 0 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/up_scale 250 + write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/idle_mbps 1600 + + write /sys/class/devfreq/soc:qcom,mincpubw/governor "cpufreq" + + # Enable memlat governor + write /sys/class/devfreq/soc:qcom,memlat-cpu0/governor "mem_latency" + write /sys/class/devfreq/soc:qcom,memlat-cpu0/polling_interval 10 + write /sys/class/devfreq/soc:qcom,memlat-cpu0/mem_latency/ratio_ceil 400 + write /sys/class/devfreq/soc:qcom,memlat-cpu6/governor "mem_latency" + write /sys/class/devfreq/soc:qcom,memlat-cpu6/polling_interval 10 + write /sys/class/devfreq/soc:qcom,memlat-cpu6/mem_latency/ratio_ceil 400 + + write /sys/class/devfreq/soc:qcom,l3-cpu0/governor "mem_latency" + write /sys/class/devfreq/soc:qcom,l3-cpu0/polling_interval 10 + write /sys/class/devfreq/soc:qcom,l3-cpu0/mem_latency/ratio_ceil 400 + write /sys/class/devfreq/soc:qcom,l3-cpu6/governor "mem_latency" + write /sys/class/devfreq/soc:qcom,l3-cpu6/polling_interval 10 + write /sys/class/devfreq/soc:qcom,l3-cpu6/mem_latency/ratio_ceil 400 + + # Limit the min frequency of LC to 576MHz + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 576000 + + # Limit the min frequency of BC to 825MHz + write /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq 825600 + + # Turn on sleep modes. + write /sys/module/lpm_levels/parameters/sleep_disabled 0 + + # Enable idle state listener + write /sys/class/drm/card0/device/idle_encoder_mask 1 + write /sys/class/drm/card0/device/idle_timeout_ms 100 + + # Change l3-cdsp to userspace governor + write /sys/class/devfreq/soc:qcom,l3-cdsp/governor userspace + chown system system /sys/class/devfreq/soc:qcom,l3-cdsp/userspace/set_freq + + # Disable CPU Retention + write /sys/module/lpm_levels/L3/cpu0/ret/idle_enabled N + write /sys/module/lpm_levels/L3/cpu1/ret/idle_enabled N + write /sys/module/lpm_levels/L3/cpu2/ret/idle_enabled N + write /sys/module/lpm_levels/L3/cpu3/ret/idle_enabled N + write /sys/module/lpm_levels/L3/cpu4/ret/idle_enabled N + write /sys/module/lpm_levels/L3/cpu5/ret/idle_enabled N + write /sys/module/lpm_levels/L3/cpu6/ret/idle_enabled N + write /sys/module/lpm_levels/L3/cpu7/ret/idle_enabled N + +# Disable console_suspend to get better logging for kernel crashes +on boot + write /sys/module/printk/parameters/console_suspend N + + #Enable suspend to idle mode to reduce latency during suspend/resume + write /sys/power/mem_sleep "s2idle" + +# If UART is on, enable console_suspend on boot_complete to save power +on property:sys.boot_completed=1 && property:init.svc.console=running + write /sys/module/printk/parameters/console_suspend Y \ No newline at end of file diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc index cc5e752..eb6d801 100644 --- a/rootdir/etc/init.qcom.rc +++ b/rootdir/etc/init.qcom.rc @@ -1,4 +1,48 @@ +on init + # Disable powersaving + write /sys/module/lpm_levels/parameters/sleep_disabled 1 + + # bring back all cores + write /sys/devices/system/cpu/cpu0/online 1 + 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 + + # configure governor settings for little cluster + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor schedutil + write /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us 20000 + + # configure governor settings for big cluster + write /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor schedutil + write /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us 500 + write /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us 20000 + + # set default schedTune value for foreground/top-app + write /dev/stune/foreground/schedtune.prefer_idle 1 + write /dev/stune/top-app/schedtune.boost 10 + write /dev/stune/top-app/schedtune.prefer_idle 1 + + mkdir /dev/cpuset/camera-daemon + write /dev/cpuset/camera-daemon/cpus 0-7 + 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 + + # b/37682684 Enable suspend clock reporting + write /sys/kernel/debug/clk/debug_suspend 1 + + # ZRAM setup + write /sys/block/zram0/comp_algorithm lz4 + write /proc/sys/vm/page-cluster 0 + on late-fs + # Runtime fs tuning write /sys/block/sda/queue/iostats 0 write /sys/block/sda/queue/scheduler cfq write /sys/block/sda/queue/read_ahead_kb 2048 @@ -13,6 +57,9 @@ on property:sys.boot_completed=1 write /sys/block/sda/queue/nr_requests 128 write /sys/block/dm-0/queue/read_ahead_kb 512 write /sys/block/dm-1/queue/read_ahead_kb 512 + + # Setup runtime blkio + # value for group_idle is us write /dev/blkio/blkio.weight 1000 write /dev/blkio/background/blkio.weight 200 write /dev/blkio/blkio.group_idle 2000