From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove
Date: Mon, 09 Jan 2012 12:13:22 +0000 [thread overview]
Message-ID: <20120109121322.GM21765@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <4F0AC2B1.8010601@atmel.com>
On Mon, Jan 09, 2012 at 11:34:25AM +0100, Nicolas Ferre wrote:
> On 10/13/2011 04:52 PM, Peter Korsgaard :
> > Allow framebuffer to be configured in 16bit mode when panel is wired in
> > (the default) BGR configuration, and don't claim to support 15bit input
> > modes, which the LCD controller cannot handle.
> >
> > Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
>
> Hi Peter,
>
> Sorry for not having more responsive concerning the two patches that you
> posted about atmel_lcdfb driver.
>
>
> I have a question though about this one...
>
>
> > ---
> > drivers/video/atmel_lcdfb.c | 12 +++---------
> > 1 files changed, 3 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> > index 7ca3eaf..143f6d9 100644
> > --- a/drivers/video/atmel_lcdfb.c
> > +++ b/drivers/video/atmel_lcdfb.c
> > @@ -418,24 +418,18 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> > var->red.length = var->green.length = var->blue.length
> > = var->bits_per_pixel;
> > break;
> > - case 15:
> > case 16:
> > if (sinfo->lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB) {
> > /* RGB:565 mode */
> > var->red.offset = 11;
> > var->blue.offset = 0;
> > - var->green.length = 6;
> > - } else if (sinfo->lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB555) {
> > - var->red.offset = 10;
> > - var->blue.offset = 0;
> > - var->green.length = 5;
>
> Maybe I have missed something but I do not know why you are removing
> this part of the configuration? A board at least is using this wiring
> mode...
Oh, this old gem.
var->bits_per_pixel represents the number of bits in the framebuffer per
pixel, and '15' for this means that your frame buffer is organized as:
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
----+-----------------------------+-----------------------------+
A | B | C |
----+-----------------------------+-----------------------------+
whereas what you actually have is:
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+-------------------------------+-------------------------------+
| B | C |
+-------------------------------+-------------------------------+
and one bit in each pixel remains unused.
This is because bytes_per_line = xres * 8 / bits_per_pixel.
You describe the RGB555 vs RGB565 via the bitfield values in var->red,
var->green and var->blue. So, RGB(or BGR)565 has var->green.length
with 6, and RGB(or BGR)555 has this as 5. In both cases, bits_per_pixel
is 16 as that's the width of a pixel in the frame buffer.
If the bitfield can't be interpreted by the driver as identifying one
of these combinations, then you're supposed to chose one (and in the
case where it's fixed by hardware, you set the bitfields according to
what the hardware supports.)
next prev parent reply other threads:[~2012-01-09 12:13 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-13 14:52 [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported 15bit modes Peter Korsgaard
2012-01-05 11:26 ` Peter Korsgaard
2012-01-09 2:49 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported Florian Tobias Schandinat
2012-01-09 6:15 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported 15bit modes Peter Korsgaard
2012-01-09 13:36 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported Nicolas Ferre
2012-01-09 10:34 ` Nicolas Ferre
2012-01-09 11:13 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported 15bit modes Peter Korsgaard
2012-01-09 13:32 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported Nicolas Ferre
2012-01-10 13:01 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove Christian Glindkamp
2012-01-10 13:17 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported 15bit modes Peter Korsgaard
2012-01-10 16:42 ` Peter Korsgaard
2012-01-10 14:02 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove Jamie Lokier
2012-01-10 14:19 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported 15bit modes Peter Korsgaard
2012-01-10 21:06 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove Russell King - ARM Linux
2012-01-09 12:13 ` Russell King - ARM Linux [this message]
2012-01-09 12:20 ` [PATCH] atmel_lcdfb: support 16bit BGR:565 mode, remove unsupported 15bit modes Peter Korsgaard
2012-01-30 5:12 ` Florian Tobias Schandinat
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=20120109121322.GM21765@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).