欢迎来到天天文库
浏览记录
ID:13709664
大小:30.60 KB
页数:6页
时间:2018-07-24
《linux电源驱动解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.电源1.1.Linux电源类(Linuxpowersupplyclass)参考power_supply.h类型定义,属性值定义等等。(includelinux)、power_supply_core.c核心文件,向内核提供驱动注册接口和其他操作函数。(driverspower)、power_supply_sysfs.c定义属性文件、属性的读写操作接口等等(driverspower)、power_supply_class.txt(Documentationpower)1.1.1.概述电源类提供了电池、UPS、AD、DC等电源在用户空间的接口。该类定义
2、了一些核心属性,这些属性可以通过sysfs或者uenvt接口访问。每种属性都有特殊的含义和单位,由于这些属性普遍适用于各种电源,但是实际应用中有些电源可能无法提供某些属性,所以这些属性驱动可以不提供。电源类是可扩展的,允许驱动程序定义其自身需要的属性,抛弃不需要的属性。它还集成了LED框架,用来表示电池充电/完全充电状态和AC/USB电源线上状态。1.1.1.属性定义于内核文件:power_supply_sysfs.c(driverspower)1.2.linux驱动1.2.1.重要数据结构和函数1.2.1.1.structpower_supply定义于p
3、ower_supply.h(includelinux)对应着电源实例。structpower_supply{constchar*name;//名称,对应于/sys/class/power_supply/xxx文件夹enumpower_supply_typetype;//电源类型,标示该电源为电池、主电源、USB电源等enumpower_supply_property*properties;//提供的属性size_tnum_properties;//properties数组的大小/*对应着当此电源变化时需要通知的电源模块的name*/char**suppli
4、ed_toChar类型的数组;size_tnum_supplicants;//supplied_to数组的大小/*读取属性值*/int(*get_property驱动中必须实现该函数)(structpower_supply*psy,enumpower_supply_propertypsp属性,unionpower_supply_propval*val返回值);/*写属性值*/int(*set_property该函数可不实现,因为默认的属性值为只读的)(structpower_supply*psy,enumpower_supply_propertypsp,co
5、nstunionpower_supply_propval*val);/*设置属性为可写的属性*/int(*property_is_writeable如果实现了该函数并且将某种属性设置为可写的,那么必须实现set_property函数,否则用户空间写该属性值会出错!)(structpower_supply*psy,enumpower_supply_propertypsp);/*外部电源变化时所作的工作*/void(*external_power_changed)(structpower_supply*psy);void(*set_charged)(struct
6、power_supply*psy);/*ForAPMemulation,thinklegacyuserspace.*/intuse_for_apm;/*private*/structdevice*dev;structwork_structchanged_work;spinlock_tchanged_lock;boolchanged;structwake_lockwork_wake_lock;#ifdefCONFIG_LEDS_TRIGGERSstructled_trigger*charging_full_trig;char*charging_full_tri
7、g_name;structled_trigger*charging_trig;char*charging_trig_name;structled_trigger*full_trig;char*full_trig_name;structled_trigger*online_trig;char*online_trig_name;structled_trigger*charging_blink_full_solid_trig;char*charging_blink_full_solid_trig_name;#endif};1.1.1.1.函数power_suppl
8、y_registerpower_supply_cor
此文档下载收益归作者所有