Re: [PATCH 1/3: FBDEV: VGA State Save/Restore module

Antonino Daplas (adaplas@pol.net)
05 Dec 2002 07:53:16 +0500


On Thu, 2002-12-05 at 03:33, Petr Vandrovec wrote:
> On 5 Dec 02 at 6:05, Antonino Daplas wrote:
> > On Wed, 2002-12-04 at 23:41, Petr Vandrovec wrote:
> > > On 4 Dec 02 at 22:26, Antonino Daplas wrote:
> > [...]
> > > And if my VGA documentation is correct, you are saving random
> > > data into vga_text: first 8192 chars interleaved with
> > > 8192 bytes of garbage, plus attributes from chars 8192-16383 interleaved
> > > with 8192 bytes of garbage.
> > >
> > Right, I'm not sure about this part too. The docs say that this is true
> > for EGA compatible hardware. How about non-compliant hardware?
>
> Like non-VGA? Like CGA/MDA? I thought that non-VGA/non-EGA adapters are
> out of scope of this document ;-)
>
Okay :-), as I've said this is the part I'm not sure of. I'll do it
your way then, save 8K at offset 0 and save 8K at offset 16K. That
should be 16K used instead of 32K, right?

> > > And if you are using standard hardware, then font data live only in
> > > plane 2, plane 3 is unused on VGA hardware in text mode. I think that
> > > you should either save whole 256KB of memory, without deeper understanding,
> > > or you should just save FONT 0 (first 32*256 bytes from plane 2) if you
>
> > Only if saving the first character map in plane 2. Hardware can have as
> > much as 8 character maps per plane, each 8K in size for 64K. The same
> > setup is true for plane 3 fonts.
>
> How you select them? Mine doc says that font block 0 begins in plane 2
> at offset 0, block 1 at offset 16KB, 2 at 32K, 3 at 48K, 4 at 8K, 5 at 24K,
> 6 at 40K, and last, 7th, at 56KB, and sequencer has two threebit fields...
>
Selection was not the problem, the code just saves the entire 64K for
character maps 0-7.

> > > want to save memory and you know that console was driven by vgacon in
> > > text mode.
> > To save memory, apps can explicitly choose what to save, but I don't
> > want to go finer than that, ie. save character maps 2,3,5 of plane 2
> > and 1,2,3 of plane 3. The current way of saving the text mode map may
> > be a bit wasteful, but better than being bitten by hardware that's
> > non-EGA compliant.
>
> Look at vgacon. Uses font block 0,2,3 from plane 2 when built
> without BROKEN_GRAPHICS_PROGRAMS, or 0,1 when built with
> BROKEN_GRAPHICS_PROGRAMS. So if you want just restore vgacon environment,
> save only these 4 blocks (4*8K = 32K). Or you want to save whole
> VGA memory, and then save whole 256KB, without tricks while saving
> planes 0 & 1.

Okay, then. My approach was to be non-vgacon specific. I'll do it to
specifically target vgacon then.

To summarize:
plane 0/1 save 8K at offset 0 and 8K at offset 16K;
plane 2 save 32K at offset 0 (covers blocks 0-3),
plane 3 same for plane 2

Drivers can set VGA_SAVE_TEXT | VGA_SAVE_FONT0 to save planes 0-2. If
there are no complaints, I'll proceed doing it this way.

Thanks for the input Petr.

Tony

-
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/