电池

温度策略的路径:

device/along/alongk37mv1_bsp/thermal.conf b/device/along/alongk37mv1_bsp/thermal.conf  thermal_eng.conf

问题。充电电流只有0.5A 达不到1A

log:

<3>[  321.092033]  (2)[207:bat_thread_kthr][name:charging_hw_fan5405&]fan5405  charging_hw_init  line=193
<3>[  321.097366]  (2)[207:bat_thread_kthr][name:switch_charging&][BATTERY] Default CC mode charging : 65000, input current = 320001
<3>[  321.097397]  (2)[207:bat_thread_kthr][name:charging_hw_fan5405&]charging_set_input_current  register_value=3
<4>[  321.097415]  (2)[207:bat_thread_kthr]------>along charging_set_input_current  register_value=3
<4>[  321.097433]  (2)[207:bat_thread_kthr]!!!! charging_set_input_current, register_value = 0x3
<4>[  321.099937]  (3)[207:bat_thread_kthr]!!!! charging_set_current, current_value = 65000
<3>[  321.105531]  (2)[207:bat_thread_kthr][name:charging_hw_fan5405&]charging_set_current  set_chr_current=65000
<3>[  321.105560]  (2)[207:bat_thread_kthr][name:charging_hw_fan5405&]charging_set_current  register_value=1
<4>[  321.114758]  (1)[207:bat_thread_kthr]!!!!charging_set_cv_voltage, register_value = 0x2a

<3>[  321.124985]  (3)[207:bat_thread_kthr][name:fan5405&][fan5405] 

可以从log中看到65000,这个就是主板温度太高限制的电流值。有些主板温度很容易升高。在没法改硬件的情况下,改温度策略。

工具:https://pan.baidu.com/s/1ZPuwf3JjZo0ttgGGrMN-zg

 

电池的NTC功能:硬件要加热敏电阻,用于判断温度,软件开下面的宏。

没有的话就只跑25°C

#ifdef CONFIG_MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION

#define FIXED_TBAT_25

#endif

 

 

[FAQ03930] [Thermal]平台电池60C高温保护机制

充电高温管控:

https://onlinesso.mediatek.com/FAQ#/SW/FAQ03930

./kernel-3.18/drivers/power/mediatek/battery_common.c

static void mt_battery_thermal_check(void)

{

        if (BMT_status.temperature >= 60)

}

 

[FAQ05097] [BMT] 高温截至充电,低温恢复充电,软件修改方法:

https://onlinesso.mediatek.com/FAQ#/SW/FAQ05097

 

 

 

解决 显示“已插入电源,但是现在无法充电”,(mtk官网下的代码原是正常的,只是有同事修改改错了)

log:  从log信息中看到底层是正常的,上层如果也没改的话就是hal和传值上去的时候有问题

<3>[  231.691550]  (1)[201:bat_thread_kthr][name:battery_common&][BAT_thread]Cable out 
<5>[  231.691586]  (1)[201:bat_thread_kthr][name:usb20&][MUSB]mt_usb_disconnect 560: issue work
<5>[  231.691677]  (1)[201:bat_thread_kthr][name:usb20&][MUSB]mt_usb_disconnect 562: [MUSB] USB disconnect
<5>[  231.692218]  (1)[172:kworker/u8:4][name:usb20&][MUSB]do_connection_work 475: is ready 1 is_host 0 power 0
<5>[  231.692438]  (1)[172:kworker/u8:4][name:usb20&][MUSB]usb_cable_connected 689: usb_cable_connected vbus_exist=0 type=0
<5>[  231.692466]  (1)[172:kworker/u8:4][name:usb20&][MUSB]usb_cable_connected 711: usb_cable_connected, connected:0, cable_mode:1   CABLE_MODE_NORMAL = 1
<5>[  231.692489] -(1)[172:kworker/u8:4][name:usb20&][MUSB]do_connection_work 534: do nothing, usb_in:0, power:0
<3>[  231.711543]  (2)[201:bat_thread_kthr][name:battery_common&]AvgVbat=(4084,4044),AvgI=(0,0),VChr=94,AvgT=(24,25),SOC=(99,99),UI_SOC=99,ZCV=4135,CHR_Type=0 bcct:0:0 I:65000 Ibat:-613 fg:0
<3>[  231.711613]  (2)[201:bat_thread_kthr][name:battery_common&]UI_SOC=(99), resetBatteryMeter=(0)

 


kernel-3.18/drivers/power/mediatek/battery_common.c
old mode 100644
new mode 100755
index d3cd173..c7b283c
--- a/kernel-3.18/drivers/power/mediatek/battery_common.c
+++ b/kernel-3.18/drivers/power/mediatek/battery_common.c
@@ -255,7 +255,7 @@ extern unsigned int _g_bat_sleep_total_time;*/
  * FOR ADB CMD
  */
 /* Dual battery */
-int g_status_smb = POWER_SUPPLY_STATUS_NOT_CHARGING;
+int g_status_smb = POWER_SUPPLY_STATUS_DISCHARGING;
 int g_capacity_smb = 50;
 int g_present_smb = 0;
 /* ADB charging CMD */
@@ -266,7 +266,7 @@ static int suspend_discharging = -1;
 #if !defined(CONFIG_POWER_EXT)
 static int is_uisoc_ever_100 = KAL_FALSE;
 #endif
-#if defined(CONFIG_MTK_PUMP_EXPRESS_SUPPORT)
+#if defined(CONFIG_ONTIM_POWER_DRIVER)
 kal_bool chargin_hw_init_done = KAL_FALSE;
 #endif
 /* // */
@@ -777,13 +777,13 @@ static struct battery_data battery_main = {
        .BAT_batt_vol = 4200,
        .BAT_batt_temp = 22,
        /* Dual battery */
-       .status_smb = POWER_SUPPLY_STATUS_NOT_CHARGING,
+       .status_smb = POWER_SUPPLY_STATUS_DISCHARGING,
        .capacity_smb = 50,
        .present_smb = 0,
        /* ADB CMD discharging */
        .adjust_power = -1,
 #else
-       .BAT_STATUS = POWER_SUPPLY_STATUS_NOT_CHARGING,
+       .BAT_STATUS = POWER_SUPPLY_STATUS_DISCHARGING,
        .BAT_HEALTH = POWER_SUPPLY_HEALTH_GOOD,
        .BAT_PRESENT = 1,
        .BAT_TECHNOLOGY = POWER_SUPPLY_TECHNOLOGY_LION,
@@ -795,7 +795,7 @@ static struct battery_data battery_main = {
        .BAT_batt_vol = 0,
        .BAT_batt_temp = 0,
        /* Dual battery */
-       .status_smb = POWER_SUPPLY_STATUS_NOT_CHARGING,
+       .status_smb = POWER_SUPPLY_STATUS_DISCHARGING,
        .capacity_smb = 50,
        .present_smb = 0,
        /* ADB CMD discharging */
@@ -1998,7 +1998,7 @@ static void battery_update(struct battery_data *bat_data)
 
        } else {                /* Only Battery */
 
-               bat_data->BAT_STATUS = POWER_SUPPLY_STATUS_NOT_CHARGING;
+               bat_data->BAT_STATUS = POWER_SUPPLY_STATUS_DISCHARGING;
                if (BMT_status.bat_vol <= batt_cust_data.v_0percent_tracking)
                        resetBatteryMeter = mt_battery_0Percent_tracking_check();
                else

 

 

二、int boot_mode = get_boot_mode();用于区分开机/关机状态

#include <mt-plat/mtk_boot.h>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值