-- 只在 mc13783 這個 driver 有用到,和 battery, power 相關的 code。
為了一些 hardware 的 event 寫了一個 driver (mxc_hw_event),提供一個 netlink 的 interface,讓 kernel event 可以傳送到 user program。
mxc_hw_evnet 只在 /sys/..../ 下開一個 mxc_hw_event 的 netlink nod。
然後 export 一個 hw_event_send 給其他 kernel module 用。
其他 driver 的使用方法是..(以 pmic_battery 來看.):
當偵測到 充電器插入時...
t_sensor_bits sensor;
struct mxc_hw_event event = { HWE_BAT_CHARGER_PLUG, 0 };
pr_debug("In callback_chg_detect\n");
/* get sensor values */
pmic_get_sensors(&sensor);
pr_debug("Callback, charger detect:%d\n", sensor.sense_chgdets);
if (sensor.sense_chgdets)
event.args = 1;
else
event.args = 0;
/* send hardware event */
hw_event_send(HWE_DEF_PRIORITY, &event);
經由 mxc_hw_event 這個 netlink node 送出訊息。這樣 user program 可以monitor mx_hw_event,得到 charger plug event。
不必一直polling,或是像以前一樣,經過 /dev 的 ioctrl 送自己的 pid,作 signal handler。
沒有留言:
張貼留言