From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
To: linux-fbdev@vger.kernel.org
Subject: Re: [PATCH 3/5] fbdev: sh_mobile_lcdc: increase maximum framebuffer
Date: Sat, 25 Dec 2010 21:44:35 +0000 [thread overview]
Message-ID: <Pine.LNX.4.64.1012252235130.5248@axis700.grange> (raw)
Paul, apart from increasing the fb size to 1080p, this patch also fixes a
regression, which leads to unusable by applications framebuffer on some
platforms, including migor. This happens, when one of parameters lies
outside of limits, being checked in sh_mobile_check_var(). On migor it is
.left_margin = 0,
Then the fb-console is working, but, e.g., mplayer is not. So, we need
this patch in 2.6.37 too, please. Unfortunately, it also introduces a
wrong format printk format, which a later patch of yours fixes, so, you
might want to push that patch too, although, that's not that important.
Thanks
Guennadi
On Thu, 4 Nov 2010, Guennadi Liakhovetski wrote:
> 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: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> ---
> drivers/video/sh_mobile_lcdcfb.c | 26 ++++++++------------------
> 1 files changed, 8 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/video/sh_mobile_lcdcfb.c b/drivers/video/sh_mobile_lcdcfb.c
> index a87dace..8e8d698 100644
> --- a/drivers/video/sh_mobile_lcdcfb.c
> +++ b/drivers/video/sh_mobile_lcdcfb.c
> @@ -54,8 +54,8 @@ static int lcdc_shared_regs[] = {
> };
> #define NR_SHARED_REGS ARRAY_SIZE(lcdc_shared_regs)
>
> -#define DEFAULT_XRES 1280
> -#define DEFAULT_YRES 1024
> +#define MAX_XRES 1920
> +#define MAX_YRES 1080
>
> static unsigned long lcdc_offs_mainlcd[NR_CH_REGS] = {
> [LDDCKPAT1R] = 0x400,
> @@ -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;
>
> - if (var->xres < 160 || var->xres > 1920 ||
> - 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 ||
> + if (var->xres > MAX_XRES || var->yres > MAX_YRES ||
> 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",
> - var->xres, var->yres,
> - var->left_margin, var->right_margin,
> - var->upper_margin, var->lower_margin,
> - var->hsync_len, var->vsync_len,
> - var->pixclock);
> + dev_warn(info->dev, "Invalid info: %u-%u-%u-%u x %u-%u-%u-%u @ %ukHz!\n",
> + var->left_margin, var->xres, var->right_margin, var->hsync_len,
> + var->upper_margin, var->yres, var->lower_margin, var->vsync_len,
> + PICOS2KHZ(var->pixclock));
> return -EINVAL;
> }
> return 0;
> @@ -1225,7 +1215,7 @@ static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev)
> }
>
> if (!mode)
> - max_size = DEFAULT_XRES * DEFAULT_YRES;
> + max_size = MAX_XRES * MAX_YRES;
> else if (max_cfg)
> dev_dbg(&pdev->dev, "Found largest videomode %ux%u\n",
> max_cfg->xres, max_cfg->yres);
> --
> 1.7.2.3
>
>
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
next reply other threads:[~2010-12-25 21:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-25 21:44 Guennadi Liakhovetski [this message]
-- strict thread matches above, loose matches on Subject: below --
2010-11-04 11:06 [PATCH 3/5] fbdev: sh_mobile_lcdc: increase maximum framebuffer size Guennadi Liakhovetski
2010-12-27 2:02 ` [PATCH 3/5] fbdev: sh_mobile_lcdc: increase maximum framebuffer Magnus Damm
2010-12-27 13:41 ` Guennadi Liakhovetski
2010-12-28 2:48 ` Magnus Damm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.64.1012252235130.5248@axis700.grange \
--to=g.liakhovetski@gmx.de \
--cc=linux-fbdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox