* [PATCH] uvesafb: fix color component length for pseudocolor modes
@ 2009-03-30 22:02 Michal Januszewski
2009-04-01 16:54 ` Krzysztof Helt
0 siblings, 1 reply; 2+ messages in thread
From: Michal Januszewski @ 2009-03-30 22:02 UTC (permalink / raw)
To: linux-kernel
Cc: Krzysztof Helt, Ville Syrjälä, Geert Uytterhoeven,
linux-fbdev-devel
uvesafb incorrectly sets the length of the color fields to 6 bits
for PSEUDOCOLOR modes, even though 8 bits are always used per pixel.
Fix this by setting the length to 8.
The switch of the DAC width from the default 6 bits to 8 bits is
retained and tracked internally in the driver, but never exposed
to userspace.
Signed-off-by: Michal Januszewski <spock@gentoo.org>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Cc: Ville Syrjälä <syrjala@sci.fi>
Cc: Geert Uytterhoeven <geert.uytterhoeven@gmail.com>
---
diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c
index 74ae758..5b59198 100644
--- a/drivers/video/uvesafb.c
+++ b/drivers/video/uvesafb.c
@@ -55,6 +55,7 @@ static u16 maxvf __devinitdata; /* maximum vertical frequency */
static u16 maxhf __devinitdata; /* maximum horizontal frequency */
static u16 vbemode __devinitdata; /* force use of a specific VBE mode */
static char *mode_option __devinitdata;
+static u8 dac_width = 6;
static struct uvesafb_ktask *uvfb_tasks[UVESAFB_TASKS_MAX];
static DEFINE_MUTEX(uvfb_lock);
@@ -303,22 +304,10 @@ static void uvesafb_setup_var(struct fb_var_screeninfo *var,
var->blue.offset = 0;
var->transp.offset = 0;
- /*
- * We're assuming that we can switch the DAC to 8 bits. If
- * this proves to be incorrect, we'll update the fields
- * later in set_par().
- */
- if (par->vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC) {
- var->red.length = 8;
- var->green.length = 8;
- var->blue.length = 8;
- var->transp.length = 0;
- } else {
- var->red.length = 6;
- var->green.length = 6;
- var->blue.length = 6;
- var->transp.length = 0;
- }
+ var->red.length = 8;
+ var->green.length = 8;
+ var->blue.length = 8;
+ var->transp.length = 0;
}
}
@@ -1001,7 +990,7 @@ static int uvesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
struct fb_info *info)
{
struct uvesafb_pal_entry entry;
- int shift = 16 - info->var.green.length;
+ int shift = 16 - dac_width;
int err = 0;
if (regno >= info->cmap.len)
@@ -1050,7 +1039,7 @@ static int uvesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
static int uvesafb_setcmap(struct fb_cmap *cmap, struct fb_info *info)
{
struct uvesafb_pal_entry *entries;
- int shift = 16 - info->var.green.length;
+ int shift = 16 - dac_width;
int i, err = 0;
if (info->var.bits_per_pixel == 8) {
@@ -1312,13 +1301,9 @@ setmode:
err = uvesafb_exec(task);
if (err || (task->t.regs.eax & 0xffff) != 0x004f ||
((task->t.regs.ebx & 0xff00) >> 8) != 8) {
- /*
- * We've failed to set the DAC palette format -
- * time to correct var.
- */
- info->var.red.length = 6;
- info->var.green.length = 6;
- info->var.blue.length = 6;
+ dac_width = 6;
+ } else {
+ dac_width = 8;
}
}
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] uvesafb: fix color component length for pseudocolor modes
2009-03-30 22:02 [PATCH] uvesafb: fix color component length for pseudocolor modes Michal Januszewski
@ 2009-04-01 16:54 ` Krzysztof Helt
0 siblings, 0 replies; 2+ messages in thread
From: Krzysztof Helt @ 2009-04-01 16:54 UTC (permalink / raw)
To: spock
Cc: linux-kernel, Ville Syrjälä, Geert Uytterhoeven,
linux-fbdev-devel
On Tue, 31 Mar 2009 00:02:46 +0200
Michal Januszewski <spock@gentoo.org> wrote:
> uvesafb incorrectly sets the length of the color fields to 6 bits
> for PSEUDOCOLOR modes, even though 8 bits are always used per pixel.
> Fix this by setting the length to 8.
>
> The switch of the DAC width from the default 6 bits to 8 bits is
> retained and tracked internally in the driver, but never exposed
> to userspace.
>
> Signed-off-by: Michal Januszewski <spock@gentoo.org>
> Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
> Cc: Ville Syrjälä <syrjala@sci.fi>
> Cc: Geert Uytterhoeven <geert.uytterhoeven@gmail.com>
> ---
Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl>
----------------------------------------------------------------------
Internetowe dowcipy na 1 kwietnia! Sprawdz! ;)
http://link.interia.pl/f20f4
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-04-01 16:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-30 22:02 [PATCH] uvesafb: fix color component length for pseudocolor modes Michal Januszewski
2009-04-01 16:54 ` Krzysztof Helt
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).