staging/olpc_dcon: drop fb_notifier code
Previously we registered a notifier block to inform us of any framebuffer device changes; if the screen was blanked or unblanked, we'd put the DCON to sleep or wake it up. Turns out that the backlight code registers a notifier block as well and calls the update_status hook, so we can just use that to put the DCON to sleep. For those status updates where the blanking isn't changed, dcon_sleep will do nothing. Signed-off-by: Andres Salomon <dilinger@queued.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c40f20da3b
commit
20b27c61b7
@ -520,6 +520,10 @@ static int dcon_bl_update(struct backlight_device *dev)
|
||||
if (level != dcon->bl_val)
|
||||
dcon_set_backlight(dcon, level);
|
||||
|
||||
/* power down the DCON when the screen is blanked */
|
||||
if (!dcon->ignore_fb_events)
|
||||
dcon_sleep(dcon, !!(dev->props.state & BL_CORE_FBBLANK));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -565,24 +569,6 @@ static struct notifier_block dcon_panic_nb = {
|
||||
.notifier_call = unfreeze_on_panic,
|
||||
};
|
||||
|
||||
/*
|
||||
* When the framebuffer sleeps due to external sources (e.g. user idle), power
|
||||
* down the DCON as well. Power it back up when the fb comes back to life.
|
||||
*/
|
||||
static int dcon_fb_notifier(struct notifier_block *self,
|
||||
unsigned long event, void *data)
|
||||
{
|
||||
struct fb_event *evdata = data;
|
||||
struct dcon_priv *dcon = container_of(self, struct dcon_priv,
|
||||
fbevent_nb);
|
||||
int *blank = (int *)evdata->data;
|
||||
if (((event != FB_EVENT_BLANK) && (event != FB_EVENT_CONBLANK)) ||
|
||||
dcon->ignore_fb_events)
|
||||
return 0;
|
||||
dcon_sleep(dcon, *blank ? true : false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dcon_detect(struct i2c_client *client, struct i2c_board_info *info)
|
||||
{
|
||||
strlcpy(info->type, "olpc_dcon", I2C_NAME_SIZE);
|
||||
@ -607,7 +593,6 @@ static int dcon_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
INIT_WORK(&dcon->switch_source, dcon_source_switch);
|
||||
dcon->reboot_nb.notifier_call = dcon_reboot_notify;
|
||||
dcon->reboot_nb.priority = -1;
|
||||
dcon->fbevent_nb.notifier_call = dcon_fb_notifier;
|
||||
|
||||
i2c_set_clientdata(client, dcon);
|
||||
|
||||
@ -662,7 +647,6 @@ static int dcon_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
|
||||
register_reboot_notifier(&dcon->reboot_nb);
|
||||
atomic_notifier_chain_register(&panic_notifier_list, &dcon_panic_nb);
|
||||
fb_register_client(&dcon->fbevent_nb);
|
||||
|
||||
return 0;
|
||||
|
||||
@ -683,7 +667,6 @@ static int dcon_remove(struct i2c_client *client)
|
||||
{
|
||||
struct dcon_priv *dcon = i2c_get_clientdata(client);
|
||||
|
||||
fb_unregister_client(&dcon->fbevent_nb);
|
||||
unregister_reboot_notifier(&dcon->reboot_nb);
|
||||
atomic_notifier_chain_unregister(&panic_notifier_list, &dcon_panic_nb);
|
||||
|
||||
|
@ -55,7 +55,6 @@ struct dcon_priv {
|
||||
wait_queue_head_t waitq;
|
||||
struct work_struct switch_source;
|
||||
struct notifier_block reboot_nb;
|
||||
struct notifier_block fbevent_nb;
|
||||
|
||||
/* Shadow register for the DCON_REG_MODE register */
|
||||
u8 disp_mode;
|
||||
|
Loading…
Reference in New Issue
Block a user