电源部分驱动(DS2786 + MAX8677C)

2019-07-14 02:45发布

  尚未完成   DS2786中INITIAL_CAPACITY_SCALING_FACTOR的设置: 初试化值是0x80 IACR是Internal Accumulated Current Reg,就是充电的所有charge之和。单位是mVh。charge是从那个sensor resisitor上面测得的。 而ICSF的单位是百分比/Vh。 所以IACR*ICSF后就是百分比。 Relative Capacity是用IACR * Learned Capacity Scaling Factor + Last OCV Relative Capacity。 而Learned Capacity Scaling Factor是DS2786控制的。   PEN1 PEN2 POWER_SUS关系 我们是用DC接入,PEN1根据是否为充电器来决定充电电流(3000/R or decided by PEN2 & POWER_SUS)。 PEN2直接接高,表示最大充电电流限制在500ma(而非100ma).POWER_SUS可以用来控制是否充电。    di->bat.external_power_changed =
      ds2786_battery_external_power_changed;  //when max-charger state changed, notify him    static void power_supply_changed_work(struct work_struct *work)
{
 struct power_supply *psy = container_of(work, struct power_supply,
      changed_work);  dev_dbg(psy->dev, "%s/n", __func__);  class_for_each_device(power_supply_class, NULL, psy,
         __power_supply_changed_work);  power_supply_update_leds(psy);  kobject_uevent(&psy->dev->kobj, KOBJ_CHANGE);
} 显然,最后还是通过发uevent通知上层的。