您的位置:首页 > 其它

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

2013-06-27 15:18 183 查看
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)

{

//计算电量

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: