Commit cb59bfc5 authored by Guennadi Liakhovetski's avatar Guennadi Liakhovetski Committed by Paul Mundt

fbdev: sh_mobile_lcdc: increase maximum framebuffer size to support 1080p

LCDC hardware can support 1920x1080 formats, adjust the driver to cover them.
Besides, instead of guessing some "reasonable" validity checks, only verify
values in .fb_check_var(), that we are sure, we cannot support.
Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 60328917
...@@ -54,8 +54,8 @@ static int lcdc_shared_regs[] = { ...@@ -54,8 +54,8 @@ static int lcdc_shared_regs[] = {
}; };
#define NR_SHARED_REGS ARRAY_SIZE(lcdc_shared_regs) #define NR_SHARED_REGS ARRAY_SIZE(lcdc_shared_regs)
#define DEFAULT_XRES 1280 #define MAX_XRES 1920
#define DEFAULT_YRES 1024 #define MAX_YRES 1080
static unsigned long lcdc_offs_mainlcd[NR_CH_REGS] = { static unsigned long lcdc_offs_mainlcd[NR_CH_REGS] = {
[LDDCKPAT1R] = 0x400, [LDDCKPAT1R] = 0x400,
...@@ -914,22 +914,12 @@ static int sh_mobile_check_var(struct fb_var_screeninfo *var, struct fb_info *in ...@@ -914,22 +914,12 @@ static int sh_mobile_check_var(struct fb_var_screeninfo *var, struct fb_info *in
{ {
struct sh_mobile_lcdc_chan *ch = info->par; struct sh_mobile_lcdc_chan *ch = info->par;
if (var->xres < 160 || var->xres > 1920 || if (var->xres > MAX_XRES || var->yres > MAX_YRES ||
var->yres < 120 || var->yres > 1080 ||
var->left_margin < 32 || var->left_margin > 320 ||
var->right_margin < 12 || var->right_margin > 240 ||
var->upper_margin < 12 || var->upper_margin > 120 ||
var->lower_margin < 1 || var->lower_margin > 64 ||
var->hsync_len < 32 || var->hsync_len > 240 ||
var->vsync_len < 2 || var->vsync_len > 64 ||
var->pixclock < 6000 || var->pixclock > 40000 ||
var->xres * var->yres * (ch->cfg.bpp / 8) * 2 > info->fix.smem_len) { var->xres * var->yres * (ch->cfg.bpp / 8) * 2 > info->fix.smem_len) {
dev_warn(info->dev, "Invalid info: %u %u %u %u %u %u %u %u %u!\n", dev_warn(info->dev, "Invalid info: %u-%u-%u-%u x %u-%u-%u-%u @ %ukHz!\n",
var->xres, var->yres, var->left_margin, var->xres, var->right_margin, var->hsync_len,
var->left_margin, var->right_margin, var->upper_margin, var->yres, var->lower_margin, var->vsync_len,
var->upper_margin, var->lower_margin, PICOS2KHZ(var->pixclock));
var->hsync_len, var->vsync_len,
var->pixclock);
return -EINVAL; return -EINVAL;
} }
return 0; return 0;
...@@ -1226,7 +1216,7 @@ static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev) ...@@ -1226,7 +1216,7 @@ static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev)
} }
if (!mode) if (!mode)
max_size = DEFAULT_XRES * DEFAULT_YRES; max_size = MAX_XRES * MAX_YRES;
else if (max_cfg) else if (max_cfg)
dev_dbg(&pdev->dev, "Found largest videomode %ux%u\n", dev_dbg(&pdev->dev, "Found largest videomode %ux%u\n",
max_cfg->xres, max_cfg->yres); max_cfg->xres, max_cfg->yres);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment