Re: [BK PATCHS] fbdev updates.

Geert Uytterhoeven (geert@linux-m68k.org)
Tue, 15 Oct 2002 11:14:03 +0200 (MEST)


On Tue, 15 Oct 2002, Russell King wrote:
> I'm not sure this "set var" business has been thought out as much as it
> should be.
>
> If can_soft_blank is not set, the driver will never, ever receive any
> calls to perform blanking via the fb_blank callback. Even the power
> management blanking calls are blocked, and fbcon clears the screen
> instead. This in itself is fine.
>
> However, since the set_var method has gone, drivers are now unable to
> set can_soft_blank according to their capabilities because
> fbgen.c:gen_set_disp will do it for them thusly:
>
> if (info->fix.visual == FB_VISUAL_PSEUDOCOLOR ||
> info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
> display->can_soft_blank = info->fbops->fb_blank ? 1 : 0;
> display->dispsw_data = NULL;
> } else {
> display->can_soft_blank = 0;
> display->dispsw_data = info->pseudo_palette;
> }
>
> This sucks on devices where blanking can be performed by hardware means.
> For example, on embedded devices, you can turn off the LCD controller
> and LCD panel (and thereby save power). There's no point in having both
> these powered/running when the display is not in use, draining valuable
> battery power.
>
> This is also true of most, if not all VGA cards when VESA blanking is in
> effect. As the code currently stands, if the console is in pseudo colour
> or direct colour mode, everything works as expected. However, if it isn't,
> you can't even power down your monitor when the screen blanks.
>
> In 2.5.42, there is a work around possible - it is possible to intercept
> the call to gen_set_var, and set con_soft_blank according to your driver
> capabilities. However, with the fb_set_var method going away, this is no
> longer possible.

So the generic part of the code should behave like this:

if (info->fbops->fb_blank && info->fbops->fb_blank(blank_flag)) {
/* use hardware blanking */
} else if (info->fix.visual == FB_VISUAL_PSEUDOCOLOR ||
info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
/* use software blanking */
} else {
/* no blanking possible, except for filling the screen with black, which
is not appropriate (unless we save/restore the contents?) */
}

Is that OK for you?

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/