vendor/qcom/proprietary/thermal-engine/thermal.c
通过读取soc_id来确认加载哪个配置(有多个配置文件时通过android.mk文件确认编译哪个):
读soc_id:thermal_monitor_init_data->therm_get_msm_id->get_soc_info
根据soc_id通过msm_soc_table确定msm_id:
#define SYSFS_PLATFORMID "/sys/devices/soc0/soc_id"
#define SYSFS_PLATFORMID_DEPRECATED "/sys/devices/system/soc/soc0/id"
同理通过therm_get_pmic_model得到pmic和subtype_id
pmic: THERM_PMIC_PM8909 subtype_id: THERM_PLATFORM_SUB_QRD
devices_init->cpufreq_init->do_hotplug
adb shell "cat /sys/devices/system/cpu/cpu4/cpufreq/scaling_available_frequencies"
adb shell "cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq"
adb shell "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq"
adb shell "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq"
adb shell "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq"
adb shell "cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies"
adb shell "cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq"
adb shell "echo 409600000 > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq"
adb shell "echo 409600000 > /sys/class/kgsl/kgsl-3d0/devfreq/min_freq"
1、msm8909.dtsi配置的cpu温度降频为什么不起作用?(compatible = "qcom,msm-thermal";)
答:\kernel\drivers\thermal\msm_thermal.c文件中加载了,刚开机也调度了这个限制check_temp,但 是在disable_msm_thermal函数里面又使其不调度了:
/* make sure check_temp is no longer running */
cancel_delayed_work_sync(&check_temp_work);
2、vendor ss-data.c里面配置的.device_mtgn_max_limit代表什么,代码里在哪用到?
答:vendor\qcom\proprietary\thermal-engine\ss_algorithm.c中把device_mtgn_max_limit的值复制给dev_mtgn_max_limit了,dev_mtgn_max_limit在increase_mitigation_lvl里面做比较时使用
3、vendor ss-data.c里面配置的限制频率.device_mtgn_max_limit是53000为什么最后限制的是53333KHz?
答:ss_algorithm.c中increase_mitigation_lvl函数里的判断可以看出:instance->lvl_arr[instance->curr_lvl + 1].lvl.value < instance->dev_mtgn_max_limit,下一个阶梯小于限制限制的,那么就不改限制了,因为这个限制的是最大频率,最小频率不由这里决定。
4、ss-data.c中配置的和thermal_monitor-data-8916.c中配置的有什么区别?
答:配置data的时候一个配置的是.data.ss一个配置的是.data.tm
5、ss-data.c和thermal_monitor-data-8916.c中配置的.algo_type = SS_ALGO_TYPE,和.algo_type = MONITOR_ALGO_TYPE,到底有什么作用?
答:解析的函数策略不一样,获取的数据也不一样,ss-data.c走的是ss_algorithm.c的handle_timer_sig函数。
6、ss-data.c和thermal_monitor-data-8916.c中配置的.sensor = "xo_therm",和.sensor = "cpu1-3",到底有什么作用?
答:代表不同的sensor,如不同的热敏电阻:如handle_timer_sig有temp = sensors_manager_read(algo_clnt[idx].sensor_clnt);中得到温度。
7、ss-data.c和thermal_monitor-data-8916.c中配置的.set_point = 85000,和.set_point_clr = 55000,和.lvl_trig = 85000,和.lvl_clr = 80000,有什么作用?
adb shell cat sys/devices/soc/qpnp-vadc-11/xo_therm
adb shell cat sys/devices/soc/qpnp-vadc-11/case_therm
msm8917.dtsi 中 qcom,cpufreq-table配置类cpu频率列表,把低频的都删掉或者都改成高频,就一定不会降频了
参考:
http://blog.csdn.net/zhangyongfeiyong/article/details/52885897