【USB设备】AC充电驱动调用梳理

1、
插上电源--触发中断调用
microP_work()
{
  进入 已经链接     
  if( is_Mode_APROM())
  {
     if(IsP01ACUSBInOut())
     {
          micropSendNotify(P01_AC_USB_IN);
          AX_MicroP_get_USBDetectStatus(AX_MicroP_get_USBDetectStatus(Batt_P01))
          -->//判断是充电 还是 in  remove FirmwareUpdating
          -->
     }
  }
}

2、
P01_AC_USB_IN Notify在 AXC_batterySerivice.c中会call
注册函数如下:
 register_microp_notifier(&batSer_microp_notifier);
static struct notifier_block batSer_microp_notifier = {
        .notifier_call = batSer_microp_event_handler,
};
响应时 call如下函数:
3、static int batSer_microp_event_handler(    struct notifier_block *this,    unsigned long event,    void *ptr)
{
    printk( "[BAT][Bal] MicroP call back \r\n");
switch (event)
 {
          asus_bat_update_PadAcOnline();    
          printk( "[BAT][Bal]P01_AC_USB_IN\r\n");
        if(true==DecideIfPadDockHaveExtChgAC())
        {
                Init_Microp_Vbus__Chg();
        }
        break;
}
}
 

其中得 asus_bat_update_PadAcOnline();    函数定义在 asus_bat.c中
void asus_bat_update_PadAcOnline(void)
{
    asus_bat_update_pad_ac_online();
}
其中得  asus_bat_update_pad_ac_online();函数定义咋在 asus_bat.c中
static void asus_bat_update_pad_ac_online(void)
{
    power_supply_changed(&pad_ac_psy);                //定义在  power_supply_core.c中 更改电源
    printk("[BAT] pad ac online update\n");
    return;
}
其中得参数 pad_ac_psy 定义在 在 asus_bat.c中
static struct power_supply pad_ac_psy = {
    .name        = "pad_ac",
    .type        = POWER_SUPPLY_TYPE_PAD_AC,
    .properties    = pad_ac_properties,
    .num_properties    = ARRAY_SIZE(pad_ac_properties),
    .get_property    = asus_bat_pad_ac_get_property,
};
用到得主要参数.get_property    = asus_bat_pad_ac_get_property 定义在asus_bat.c中 设置标志位 无其他操作


上述3中 得函数 其中得函数DecideIfPadDockHaveExtChgAC 在AXC_batterySerivice.c中
static bool DecideIfPadDockHaveExtChgAC(void)
{
  PadChgCable = AX_MicroP_get_USBDetectStatus(Batt_P01);
   -->//判断是充电 还是 in  remove FirmwareUpdating  
   -->某  返回true来调用下面得函数
}

上述3中 得函数 Init_Microp_Vbus__Chg 定义在AXC_batterySerivice.c中
void Init_Microp_Vbus__Chg(void)
{
    gpCharger->EnableCharging(gpCharger,true);         
   
  set_microp_vbus(1) //使能Vbus  -->AX_MicroP_setGPIOOutputPin(OUT_uP_VBUS_EN, level);
   balance_this->fsm->onChargingStart(balance_this->fsm);
}



在1中定义得notify P01_AC_USB_IN  在 AXC_batterySerivice.c中会call

函数 NotifyBmsChgBegan   定义在AXC_batterySerivice.c中
 static void NotifyBmsChgBegan(struct work_struct *work)
{
     pm8921_bms_charging_began();
}
函数  pm8921_bms_charging_began();定义在 pm8921-bms.c中
void pm8921_bms_charging_began(void)
{
   //计算电量
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值