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