diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2010-07-03 10:26:21 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2010-07-03 10:26:21 +0200 |
commit | 6d1d9e8d8b4be5645d3613522093cdcaddad5bff (patch) | |
tree | f0147f6620fc6bce6b403f9e9c006e629ae6796f /drivers/video/fb.c | |
parent | 0db4be97f2ebd6cedad9c113ca49667c0b1e8d75 (diff) | |
parent | 7f5644fad10f8f7a86742dd30d2812261cd0a623 (diff) | |
download | barebox-6d1d9e8d8b4be5645d3613522093cdcaddad5bff.tar.gz barebox-6d1d9e8d8b4be5645d3613522093cdcaddad5bff.tar.xz |
Merge branch 'next'
Diffstat (limited to 'drivers/video/fb.c')
-rw-r--r-- | drivers/video/fb.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/drivers/video/fb.c b/drivers/video/fb.c index 00a0f6a177..f9a425efac 100644 --- a/drivers/video/fb.c +++ b/drivers/video/fb.c @@ -32,15 +32,27 @@ static int fb_enable_set(struct device_d *dev, struct param_d *param, { struct fb_info *info = dev->priv; int enable; + char *new; + + if (!val) + return dev_param_set_generic(dev, param, NULL); enable = simple_strtoul(val, NULL, 0); - if (enable) + if (info->enabled == !!enable) + return 0; + + if (enable) { info->fbops->fb_enable(info); - else + new = "1"; + } else { info->fbops->fb_disable(info); + new = "0"; + } - sprintf(info->enable_string, "%d", !!enable); + dev_param_set_generic(dev, param, new); + + info->enabled = !!enable; return 0; } @@ -71,13 +83,9 @@ int register_framebuffer(struct fb_info *info) sprintf(dev->name, "fb"); - info->param_enable.set = fb_enable_set; - info->param_enable.name = "enable"; - sprintf(info->enable_string, "%d", 0); - info->param_enable.value = info->enable_string; - dev_add_param(dev, &info->param_enable); - register_device(&info->dev); + dev_add_param(dev, "enable", fb_enable_set, NULL, 0); + dev_set_param(dev, "enable", "0"); devfs_create(&info->cdev); |