Don't use the `Clocks
' command. The clocks are fixed
(i.e. not probed), and
there should be no variation between cards (other than the maximum supported
clock for each chipset).
The following options are of particular interest to the Cirrus driver. Each
of them must be specified in the `svga
' driver section of the
XF86Config
file, within the Screen
subsections of the depths to which they are
applicable (you can enable options for all depths by specifying them in the
Device section).
This option will disable the use of any accelerated functions. This is likely to help with problems related to bugs in acceleration functions, and perhaps high dot clocks and DRAM timing, at the cost of performance (which will still be reasonable on a local bus).
These options set the internal memory clock (MCLK, or BCLK for the 546x) register to another value. The default value programmed by the BIOS is usually OK, don't mess with these options unless absolutely required.
The "fast_dram"
option will cause the driver to set the
internal
memory clock (MCLK) register of the video card to a higher value
(recent chips use an even higher value by default).
Normally, this register is not touched but it appears that the
standard CL-GD542x BIOS initializes it to a value that is somewhat
on the low side (limited by the chip specification), which has a
negative influence on performance of high dot clock modes. This
is especially true if extended RAS timing is being used (this is
indicated in the server probe).
The actual speed of DRAM is not a critical factor in the determining
whether this option is appropriate; one CL-GD5426-based card with
80ns DRAM using Extended RAS timing, which came with a DOS driver
utility to set the MCLK to this value (0x22), seems to run stable
at higher MCLK.
There are also (mainly brand name) cards whose customized BIOS does initialize to a higher non-standard value.
The "slow_dram"
option will set the MCLK to the value used by the
standard CL-GD542x BIOS (0x1c). Symptoms of a MCLK that is too high
can be vertical bands of flickering pixels on the screen, erroneous
pixels appearing in text, and loosing pixels in the textmode font
after running X (note that very similar effects can be caused by an
MCLK setting that is too low).
Upon start-up, the driver will report the value of the MCLK register (check this first), and also any changes that are made.
Typical MCLK values:
This is usually the BIOS default.
It is forced by the "slow_dram"
option.
Value used by the "med_dram"
option.
Highest value that
542x based cards seem to be able to handle with linear
addressing enabled.
Value that most (Extended RAS) 542x cards seem to be able to
handle, used by the "fast_dram"
option.
The official maximum of the 542x chips is 50 MHz.
The official spec. for the 5434 is also 50 MHz (0x1c)
and that for
the 5429 and 5430 is probably 60 MHz (0x22). Current revisions
of the 5434 (E and greater) support 60 MHz MCLK in graphics modes,
and the driver will program this automatically. If it causes
problems, use the "slow_dram"
option.
The driver takes the MCLK into account for clock limits that are determined by DRAM bandwidth.
For the 546x chips, the BCLK is the Rambus access clock.
Typical values live in the range of 258 MHz to 300 MHz. If you
have troubles, such as a black checkerboard pattern on the
screen, try using the "med_dram"
or
"slow_dram"
options.
In all cases, if you are not having any problems (performance or stability at high dot clocks), it is best not to use any of the DRAM options.
This option, when used with a 5426/28/29/3x/46/6x/754x, will have the effect of disabling the use of the BitBLT engine (which the 5424 does not have), while retaining some acceleration. This will be useful for problems related to functions that use the BitBLT engine. Performance is significantly decreased.
This option is now obsolete. The "xaa_no_color_exp" option has a somewhat similar effect.
Force detection of the given chipset. Useful if you have a supported chipset that is not properly detected, or if you have an unsupported chip that might be compatible with a supported one.
This option will override the detected amount of video memory, and pretend the given amount of memory is present on the card. This is useful on cards with 2Mbyte of memory whose DRAM configuration is not compatible with the way the driver enables the upper megabyte of memory, or if the memory detection goes wrong. It must be specified in the Device section.
This option will set the CRT FIFO threshold to a conservative value for high dot clocks (>= 65 MHz), reducing performance but hopefully alleviating problems with what can be described as flashing `streaks', `jitter' or horizontally repeated display areas on the screen (especially when a BitBLT operation is in progress, e.g. scrolling).
This option will set the CRT FIFO threshold to an aggressive value; it will be the same as that used for lower dot clocks. Theoretically it improves performance at high dot clocks, but it does not help in the vast majority of cases. In some cases with 546x chips, however, this option can help reduce horizontal streaks or otherwise fix abnormal display problems (display shifted to the left, etc.).
This option will cause the driver not to set the `DRAM bank select' bit to enable the upper megabyte of memory on a 2Mbyte card. This should be helpful with cards equipped with 512Kx8 DRAMs, as opposed to 256Kx4/16 DRAMs, when using a virtual screen configuration that uses more than 1Mbyte of memory.
This option will force probing of dot clocks on the card. This should not be necessary, since the clocks are fixed and the same for all Cirrus chipsets.
This enables programmable clocks. It must be specified in the Device section. With this option, the clocks the modes use will be automatically selected. Do not specify any Clocks line. This option makes a 12.5 MHz clock possible for a 320x200 Doublescan mode. Note that some frequencies may be unstable (resulting in a `wavy' screen). Only tried and tested frequencies (like the default clocks) are guaranteed to be stable.
This enables linear addressing, which is the mapping of the entire framebuffer to a high address beyond system memory, so that SVGA bank switching is not necessary. It enhances performance at 256 colors, and is currently required for 16bpp, 24bpp, and 32bpp. See section 4 for details.
Linear addressing is the default mode of operation on any PCI-bus chip. For these configurations, this option disables linear addressing.
This sets the physical memory base address of the linear framebuffer. It must be specified in the Device section. It is required for non-PCI linear addressing configurations.
This option is now obsolete.
This enables the use of memory-mapped I/O to talk to the BitBLT engine on the 543x/5429, which is a bit faster. This is option has no effect when not using the BitBLT engine (e.g. when using "no_bitblt").
This disables the use of memory-mapped I/O to talk to the BitBLT engine on any chip for which it is the default mode of operation.
This disables use of the hardware cursor provided by the chip. Try this if the cursor seems to have problems. In particular, use this when using dot clocks greater than 85 MHz on the 5434/6 since those chips don't fully support the hardware cursor at those clocks.
Provides a work-around for problems on the LCD screen of some 62x5 laptop chipsets with maximum white colors.
When XAA is used (on any BitBLT chip), this option disables the use of a pixmap cache in XAA. It could help with certain drawing bugs.
When XAA is used, this option disables the use of hardware color expansion features by XAA. Again, this might help with certain drawing bugs.
Disable automatic stretching (horizontal and vertical expansion) of 640x480 on a 800x600 LCD.
Enables a performance feature for PCI based cards. When this feature is enabled, the driver code will attempt to transmit data on the PCI bus as fast as possible. For the most part, this option is safe, but may cause trouble with other PCI devices such as PCI network cards, sound cards, SCSI controllers, etc. When this option is not selected, a safer approach (polling the VGA's command queue) is taken.