MTK驱动--- MT6739平台的thermal高温充电机制调整

MTK MT6739平台的thermal高温充电机制调整


MTK平台的thermal机制是一种高温保护主板机制。主要用于手机在充电过程中,温度太高对手机主板造成损坏。

thermal主要由thermal配置文件和thermal的驱动代码进行控制。

从一个充电温度高电流降到0的bug开始讲解:

首先从log中看到:

[plain] view plain copy
<6>[34586.470707]  (2)[16839:3ATHREAD]GC5025_camera_sensor[feature_control] feature_id = 3084  
<4>[34586.553323]  (1)[22062:kworker/u8:3][Thermal/TC/bcct]chrlmt_set_limit c14b4178 -1 200 0  
<4>[34586.553424]  (2)[7858:kworker/u9:0][Thermal/TC/bcct]chrlmt_set_limit_handler -1 200  
<5>[34586.553435]  (2)[7858:kworker/u9:0]charger_manager_set_input_current_limit: dev:mtk-cooler-bcct idx:0 en:-1  
<5>[34586.553446]  (2)[7858:kworker/u9:0]force:0 thermal:450000 setting:450000 type:4 usb_unlimited:0 usbif:0 usbsm:0  
<5>[34586.553507]  (2)[7858:kworker/u9:0]charger_manager_set_charging_current_limit: dev:mtk-cooler-bcct idx:0 en:200000  
<5>[34586.553515]  (2)[7858:kworker/u9:0]force:0 thermal:200000 setting:200000 type:4 usb_unlimited:0 usbif:0 usbsm:0  
<6>[34586.557046]  (0)[16846:AFthread]GC5025_camera_sensor[feature_control] feature_id = 3063  
<6>[34586.570734]  (0)[16839:3ATHREAD]GC5025_camera_sensor[feature_control] feature_id = 3084  
<4>[34586.592981] -(1)[243:charger_thread]mt6357_get_auxadc_value: 8 callbacks suppressed  
<5>[34586.592995]  (1)[243:charger_thread][mt6357_get_auxadc_value] ch_idx = 0, channel = 0, reg_val = 0x596d, adc_result = 3772  
<5>[34586.593021]  (1)[243:charger_thread]force:0 thermal:200000 setting:200000 type:4 usb_unlimited:0 usbif:0 usbsm:0  
<6>[34586.593169]  (1)[243:charger_thread]ICHG = 200mA, CV = 4350mV, CHG_EN = 1  
从这个上面可以得到是由于在充电时,开启了相机,导致主板温度达到45℃,触发了thermal机制,开始降低充电电流,以达到降低主板温度的目的。

其中上述的chrlmt_set_limit_handler函数是在代码drivers/misc/mediatek/theraml/common/coolers/mtk_cooler_bcct_v1.c 文件中打印出来的,通过source insight 搜索,可以知道是在以下代码中:

通过log中的打印,可以看到chrlmt_set_limit_handler打印的log数据中一直都是都是循环从3000降到0.

通过查询手机里的thermal机制,可以知道:

[cpp] view plain copy
/proc/driver/thermal # cat tzbts                                                                                                                                                   
[mtkts_bts_read] trip_0_temp=100000,trip_1_temp=90000,trip_2_temp=61000,trip_3_temp=50000,trip_4_temp=46000  
trip_5_temp=42000,trip_6_temp=65000,trip_7_temp=60000,trip_8_temp=55000,trip_9_temp=50000,  
g_THERMAL_TRIP_0=0,g_THERMAL_TRIP_1=0,g_THERMAL_TRIP_2=0,g_THERMAL_TRIP_3=0,  
g_THERMAL_TRIP_4=0,g_THERMAL_TRIP_5=0,g_THERMAL_TRIP_6=0,g_THERMAL_TRIP_7=0,  
g_THERMAL_TRIP_8=0,g_THERMAL_TRIP_9=0,  
cooldev0=mtktsAP-sysrst,cooldev1=mtk-cl-shutdown00,cooldev2=mtk-cl-cam00,cooldev3=abcct_lcmoff,cooldev4=mtk-cl-adp-fps,  
cooldev5=abcct,cooldev6=no-cooler,cooldev7=no-cooler,cooldev8=no-cooler,cooldev9=no-cooler,time_ms=1000  
trip_5_temp=42000,而对应的cooldev5=abcct。可以知道采用的是theraml中的abcct机制。

查看proc/driver/theraml/中clbcct内容:

[cpp] view plain copy
/proc/driver/thermal # cat clbcct  
65535  
klog 0  
curr_limit 65535  
mtk-cl-bcct00 550 mA, state 0  
mtk-cl-bcct01 350 mA, state 0  
mtk-cl-bcct02 150 mA, state 0  
查看proc/driver/thermal/中clabcct内容:

[cpp] view plain copy
/proc/driver/thermal # cat clabcct  
3000 44000 1000 200000 5 3000 0  
abcct_cur_bat_chr_curr_limit 3000  
abcct_cur_chr_input_curr_limit -1  
abcct_pep30_cur_input_curr_limit 0  
abcct_target_temp 44000  
abcct_kp 1000  
abcct_ki 200000  
abcct_kd 5  
abcct_max_bat_chr_curr_limit 3000  
abcct_min_bat_chr_curr_limit 0  
abcct_input_current_limit_on 0  
abcct_HW_thermal_solution 3000  
abcct_min_chr_input_curr_limit 0  
abcct_times_of_ts_polling_interval 1  
abcct_pep30_max_input_curr_limit 0  
abcct_pep30_min_input_curr_limit 0  
可以知道,手机中两个机制都存在。

使用mtk提供的工具Thermal_Config_tool_exe_v2.0.1813.0去查看android/device/mediatek/mt6739/目录下的thermal.conf和thermal.eng.conf文件。

在第一个窗口中查询到如下内容:

可以看到在mtktsAP中使用的是abcct,触发温度是42度。

在第二个窗口中查询到如下内容:

可以看到bcct是使能的。

可以看到abcct也是使能的。

也就是说,在这个项目中,thermal中bcct与abcct都是使能的,但是mtktsAP中使用的是abcct才是我们需要的。

这样我们在bcct中将其disable,将abcct中设置最小的充电电流,可以将target temp修改小一点,这样触发降电流就更快,发热就会更少。

具体的代码,可以阅读mtk的android代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zeropoint127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值