diff options
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/fb.c | 33 | ||||
-rw-r--r-- | drivers/video/imx-ipu-fb.c | 27 | ||||
-rw-r--r-- | drivers/video/imx.c | 26 |
3 files changed, 31 insertions, 55 deletions
diff --git a/drivers/video/fb.c b/drivers/video/fb.c index be2969540d..0e00cb7675 100644 --- a/drivers/video/fb.c +++ b/drivers/video/fb.c @@ -28,31 +28,22 @@ static int fb_ioctl(struct cdev* cdev, int req, void *data) return 0; } -static int fb_enable_set(struct device_d *dev, struct param_d *param, - const char *val) +static int fb_enable_set(struct param_d *param, void *priv) { - struct fb_info *info = dev->priv; + struct fb_info *info = priv; int enable; - char *new; - - if (!val) - return dev_param_set_generic(dev, param, NULL); - enable = simple_strtoul(val, NULL, 0); + enable = info->p_enable; - if (enable) { - if (!info->enabled) - info->fbops->fb_enable(info); - new = "1"; - } else { - if (info->enabled) - info->fbops->fb_disable(info); - new = "0"; - } + if (enable == info->enabled) + return 0; - dev_param_set_generic(dev, param, new); + if (enable) + info->fbops->fb_enable(info); + else + info->fbops->fb_disable(info); - info->enabled = !!enable; + info->enabled = enable; return 0; } @@ -165,8 +156,8 @@ static int fb_probe(struct device_d *dev) { struct fb_info *info = dev->priv; - dev_add_param(dev, "enable", fb_enable_set, NULL, 0); - dev_set_param(dev, "enable", "0"); + dev_add_param_bool(dev, "enable", fb_enable_set, NULL, + &info->p_enable, info); if (info->num_modes && (info->mode_list != NULL) && (info->fbops->fb_activate_var != NULL)) { diff --git a/drivers/video/imx-ipu-fb.c b/drivers/video/imx-ipu-fb.c index db8b8323b0..b2ed7237c7 100644 --- a/drivers/video/imx-ipu-fb.c +++ b/drivers/video/imx-ipu-fb.c @@ -39,6 +39,8 @@ struct ipu_fb_info { struct fb_info info; struct fb_info overlay; struct device_d *dev; + + unsigned int alpha; }; /* IPU DMA Controller channel definitions. */ @@ -914,27 +916,17 @@ static struct fb_ops ipu_fb_overlay_ops = { .fb_disable = ipu_fb_overlay_disable_controller, }; -static int sdc_alpha_set(struct device_d *dev, struct param_d *param, - const char *val) +static int sdc_alpha_set(struct param_d *param, void *priv) { - struct fb_info *info = dev->priv; + struct fb_info *info = priv; struct ipu_fb_info *fbi = info->priv; - int alpha; - char alphastr[16]; unsigned int tmp; - if (!val) - return dev_param_set_generic(dev, param, NULL); - - alpha = simple_strtoul(val, NULL, 0); - alpha &= 0xff; + if (fbi->alpha > 0xff) + fbi->alpha = 0xff; tmp = reg_read(fbi, SDC_GW_CTRL) & 0x00FFFFFFL; - reg_write(fbi, tmp | ((u32) alpha << 24), SDC_GW_CTRL); - - sprintf(alphastr, "%d", alpha); - - dev_param_set_generic(dev, param, alphastr); + reg_write(fbi, tmp | ((u32) fbi->alpha << 24), SDC_GW_CTRL); return 0; } @@ -968,8 +960,9 @@ static int sdc_fb_register_overlay(struct ipu_fb_info *fbi, void *fb) return ret; } - dev_add_param(&overlay->dev, "alpha", sdc_alpha_set, NULL, 0); - dev_set_param(&overlay->dev, "alpha", "0"); + dev_add_param_int(&overlay->dev, "alpha", sdc_alpha_set, + NULL, &fbi->alpha, "%u", overlay); + return 0; } diff --git a/drivers/video/imx.c b/drivers/video/imx.c index 736e8d08e2..6e2d8d6f73 100644 --- a/drivers/video/imx.c +++ b/drivers/video/imx.c @@ -158,6 +158,8 @@ struct imxfb_info { void (*enable)(int enable); + unsigned int alpha; + struct fb_info overlay; }; @@ -421,30 +423,20 @@ static struct fb_ops imxfb_overlay_ops = { .fb_disable = imxfb_overlay_disable_controller, }; -static int imxfb_alpha_set(struct device_d *dev, struct param_d *param, - const char *val) +static int imxfb_alpha_set(struct param_d *param, void *priv) { - struct fb_info *overlay = dev->priv; + struct fb_info *overlay = priv; struct imxfb_info *fbi = overlay->priv; - int alpha; - char alphastr[16]; unsigned int tmp; - if (!val) - return dev_param_set_generic(dev, param, NULL); - - alpha = simple_strtoul(val, NULL, 0); - alpha &= 0xff; + if (fbi->alpha > 0xff) + fbi->alpha = 0xff; tmp = readl(fbi->regs + LCDC_LGWCR); tmp &= ~LGWCR_GWAV(0xff); - tmp |= LGWCR_GWAV(alpha); + tmp |= LGWCR_GWAV(fbi->alpha); writel(tmp , fbi->regs + LCDC_LGWCR); - sprintf(alphastr, "%d", alpha); - - dev_param_set_generic(dev, param, alphastr); - return 0; } @@ -508,8 +500,8 @@ static int imxfb_register_overlay(struct imxfb_info *fbi, void *fb) return ret; } - dev_add_param(&overlay->dev, "alpha", imxfb_alpha_set, NULL, 0); - dev_set_param(&overlay->dev, "alpha", "0"); + dev_add_param_int(&overlay->dev, "alpha", imxfb_alpha_set, + NULL, &fbi->alpha, "%u", overlay); return 0; } |