Linux Framebuffer Layer development
 help / color / mirror / Atom feed
* [PATCH] video: mxsfb: Fix colors display on lower color depth
       [not found] <516EBCA4.1020609@free-electrons.com>
@ 2013-04-18  9:23 ` Maxime Ripard
  2013-04-18 14:00   ` Marek Vasut
  2013-04-18 14:48   ` Shawn Guo
  0 siblings, 2 replies; 4+ messages in thread
From: Maxime Ripard @ 2013-04-18  9:23 UTC (permalink / raw)
  To: linux-arm-kernel

The current code always registers as a 32 bits display, and uses the
hardware to drop the MSB of each color to abjust to the interface width
used by the panel.

This results on 18 bits (and probably 16 bits display as well) in colors
being displayed poorly, because the MSB are obviously the most important
bits for each color definition.

The default controller behaviour when using an interface width smaller
than the color depth is to drop the LSBs of each color, which makes more
sense because you lose the least important part of the color definition.

So, to fix the colors display, just get back to the default controller
behaviour.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 drivers/video/mxsfb.c |    5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
index 755556c..2cfaf8b 100644
--- a/drivers/video/mxsfb.c
+++ b/drivers/video/mxsfb.c
@@ -424,11 +424,6 @@ static int mxsfb_set_par(struct fb_info *fb_info)
 			return -EINVAL;
 		case STMLCDIF_16BIT:
 		case STMLCDIF_18BIT:
-			/* 24 bit to 18 bit mapping */
-			ctrl |= CTRL_DF24; /* ignore the upper 2 bits in
-					    *  each colour component
-					    */
-			break;
 		case STMLCDIF_24BIT:
 			/* real 24 bit */
 			break;
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] video: mxsfb: Fix colors display on lower color depth
  2013-04-18  9:23 ` [PATCH] video: mxsfb: Fix colors display on lower color depth Maxime Ripard
@ 2013-04-18 14:00   ` Marek Vasut
  2013-04-18 14:48   ` Shawn Guo
  1 sibling, 0 replies; 4+ messages in thread
From: Marek Vasut @ 2013-04-18 14:00 UTC (permalink / raw)
  To: linux-arm-kernel

Dear Maxime Ripard,

> The current code always registers as a 32 bits display, and uses the
> hardware to drop the MSB of each color to abjust to the interface width
> used by the panel.
> 
> This results on 18 bits (and probably 16 bits display as well) in colors
> being displayed poorly, because the MSB are obviously the most important
> bits for each color definition.
> 
> The default controller behaviour when using an interface width smaller
> than the color depth is to drop the LSBs of each color, which makes more
> sense because you lose the least important part of the color definition.
> 
> So, to fix the colors display, just get back to the default controller
> behaviour.
> 
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>

Isn't this what M28EVK is doing already? This was last tested on 3.9-rc3 I 
think:

bits-per-pixel = <16>;
bus-width = <18>;

But it's also true we have all 24 data lines routed to the LCD.

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] video: mxsfb: Fix colors display on lower color depth
  2013-04-18  9:23 ` [PATCH] video: mxsfb: Fix colors display on lower color depth Maxime Ripard
  2013-04-18 14:00   ` Marek Vasut
@ 2013-04-18 14:48   ` Shawn Guo
  2013-04-22  8:07     ` Maxime Ripard
  1 sibling, 1 reply; 4+ messages in thread
From: Shawn Guo @ 2013-04-18 14:48 UTC (permalink / raw)
  To: linux-arm-kernel

Copy Sascha.

Shawn

On Thu, Apr 18, 2013 at 11:23:52AM +0200, Maxime Ripard wrote:
> The current code always registers as a 32 bits display, and uses the
> hardware to drop the MSB of each color to abjust to the interface width
> used by the panel.
> 
> This results on 18 bits (and probably 16 bits display as well) in colors
> being displayed poorly, because the MSB are obviously the most important
> bits for each color definition.
> 
> The default controller behaviour when using an interface width smaller
> than the color depth is to drop the LSBs of each color, which makes more
> sense because you lose the least important part of the color definition.
> 
> So, to fix the colors display, just get back to the default controller
> behaviour.
> 
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
>  drivers/video/mxsfb.c |    5 -----
>  1 file changed, 5 deletions(-)
> 
> diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
> index 755556c..2cfaf8b 100644
> --- a/drivers/video/mxsfb.c
> +++ b/drivers/video/mxsfb.c
> @@ -424,11 +424,6 @@ static int mxsfb_set_par(struct fb_info *fb_info)
>  			return -EINVAL;
>  		case STMLCDIF_16BIT:
>  		case STMLCDIF_18BIT:
> -			/* 24 bit to 18 bit mapping */
> -			ctrl |= CTRL_DF24; /* ignore the upper 2 bits in
> -					    *  each colour component
> -					    */
> -			break;
>  		case STMLCDIF_24BIT:
>  			/* real 24 bit */
>  			break;
> -- 
> 1.7.10.4
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] video: mxsfb: Fix colors display on lower color depth
  2013-04-18 14:48   ` Shawn Guo
@ 2013-04-22  8:07     ` Maxime Ripard
  0 siblings, 0 replies; 4+ messages in thread
From: Maxime Ripard @ 2013-04-22  8:07 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Shawn,

Le 18/04/2013 16:48, Shawn Guo a écrit :
> Copy Sascha.

Ah, yes, sorry, I somehow got confused and thought you were the one that
wrote the driver.

I'll resend the patch.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-04-22  8:07 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <516EBCA4.1020609@free-electrons.com>
2013-04-18  9:23 ` [PATCH] video: mxsfb: Fix colors display on lower color depth Maxime Ripard
2013-04-18 14:00   ` Marek Vasut
2013-04-18 14:48   ` Shawn Guo
2013-04-22  8:07     ` Maxime Ripard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox