MTK Android Driver :battery

本文详细介绍了在MTK平台上进行充电配置的方法,包括修改充电电流、设定充电电阻及温度检测等关键参数,并提供了电池容量及电池曲线的具体调整路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.PM 充电

6.1 配置文件位置:

CUSTOM_KERNEL_BATTERY= battery

mediatek\custom\\kernel\battery\battery\cust_battery.h

mediatek\custom\\kernel\battery\battery\custom_fuel_gauge.h

 

6.2充电常用参数修改:

..\mediatek\custom\\kernel\battery\battery\cust_battery.h

6.2.1充电电流修改:

#defineUSB_CHARGER_CURRENT                                         Cust_CC_550MA   //  :Cust_CC_450MA

#define AC_CHARGER_CURRENT                                           Cust_CC_800MA   // : Cust_CC_650MA

6.2.2.充电电阻设定(根据硬件的bom):

#defineR_CURRENT_SENSE 2                              //0.2 Ohm// 0.2欧姆

6.2.3  充电温度检测设定

#defineBAT_TEMP_PROTECT_ENABLE    1       //

// #defineBAT_NTC_TSM_1

NTC修改为10K电阻或者47K电阻(NTC 为电池温度保护NegativeTemperature Coefficient)

#define BAT_NTC_101    //#define BAT_NTC_47 0

 

其他:

#defineV_CHARGER_MIN 4400                                      //modify      //4400 // 4.4 V

#defineV_CHARGER_ENABLE 1                                    //1:ON , 0:OFF      //

 

6.7充电界面显示修改:

\mediatek\custom\\lk\include\target\cust_display.h//坐标

\mediatek\platform\mt6577\lk\mt_logo.c//显示

 

6.8 电池容量、电池曲线修改:

电池容量修改:

mediatek\custom\\kernel\battery\battery\custom_fuel_gauge.h 

#define Q_MAX_POS_50 ((2168* 1316) / 1307)

#define Q_MAX_POS_25   2168

#define Q_MAX_POS_0 ((2168 * 1220) / 1307)

#define Q_MAX_NEG_10  ((2168 * 1162) / 1307)


#define Q_MAX_POS_50_H_CURRENT ((2168 * 1295) / 1307)

#define Q_MAX_POS_25_H_CURRENT ((2168 * 1270) / 1307) 
#define Q_MAX_POS_0_H_CURRENT ((2168 * 1102) / 1307) 
#define Q_MAX_NEG_10_H_CURRENT ((2168 * 599) / 1307)

 

电池曲线集成方式:(电压-百分比对应表需要电池厂商提供)

mediatek\custom\\kernel\battery\battery\cust_fuel_gauge.h

BATTERY_PROFILE_STRUCbattery_profile_t1[] =// T1 0C

BATTERY_PROFILE_STRUCbattery_profile_t2[] =// T2 25C

[ 3.332196] <1>.(0)[5:kworker/u8:0] ILITEK INFO line = 1789 ilitek_main_probe : !!! ilitek_main_probe enter start !!!, 1789 [ 3.332826] <0>.(1)[1:swapper/0]mtk_charger_parse_dt: battery id:1 [ 3.333588] <1>.(0)[5:kworker/u8:0] ILITEK INFO line = 1791 ilitek_main_probe : default client->addr = 0x41 client->irq = 91 [ 3.334724] <0>.(1)[1:swapper/0]use default PE20_ICHG_LEAVE_THRESHOLD:1000000 [ 3.335589] <1>.(0)[5:kworker/u8:0] ILITEK ERR line = 1772 ilitek_alloc_dma : ilitek [TPD] tpd->dev->dev dma_alloc_coherent error [ 3.336978] <0>.(1)[1:swapper/0]use default TA_START_BATTERY_SOC:0 [ 3.336983] <1>.(1)[1:swapper/0]use default TA_STOP_BATTERY_SOC:85 [ 3.337753] <0>.(0)[5:kworker/u8:0] ILITEK ERR line = 1775 ilitek_alloc_dma : ilitek [TPD] NULL dma_alloc_coherent error static int ilitek_alloc_dma(void) { tpd->dev->dev.coherent_dma_mask = DMA_BIT_MASK(32); I2CDMABuf_va = (u8 *) dma_alloc_coherent(&tpd->dev->dev, 4096, &I2CDMABuf_pa, GFP_KERNEL); if (!I2CDMABuf_va) { tp_log_err("ilitek [TPD] tpd->dev->dev dma_alloc_coherent error\n"); I2CDMABuf_va = (u8 *) dma_alloc_coherent(NULL, 4096, &I2CDMABuf_pa, GFP_KERNEL); if (!I2CDMABuf_va) { tp_log_err("ilitek [TPD] NULL dma_alloc_coherent error\n"); return -1; } } memset(I2CDMABuf_va, 0, 4096); //ilitek_data->client->ext_flag |= I2C_DMA_FLAG; return 0; } int ilitek_main_probe(struct ilitek_ts_data *ilitek_ts_data) { int ret = 0; tp_log_info("!!! %s enter start !!!, %d\n", __func__, __LINE__); if (ilitek_data->client->addr != 0x41) ilitek_data->client->addr = 0x41; mutex_init(&ilitek_data->ilitek_mutex); ilitek_data->unhandle_irq = false; #ifdef ILITEK_TUNING_NODE mutex_init(&ilitek_data->ilitek_debug_mutex); #endif #ifdef ILITEK_ENABLE_DMA ilitek_alloc_dma(); #endif
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值