: POWER_SUPPLY_ATTR(charge_full),
29: POWER_SUPPLY_ATTR(charge_empty),
30: POWER_SUPPLY_ATTR(charge_now),
31: POWER_SUPPLY_ATTR(charge_avg),
32: POWER_SUPPLY_ATTR(charge_counter),
33: POWER_SUPPLY_ATTR(constant_charge_current),
34: POWER_SUPPLY_ATTR(constant_charge_current_max),
35: POWER_SUPPLY_ATTR(constant_charge_voltage),
36: POWER_SUPPLY_ATTR(constant_charge_voltage_max),
37: POWER_SUPPLY_ATTR(charge_control_limit),
38: POWER_SUPPLY_ATTR(charge_control_limit_max),
39: POWER_SUPPLY_ATTR(input_current_limit),
40: POWER_SUPPLY_ATTR(energy_full_design),
41: POWER_SUPPLY_ATTR(energy_empty_design),
42: POWER_SUPPLY_ATTR(energy_full),
43: POWER_SUPPLY_ATTR(energy_empty),
44: POWER_SUPPLY_ATTR(energy_now),
45: POWER_SUPPLY_ATTR(energy_avg),
46: POWER_SUPPLY_ATTR(capacity),
47: POWER_SUPPLY_ATTR(capacity_alert_min),
48: POWER_SUPPLY_ATTR(capacity_alert_max),
49: POWER_SUPPLY_ATTR(capacity_level),
50: POWER_SUPPLY_ATTR(temp),
51: POWER_SUPPLY_ATTR(temp_max),
52: POWER_SUPPLY_ATTR(temp_min),
53: POWER_SUPPLY_ATTR(temp_alert_min),
54: POWER_SUPPLY_ATTR(temp_alert_max),
55: POWER_SUPPLY_ATTR(temp_ambient),
56: POWER_SUPPLY_ATTR(temp_ambient_alert_min),
57: POWER_SUPPLY_ATTR(temp_ambient_alert_max),
58: POWER_SUPPLY_ATTR(time_to_empty_now),
59: POWER_SUPPLY_ATTR(time_to_empty_avg),
60: POWER_SUPPLY_ATTR(time_to_full_now),
61: POWER_SUPPLY_ATTR(time_to_full_avg),
62: POWER_SUPPLY_ATTR(type),
63: POWER_SUPPLY_ATTR(scope),
64: POWER_SUPPLY_ATTR(charge_term_current),
65: POWER_SUPPLY_ATTR(calibrate),
66: /* Properties of type `const char *' */
67: POWER_SUPPLY_ATTR(model_name),
68: POWER_SUPPLY_ATTR(manufacturer),
69: POWER_SUPPLY_ATTR(serial_number),
70: };
具体意义这里就不再详细说明了。
4. 怎样基于power supply class编写PSY driver
最后从PSY driver的角度,说明一下怎么基于power supply class,编写驱动:
1)根据硬件spec,确定该PSY设备具备哪些特性,并把它们和enum power_supply_property 中所定义的property对应。
2)根据实际情况,实现这些properties的get/set接口。
3)定义一个struct power_supply变量,并初始化必要的字段后,调用power_supply_register或者power_supply_register_no_ws,将其注册到kernel中。
4)根据实际情况,启动设备属性变化的监控逻辑,例如中断、轮询等,并在发生改变时,调用power_supply_changed,通知power supply core。
也许您会笑,说着简单啊!确实如此,不变的原则:framework只能给我们提供良好的机制、便捷的方式、等等,但是,设备要做什么事情,只有设备驱动最清楚,永远都不可能偷懒啊!
|