charger-manager
2017-02-24 11:55:56 0 举报
linux对充电节点的管理
作者其他创作
大纲/内容
dev-driver_data = data
_regulator_do_enable
_cm_monitor(cm)真正的对充电事件的监听
_regulator_is_enabled
charger_manager_probe
cm-dev = &pdev-dev;\tcm-desc = desc;将charger_manager和设备绑定
cm_check_thermal_status(cm);先对电池温度检查,基于thermal的最大最小值检查
检查电压和负载
ret = charger_manager_register_sysfs(cm);cm的充电器注册
try_charger_restart(cm);如果满足回充条件进行回充函数
psy = power_supply_get_by_name(desc-psy_charger_stat[i]);检查充电设备是否在位
电池是否充满检查
内核事件通知notification chain适用于内核子系统之间的信息传递,不涉及用户态
schedule_work(&setup_polling);将cm的轮询加入工作队列执行
err = regulator_enable(desc-charger_regulators[i].consumer);
if (cm-emergency_stop) {\t\tupper_limit -= desc-temp_diff;\t\tlower_limit += desc-temp_diff;\t}如果定义emergency_stop可以对上下限温度有temp_diff的扩展
ret = charger_manager_register_extcon(cm);cm的充电线的注册,监测充电线是否可用
cm_get_drv_data给charger_desc *desc初始化
cm_monitor();监控充电中的事件,有事件返回true
rtc_class_open获取rtc设备
of_cm_parse_desc
cm-charging_start_time = ktime_to_ms(ktime_get());充电时间开始计时cm-charging_end_time = 0;
IS_ERR(desc)判断初始化后的charger_desc *desc 判断返回的指针是错误信息还是实际地址,即指针是否落在最后一页
dev_set_drvdata
ret = _regulator_enable(rdev);
找出可用的psy-properties
调用devm_kzalloc给charger_manager分配内存devm_kzalloc() 是具有资源管理的 kzalloc()。使用资源管理(resource-managed)函数分配的内存,是会与所属设备相关联。当设备从系统中分离或者设备驱动被卸载,该内存会被自动释放
if (diff desc-fullbatt_vchkdrop_uV)获取回充参数进行判断
charger-manager.cmsm-3.18\\drivers\\power
fullbatt_vchk(&cm-fullbatt_vchk_work.work);是否进行回充检查
0 条评论
回复 删除
下一页