1#!/system/bin/sh 2 3################################################################################ 4# helper functions to allow Android init like script 5 6function write() { 7 echo -n $2 > $1 8} 9 10function copy() { 11 cat $1 > $2 12} 13 14function get-set-forall() { 15 for f in $1 ; do 16 cat $f 17 write $f $2 18 done 19} 20 21################################################################################ 22 23# disable thermal bcl hotplug to switch governor 24write /sys/module/msm_thermal/core_control/enabled 0 25get-set-forall /sys/devices/soc.0/qcom,bcl.*/mode disable 26bcl_hotplug_mask=`get-set-forall /sys/devices/soc.0/qcom,bcl.*/hotplug_mask 0` 27bcl_hotplug_soc_mask=`get-set-forall /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask 0` 28get-set-forall /sys/devices/soc.0/qcom,bcl.*/mode enable 29 30# some files in /sys/devices/system/cpu are created after the restorecon of 31# /sys/. These files receive the default label "sysfs". 32# Restorecon again to give new files the correct label. 33restorecon -R /sys/devices/system/cpu 34 35# ensure at most one A57 is online when thermal hotplug is disabled 36write /sys/devices/system/cpu/cpu5/online 0 37write /sys/devices/system/cpu/cpu6/online 0 38write /sys/devices/system/cpu/cpu7/online 0 39 40# Best effort limiting for first time boot if msm_performance module is absent 41write /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq 960000 42 43# Limit A57 max freq from msm_perf module in case CPU 4 is offline 44write /sys/module/msm_performance/parameters/cpu_max_freq "4:960000 5:960000 6:960000 7:960000" 45 46# configure governor settings for little cluster 47write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive 48restorecon -R /sys/devices/system/cpu # must restore after interactive 49write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load 1 50write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif 1 51write /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay 19000 52write /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load 99 53write /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate 19000 54write /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq 960000 55write /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy 1 56write /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads "65 460000:75 960000:80" 57write /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time 40000 58write /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis 80000 59write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 384000 60 61# online CPU4 62write /sys/devices/system/cpu/cpu4/online 1 63 64# configure governor settings for big cluster 65write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor interactive 66restorecon -R /sys/devices/system/cpu # must restore after interactive 67write /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load 1 68write /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif 1 69write /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay 19000 70write /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load 99 71write /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate 19000 72write /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq 1248000 73write /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy 1 74write /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads "70 960000:80 1248000:85" 75write /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time 40000 76write /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis 80000 77write /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq 633600 78 79# restore A57's max 80copy /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq 81 82# plugin remaining A57s 83write /sys/devices/system/cpu/cpu5/online 1 84write /sys/devices/system/cpu/cpu6/online 1 85write /sys/devices/system/cpu/cpu7/online 1 86 87# Restore CPU 4 max freq from msm_performance 88write /sys/module/msm_performance/parameters/cpu_max_freq "4:4294967295 5:4294967295 6:4294967295 7:4294967295" 89 90# input boost configuration 91write /sys/module/cpu_boost/parameters/input_boost_freq "0:1344000" 92write /sys/module/cpu_boost/parameters/input_boost_ms 40 93 94# Setting B.L scheduler parameters 95write /proc/sys/kernel/sched_migration_fixup 1 96write /proc/sys/kernel/sched_upmigrate 95 97write /proc/sys/kernel/sched_downmigrate 85 98write /proc/sys/kernel/sched_freq_inc_notify 400000 99write /proc/sys/kernel/sched_freq_dec_notify 400000 100 101# android background processes are set to nice 10. Never schedule these on the a57s. 102write /proc/sys/kernel/sched_upmigrate_min_nice 9 103 104get-set-forall /sys/class/devfreq/qcom,cpubw*/governor bw_hwmon 105 106# Disable sched_boost 107write /proc/sys/kernel/sched_boost 0 108 109# re-enable thermal and BCL hotplug 110write /sys/module/msm_thermal/core_control/enabled 1 111get-set-forall /sys/devices/soc.0/qcom,bcl.*/mode disable 112get-set-forall /sys/devices/soc.0/qcom,bcl.*/hotplug_mask $bcl_hotplug_mask 113get-set-forall /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask $bcl_hotplug_soc_mask 114get-set-forall /sys/devices/soc.0/qcom,bcl.*/mode enable 115 116# change GPU initial power level from 305MHz(level 4) to 180MHz(level 5) for power savings 117write /sys/class/kgsl/kgsl-3d0/default_pwrlevel 5 118