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

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

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

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

首先从log中看到:

[plain] view plaincopy
  1. <6>[34586.470707]  (2)[16839:3ATHREAD]GC5025_camera_sensor[feature_control] feature_id = 3084
  2. <4>[34586.553323]  (1)[22062:kworker/u8:3][Thermal/TC/bcct]chrlmt_set_limit c14b4178 -1 200 0
  3. <4>[34586.553424]  (2)[7858:kworker/u9:0][Thermal/TC/bcct]chrlmt_set_limit_handler -1 200
  4. <5>[34586.553435]  (2)[7858:kworker/u9:0]charger_manager_set_input_current_limit: dev:mtk-cooler-bcct idx:0 en:-1
  5. <5>[34586.553446]  (2)[7858:kworker/u9:0]force:0 thermal:450000 setting:450000 type:4 usb_unlimited:0 usbif:0 usbsm:0
  6. <5>[34586.553507]  (2)[7858:kworker/u9:0]charger_manager_set_charging_current_limit: dev:mtk-cooler-bcct idx:0 en:200000
  7. <5>[34586.553515]  (2)[7858:kworker/u9:0]force:0 thermal:200000 setting:200000 type:4 usb_unlimited:0 usbif:0 usbsm:0
  8. <6>[34586.557046]  (0)[16846:AFthread]GC5025_camera_sensor[feature_control] feature_id = 3063
  9. <6>[34586.570734]  (0)[16839:3ATHREAD]GC5025_camera_sensor[feature_control] feature_id = 3084
  10. <4>[34586.592981] -(1)[243:charger_thread]mt6357_get_auxadc_value: 8 callbacks suppressed
  11. <5>[34586.592995]  (1)[243:charger_thread][mt6357_get_auxadc_value] ch_idx = 0, channel = 0, reg_val = 0x596d, adc_result = 3772
  12. <5>[34586.593021]  (1)[243:charger_thread]force:0 thermal:200000 setting:200000 type:4 usb_unlimited:0 usbif:0 usbsm:0
  13. <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 plaincopy
  1. /proc/driver/thermal # cat tzbts
  2. [mtkts_bts_read] trip_0_temp=100000,trip_1_temp=90000,trip_2_temp=61000,trip_3_temp=50000,trip_4_temp=46000
  3. trip_5_temp=42000,trip_6_temp=65000,trip_7_temp=60000,trip_8_temp=55000,trip_9_temp=50000,
  4. g_THERMAL_TRIP_0=0,g_THERMAL_TRIP_1=0,g_THERMAL_TRIP_2=0,g_THERMAL_TRIP_3=0,
  5. g_THERMAL_TRIP_4=0,g_THERMAL_TRIP_5=0,g_THERMAL_TRIP_6=0,g_THERMAL_TRIP_7=0,
  6. g_THERMAL_TRIP_8=0,g_THERMAL_TRIP_9=0,
  7. cooldev0=mtktsAP-sysrst,cooldev1=mtk-cl-shutdown00,cooldev2=mtk-cl-cam00,cooldev3=abcct_lcmoff,cooldev4=mtk-cl-adp-fps,
  8. 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 plaincopy
  1. /proc/driver/thermal # cat clbcct
  2. 65535
  3. klog 0
  4. curr_limit 65535
  5. mtk-cl-bcct00 550 mA, state 0
  6. mtk-cl-bcct01 350 mA, state 0
  7. mtk-cl-bcct02 150 mA, state 0

查看proc/driver/thermal/中clabcct内容:

[cpp] view plaincopy
  1. /proc/driver/thermal # cat clabcct
  2. 3000 44000 1000 200000 5 3000 0
  3. abcct_cur_bat_chr_curr_limit 3000
  4. abcct_cur_chr_input_curr_limit -1
  5. abcct_pep30_cur_input_curr_limit 0
  6. abcct_target_temp 44000
  7. abcct_kp 1000
  8. abcct_ki 200000
  9. abcct_kd 5
  10. abcct_max_bat_chr_curr_limit 3000
  11. abcct_min_bat_chr_curr_limit 0
  12. abcct_input_current_limit_on 0
  13. abcct_HW_thermal_solution 3000
  14. abcct_min_chr_input_curr_limit 0
  15. abcct_times_of_ts_polling_interval 1
  16. abcct_pep30_max_input_curr_limit 0
  17. 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代码。

MTK驱动(75)--- MT6739平台的thermal高温充电机制调整相关推荐

  1. MTK 驱动开发(48)---ARM 看门狗机制

    ARM 看门狗机制 [包括MTK] SYS_LAST_KMSG里的hw_status和fiq step的含义 阅读数:559 [DESCRIPTION] SYS_LAST_KMSG这支文件是记录上次重 ...

  2. MTK 驱动(4)---MTK Android Driver知识大全

    MTK Android Driver知识大全 一.Display 1.lcm 相关概念 1.1) MIPI接口:一共有三种接口:DBI(也做CPU或MCU接口).DPI(也叫RGB接口).DSI. 在 ...

  3. MTK平台的LCM防静电(esd-check)机制

    MTK平台的LCM防静电(esd-check)机制

  4. 详解关于MTK驱动开发学习教程

    MTK驱动开发学习教程是本文要介绍的内容,主要是来了解MTK的驱动开发的过程,文章中很详细的讲解了这个问题,具体内容来看本文详解. 一.Charge Parameters. 1.相关文件chr_par ...

  5. 免费分享一套开源充电桩物联网云平台(含硬件充电桩)(v2.3.2)

    JINGLI 鲸哩充电桩云平台(含硬件充电桩)(v2.3.2) 我的车,到底该选什么功率充电桩: 点我访问 体验地址,star star : 点我访问 日志记录 每天进步一点点,希望每天能更新一些进度 ...

  6. 分享一套开源免费充电桩云平台(含硬件充电桩)(v2.3.2)

    JINGLI 鲸哩充电桩云平台(含硬件充电桩)(v2.3.2) 我的车,到底该选什么功率充电桩: 点我访问 体验地址,star star : 点我访问 日志记录 每天进步一点点,希望每天能更新一些进度 ...

  7. 武汉新时标文化传媒有限公司解读抖音平台的算法与推荐机制

    下面我们解读一下抖音平台的算法与推荐机制,掌握推荐机制为我们打造爆款视频打下基础. 而抖音为什么能火?这离不开它的算法,很多人刷抖音根本停不下来,用户日均使用时长超过1小时,你看看自己的手机屏幕使用时 ...

  8. pve 加大local容量_许迎果 第189期 PVE虚拟平台的存储策略和分区调整

    哈喽大家好,我是许迎果. 今天我们来聊一聊PVE虚拟平台的存储策略和分区调整,如果你是首次接触PVE这个系列,建议你最好先看完第186期到188期的内容,然后再深入了解本期内容. 总的来说,PVE的存 ...

  9. MTK驱动(74)---平台待机功耗分析流程

    MTK平台待机功耗分析流程 1.目的 2.MTK平台各个场景功耗数据测试方法 很多功耗问题都是因为测试手法不对,列出一些常用场景功耗测试手法.  测试功耗数据之前,请先确认以下配置:  1.关闭 WI ...

最新文章

  1. 微信第一行代码曝光!从「扫地僧」到「地成佛」,张小龙10年磨一剑
  2. python介绍和用途-python中模块的介绍与使用
  3. fastdfs 测试客户端_Nginx+FastDFS+MacOS图片服务器的搭建
  4. Ubuntu14.04下安装wineqq国际版和卸载QQ
  5. BW对于SAP SD模块有哪些作用
  6. css div漂浮向下,DIV+CSS固定底部的漂浮广告
  7. html中div不在火狐居中,Firefox嵌套CSS中div标签居中问题解决方法
  8. C/C++数组与指针
  9. 阅读php程序设计笔记
  10. 什么是网络协议转换器?
  11. 机器学习SVD【二】
  12. Megcup 2017 决赛第一题 规则
  13. matlab设坐标,关于Matlab坐标设置问题?
  14. 11.C 语言连接 MySQL
  15. ubuntu编译libjpeg-turbo
  16. FMEA在汽车开发过程中的实施-SunFMEA
  17. 能自动生成标注的APP,尝试一下吧
  18. python报错:ValueError: invalid literal for int() with base 16: ‘ ‘
  19. Point Attention Network for Semantic Segmentation of 3D Point Clouds 论文解析
  20. html5绘制变换图形-旋转图形

热门文章

  1. OK6410开发板学习之一步一步实现精简BootLoader(BL1部分)
  2. SPI原理超详细讲解---值得一看
  3. php的list函数的使用,php list函数如何使用
  4. 《Reids 设计与实现》第七章 RDB 持久化
  5. node express+socket.io实现聊天室
  6. BZOJ3884 上帝与集合的正确用法 【欧拉定理】
  7. UnityEngine.UI.dll is in timestamps but is not known in assetdatabase
  8. 1024告诉身边的程序员,今天他过节日
  9. 第二次作业动手动脑的解答
  10. mysql function DATE_FORMA T(date, format)