Home | History | Annotate | Download | only in bullhead
      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