From: Jonathan McDowell <noodles@earth.li>
To: linux-omap-open-source@linux.omap.com
Subject: Re: [PATCH] add-RGB444-support-to-omapfb.patch
Date: Thu, 13 Apr 2006 17:46:02 +0100 [thread overview]
Message-ID: <20060413164602.GP12731@earth.li> (raw)
In-Reply-To: <20060407193941.35989.qmail@web36915.mail.mud.yahoo.com>
On Fri, Apr 07, 2006 at 08:39:41PM +0100, Mark Underwood wrote:
> This is an updated version of my patch that adds support for RGB444
> mode for the internal LCD controller which now applies against
> linux-2.6.16 with the patch-2.6.16-omap2 applied.
>
> Jonathan McDowell posted a slightly modified version of my original
> patch to this list previously:
>
> http://Linux.omap.com/pipermail/linux-omap-open-source/2006-April/006839.html
>
> This patch is used by the Amstrad Delta (E3).
>
> Signed-Off-By: Mark Underwood <basicmark@yahoo.com>
This, or something that achieves the same result, is needed for the E3
in order to get a sensible palette. I've been using Mark's patch for the
past week on my E3 without issues and I've seen a few other bits of
positive feedback from others too.
Acked-By: Jonathan McDowell <noodles@earth.li>
> diff -uprN linux-2.6.16-orig/drivers/video/omap/lcdc.c linux-2.6.16/drivers/video/omap/lcdc.c
> --- linux-2.6.16-orig/drivers/video/omap/lcdc.c 2006-04-06 20:45:53.000000000 +0000
> +++ linux-2.6.16/drivers/video/omap/lcdc.c 2006-04-06 21:12:24.000000000 +0000
> @@ -357,6 +357,11 @@ static int omap_lcdc_setup_plane(int pla
> omap_lcdc.palette_code = 0x4000;
> omap_lcdc.palette_size = 32;
> break;
> + case OMAPFB_COLOR_RGB444:
> + omap_lcdc.bpp = 16;
> + omap_lcdc.palette_code = 0x4000;
> + omap_lcdc.palette_size = 32;
> + break;
> case OMAPFB_COLOR_YUV420:
> if (omap_lcdc.ext_mode) {
> omap_lcdc.bpp = 12;
> @@ -764,7 +769,10 @@ static int setup_fbmem(int req_size)
> return 0;
> }
>
> - frame_size = PAGE_ALIGN(panel->x_res * panel->bpp / 8 * panel->y_res);
> + if (panel->bpp == 12)
> + frame_size = PAGE_ALIGN(panel->x_res * 16 / 8 * panel->y_res);
> + else
> + frame_size = PAGE_ALIGN(panel->x_res * panel->bpp / 8 * panel->y_res);
>
> if (conf->fbmem.fb_sdram_size < frame_size) {
> pr_err("invalid FB memory configuration\n");
> diff -uprN linux-2.6.16-orig/drivers/video/omap/omapfb_main.c linux-2.6.16/drivers/video/omap/omapfb_main.c
> --- linux-2.6.16-orig/drivers/video/omap/omapfb_main.c 2006-04-06 20:45:53.000000000 +0000
> +++ linux-2.6.16/drivers/video/omap/omapfb_main.c 2006-04-06 21:45:11.000000000 +0000
> @@ -223,6 +223,7 @@ static int _setcolreg(struct fb_info *in
> u_int blue, u_int transp, int update_hw_pal)
> {
> struct omapfb_device *fbdev = (struct omapfb_device *)info->par;
> + struct fb_var_screeninfo *var = &info->var;
> int r = 0;
>
> switch (fbdev->color_mode) {
> @@ -239,6 +240,7 @@ static int _setcolreg(struct fb_info *in
> transp, update_hw_pal);
> /* Fallthrough */
> case OMAPFB_COLOR_RGB565:
> + case OMAPFB_COLOR_RGB444:
> if (r != 0)
> break;
>
> @@ -249,8 +251,9 @@ static int _setcolreg(struct fb_info *in
>
> if (regno < 16) {
> u16 pal;
> - pal = ((red >> 11) << 11) | ((green >> 10) << 5) |
> - (blue >> 11);
> + pal = ((red >> (16 - var->red.length)) << var->red.offset) |
> + ((green >> (16 - var->green.length)) << var->green.offset) |
> + (blue >> (16 - var->blue.length));
> ((u32 *)(info->pseudo_palette))[regno] = pal;
> }
> break;
> @@ -402,12 +405,18 @@ static int set_fb_var(struct omapfb_devi
> unsigned long line_size;
> struct lcd_panel *panel = fbdev->panel;
>
> - bpp = var->bits_per_pixel = panel->bpp;
> + if (panel->bpp == 12)
> + bpp = var->bits_per_pixel = 16; /* 12-bit bpp mode stores colours in 16-bits */
> + else
> + bpp = var->bits_per_pixel = panel->bpp;
>
> - switch (bpp) {
> + switch (panel->bpp) {
> case 16:
> fbdev->color_mode = OMAPFB_COLOR_RGB565;
> break;
> + case 12:
> + fbdev->color_mode = OMAPFB_COLOR_RGB444;
> + break;
> case 8:
> fbdev->color_mode = OMAPFB_COLOR_CLUT_8BPP;
> break;
> @@ -453,9 +462,18 @@ static int set_fb_var(struct omapfb_devi
> var->yoffset = var->yres_virtual - var->yres;
> line_size = var->xres * bpp / 8;
>
> - var->red.offset = 11; var->red.length = 5; var->red.msb_right = 0;
> - var->green.offset= 5; var->green.length = 6; var->green.msb_right = 0;
> - var->blue.offset = 0; var->blue.length = 5; var->blue.msb_right = 0;
> + if (fbdev->color_mode == OMAPFB_COLOR_RGB444)
> + {
> + var->red.offset = 8; var->red.length = 4; var->red.msb_right = 0;
> + var->green.offset= 4; var->green.length = 4; var->green.msb_right = 0;
> + var->blue.offset = 0; var->blue.length = 4; var->blue.msb_right = 0;
> + }
> + else
> + {
> + var->red.offset = 11; var->red.length = 5; var->red.msb_right = 0;
> + var->green.offset= 5; var->green.length = 6; var->green.msb_right = 0;
> + var->blue.offset = 0; var->blue.length = 5; var->blue.msb_right = 0;
> + }
>
> var->height = -1;
> var->width = -1;
> diff -uprN linux-2.6.16-orig/include/asm-arm/arch-omap/omapfb.h linux-2.6.16/include/asm-arm/arch-omap/omapfb.h
> --- linux-2.6.16-orig/include/asm-arm/arch-omap/omapfb.h 2006-04-06 20:46:45.000000000 +0000
> +++ linux-2.6.16/include/asm-arm/arch-omap/omapfb.h 2006-04-06 20:59:56.000000000 +0000
> @@ -64,6 +64,7 @@ enum omapfb_color_format {
> OMAPFB_COLOR_CLUT_4BPP,
> OMAPFB_COLOR_CLUT_2BPP,
> OMAPFB_COLOR_CLUT_1BPP,
> + OMAPFB_COLOR_RGB444,
> };
>
> struct omapfb_update_window {
J.
--
/-\ | noodles is not a sign of poor
|@/ Debian GNU/Linux Developer | table manners
\- |
next prev parent reply other threads:[~2006-04-13 16:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-07 19:39 [PATCH] add-RGB444-support-to-omapfb.patch Mark Underwood
2006-04-13 16:46 ` Jonathan McDowell [this message]
2006-05-26 22:43 ` Tony Lindgren
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=20060413164602.GP12731@earth.li \
--to=noodles@earth.li \
--cc=linux-omap-open-source@linux.omap.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.