目前剛知道notifier 可以register 當status有變動時可以給註冊者知道
目前想結合backlight開關與usb插著led開啟的關係
我先定義全域變數
int x;
static int fb_notifier_callback(struct notifier_block *self,
unsigned long event, void *data)
{
struct fb_event *evdata = data;
int *blank;
if (evdata && evdata->data ) {
if (event == FB_EVENT_BLANK) {
blank = evdata->data;
{
if (*blank == FB_BLANK_POWERDOWN )
x=0;
else if (*blank == FB_BLANK_UNBLANK )
x=1;
else
x=0;
}
}
}
return 0;
}
static void power_supply_update_gen_leds(struct power_supply *psy)
{
union power_supply_propval online;
if (psy->get_property(psy, POWER_SUPPLY_PROP_ONLINE, &online))
return;
dev_dbg(psy->dev, "%s %d\n", __func__, online.intval);
if (online.intval)
{
if (x==1)
{
led_trigger_event(psy->online_trig, LED_FULL);
}
else if (x==0)
{
led_trigger_event(psy->online_trig, LED_OFF);
}
}
else
led_trigger_event(psy->online_trig, LED_OFF);
}
但執行時發現notifier會使x的值改變一次 若backlight亮了則x=1 LED會亮
但backlight關了之後(blank == FB_BLANK_POWERDOWN) 卻不會使LED燈暗掉
想請問我的問題出在哪裡呢 目前是希望根據usb-online和backlight的兩個關係同時決定
LED亮暗關係
謝謝