POWER_SUPPLY_PROP_ONLINE,//外充电,哪个在线,cat属性值在线为1,否则0 POWER_SUPPLY_PROP_CHARGE_TYPE,//充电类型,USB还是WALL }; staticintbq2429x_psy_register(structbq2429x *bq) { intret; bq->usb.name ="bq2429x-usb";//在power_supply下显示的名字 bq->usb.type = POWER_SUPPLY_TYPE_USB;//...
enumpower_supply_property{/* Properties of type `int' */POWER_SUPPLY_PROP_STATUS =0,//该PSY的status,主要是充电状态,包括:unknown,charging,discharging,not charging full,POWER_SUPPLY_PROP_CHARGE_TYPE,//充电类型POWER_SUPPLY_PROP_HEALTH,//健康状况,包括:good dead over voltage等POWER_SUPPLY_PROP_PRE...
enumpower_supply_property{/* Properties of type `int' */POWER_SUPPLY_PROP_STATUS =0,//该PSY的status,主要是充电状态,包括:unknown,charging,discharging,not charging full,POWER_SUPPLY_PROP_CHARGE_TYPE,//充电类型POWER_SUPPLY_PROP_HEALTH,//健康状况,包括:good dead over voltage等POWER_SUPPLY_PROP_PRE...
power_supply_core.c主要负责设备状态变化逻辑,power_supply_sysfs.c主要负责文件节点相关逻辑。 power_supply_changed:在驱动中检测到硬件状态发生变化,会通过该函数调度起psy中的changed_work。该工作队列负责发送notifier(内核内不同模块之间)和通过uevent进行change上报。 void power_supply_changed(struct power_supply...
而linear-charger则是struct power_supply usb_psy; (当然这只是一个命名方式而已了) power_supply具体参考这篇博客: Linux power supply class(1)_软件架构及API汇整【转】 struct power_supply { const char *name; enum power_supply_type type;
info->usb.properties = pm860x_usb_props; info->usb.num_properties = ARRAY_SIZE(pm860x_usb_props); info->usb.get_property = pm860x_usb_get_prop; ret = power_supply_register(&pdev->dev, &info->usb);if(ret)gotoout; pm860x_init_charger(info);for(i =0; i < ARRAY_SIZE(info-...
power supply是如何上报电池信息的 作为一个内核初学者,经常容易进入“知其然但不知其所以然”的状态,在power supply子系统中就是这样,知道如何去添加一个属性prop,知道psy可以创建一堆文件节点,也知道上层是通过读取这些节点来获取供电信息的,但对于其中的细节,便知之甚少。最近深究其中,才逐步发现内核的奥妙所在。
struct power_supply为power supply class的核心数据结构,用于抽象PSY设备 structpower_supply{constchar*name;//该PSY的名称enumpower_supply_typetype;//该PSY的类型,枚举类型,一般包括:battery、USB-charger、DC-charger。enumpower_supply_property*properties;//该PSY具有的属性列表,枚举型。size_t num_properties;...
17: union power_supply_propval *val); 18: int (*set_property)(struct power_supply *psy, 19: enum power_supply_property psp, 20: const union power_supply_propval *val); 21: int (*property_is_writeable)(struct power_supply *psy, ...
power_supply_desc 结构体代表 power supply 说明(详细)。 name:设备名称。 type:设备类型。 usb_types:支持的 USB 类型(TYPE C 接口、专用充电端口、下游充电端口等。 num_usb_types:支持的 USB 类型数量。 properties:设备属性列表。 num_properties:属性数。