1、充电电流有规律的跳变,30s跳变一次:
解决:
<1> 功耗方面,modem会每隔30s进行一次唤醒,即使飞行模式也会存在,还有其他的wake唤醒源,可以添加log debug:
— a/kernel/irq/pm.c
+++ b/kernel/irq/pm.c
@@ -21,6 +21,9 @@ bool irq_pm_check_wakeup(struct irq_desc *desc)
desc->istate |= IRQS_SUSPENDED | IRQS_PENDING;
desc->depth++;
irq_disable(desc);
- pr_info(“wakeuped by irq %d\n”, desc->irq_data.irq);
- if(desc->action && desc->action->name)
- pr_info(“wakeuped by dev %s\n”,desc->action->name);
pm_system_irq_wakeup(irq_desc_get_irq(desc));
return true;
}
<2> 充电方面,三方IC bq会有32s进行一次喂狗,不喂vbus会掉了再起来
psy没有调用起来IC的狗函数,我们在它的dumpreg函数中添加一个喂狗:
2、充电在85%左右一直再充不上去,电流停充:
解决:IC的充电状态没有给到gauge,full状态没上报
POWER_SUPPLY_PROP_STATUS,
case POWER_SUPPLY_PROP_STATUS:
pr_err(“yonghai charger done\n”);
val->intval = bq24157_get_charging_status();
break;
3、充电到1%放电时间太长:
解决:电池连接器阻抗值不对
4、充电曲线不平稳:
解决:给充电加锁避免休眠:
charger_routine_thread函数最后添加:__pm_stay_awake(info->charger_wakelock);
5、温度检测不准确:
解决:温度检测的上拉电阻和LDO的电压配置不准确
RBAT_PULL_UP_R
RBAT_PULL_UP_VOLT
6、lk下的上键以gpio按键实现:
#define GPIO_7 (0x80000000 | 7) //EINT7_UP KEY_VOLUMEUP
mtk_kpd_gpio_set函数下添加:
mt_set_gpio_mode(GPIO_7, GPIO_MODE_GPIO);
mt_set_gpio_dir(GPIO_7, GPIO_DIR_IN);
mt_set_gpio_pull_enable(GPIO_7, GPIO_PULL_ENABLE);
mt_set_gpio_pull_select(GPIO_7, GPIO_PULL_UP);
mtk_detect_key函数下添加:
mtk_kpd_gpio_set();
#ifdef KPD_DL_KEY1
if(key == KPD_DL_KEY1)
{
if(!mt_get_gpio_in(GPIO_7)) //volup pull-down
{
print(“preloader volup gpio pull-down\n”);
return true;
}
return false;
}
#endif
7、充电到400ma时突降到200ma:
解决:
8、充电插入usb不识别vbus,无通知:
解决:
《1》、dts中使能bc1.2 active:
关于MTK BC12检测:
bc12_sel= 0; bc12_active=0 ==> use Charger IC’s bc1.2
bc12_sel = 1; bc12_active=0 ==> use MTK PMIC’s bc1.2
bc12_sel = 2; bc12_active=0 ==> use external IC’s bc1.2
bc12_active=1 ==>
Use charging IC withou