1. linux电源管理子系统用于管理系统的充放电以及供电.不同设备供电方式多样,即使是一个
设备也可以支持多个供电方式,例如一个平板可以使用usb,dc,电池供电.
电源管理子系统用于抽象这些供电,对上层它提供统一的操作接口,方便上层的编码.对下层
它实现了充电管理的共有逻辑以及sysfs接口的创建,驱动程序只需要按照规则实现底层接口
就可以了,简化了驱动程序的设计.
2. 电源管理的结构
一个struct power_supply 实例代表一个供电设备,比如一个usb供电设备,电池供电
设备. 通常用户不需要自己定义一个struct power_supply实例,当我们调用power_supply_register()
函数时函数内部会动态创建一个struct power_supply 实例.看下power_supply_register()
函数
/**
power_supply_register() - 注册新的电源供应设备
@parent: 电源供应设备的父设备,通常是调用此函数的探测函数所属的设备
@desc: 电源供应的描述信息,必须在此电源供应的整个生命周期内保持有效
@cfg: 注册过程中访问的运行时特定配置,可能为NULL
返回值:成功时返回新分配的power_supply的指针,否则返回ERR_PTR。
使用返回的power_supply指针调用power_supply_unregister()来释放资源。
*/
struct power_supply *__must_check power_supply_register(struct device *parent,
const struct power_supply_desc *desc,
const struct power_supply_config *cfg)
该函数有两个重要的参数struct power_suppl