目前刚知道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亮暗关系
谢谢