1.power_supply电源框架介绍:
power supply framework在kernel/drivers/power/下。内核抽象出来power supply子系统为驱动提供了统一的框架。
功能包括:
1.抽象PSY设备的共性,向用户空间提供统一的API;
2.为底层PSY驱动的编写,提供简单、统一的方式,同时封装并实现公共逻辑。
power supply class位于drivers/power/目录中,主要由3部分组成(可参考下图的软件架构):
1)power_supply_core,用于抽象核心数据结构、实现公共逻辑。位于drivers/power/power_supply_core.c中。
2)power_supply_sysfs,实现sysfs以及uevent功能。位于drivers/power/power_supply_sysfs.c中。
3)power_supply_leds,基于Linux led class,提供PSY设备状态指示的通用实现。位于drivers/power/power_suppply_leds.c中。
最后,驱动工程师可以基于power supply class,实现具体的PSY drivers,主要处理平台相关、硬件相关的逻辑。这些drivers都位于drivers/power/power_supply目录下。
power_supply的软件架构:
在具体设备文件中在/sys/class/power_supply,具体如下:
power_supply 框架工作流程
Linux的设备文件目录中可以在sys/class/下看到power_supply目录;这个power_supply的类是通过power_supply_core.c文件中的power_supply_class_init()中的class_create()函数来进行power_supply类的创建,如下: