From 4d9cf9bf23bcb19f4bac776eeb792a92cb5b0f8e Mon Sep 17 00:00:00 2001 From: hjc Date: Wed, 4 Mar 2015 15:25:26 +0800 Subject: [PATCH] rk3368 lcdc: add support overscan Signed-off-by: hjc --- drivers/video/rockchip/rkfb_sysfs.c | 44 ++++++++++++++--------------- 1 file changed, 21 insertions(+), 23 deletions(-) mode change 100644 => 100755 drivers/video/rockchip/rkfb_sysfs.c diff --git a/drivers/video/rockchip/rkfb_sysfs.c b/drivers/video/rockchip/rkfb_sysfs.c old mode 100644 new mode 100755 index bb3ca1bfcb1d..e377e4f688e5 --- a/drivers/video/rockchip/rkfb_sysfs.c +++ b/drivers/video/rockchip/rkfb_sysfs.c @@ -972,14 +972,13 @@ static ssize_t show_scale(struct device *dev, struct fb_info *fbi = dev_get_drvdata(dev); struct rk_fb_par *fb_par = (struct rk_fb_par *)fbi->par; struct rk_lcdc_driver *dev_drv = fb_par->lcdc_drv; - struct rk_screen *screen = dev_drv->cur_screen; return snprintf(buf, PAGE_SIZE, "xscale=%d yscale=%d\nleft=%d top=%d right=%d bottom=%d\n", - (screen->overscan.left + screen->overscan.right)/2, - (screen->overscan.top + screen->overscan.bottom)/2, - screen->overscan.left, screen->overscan.top, - screen->overscan.right, screen->overscan.bottom); + (dev_drv->overscan.left + dev_drv->overscan.right) / 2, + (dev_drv->overscan.top + dev_drv->overscan.bottom) / 2, + dev_drv->overscan.left, dev_drv->overscan.top, + dev_drv->overscan.right, dev_drv->overscan.bottom); } static ssize_t set_scale(struct device *dev, struct device_attribute *attr, @@ -988,60 +987,59 @@ static ssize_t set_scale(struct device *dev, struct device_attribute *attr, struct fb_info *fbi = dev_get_drvdata(dev); struct rk_fb_par *fb_par = (struct rk_fb_par *)fbi->par; struct rk_lcdc_driver *dev_drv = fb_par->lcdc_drv; - struct rk_screen *screen = dev_drv->cur_screen; u32 left, top, right, bottom; if (!strncmp(buf, "overscan", 8)) { sscanf(buf, "overscan %d,%d,%d,%d", &left, &top, &right, &bottom); if (left > 0 && left <= 100) - screen->overscan.left = left; + dev_drv->overscan.left = left; if (top > 0 && top <= 100) - screen->overscan.top = top; + dev_drv->overscan.top = top; if (right > 0 && right <= 100) - screen->overscan.right = right; + dev_drv->overscan.right = right; if (bottom > 0 && bottom <= 100) - screen->overscan.bottom = bottom; + dev_drv->overscan.bottom = bottom; } else if (!strncmp(buf, "left", 4)) { sscanf(buf, "left=%d", &left); if (left > 0 && left <= 100) - screen->overscan.left = left; + dev_drv->overscan.left = left; } else if (!strncmp(buf, "top", 3)) { sscanf(buf, "top=%d", &top); if (top > 0 && top <= 100) - screen->overscan.top = top; + dev_drv->overscan.top = top; } else if (!strncmp(buf, "right", 5)) { sscanf(buf, "right=%d", &right); if (right > 0 && right <= 100) - screen->overscan.right = right; + dev_drv->overscan.right = right; } else if (!strncmp(buf, "bottom", 6)) { sscanf(buf, "bottom=%d", &bottom); if (bottom > 0 && bottom <= 100) - screen->overscan.bottom = bottom; + dev_drv->overscan.bottom = bottom; } else if (!strncmp(buf, "xscale", 6)) { sscanf(buf, "xscale=%d", &left); if (left > 0 && left <= 100) { - screen->overscan.left = left; - screen->overscan.right = left; + dev_drv->overscan.left = left; + dev_drv->overscan.right = left; } } else if (!strncmp(buf, "yscale", 6)) { sscanf(buf, "yscale=%d", &left); if (left > 0 && left <= 100) { - screen->overscan.top = left; - screen->overscan.bottom = left; + dev_drv->overscan.top = left; + dev_drv->overscan.bottom = left; } } else { sscanf(buf, "%d", &left); if (left > 0 && left <= 100) { - screen->overscan.left = left; - screen->overscan.right = left; - screen->overscan.top = left; - screen->overscan.bottom = left; + dev_drv->overscan.left = left; + dev_drv->overscan.right = left; + dev_drv->overscan.top = left; + dev_drv->overscan.bottom = left; } } if (dev_drv->ops->set_overscan) - dev_drv->ops->set_overscan(dev_drv, &screen->overscan); + dev_drv->ops->set_overscan(dev_drv, &dev_drv->overscan); return count; } -- 2.34.1