This section describes framebuffer options on Atari m68k platforms.
Colours 320x200 320x480 640x200 640x400 640x480 896x608 1280x960 --------+--------------------------------------------------------- 1 bit | sthigh vga2 falh2 tthigh 2 bits | stmid vga4 4 bits | stlow ttmid/vga16 falh16 8 bits | ttlow vga256
ttlow, ttmid and tthigh are only used by the TT,
whilst vga2, vga4, vga15, vga256, falh3 and falh16
are only used by the Falcon.
When used with the kernel option video=xxx, and no
suboption is given, the kernel will probe for the modes in the
following order until it finds a mode that is possible with the
given hardware:
ttmid
tthigh
vga16
sthigh
stmid
You may specify the particular mode you wish to use, if you don't
wish to auto-probe for the modes you desire. For example,
video=vga16 gives you a 4 bit 640x480 display.
There are a number of suboptions available with the
video=xxx parameter:
inverse - inverts the display so that the
background/foreground colours are reversed. Normally the
background is black, but with this suboption, it gets sets to
white.
font - sets the font to use in text modes.
Currently you can only select VGA8x8,
VGA8x16, PEARL8x8. The default is to
use the VGA8x8 only if the vertical size of the
display is less than 400 pixels, otherwise it defaults to
VGA8x16.
internal - a very interesting option. See the next
section for information.
external - as above.
monitorcap - describes the capabilities for
multisyncs. DON'T use with a fixed sync monitor!
Syntax:
internal:(xres);(yres)[;(xres_max);(yres_max);(offset)]
This option specifies the capabilities of some extended internal
video hardware, i.e OverScan modes. (xres) and
(yres) gives the extended dimensions of the screen.
If your OverScan mode needs a black border, you'll need to write
the last three arguments of the internal: suboption.
(xres_max) is the maximum line length that the
hardware allows, (yres_max) is the maximum number of
lines, and (offset) is the offset of the visible
part of the screen memory to its physical start, in bytes.
Often extended internal video hardware has to be activated, for
this you will need the "switches=*" options. [Note:
Author would like extra information on this, please. The m68k
documentation in the kernel isn't clear enough on this point, and
he doesn't have an Atari! Examples would be helpful too]
Syntax:
external:(xres);(yres);(depth);(org);(scrmem)[;(scrlen)[;(vgabase)[;(colw)[;(coltype)[;(xres_virtual)]]]]]
This is quite complicated, so this document will attempt to explain as clearly as possible, but the Author would appreciate if someone would give this a look over and see that he hasn't fscked something up! :o)
This suboption specifies that you have an external video hardware (most likely a graphic board), and how to use it with Linux. The kernel is basically limited to what it knows of the internal video hardware, so you have to supply the parameters it needs in order to be able to use external video hardware. There are two limitations; you must switch to that mode before booting, and once booted, you can't change modes.
The first three parameters are obvious; gives the dimensions of the screen as pixel height, width and depth. The depth supplied should be the number of colours is 2^n that of the number of planes required. For example, if you desire to use a 256 colour display, then you need to give 8 as the depth. This depends on the external graphic hardware, though so you will be limited by what the hardware can do.
Following from this, you also need to tell the kernel how the
video memory is organised - supply a letter as the
(org) parameter
n - use normal planes, i.e one whole plane after
another
i - use interleaved planes, i.e. 16 bits of the
first plane, then the 16 bits of the next plane and so on. Only
built-in Atari video modes uses this - and there are no graphic
card that supports this mode.
p - use packed pixels, i.e consecutive bits stands
for all planes for a pixel. This is the most common mode for
256 colour displays on graphic cards.
t - use true colour, i.e this is actually packed
pixels, but does not require a colour lookup table like what
other packed pixel modes uses. These modes are normally 24 bit
displays - gives you 16.8 million colours.
However, for monochrome modes, the (org)
parameter has a different meaning
n - use normal colours, i.e 0=white, 1=black
i - use inverted colours, i.e. 0=black, 1=white
The next important item about the video hardware is the base
address of the video memory. That is given by the
(scrmem) parameter as a hexadecimal number with an
0x prefix. You will need to find this out from the
documentation that comes with your external video hardware.
The next paramter (scrlen) tells the kernel about
the size of the video memory. If it's missing, this is calculated
from the (xres), (yres) and
(depth) parameters. It's not useful to write a value
here these days anyway. To leave this empty, give two consecutive
semicolons if you need to give the (vgabase)
parameter, otherwise, just leave it.
The (vgabase) parameter is optional. If it isn't
given, the kernel can't read/write any colour registers of the
video hardware, and thus you have to set up the appropriate
colours before you boot Linux. But if your card is VGA
compatible, you can give it the address where it can locate the
VGA register set so it can change the colour lookup tables. This
information can be found in your external video hardware
documentation. To make this clear,
(vgabase) is the base address, i.e a 4k
aligned address. For reading/writing the colour registers, the
kernel uses the address range between (vgabase) +
0x3c7 and (vgabase) + 0x3c9. This parameter
is given in hexadecimal and must have a 0x prefix,
just like (scrmem).
(colw) is only meaningful, if the
(vgabase) parameter is specified. It tells the
kernel how wide each of the colour register is, i.e the number of
bits per single colour (red/green/blue). Default is usually 6
bits, but it is also common to specify 8 bits.
(coltype) is used with the (vgabase)
parameter, it tells the kernel about the colour register model of
your graphic board. Currently the types supported are
vga and mv300. vga is the
default.
(xres_virtual) is only required for the
ProMST/ET4000 cards where the physical linelength differs from
the visible length. With ProMST, you need to supply 2048, whilst
for ET4000, it depends on the initialisation of the video board.