1c06b6b69Smrg  Information for Chips and Technologies Users
27d17d341Smrg  David Bateman ( <mailto:dbateman@club-internet.fr>), Egbert
37d17d341Smrg  Eich ( <mailto:eich@freedesktop.org>)
4c06b6b69Smrg  1st January 2001
5c06b6b69Smrg  ____________________________________________________________
6c06b6b69Smrg
7c06b6b69Smrg  Table of Contents
8c06b6b69Smrg
9c06b6b69Smrg
10c06b6b69Smrg  1. Introduction
11c06b6b69Smrg  2. Supported Chips
12c06b6b69Smrg     2.1 Basic architecture
13c06b6b69Smrg     2.2 WinGine architecture
14c06b6b69Smrg     2.3 HiQV Architecture
15c06b6b69Smrg
16c06b6b69Smrg  3. xorg.conf Options
17c06b6b69Smrg  4. Modelines
18c06b6b69Smrg  5. Dual Display Channel
19c06b6b69Smrg  6. The Full Story on Clock Limitations
20c06b6b69Smrg  7. Troubleshooting
21c06b6b69Smrg  8. Disclaimer
22c06b6b69Smrg  9. Acknowledgement
23c06b6b69Smrg  10. Authors
24c06b6b69Smrg
25c06b6b69Smrg
26c06b6b69Smrg  ______________________________________________________________________
27c06b6b69Smrg
287d17d341Smrg  1.  Introduction
29c06b6b69Smrg
30c06b6b69Smrg
317d17d341Smrg  The Chips and Technologies driver release in X11R7.5 came from XFree86
32c06b6b69Smrg  4.4 rc2; this document was originally included in that release and has
337d17d341Smrg  been updated modestly to reflect differences between X11R7.5 and
34c06b6b69Smrg  XFree86 4.4 rc2.
35c06b6b69Smrg
36c06b6b69Smrg  With the release of XFree86 version 4.0, the Chips and Technologies
37c06b6b69Smrg  driver has been extensively rewritten and contains many new features.
38c06b6b69Smrg  This driver must be considered work in progress, and those users
39c06b6b69Smrg  wanting stability are encouraged to use the older XFree86 3.3.x
40c06b6b69Smrg  versions. However this version of the Chips and Technologies driver
41c06b6b69Smrg  has many new features and bug fixes that might make users prefer to
42c06b6b69Smrg  use this version. These features include
43c06b6b69Smrg
44c06b6b69Smrg
457d17d341Smrg  o  The long standing black/blue screen problem that some people have
46c06b6b69Smrg     had should be fixed.
47c06b6b69Smrg
487d17d341Smrg  o  Hardware/Software cursor switching on the fly, that should fix many
49c06b6b69Smrg     of the known hardware cursor problems.
50c06b6b69Smrg
517d17d341Smrg  o  Gamma correction at all depths and DirectColor visuals for depths
52c06b6b69Smrg     of 15 or greater with the HiQV series of chipsets.
53c06b6b69Smrg
547d17d341Smrg  o  Supports PseudoColor overlays on 16bpp TrueColor screens for HiQV.
55c06b6b69Smrg
567d17d341Smrg  o  Supports YUV colour space conversion with the XVideo extension.
57c06b6b69Smrg
587d17d341Smrg  o  32bpp pixmaps while using a framebuffer in 24bpp packed pixel mode.
59c06b6b69Smrg
607d17d341Smrg  o  Heaps more acceleration.
61c06b6b69Smrg
627d17d341Smrg  o  1/4bpp support.
63c06b6b69Smrg
647d17d341Smrg  o  Multihead
65c06b6b69Smrg
66c06b6b69Smrg
677d17d341Smrg  o  Much more...
68c06b6b69Smrg
69c06b6b69Smrg  This document attempts to discuss the features of this driver, the
70c06b6b69Smrg  options useful in configuring it and the known problems. Most of the
71c06b6b69Smrg  Chips and Technologies chipsets are supported by this driver to some
72c06b6b69Smrg  degree.
73c06b6b69Smrg
74c06b6b69Smrg
757d17d341Smrg  2.  Supported Chips
76c06b6b69Smrg
77c06b6b69Smrg
78c06b6b69Smrg  The Chips and Technologies chipsets supported by this driver have one
79c06b6b69Smrg  of three basic architectures. A basic architecture, the WinGine
80c06b6b69Smrg  architecture which is a modification on this basic architecture and a
81c06b6b69Smrg  completely new HiQV architecture.
82c06b6b69Smrg
83c06b6b69Smrg
847d17d341Smrg  2.1.  Basic architecture
85c06b6b69Smrg
86c06b6b69Smrg
877d17d341Smrg     ct65520
88c06b6b69Smrg        (Max Ram: 1Mb, Max Dclk: 68MHz@5V)
89c06b6b69Smrg
907d17d341Smrg     ct65525
91c06b6b69Smrg        This chip is basically identical to the 65530. It has the same
92c06b6b69Smrg        ID and is identified as a 65530 when probed. See ct65530 for
93c06b6b69Smrg        details.
94c06b6b69Smrg
957d17d341Smrg     ct65530
96c06b6b69Smrg        This is a very similar chip to the 65520. However it
97c06b6b69Smrg        additionally has the ability for mixed 5V and 3.3V operation and
98c06b6b69Smrg        linear addressing of the video memory.  (Max Ram: 1Mb, Max Dclk:
99c06b6b69Smrg        56MHz@3.3V, 68MHz@5V)
100c06b6b69Smrg
1017d17d341Smrg     ct65535
102c06b6b69Smrg        This is the first chip of the ct655xx series to support fully
103c06b6b69Smrg        programmable clocks. Otherwise it has the the same properties as
104c06b6b69Smrg        the 65530.
105c06b6b69Smrg
1067d17d341Smrg     ct65540
107c06b6b69Smrg        This is the first version of the of the ct655xx that was capable
108c06b6b69Smrg        of supporting Hi-Color and True-Color. It also includes a fully
109c06b6b69Smrg        programmable dot clock and supports all types of flat panels.
110c06b6b69Smrg        (Max Ram: 1Mb, Max Dclk: 56MHz@3.3V, 68MHz@5V)
111c06b6b69Smrg
1127d17d341Smrg     ct65545
113c06b6b69Smrg        The chip is very similar to the 65540, with the addition of H/W
114c06b6b69Smrg        cursor, pop-menu acceleration, BitBLT and support of PCI Buses.
115c06b6b69Smrg        PCI version also allow all the BitBLT and H/W cursor registers
116c06b6b69Smrg        to be memory mapped 2Mb above the Base Address.  (Max Ram: 1Mb,
117c06b6b69Smrg        Max Dclk: 56MHz@3.3V,68MHz@5V)
118c06b6b69Smrg
1197d17d341Smrg     ct65546
120c06b6b69Smrg        This chip is specially manufactured for Toshiba, and so
121c06b6b69Smrg        documentation is not widely available. It is believed that this
122c06b6b69Smrg        is really just a 65545 with a higher maximum dot-clock of 80MHz.
123c06b6b69Smrg        (Max Ram: 1Mb?, Max Dclk: 80MHz?)
124c06b6b69Smrg
1257d17d341Smrg     ct65548
126c06b6b69Smrg        This chip is similar to the 65545, but it also includes XRAM
127c06b6b69Smrg        support and supports the higher dot clocks of the 65546.  (Max
128c06b6b69Smrg        Ram: 1Mb, Max Dclk: 80MHz)
129c06b6b69Smrg
130c06b6b69Smrg
131c06b6b69Smrg
1327d17d341Smrg  2.2.  WinGine architecture
133c06b6b69Smrg
134c06b6b69Smrg
1357d17d341Smrg     ct64200
136c06b6b69Smrg        This chip, also known as the WinGine, is used in video cards for
137c06b6b69Smrg        desktop systems. It often uses external DAC's and programmable
138c06b6b69Smrg        clock chips to supply additional functionally. None of these are
139c06b6b69Smrg        currently supported within the driver itself, so many cards will
140c06b6b69Smrg        only have limited support. Linear addressing is not supported
141c06b6b69Smrg        for this card in the driver.  (Max Ram: 2Mb, Max Dclk: 80MHz)
142c06b6b69Smrg
1437d17d341Smrg     ct64300
144c06b6b69Smrg        This is a more advanced version of the WinGine chip, with
145c06b6b69Smrg        specification very similar to the 6554x series of chips. However
146c06b6b69Smrg        there are many differences at a register level. A similar level
147c06b6b69Smrg        of acceleration to the 65545 is included for this driver.  (Max
148c06b6b69Smrg        Ram: 2Mb, Max Dclk: 80MHz)
149c06b6b69Smrg
150c06b6b69Smrg
1517d17d341Smrg  2.3.  HiQV Architecture
152c06b6b69Smrg
153c06b6b69Smrg
1547d17d341Smrg     ct65550
155c06b6b69Smrg        This chip includes many new features, including improved BitBLT
156c06b6b69Smrg        support (24bpp colour expansion, wider maximum pitch, etc),
157c06b6b69Smrg        Multimedia unit (video capture, zoom video port, etc) and 24bpp
158c06b6b69Smrg        uncompressed true colour (i.e 32bpp mode). Also memory mapped
159c06b6b69Smrg        I/O is possible on all bus configurations.  (Max Ram: 2Mb, Max
160c06b6b69Smrg        Dclk: 80MHz@3.3V,100MHz@5V)
161c06b6b69Smrg
1627d17d341Smrg     ct65554
163c06b6b69Smrg        This chip is similar to the 65550 but has a 64bit memory bus as
164c06b6b69Smrg        opposed to a 32bit bus. It also has higher limits on the maximum
165c06b6b69Smrg        memory and pixel clocks (Max Ram: 4Mb, Max Dclk: 100MHz@3.3V)
166c06b6b69Smrg
1677d17d341Smrg     ct65555
168c06b6b69Smrg        Similar to the 65554 but has yet higher maximum memory and pixel
169c06b6b69Smrg        clocks. It also includes a new DSTN dithering scheme that
170c06b6b69Smrg        improves the performance of DSTN screens.  (Max Ram: 4Mb, Max
171c06b6b69Smrg        Dclk: 110MHz@3.3V)
172c06b6b69Smrg
1737d17d341Smrg     ct68554
174c06b6b69Smrg        Similar to the 65555 but also incorporates "PanelLink" drivers.
175c06b6b69Smrg        This serial link allows an LCD screens to be located up to 100m
176c06b6b69Smrg        from the video processor. Expect to see this chip soon in LCD
177c06b6b69Smrg        desktop machines (Max Ram: 4Mb, Max Dclk: 110MHz@3.3V)
178c06b6b69Smrg
1797d17d341Smrg     ct69000
180c06b6b69Smrg        Similar to the 65555 but incorporates 2Mbytes of SGRAM on chip.
181c06b6b69Smrg        It is the first Chips and Technologies chipset where all of the
182c06b6b69Smrg        registers are accessible through MMIO, rather than just the
183c06b6b69Smrg        BitBlt registers.  (Max Ram: 2Mb Only, Max Dclk: 130MHz@3.3V)
184c06b6b69Smrg
1857d17d341Smrg     ct69030
186c06b6b69Smrg        Similar to the 69000 but incorporates 4Mbytes of SGRAM on chip
187c06b6b69Smrg        and has faster memory and pixel clock limits. Also includes a
188c06b6b69Smrg        second display channel so that the CRT can display independently
189c06b6b69Smrg        of the LCD.  (Max Ram: 4Mb Only, Max Dclk: 170MHz@3.3V)
190c06b6b69Smrg
191c06b6b69Smrg
192c06b6b69Smrg
1937d17d341Smrg  3.  xorg.conf Options
194c06b6b69Smrg
195c06b6b69Smrg
196c06b6b69Smrg  The following options are of particular interest to the Chips and
197c06b6b69Smrg  Technologies driver. It should be noted that the options are case
1987d17d341Smrg  insensitive, and that white space and "_" characters are ignored.
199c06b6b69Smrg  There are therefore a wide variety of possible forms for all options.
200c06b6b69Smrg  The forms given below are the preferred forms.
201c06b6b69Smrg
202c06b6b69Smrg  Options related to drivers can be present in the Screen, Device and
2037d17d341Smrg  Monitor sections and the Display subsections. The order of precedence
204c06b6b69Smrg  is Display, Screen, Monitor, Device.
205c06b6b69Smrg
206c06b6b69Smrg
2077d17d341Smrg     Option
208c06b6b69Smrg        This option will disable the use of any accelerated functions.
209c06b6b69Smrg        This is likely to help with some problems related to DRAM
210c06b6b69Smrg        timing, high dot clocks, and bugs in accelerated functions, at
211c06b6b69Smrg        the cost of performance (which will still be reasonable on
212c06b6b69Smrg        VLB/PCI).
213c06b6b69Smrg
2147d17d341Smrg     VideoRam 1024 (or another value)
215c06b6b69Smrg        This option will override the detected amount of video memory,
216c06b6b69Smrg        and pretend the given amount of memory is present on the card.
217c06b6b69Smrg
2187d17d341Smrg     Option
219c06b6b69Smrg        By default linear addressing is used on all chips where it can
220c06b6b69Smrg        be set up automatically. The exception is for depths of 1 or
221c06b6b69Smrg        4bpp where linear addressing is turned off by default.  It is
222c06b6b69Smrg        possible to turn the linear addressing off with this option.
223c06b6b69Smrg        Note that H/W acceleration is only supported with linear
224c06b6b69Smrg        addressing.
225c06b6b69Smrg
2267d17d341Smrg     Option
227c06b6b69Smrg        When the chipset is capable of linear addressing and it has been
228c06b6b69Smrg        turned off by default, this option can be used to turn it back
229c06b6b69Smrg        on. This is useful for the 65530 chipset where the base address
230c06b6b69Smrg        of the linear framebuffer must be supplied by the user, or at
231c06b6b69Smrg        depths 1 and 4bpp. Note that linear addressing at 1 and 4bpp is
232c06b6b69Smrg        not guaranteed to work correctly.
233c06b6b69Smrg
2347d17d341Smrg     MemBase 0x03b00000 (or a different address)
235c06b6b69Smrg        This sets the physical memory base address of the linear
236c06b6b69Smrg        framebuffer. Typically this is probed correctly, but if you
237c06b6b69Smrg        believe it to be mis-probed, this option might help.  Also for
238c06b6b69Smrg        non PCI machines specifying this force the linear base address
239c06b6b69Smrg        to be this value, reprogramming the video processor to suit.
240c06b6b69Smrg        Note that for the 65530 this is required as the base address
241c06b6b69Smrg        can't be correctly probed.
242c06b6b69Smrg
2437d17d341Smrg     Option
244c06b6b69Smrg        For chipsets that support hardware cursors, this option enforces
245c06b6b69Smrg        their use, even for cases that are known to cause problems on
246c06b6b69Smrg        some machines. Note that it is overridden by the "SWcursor"
247c06b6b69Smrg        option. Hardware cursors effectively speeds all graphics
248c06b6b69Smrg        operations as the job of ensuring that the cursor remains on top
249c06b6b69Smrg        is now given to the hardware. It also reduces the effect of
250c06b6b69Smrg        cursor flashing during graphics operations.
251c06b6b69Smrg
2527d17d341Smrg     Option
253c06b6b69Smrg        This disables use of the hardware cursor provided by the chip.
254c06b6b69Smrg        Try this if the cursor seems to have problems.
255c06b6b69Smrg
2567d17d341Smrg     Option
257c06b6b69Smrg        The server is unable to differentiate between SS STN and TFT
258c06b6b69Smrg        displays. This forces it to identify the display as a SS STN
259c06b6b69Smrg        rather than a TFT.
260c06b6b69Smrg
2617d17d341Smrg     Option
262c06b6b69Smrg        The flat panel timings are related to the panel size and not the
263c06b6b69Smrg        size of the mode specified in xorg.conf. For this reason the
264c06b6b69Smrg        default behaviour of the server is to use the panel timings
265c06b6b69Smrg        already installed in the chip. The user can force the panel
266c06b6b69Smrg        timings to be recalculated from the modeline with this option.
267c06b6b69Smrg        However the panel size will still be probed.
268c06b6b69Smrg
2697d17d341Smrg     Option
270c06b6b69Smrg        For some machines the LCD panel size is incorrectly probed from
271c06b6b69Smrg        the registers. This option forces the LCD panel size to be
272c06b6b69Smrg        overridden by the modeline display sizes. This will prevent the
273c06b6b69Smrg        use of a mode that is a different size than the panel. Before
274c06b6b69Smrg        using this check that the server reports an incorrect panel
275c06b6b69Smrg        size. This option can be used in conjunction with the option
276c06b6b69Smrg        "UseModeline" to program all the panel timings using the
277c06b6b69Smrg        modeline values.
278c06b6b69Smrg
2797d17d341Smrg     Option
280c06b6b69Smrg        When the size of the mode used is less than the panel size, the
281c06b6b69Smrg        default behaviour of the server is to stretch the mode in an
282c06b6b69Smrg        attempt to fill the screen. A "letterbox" effect with no
283c06b6b69Smrg        stretching can be achieved using this option.
284c06b6b69Smrg
2857d17d341Smrg     Option
286c06b6b69Smrg        When the size of the mode used is less than the panel size, the
287c06b6b69Smrg        default behaviour of the server is to align the left hand edge
288c06b6b69Smrg        of the display with the left hand edge of the screen. Using this
289c06b6b69Smrg        option the mode can be centered in the screen. This option is
290c06b6b69Smrg        reported to have problems with some machines at 16/24/32bpp, the
291c06b6b69Smrg        effect of which is that the right-hand edge of the mode will be
292c06b6b69Smrg        pushed off the screen.
293c06b6b69Smrg
2947d17d341Smrg     Option
295c06b6b69Smrg        For the chips either using the WinGine or basic architectures,
296c06b6b69Smrg        the chips generates a number of fixed clocks internally. With
297c06b6b69Smrg        the chips 65535 and later or the 64300, the default is to use
298c06b6b69Smrg        the programmable clock for all clocks. It is possible to use the
299c06b6b69Smrg        fixed clocks supported by the chip instead by using this option.
300c06b6b69Smrg        Typically this will give you some or all of the clocks 25.175,
301c06b6b69Smrg        28.322, 31.000 and 36.000MHz. The current programmable clock
302c06b6b69Smrg        will be given as the last clock in the list. On a cold-booted
303c06b6b69Smrg        system this might be the appropriate value to use at the text
304c06b6b69Smrg        console (see the "TextClockFreq" option), as many flat panels
305c06b6b69Smrg        will need a dot clock different than the default to synchronise.
306c06b6b69Smrg        The programmable clock makes this option obsolete and so it's
307c06b6b69Smrg        use isn't recommended. It is completely ignored for HiQV
308c06b6b69Smrg        chipsets.
309c06b6b69Smrg
3107d17d341Smrg     TextClockFreq 25.175
311c06b6b69Smrg        Except for the HiQV chipsets, it is impossible for the server to
312c06b6b69Smrg        read the value of the currently used frequency for the text
313c06b6b69Smrg        console when using programmable clocks. Therefore the server
314c06b6b69Smrg        uses a default value of 25.175MHz as the text console clock. For
315c06b6b69Smrg        some LCDs, in particular DSTN screens, this clock will be wrong.
316c06b6b69Smrg        This allows the user to select a different clock for the server
317c06b6b69Smrg        to use when returning to the text console.
318c06b6b69Smrg
3197d17d341Smrg     Option
3207d17d341Smrg        Option "FPClock16" "65.0MHz" Option "FPClock24" "65.0MHz" Option
3217d17d341Smrg        "FPClock32" "65.0MHz"" In general the LCD panel clock should be
3227d17d341Smrg        set independently of the modelines supplied. Normally the chips
3237d17d341Smrg        BIOS set the flat panel clock correctly and so the default
3247d17d341Smrg        behaviour with HiQV chipset is to leave the flat panel clock
3257d17d341Smrg        alone, or force it to be 90% of the maximum allowable clock if
3267d17d341Smrg        the current panel clock exceeds the dotclock limitation due to a
3277d17d341Smrg        depth change. This option allows the user to force the server
3287d17d341Smrg        the reprogram the flat panel clock independently of the modeline
3297d17d341Smrg        with HiQV chipset. The four options are for 8bpp or less, 16, 24
3307d17d341Smrg        or 32bpp LCD panel clocks, where the options above set the
3317d17d341Smrg        clocks to 65MHz.
3327d17d341Smrg
3337d17d341Smrg     Option
334c06b6b69Smrg        Option "FPClkIndx" "1"" The HiQV series of chips have three
335c06b6b69Smrg        programmable clocks. The first two are usually loaded with
336c06b6b69Smrg        25.175 and 28.322MHz for VGA backward compatibility, and the
337c06b6b69Smrg        third is used as a fully programmable clock. On at least one
338c06b6b69Smrg        system (the Inside 686 LCD/S single board computer) the third
339c06b6b69Smrg        clock is unusable. These options can be used to force a
340c06b6b69Smrg        particular clock index to be used
341c06b6b69Smrg
3427d17d341Smrg     Option
343c06b6b69Smrg        This has a different effect depending on the hardware on which
344c06b6b69Smrg        it is used. For the 6554x machines MMIO is only used to talk to
3457d17d341Smrg        the BitBLT engine and is only usable with PCI buses. It is
346c06b6b69Smrg        enabled by default for 65545 machines since the blitter can not
347c06b6b69Smrg        be used otherwise. The HiQV series of chipsets must use MMIO
348c06b6b69Smrg        with their BitBLT engines, and so this is enabled by default.
349c06b6b69Smrg
3507d17d341Smrg     Option
351c06b6b69Smrg        The 690xx chipsets can use MMIO for all communications with the
352c06b6b69Smrg        video processor. So using this option on a 690xx chipset forces
353c06b6b69Smrg        them to use MMIO for all communications. This only makes sense
354c06b6b69Smrg        when the 690xx is on a PCI bus so that normal PIO can be
355c06b6b69Smrg        disabled.
356c06b6b69Smrg
3577d17d341Smrg     Option
358c06b6b69Smrg        This option sets the centering and stretching to the BIOS
359c06b6b69Smrg        default values. This can fix suspend/resume problems on some
360c06b6b69Smrg        machines. It overrides the options "LcdCenter" and "NoStretch".
361c06b6b69Smrg
3627d17d341Smrg     Option            For 24bpp on TFT screens, the server assumes that
363c06b6b69Smrg                       a 24bit bus is being used. This can result in a
364c06b6b69Smrg                       reddish tint to 24bpp mode.  This option, selects
365c06b6b69Smrg                       an 18 bit TFT bus. For other depths this option
366c06b6b69Smrg                       has no effect.
367c06b6b69Smrg
3687d17d341Smrg     Chipset           It is possible that the chip could be
369c06b6b69Smrg                       misidentified, particular due to interactions
370c06b6b69Smrg                       with other drivers in the server. It is possible
371c06b6b69Smrg                       to force the server to identify a particular chip
372c06b6b69Smrg                       with this option.
373c06b6b69Smrg
3747d17d341Smrg     Option            Composite sync on green. Possibly useful if you
375c06b6b69Smrg                       wish to use an old workstation monitor. The HiQV
376c06b6b69Smrg                       internal RAMDAC's supports this mode of
377c06b6b69Smrg                       operation, but whether a particular machine does
378c06b6b69Smrg                       depends on the manufacturer.
379c06b6b69Smrg
3807d17d341Smrg     DacSpeed 80.000   The server will limit the maximum dotclock to a
381c06b6b69Smrg                       value as specified by the manufacturer. This
382c06b6b69Smrg                       might make certain modes impossible to obtain
383c06b6b69Smrg                       with a reasonable refresh rate. Using this option
384c06b6b69Smrg                       the user can override the maximum dot-clock and
385c06b6b69Smrg                       specify any value they prefer. Use caution with
386c06b6b69Smrg                       this option, as driving the video processor
387c06b6b69Smrg                       beyond its specifications might cause damage.
388c06b6b69Smrg
3897d17d341Smrg     Option            Option "SetMClk" "38000kHz"" This option sets the
390c06b6b69Smrg                       internal memory clock (MCLK) registers of HiQV
391c06b6b69Smrg                       chipsets to 38MHz or some other value. Use
392c06b6b69Smrg                       caution as excess heat generated by the video
393c06b6b69Smrg                       processor if its specifications are exceeded
394c06b6b69Smrg                       might cause damage. However careful use of this
395c06b6b69Smrg                       option might boost performance. This option might
396c06b6b69Smrg                       also be used to reduce the speed of the memory
397c06b6b69Smrg                       clock to preserve power in modes that don't need
398c06b6b69Smrg                       the full speed of the memory to work correctly.
399c06b6b69Smrg                       This option might also be needed to reduce the
400c06b6b69Smrg                       speed of the memory clock with the "Overlay"
401c06b6b69Smrg                       option.
402c06b6b69Smrg
4037d17d341Smrg     Option            By default it is assumed that there are 6
404c06b6b69Smrg                       significant bits in the RGB representation of the
405c06b6b69Smrg                       colours in 4bpp and above. If the colours seem
406c06b6b69Smrg                       darker than they should be, perhaps your ramdac
407c06b6b69Smrg                       is has 8 significant bits. This option forces the
408c06b6b69Smrg                       server to assume that there are 8 significant
409c06b6b69Smrg                       bits.
410c06b6b69Smrg
4117d17d341Smrg     Option            This is a debugging option and general users have
412c06b6b69Smrg                       no need of it.  Using this option, when the
413c06b6b69Smrg                       virtual desktop is scrolled away from the zero
414c06b6b69Smrg                       position, the pixmap cache becomes visible. This
415c06b6b69Smrg                       is useful to see that pixmaps, tiles, etc have
416c06b6b69Smrg                       been properly cached.
417c06b6b69Smrg
4187d17d341Smrg     Option            This option is only useful when acceleration
419c06b6b69Smrg                       can't be used and linear addressing can be used.
420c06b6b69Smrg                       With this option all of the graphics are rendered
421c06b6b69Smrg                       into a copy of the framebuffer that is keep in
422c06b6b69Smrg                       the main memory of the computer, and the screen
423c06b6b69Smrg                       is updated from this copy. In this way the
424c06b6b69Smrg                       expensive operation of reading back to contents
425c06b6b69Smrg                       of the screen is never performed and the
426c06b6b69Smrg                       performance is improved. Because the rendering is
427c06b6b69Smrg                       all done into a virtual framebuffer acceleration
428c06b6b69Smrg                       can not be used.
429c06b6b69Smrg
4307d17d341Smrg     Option            The new TMED DSTN dithering scheme available on
431c06b6b69Smrg                       recent HiQV chipsets gives improved performance.
432c06b6b69Smrg                       However, some machines appear to have this
433c06b6b69Smrg                       feature incorrectly setup. If you have snow on
434c06b6b69Smrg                       your DSTN LCD, try using this option. This option
435c06b6b69Smrg                       is only relevant for chipsets more recent than
436c06b6b69Smrg                       the ct65555 and only when used with a DSTN LCD.
437c06b6b69Smrg
4387d17d341Smrg     Option            The HiQV chipsets contain a multimedia engine
43944256261Smrg                       that allow a 16bpp window to be overlaid on the
440c06b6b69Smrg                       screen. This driver uses this capability to
441c06b6b69Smrg                       include a 16bpp framebuffer on top of an 8bpp
442c06b6b69Smrg                       framebuffer. In this way PseudoColor and
443c06b6b69Smrg                       TrueColor visuals can be used on the same screen.
444c06b6b69Smrg                       XFree86 believes that the 8bpp framebuffer is
44544256261Smrg                       overlaid on the 16bpp framebuffer. Therefore to
446c06b6b69Smrg                       use this option the server must be started in
447c06b6b69Smrg                       either 15 or 16bpp depth. Also the maximum size
448c06b6b69Smrg                       of the desktop with this option is 1024x1024, as
449c06b6b69Smrg                       this is the largest window that the HiQV
450c06b6b69Smrg                       multimedia engine can display. Note that this
451c06b6b69Smrg                       option using the multimedia engine to its limit,
452c06b6b69Smrg                       and some manufacturers have set a default memory
453c06b6b69Smrg                       clock that will cause pixel errors with this
454c06b6b69Smrg                       option.  If you get pixel error with this option
455c06b6b69Smrg                       try using the "SetMClk" option to slow the memory
456c06b6b69Smrg                       clock. It should also be noted that the XVideo
457c06b6b69Smrg                       extension uses the same capabilities of the HiQV
458c06b6b69Smrg                       chipsets as the Overlays. So using this option
459c06b6b69Smrg                       disables the XVideo extension.
460c06b6b69Smrg
461c06b6b69Smrg
4627d17d341Smrg     Option            Normally the colour transparency key for the
463c06b6b69Smrg                       overlay is the 8bpp lookup table entry 255. This
464c06b6b69Smrg                       might cause troubles with some applications, and
465c06b6b69Smrg                       so this option allows the colour transparency key
466c06b6b69Smrg                       to be set to some other value. Legal values are 2
467c06b6b69Smrg                       to 255 inclusive.
468c06b6b69Smrg
4697d17d341Smrg     Option            This sets the default pixel value for the YUV
470c06b6b69Smrg                       video overlay key. Legal values for this key are
471c06b6b69Smrg                       depth dependent. That is from 0 to 255 for 8bit
472c06b6b69Smrg                       depth, 0 to 32,767 for 15bit depth, etc. This
473c06b6b69Smrg                       option might be used if the default video overlay
474c06b6b69Smrg                       key causes problems.
475c06b6b69Smrg
4767d17d341Smrg     Option            The 69030 chipset has independent display
477c06b6b69Smrg                       channels, that can be configured to support
478c06b6b69Smrg                       independent refresh rates on the flat panel and
479c06b6b69Smrg                       on the CRT. The default behaviour is to have both
480c06b6b69Smrg                       the flat panel and the CRT use the same display
481c06b6b69Smrg                       channel and thus the same refresh rate. This
482c06b6b69Smrg                       option forces the two display channels to be
483c06b6b69Smrg                       used, giving independent refresh rates.
484c06b6b69Smrg
4857d17d341Smrg     Option            The ct69030 supports dual-head display. By
486c06b6b69Smrg                       default the two display share equally the
487c06b6b69Smrg                       available memory. This option forces the second
488c06b6b69Smrg                       display to take a particular amount of memory.
489c06b6b69Smrg                       Please read the section below about dual-head
490c06b6b69Smrg                       display.
491c06b6b69Smrg
4927d17d341Smrg     Option            Option "XaaNoSolidFillRect", Option "XaaNoSolid-
493c06b6b69Smrg                       HorVertLine", Option "XaaNoMono8x8PatternFill-
494c06b6b69Smrg                       Rect", Option "XaaNoColor8x8PatternFillRect",
495c06b6b69Smrg                       Option "XaaNoCPUToScreenColorExpandFill", Option
496c06b6b69Smrg                       "XaaNoScreenToScreenColorExpandFill", Option
497c06b6b69Smrg                       "XaaNoImageWriteRect", Option "XaaNoImageRead-
498c06b6b69Smrg                       Rect", Option "XaaNoPixmapCache", Option
499c06b6b69Smrg                       "XaaNoOffscreenPixmaps" " These option
500c06b6b69Smrg                       individually disable the features of the XAA
501c06b6b69Smrg                       acceleration code that the Chips and Technologies
502c06b6b69Smrg                       driver uses. If you have a problem with the
503c06b6b69Smrg                       acceleration and these options will allow you to
504c06b6b69Smrg                       isolation the problem. This information will be
505c06b6b69Smrg                       invaluable in debugging any problems.
506c06b6b69Smrg
507c06b6b69Smrg
5087d17d341Smrg  4.  Modelines
509c06b6b69Smrg
510c06b6b69Smrg
511c06b6b69Smrg  When constructing a modeline for use with the Chips and Technologies
512c06b6b69Smrg  driver you'll needed to considered several points
513c06b6b69Smrg
514c06b6b69Smrg
5157d17d341Smrg      * Virtual Screen Size
516c06b6b69Smrg        It is the virtual screen size that determines the amount of
517c06b6b69Smrg        memory used by a mode. So if you have a virtual screen size set
518c06b6b69Smrg        to 1024x768 using a 800x600 at 8bpp, you use 768kB for the mode.
519c06b6b69Smrg        Further to this some of the XAA acceleration requires that the
520c06b6b69Smrg        display pitch is a multiple of 64 pixels. So the driver will
521c06b6b69Smrg        attempt to round-up the virtual X dimension to a multiple of 64,
522c06b6b69Smrg        but leave the virtual resolution untouched. This might further
523c06b6b69Smrg        reduce the available memory.
524c06b6b69Smrg
5257d17d341Smrg      * 16/24/32 Bits Per Pixel
526c06b6b69Smrg        Hi-Color and True-Color modes are implemented in the server. The
527c06b6b69Smrg        clocks in the 6554x series of chips are internally divided by 2
528c06b6b69Smrg        for 16bpp and 3 for 24bpp, allowing one modeline to be used at
5297d17d341Smrg        all depths. The effect of this is that the maximum dot clock
530c06b6b69Smrg        visible to the user is a half or a third of the value at 8bpp.
531c06b6b69Smrg        The HiQV series of chips doesn't need to use additional clock
532c06b6b69Smrg        cycles to display higher depths, and so the same modeline can be
533c06b6b69Smrg        used at all depths, without needing to divide the clocks.  Also
534c06b6b69Smrg        16/24/32 bpp modes will need 2 , 3 or 4 times respectively more
535c06b6b69Smrg        video ram.
536c06b6b69Smrg
5377d17d341Smrg      * Frame Acceleration
538c06b6b69Smrg        Many DSTN screens use frame acceleration to improve the
539c06b6b69Smrg        performance of the screen. This can be done by using an external
540c06b6b69Smrg        frame buffer, or incorporating the framebuffer at the top of
541c06b6b69Smrg        video ram depending on the particular implementation. The
542c06b6b69Smrg        Xserver assumes that the framebuffer, if used, will be at the
543c06b6b69Smrg        top of video ram.  The amount of ram required for the
544c06b6b69Smrg        framebuffer will vary depending on the size of the screen, and
545c06b6b69Smrg        will reduce the amount of video ram available to the modes.
546c06b6b69Smrg        Typical values for the size of the framebuffer will be 61440
547c06b6b69Smrg        bytes (640x480 panel), 96000 bytes (800x600 panel) and 157287
548c06b6b69Smrg        bytes (1024x768 panel).
549c06b6b69Smrg
5507d17d341Smrg      * H/W Acceleration
551c06b6b69Smrg        The H/W cursor will need 1kB for the 6554x and 4kb for the
552c06b6b69Smrg        65550. On the 64300 chips the H/W cursor is stored in registers
553c06b6b69Smrg        and so no allowance is needed for the H/W cursor. In addition to
554c06b6b69Smrg        this many graphics operations are speeded up using a "pixmap
555c06b6b69Smrg        cache". Leaving too little memory available for the cache will
556c06b6b69Smrg        only have a detrimental effect on the graphics performance.
557c06b6b69Smrg
5587d17d341Smrg      * PseudoColor Overlay
559c06b6b69Smrg        If you use the "overlay" option, then there are actually two
560c06b6b69Smrg        framebuffers in the video memory. An 8bpp one and a 16bpp one.
561c06b6b69Smrg        The total memory requirements in this mode of operation is
562c06b6b69Smrg        therefore similar to a 24bpp mode. The overlay consumes memory
563c06b6b69Smrg        bandwidth, so that the maximum dotclock will be similar to a
564c06b6b69Smrg        24bpp mode.
565c06b6b69Smrg
5667d17d341Smrg      * XVideo extension*
567c06b6b69Smrg        Like the overlays, the Xvideo extension uses a part of the video
568c06b6b69Smrg        memory for a second framebuffer. In this case enough memory
569c06b6b69Smrg        needs to be left for the largest unscaled video window that will
570c06b6b69Smrg        be displayed.
571c06b6b69Smrg
5727d17d341Smrg      * VESA like modes
573c06b6b69Smrg        We recommend that you try and pick a mode that is similar to a
574c06b6b69Smrg        standard VESA mode. If you don't a suspend/resume or LCD/CRT
575c06b6b69Smrg        switch might mess up the screen. This is a problem with the
576c06b6b69Smrg        video BIOS not knowing about all the funny modes that might be
577c06b6b69Smrg        selected.
578c06b6b69Smrg
5797d17d341Smrg      * Dot Clock
580c06b6b69Smrg        For LCD screens, the lowest clock that gives acceptable contrast
581c06b6b69Smrg        and flicker is usually the best one. This also gives more memory
582c06b6b69Smrg        bandwidth for use in the drawing operations. Some users prefer
583c06b6b69Smrg        to use clocks that are defined by their BIOS. This has the
584c06b6b69Smrg        advantage that the BIOS will probably restore the clock they
585c06b6b69Smrg        specified after a suspend/resume or LCD/CRT switch. For a
586c06b6b69Smrg        complete discussion on the dot clock limitations, see the next
587c06b6b69Smrg        section.
588c06b6b69Smrg
5897d17d341Smrg      * Dual-head display
590c06b6b69Smrg        Dual-head display has two effects on the modelines. Firstly, the
591c06b6b69Smrg        memory requirements of both heads must fit in the available
592c06b6b69Smrg        memory. Secondly, the memory bandwidth of the video processor is
593c06b6b69Smrg        shared between the two heads. Hence the maximum dot-clock might
594c06b6b69Smrg        need to be limited.
595c06b6b69Smrg
596c06b6b69Smrg  The driver is capable of driving both a CRT and a flat panel display.
597c06b6b69Smrg  In fact the timing for the flat panel are dependent on the
598c06b6b69Smrg  specification of the panel itself and are independent of the
599c06b6b69Smrg  particular mode chosen. For this reason it is recommended to use one
600c06b6b69Smrg  of the programs that automatically generate xorg.conf files, such as
601c06b6b69Smrg  "xorgconfig".
602c06b6b69Smrg
603c06b6b69Smrg  However there are many older machines, particularly those with 800x600
604c06b6b69Smrg  screen or larger, that need to reprogram the panel timings. The reason
605c06b6b69Smrg  for this is that the manufacturer has used the panel timings to get a
606c06b6b69Smrg  standard EGA mode to work on flat panel, and these same timings don't
607c06b6b69Smrg  work for an SVGA mode. For these machines the "UseModeline" and/or
608c06b6b69Smrg  possibly the "FixPanelSize" option might be needed. Some machines that
609c06b6b69Smrg  are known to need these options include.
610c06b6b69Smrg
611c06b6b69Smrg
612c06b6b69Smrg
613c06b6b69Smrg       Modeline "640x480@8bpp"       25.175  640  672  728  816   480  489  501  526
614c06b6b69Smrg       Modeline "640x480@16bpp"  25.175  640  672  728  816   480  489  501  526
615c06b6b69Smrg       Options: "UseModeline"
616c06b6b69Smrg       Tested on a Prostar 8200, (640x480, 65548, 1Mbyte)
617c06b6b69Smrg
618c06b6b69Smrg
619c06b6b69Smrg
620c06b6b69Smrg       Modeline "800x600@8bpp"       28.322  800  808  848  936   600  600  604  628
621c06b6b69Smrg       Options: "FixPanelSize", "UseModeline"
622c06b6b69Smrg       Tested on a HP OmniBook 5000CTS (800x600 TFT, 65548, 1Mbyte)
623c06b6b69Smrg
624c06b6b69Smrg
625c06b6b69Smrg
626c06b6b69Smrg       Modeline "800x600@8bpp"       30.150  800  896  960 1056   600  600  604  628
627c06b6b69Smrg       Options: "FixPanelSize", "UseModeline"
628c06b6b69Smrg       Tested on a Zeos Meridan 850c (800x600 DSTN, 65545, 1Mbyte)
629c06b6b69Smrg
630c06b6b69Smrg
631c06b6b69Smrg
6327d17d341Smrg  The IBM PC110 works best with a 15MHz clock (Thanks to Alan Cox):
633c06b6b69Smrg
634c06b6b69Smrg
635c06b6b69Smrg       Modeline "640x480"        15.00   640  672  728  816   480  489  496  526
636c06b6b69Smrg       Options: "TextClockFreq" "15.00"
637c06b6b69Smrg       IBM PC110 (65535, Citizen L6481L-FF DSTN)
638c06b6b69Smrg
639c06b6b69Smrg
640c06b6b69Smrg
641c06b6b69Smrg  The NEC Versa 4080 just needs the "FixPanelSize" option. To the best
642c06b6b69Smrg  of my knowledge no machine with a HiQV needs the "UseModeline" or
643c06b6b69Smrg  "FixPanelSize" options.
644c06b6b69Smrg
645c06b6b69Smrg
6467d17d341Smrg  5.  Dual Display Channel
647c06b6b69Smrg
648c06b6b69Smrg
649c06b6b69Smrg  XFree86 releases later than 4.1.0 and X.Org releases later than 6.7.0
6507d17d341Smrg  support dual-channel display on the ct69030. This support can be used
651c06b6b69Smrg  to give a single display image on two screen with different refresh
652c06b6b69Smrg  rates, or entirely different images on the two displays.
653c06b6b69Smrg
654c06b6b69Smrg  Dual refresh rate display can be selected with the "DualRefresh"
655c06b6b69Smrg  option described above. However to use the dual-head support is
656c06b6b69Smrg  slightly more complex. Firstly, the ct69030 chipset must be installed
657c06b6b69Smrg  on a PCI bus. This is a driver limitation that might be relaxed in the
658c06b6b69Smrg  future. In addition the device, screen and layout sections of the
659c06b6b69Smrg  "xorg.conf" must be correctly configured. A sample of an incomplete
660c06b6b69Smrg  "xorg.conf" is given below
661c06b6b69Smrg
662c06b6b69Smrg
663c06b6b69Smrg
664c06b6b69Smrg       Section "Device"
665c06b6b69Smrg           Identifier  "Chips and Technologies - Pipe A"
666c06b6b69Smrg           Driver      "chips"
667c06b6b69Smrg           BusID       "PCI:0:20:0"
668c06b6b69Smrg           Screen      0
669c06b6b69Smrg       EndSection
670c06b6b69Smrg
671c06b6b69Smrg       Section "Device"
672c06b6b69Smrg           Identifier  "Chips and Technologies - Pipe B"
673c06b6b69Smrg           Driver      "chips"
674c06b6b69Smrg           BusID       "PCI:0:20:0"
675c06b6b69Smrg           Screen      1
676c06b6b69Smrg       EndSection
677c06b6b69Smrg
678c06b6b69Smrg       Section "Screen"
679c06b6b69Smrg           Identifier  "Screen 0"
680c06b6b69Smrg           Device      "Chips and Technologies - Pipe A"
681c06b6b69Smrg           Monitor     "generic LCD"
682c06b6b69Smrg
683c06b6b69Smrg           SubSection "Display"
684c06b6b69Smrg               Depth           16
685c06b6b69Smrg               Modes           "1024x768"
686c06b6b69Smrg           EndSubsection
687c06b6b69Smrg       EndSection
688c06b6b69Smrg
689c06b6b69Smrg       Section "Screen"
690c06b6b69Smrg           Identifier  "Screen 1"
691c06b6b69Smrg           Device      "Chips and Technologies - Pipe B"
692c06b6b69Smrg           Monitor     "generic CRT"
693c06b6b69Smrg
694c06b6b69Smrg           SubSection "Display"
695c06b6b69Smrg               Depth           16
696c06b6b69Smrg               Modes           "1024x768"
697c06b6b69Smrg           EndSubsection
698c06b6b69Smrg       EndSection
699c06b6b69Smrg
700c06b6b69Smrg       Section "ServerLayout"
701c06b6b69Smrg           Identifier  "Main Layout"
702c06b6b69Smrg           Screen      "Screen 0"
703c06b6b69Smrg           Screen      "Screen 1" RightOf "Screen 0"
704c06b6b69Smrg           InputDevice "Mouse1" "CorePointer"
705c06b6b69Smrg           InputDevice "Keyboard1" "CoreKeyboard"
706c06b6b69Smrg       EndSection
707c06b6b69Smrg
708c06b6b69Smrg
709c06b6b69Smrg
710c06b6b69Smrg  The device section must include the PCI BusID. This can be found from
711c06b6b69Smrg  the log file of a working single-head installation. For instance, the
712c06b6b69Smrg  line
713c06b6b69Smrg
714c06b6b69Smrg
715c06b6b69Smrg
716c06b6b69Smrg  (--) PCI:*(0:20:0) C&T 69030 rev 97, Mem @ 0xed000000/24
717c06b6b69Smrg
718c06b6b69Smrg
719c06b6b69Smrg
720c06b6b69Smrg  appears for the case above. Additionally, the "Screen" option must
721c06b6b69Smrg  appear in the device section. It should be noted that if a flat panel
722c06b6b69Smrg  is used, this it must be allocated to "Screen 0".
723c06b6b69Smrg
724c06b6b69Smrg  The server can then be started with the "+xinerama" option as follows
725c06b6b69Smrg
726c06b6b69Smrg
727c06b6b69Smrg
728c06b6b69Smrg       startx -- +xinerama
729c06b6b69Smrg
730c06b6b69Smrg
731c06b6b69Smrg
732c06b6b69Smrg  For more information, read the Xinerama documentation.
733c06b6b69Smrg
734c06b6b69Smrg  It should be noted that the dual channel display options of the 69030
735c06b6b69Smrg  require the use of additional memory bandwidth, as each display
736c06b6b69Smrg  channel independently accesses the video memory. For this reason, the
737c06b6b69Smrg  maximum colour depth and resolution that can be supported in a dual
738c06b6b69Smrg  channel mode will be reduced compared to a single display channel
739c06b6b69Smrg  mode. However, as the driver does not prevent you from using a mode
740c06b6b69Smrg  that will exceed the memory bandwidth of the 69030, but a warning like
741c06b6b69Smrg
742c06b6b69Smrg
743c06b6b69Smrg
744c06b6b69Smrg       (WW) Memory bandwidth requirements exceeded by dual-channel
745c06b6b69Smrg       (WW)    mode. Display might be corrupted!!!
746c06b6b69Smrg
747c06b6b69Smrg
748c06b6b69Smrg
749c06b6b69Smrg  If you see such display corruption, and you have this warning, your
750c06b6b69Smrg  choices are to reduce the refresh rate, colour depth or resolution, or
751c06b6b69Smrg  increase the speed of the memory clock with the the "SetMClk" option
752c06b6b69Smrg  described above. Note that increasing the memory clock also has its
753c06b6b69Smrg  own problems as described above.
754c06b6b69Smrg
755c06b6b69Smrg
7567d17d341Smrg  6.  The Full Story on Clock Limitations
757c06b6b69Smrg
758c06b6b69Smrg
759c06b6b69Smrg  There has been much confusion about exactly what the clock limitations
760c06b6b69Smrg  of the Chips and Technologies chipsets are. Hence I hope that this
761c06b6b69Smrg  section will clear up the misunderstandings.
762c06b6b69Smrg
763c06b6b69Smrg  In general there are two factors determining the maximum dotclock.
764c06b6b69Smrg  There is the limit of the maximum dotclock the video processor can
765c06b6b69Smrg  handle, and there is another limitation of the available memory
766c06b6b69Smrg  bandwidth. The memory bandwidth is determined by the clock used for
767c06b6b69Smrg  the video memory.  For chipsets incapable of colour depths greater
768c06b6b69Smrg  that 8bpp like the 65535, the dotclock limit is solely determined by
769c06b6b69Smrg  the highest dotclock the video processor is capable of handling. So
770c06b6b69Smrg  this limit will be either 56MHz or 68MHz for the 655xx chipsets,
771c06b6b69Smrg  depending on what voltage they are driven with, or 80MHz for the 64200
772c06b6b69Smrg  WinGine machines.
773c06b6b69Smrg
774c06b6b69Smrg  The 6554x and 64300 WinGine chipsets are capable of colour depths of
775c06b6b69Smrg  16 or 24bpp. However there is no reliable way of probing the memory
776c06b6b69Smrg  clock used in these chipsets, and so a conservative limit must be
777c06b6b69Smrg  taken for the dotclock limit. In this case the driver divides the
778c06b6b69Smrg  video processors dotclock limitation by the number of bytes per pixel,
779c06b6b69Smrg  so that the limitations for the various colour depths are
780c06b6b69Smrg
781c06b6b69Smrg
782c06b6b69Smrg                          8bpp    16bpp   24bpp
783c06b6b69Smrg  64300                   85      42.5    28.33
784c06b6b69Smrg  65540/65545 3.3v        56      28      18.67
785c06b6b69Smrg  65540/65545 5v          68      34      22.67
786c06b6b69Smrg  65546/65548             80      40      26.67
787c06b6b69Smrg
788c06b6b69Smrg
789c06b6b69Smrg
790c06b6b69Smrg  For a CRT or TFT screen these limitations are conservative and the
791c06b6b69Smrg  user might safely override them with the "DacSpeed" option to some
792c06b6b69Smrg  extent. However these numbers take no account of the extra bandwidth
793c06b6b69Smrg  needed for DSTN screens.
794c06b6b69Smrg
795c06b6b69Smrg  For the HiQV series of chips, the memory clock can be successfully
796c06b6b69Smrg  probed.  Hence you will see a line like
797c06b6b69Smrg
798c06b6b69Smrg
799c06b6b69Smrg  (--) CHIPS(0): Probed memory clock of  40.090 MHz
800c06b6b69Smrg
801c06b6b69Smrg
802c06b6b69Smrg
803c06b6b69Smrg  in your startx log file. Note that many chips are capable of higher
804c06b6b69Smrg  memory clocks than actually set by BIOS. You can use the "SetMClk"
805c06b6b69Smrg  option in your xorg.conf file to get a higher MClk. However some video
806c06b6b69Smrg  ram, particularly EDO, might not be fast enough to handle this,
807c06b6b69Smrg  resulting in drawing errors on the screen. The formula to determine
808c06b6b69Smrg  the maximum usable dotclock on the HiQV series of chips is
809c06b6b69Smrg
810c06b6b69Smrg
811c06b6b69Smrg  Max dotclock = min(MaxDClk,  0.70  * 8 * MemoryClk / (BytesPerPixel +
812c06b6b69Smrg                  (isDSTN == TRUE ? 1 : 0)))
813c06b6b69Smrg
814c06b6b69Smrg
815c06b6b69Smrg
816c06b6b69Smrg  if you chips is a 69030 or 69000 or
817c06b6b69Smrg
818c06b6b69Smrg
819c06b6b69Smrg  Max dotclock = min(MaxDClk,  0.70  * 4 * MemoryClk / (BytesPerPixel +
820c06b6b69Smrg                  (isDSTN == TRUE ? 1 : 0)))
821c06b6b69Smrg
822c06b6b69Smrg
823c06b6b69Smrg
824c06b6b69Smrg  otherwise. This effectively means that there are two limits on the
825c06b6b69Smrg  dotclock. One the overall maximum, and another due to the available
8267d17d341Smrg  memory bandwidth of the chip. The 69030 and 69000 have a 64bit memory
827c06b6b69Smrg  bus and thus transfer 8 bytes every clock thus (hence the 8), while
828c06b6b69Smrg  the other HiQV chipsets are 32bit and transfer 4 bytes per clock cycle
829c06b6b69Smrg  (hence the 4). However, after accounting for the RAS/CAS signaling
830c06b6b69Smrg  only about 70% of the bandwidth is available. The whole thing is
831c06b6b69Smrg  divided by the bytes per pixel, plus an extra byte if you are using a
832c06b6b69Smrg  DSTN. The extra byte with DSTN screens is used for the frame
833c06b6b69Smrg  buffering/acceleration in these screens. So for the various Chips and
834c06b6b69Smrg  Technologies chips the maximum specifications are
835c06b6b69Smrg
836c06b6b69Smrg
837c06b6b69Smrg
838c06b6b69Smrg                      Max DClk MHz      Max Mem Clk MHz
839c06b6b69Smrg  65550 rev A 3.3v          80                38
840c06b6b69Smrg  65550 rev A 5v           110                38
841c06b6b69Smrg  65550 rev B               95                50
842c06b6b69Smrg  65554                     94.5              55
843c06b6b69Smrg  65555                    110                55
844c06b6b69Smrg  68554                    110                55
845c06b6b69Smrg  69000                    135                83
846c06b6b69Smrg  69030                    170               100
847c06b6b69Smrg
848c06b6b69Smrg
849c06b6b69Smrg
850c06b6b69Smrg  Note that all of the chips except the 65550 rev A are 3.3v only. Which
851c06b6b69Smrg  is the reason for the drop in the dot clock. Now the maximum memory
852c06b6b69Smrg  clock is just the maximum supported by the video processor, not the
853c06b6b69Smrg  maximum supported by the video memory. So the value actually used for
854c06b6b69Smrg  the memory clock might be significantly less than this maximum value.
855c06b6b69Smrg  But assuming your memory clock is programmed to these maximum values
856c06b6b69Smrg  the various maximum dot clocks for the chips are
857c06b6b69Smrg
858c06b6b69Smrg
859c06b6b69Smrg                          ------CRT/TFT-------    --------DSTN--------
860c06b6b69Smrg                          8bpp    16bpp   24bpp   8bpp    16bpp   24bpp
861c06b6b69Smrg  65550 rev A 3.3v        80      53.2    35.47   53.2    35.47   26.6
862c06b6b69Smrg  65550 rev A 5v          106.2   53.2    35.47   53.2    35.47   26.6
863c06b6b69Smrg  65550 rev B             95      70      46.67   70      46.67   35.0
864c06b6b69Smrg  65554                   94.5    77      51.33   77      51.33   38.5
865c06b6b69Smrg  65555                   110     77      51.33   77      51.33   38.5
866c06b6b69Smrg  68554                   110     77      51.33   77      51.33   38.5
867c06b6b69Smrg  69000                   135    135     135     135     135     116.2
868c06b6b69Smrg  69030                   170    170     170     170     170     140
869c06b6b69Smrg
870c06b6b69Smrg
871c06b6b69Smrg
872c06b6b69Smrg  If you exceed the maximum set by the memory clock, you'll get
873c06b6b69Smrg  corruption on the screen during graphics operations, as you will be
874c06b6b69Smrg  starving the HW BitBlt engine of clock cycles. If you are driving the
875c06b6b69Smrg  video memory too fast (too high a MemClk) you'll get pixel corruption
876c06b6b69Smrg  as the data actually written to the video memory is corrupted by
877c06b6b69Smrg  driving the memory too fast. You can probably get away with exceeding
878c06b6b69Smrg  the Max DClk at 8bpp on TFT's or CRT's by up to 10% or so without
879c06b6b69Smrg  problems, it will just generate more heat, since the 8bpp clocks
880c06b6b69Smrg  aren't limited by the available memory bandwidth.
881c06b6b69Smrg
882c06b6b69Smrg  If you find you truly can't achieve the mode you are after with the
883c06b6b69Smrg  default clock limitations, look at the options "DacSpeed" and
884c06b6b69Smrg  "SetMClk". Using these should give you all the capabilities you'll
885c06b6b69Smrg  need in the server to get a particular mode to work. However use
886c06b6b69Smrg  caution with these options, because there is no guarantee that driving
887c06b6b69Smrg  the video processor beyond it capabilities won't cause damage.
888c06b6b69Smrg
889c06b6b69Smrg
8907d17d341Smrg  7.  Troubleshooting
891c06b6b69Smrg
892c06b6b69Smrg
893c06b6b69Smrg
8947d17d341Smrg      The cursor appears as a white box, after switching modes
895c06b6b69Smrg        There is a known bug in the H/W cursor, that sometimes causes
896c06b6b69Smrg        the cursor to be redrawn as a white box, when the mode is
897c06b6b69Smrg        changed.  This can be fixed by moving the cursor to a different
898c06b6b69Smrg        region, switching to the console and back again, or if it is too
899c06b6b69Smrg        annoying the H/W cursor can be disabled by removing the
900c06b6b69Smrg        "HWcursor" option.
901c06b6b69Smrg
9027d17d341Smrg      The cursor hot-spot isn't at the same point as the cursor
903c06b6b69Smrg        With modes on the 6555x machines that are stretched to fill the
904c06b6b69Smrg        flat panel, the H/W cursor is not correspondingly stretched.
905c06b6b69Smrg        This is a small and long-standing bug in the current server. You
906c06b6b69Smrg        can avoid this by either using the "NoStretch" option or
907c06b6b69Smrg        removing the HWcursor" option.
908c06b6b69Smrg
9097d17d341Smrg      The lower part of the screen is corrupted
910c06b6b69Smrg        Many DSTN screens use the top of video ram to implement a frame
911c06b6b69Smrg        accelerator. This reduces the amount of video ram available to
912c06b6b69Smrg        the modes. The server doesn't prevent the user from specifying a
913c06b6b69Smrg        mode that will use this memory, it prints a warning on the
914c06b6b69Smrg        console.  The effect of this problem will be that the lower part
915c06b6b69Smrg        of the screen will reside in the same memory as the frame
916c06b6b69Smrg        accelerator and will therefore be corrupt. Try reducing the
917c06b6b69Smrg        amount of memory consumed by the mode.
918c06b6b69Smrg
9197d17d341Smrg      There is a video signal, but the screen doesn't sync.
920c06b6b69Smrg        You are using a mode that your screen cannot handle. If it is a
921c06b6b69Smrg        non-standard mode, maybe you need to tweak the timings a bit. If
922c06b6b69Smrg        it is a standard mode and frequency that your screen should be
923c06b6b69Smrg        able to handle, try to find different timings for a similar mode
924c06b6b69Smrg        and frequency combination. For LCD modes, it is possible that
925c06b6b69Smrg        your LCD panel requires different panel timings at the text
926c06b6b69Smrg        console than with a graphics mode. In this case you will need
927c06b6b69Smrg        the "UseModeline" and perhaps also the "FixPanelSize" options to
928c06b6b69Smrg        reprogram the LCD panel timings to sensible values.
929c06b6b69Smrg
9307d17d341Smrg      `Wavy' screen.
931c06b6b69Smrg        Horizontal waving or jittering of the whole screen, continuously
9327d17d341Smrg        (independent from drawing operations). You are probably using a
933c06b6b69Smrg        dot clock that is too high (or too low); it is also possible
934c06b6b69Smrg        that there is interference with a close MCLK. Try a lower dot
935c06b6b69Smrg        clock.  For CRT's you can also try to tweak the mode timings;
936c06b6b69Smrg        try increasing the second horizontal value somewhat.
937c06b6b69Smrg
9387d17d341Smrg      Crash or hang after start-up (probably with a black screen).
939c06b6b69Smrg        Try the "NoAccel" or one of the XAA acceleration options
940c06b6b69Smrg        discussed above. Check that the BIOS settings are OK; in
941c06b6b69Smrg        particular, disable caching of 0xa0000-0xaffff. Disabling hidden
942c06b6b69Smrg        DRAM refresh may also help.
943c06b6b69Smrg
9447d17d341Smrg      Hang as the first text is appearing on the screen on SVR4
9457d17d341Smrg        machines.
946c06b6b69Smrg        This problem has been reported under UnixWare 1.x, but not
947c06b6b69Smrg        tracked down. It doesn't occur under UnixWare 2.x and only
948c06b6b69Smrg        occurs on the HiQV series of chips. It might affect some other
949c06b6b69Smrg        SVR4 operating systems as well. The workaround is to turn off
950c06b6b69Smrg        the use of CPU to screen acceleration with the
951c06b6b69Smrg        "XaaNoCPUToScreenColorExapndFill" option.
952c06b6b69Smrg
9537d17d341Smrg      Crash, hang, or trash on the screen after a graphics operation.
954c06b6b69Smrg        This may be related to a bug in one of the accelerated
955c06b6b69Smrg        functions, or a problem with the BitBLT engine. Try the
956c06b6b69Smrg        "NoAccel" or one of the XAA acceleration options discussed
957c06b6b69Smrg        above. Also check the BIOS settings. It is also possible that
958c06b6b69Smrg        with a high dot clock and depth on a large screen there is very
959c06b6b69Smrg        little bandwidth left for using the BitBLT engine. Try reducing
960c06b6b69Smrg        the clock.
961c06b6b69Smrg
9627d17d341Smrg      Chipset is not detected.
963c06b6b69Smrg        Try forcing the chipset to a type that is most similar to what
964c06b6b69Smrg        you have.
965c06b6b69Smrg
9667d17d341Smrg     The screen is blank when starting X
967c06b6b69Smrg        One possible cause of this problem with older linux kernels is
968c06b6b69Smrg        that the "APM_DISPLAY_BLANK" option didn't work correct. Either
969c06b6b69Smrg        upgrade your kernel or rebuild it with the "APM_DISPLAY_BLANK"
970c06b6b69Smrg        option disabled. If the problem remains, or you aren't using
971c06b6b69Smrg        linux, a CRT/LCD or switch to and from the virtual console will
972c06b6b69Smrg        often fix it.
973c06b6b69Smrg
9747d17d341Smrg      Textmode is not properly restored
975c06b6b69Smrg        This has been reported on some configurations. Many laptops use
976c06b6b69Smrg        the programmable clock of the 6554x chips at the console.  It is
977c06b6b69Smrg        not always possible to find out the setting that is used for
978c06b6b69Smrg        this clock if BIOS has written the MClk after the VClk. Hence
979c06b6b69Smrg        the server assumes a 25.175MHz clock at the console. This is
980c06b6b69Smrg        correct for most modes, but can cause some problems. Usually
981c06b6b69Smrg        this is fixed by switching between the LCD and CRT.
982c06b6b69Smrg        Alternatively the user can use the "TextClockFreq" option
983c06b6b69Smrg        described above to select a different clock for the text
984c06b6b69Smrg        console. Another possible cause of this problem is if linux
985c06b6b69Smrg        kernels are compiled with the "APM_DISPLAY_BLANK" option.  As
986c06b6b69Smrg        mentioned before, try disabling this option.
987c06b6b69Smrg
9887d17d341Smrg      I can't display 640x480 on my 800x600 LCD
989c06b6b69Smrg        The problem here is that the flat panel needs timings that are
990c06b6b69Smrg        related to the panel size, and not the mode size. There is no
991c06b6b69Smrg        facility in the current Xservers to specify these values, and so
992c06b6b69Smrg        the server attempts to read the panel size from the chip. If the
993c06b6b69Smrg        user has used the "UseModeline" or "FixPanelSize" options the
994c06b6b69Smrg        panel timings are derived from the mode, which can be different
99544256261Smrg        than the panel size. Try deleting these options from xorg.conf
996c06b6b69Smrg        or using an LCD/CRT switch.
997c06b6b69Smrg
9987d17d341Smrg      I can't get a 320x240 mode to occupy the whole 640x480 LCD
999c06b6b69Smrg        There is a bug in the 6554x's H/W cursor for modes that are
1000c06b6b69Smrg        doubled vertically. The lower half of the screen is not
1001c06b6b69Smrg        accessible.  The servers solution to this problem is not to do
1002c06b6b69Smrg        doubling vertically.  Which results in the 320x240 mode only
1003c06b6b69Smrg        expanded to 640x360. If this is a problem, a work around is to
1004c06b6b69Smrg        remove the "HWcursor" option. The server will then allow the
1005c06b6b69Smrg        mode to occupy the whole 640x480 LCD.
1006c06b6b69Smrg
10077d17d341Smrg      After a suspend/resume my screen is messed up
1008c06b6b69Smrg        During a suspend/resume, the BIOS controls what is read and
1009c06b6b69Smrg        written back to the registers. If the screen is using a mode
1010c06b6b69Smrg        that BIOS doesn't know about, then there is no guarantee that it
1011c06b6b69Smrg        will be resumed correctly. For this reason a mode that is as
1012c06b6b69Smrg        close to VESA like as possible should be selected. It is also
1013c06b6b69Smrg        possible that the VGA palette can be affected by a
1014c06b6b69Smrg        suspend/resume.  Using an 8bpp, the colour will then be
1015c06b6b69Smrg        displayed incorrectly. This shouldn't affect higher depths, and
1016c06b6b69Smrg        is fixable with a switch to the virtual console and back.
1017c06b6b69Smrg
10187d17d341Smrg      The right hand edge of the mode isn't visible on the LCD
1019c06b6b69Smrg        This is usually due to a problem with the "LcdCenter" option. If
1020c06b6b69Smrg        this option is removed form xorg.conf, then the problem might go
1021c06b6b69Smrg        away. Alternatively the manufacturer could have incorrectly
1022c06b6b69Smrg        programmed the panel size in the EGA console mode. The
1023c06b6b69Smrg        "FixPanelSize" can be used to force the modeline values into the
1024c06b6b69Smrg        panel size registers. Two machines that are known to have this
10257d17d341Smrg        problem are the "HP OmniBook 5000" and the "NEC Versa 4080".
1026c06b6b69Smrg
10277d17d341Smrg      My TFT screen has a reddish tint in 24bpp mode
1028c06b6b69Smrg        For 6554x chipsets the server assumes that the TFT bus width is
1029c06b6b69Smrg        24bits. If this is not true then the screen will appear to have
1030c06b6b69Smrg        a reddish tint. This can be fixed by using the "18BitBus"
1031c06b6b69Smrg        option. Note that the reverse is also true. If the "18BitBus" is
1032c06b6b69Smrg        used and the TFT bus width is 24bpp, then the screen will appear
1033c06b6b69Smrg        reddish. Note that this option only has an effect on TFT
1034c06b6b69Smrg        screens.
1035c06b6b69Smrg
10367d17d341Smrg      SuperProbe won't work with my chipset
1037c06b6b69Smrg        At least one non-PCI bus system with a HiQV chipset has been
1038c06b6b69Smrg        found to require the "-no_bios" option for SuperProbe to
1039c06b6b69Smrg        correctly detect the chipset with the factory default BIOS
1040c06b6b69Smrg        settings. The server itself can correctly detect the chip in the
1041c06b6b69Smrg        same situation.
1042c06b6b69Smrg
10437d17d341Smrg      My 690xx machine lockups when using the
1044c06b6b69Smrg        The 690xx MMIO mode has been implemented entirely from the
1045c06b6b69Smrg        manual as I don't have the hardware to test it on. At this point
1046c06b6b69Smrg        no testing has been done and it is entirely possible that the
1047c06b6b69Smrg        "MMIO option will lockup your machine. You have been warned!
1048c06b6b69Smrg        However if you do try this option and are willing to debug it,
1049c06b6b69Smrg        I'd like to hear from you.
1050c06b6b69Smrg
10517d17d341Smrg      My TrueColor windows are corrupted when using the
1052c06b6b69Smrg        Chips and Technologies specify that the memory clock used with
1053c06b6b69Smrg        the multimedia engine running should be lower than that used
1054c06b6b69Smrg        without. As use of the HiQV chipsets multimedia engine was
1055c06b6b69Smrg        supposed to be for things like zoomed video overlays, its use
1056c06b6b69Smrg        was supposed to be occasional and so most machines have their
1057c06b6b69Smrg        memory clock set to a value that is too high for use with the
1058c06b6b69Smrg        "Overlay" option. So with the "Overlay" option, using the
1059c06b6b69Smrg        "SetMClk" option to reduce the speed of the memory clock is
1060c06b6b69Smrg        recommended.
1061c06b6b69Smrg
10627d17d341Smrg      The mpeg video playing with the XVideo extension has corrupted
10637d17d341Smrg        colours
1064c06b6b69Smrg        The XVideo extension has only recently been added to the chips
1065c06b6b69Smrg        driver.  Some YUV to RGB colour have been noted at 15 and 16 bit
1066c06b6b69Smrg        colour depths.  However, 8 and 24 bit colour depths seem to work
1067c06b6b69Smrg        fine.
1068c06b6b69Smrg
10697d17d341Smrg      My ct69030 machine locks up when starting X
1070c06b6b69Smrg        The ct69030 chipset introduced a new dual channel architecture.
1071c06b6b69Smrg        In its current form, X can not take advantage of this second
1072c06b6b69Smrg        display channel. In fact if the video BIOS on the machine sets
1073c06b6b69Smrg        the ct69030 to a dual channel mode by default, X will lockup
1074c06b6b69Smrg        hard at this point. The solution is to use the BIOS setup to
1075c06b6b69Smrg        change to a single display channel mode, ensuring that both the
1076c06b6b69Smrg        IOSS and MSS registers are set to a single channel mode. Work is
1077c06b6b69Smrg        underway to fix this.
1078c06b6b69Smrg
10797d17d341Smrg      I can't start X-windows with 16, 24 or 32bpp
1080c06b6b69Smrg        Firstly, is your machine capable of 16/24/32bpp with the mode
1081c06b6b69Smrg        specified. Many LCD displays are incapable of using a 24bpp
1082c06b6b69Smrg        mode. Also you need at least a 65540 to use 16/24bpp and at
1083c06b6b69Smrg        least a 65550 for 32bpp. The amount of memory used by the mode
1084c06b6b69Smrg        will be doubled/tripled/quadrupled. The correct options to start
1085c06b6b69Smrg        the server with these modes are
1086c06b6b69Smrg
1087c06b6b69Smrg
1088c06b6b69Smrg                  startx -- -depth 16             5-6-5 RGB ('64K color', XGA)
1089c06b6b69Smrg                  startx -- -depth 15             5-5-5 RGB ('Hicolor')
1090c06b6b69Smrg                  startx -- -depth 24             8-8-8 RGB truecolor
1091c06b6b69Smrg
1092c06b6b69Smrg
1093c06b6b69Smrg     or with the HiQV series of chips you might try
1094c06b6b69Smrg
1095c06b6b69Smrg               startx -- -depth 24 -fbbpp 32   8-8-8 RGB truecolor
1096c06b6b69Smrg
1097c06b6b69Smrg
10987d17d341Smrg     however as X11R7.5 allows 32bpp pixmaps to be used with frame-
1099c06b6b69Smrg     buffers operating in 24bpp, this mode of operating will cost per-
1100c06b6b69Smrg     formance for no gain in functionality.
1101c06b6b69Smrg
1102c06b6b69Smrg     Note that the "-bpp" option has been removed and replaced with a
1103c06b6b69Smrg     "-depth" and "-fbbpp" option because of the confusion between the
1104c06b6b69Smrg     depth and number of bits per pixel used to represent to framebuffer
1105c06b6b69Smrg     and the pixmaps in the screens memory.
1106c06b6b69Smrg
1107c06b6b69Smrg  A general problem with the server that can manifested in many way such
1108c06b6b69Smrg  as drawing errors, wavy screens, etc is related to the programmable
1109c06b6b69Smrg  clock. Many potential programmable clock register setting are
1110c06b6b69Smrg  unstable.  However luckily there are many different clock register
1111c06b6b69Smrg  setting that can give the same or very similar clocks. The clock code
1112c06b6b69Smrg  can be fooled into giving a different and perhaps more stable clock by
1113c06b6b69Smrg  simply changing the clock value slightly. For example 65.00MHz might
1114c06b6b69Smrg  be unstable while 65.10MHz is not. So for unexplained problems not
1115c06b6b69Smrg  addressed above, please try to alter the clock you are using slightly,
1116c06b6b69Smrg  say in steps of 0.05MHz and see if the problem goes away.
1117c06b6b69Smrg  Alternatively, using the "CRTClkIndx" or "FPClkIndx" option with HiQV
1118c06b6b69Smrg  chips might also help.
1119c06b6b69Smrg
1120c06b6b69Smrg
1121c06b6b69Smrg  For other screen drawing related problems, try the "NoAccel" or one of
1122c06b6b69Smrg  the XAA acceleration options discussed above. A useful trick for all
1123c06b6b69Smrg  laptop computers is to switch between LCD/CRT (usually with something
1124c06b6b69Smrg  like Fn-F5), if the screen is having problems.
1125c06b6b69Smrg
1126c06b6b69Smrg  If you are having driver-related problems that are not addressed by
1127c06b6b69Smrg  this document, or if you have found bugs in accelerated functions, you
1128c06b6b69Smrg  can try contacting the Xorg team (the current driver maintainer can be
11297d17d341Smrg  reached at  <mailto:eich@freedesktop.org>).
1130c06b6b69Smrg
1131c06b6b69Smrg
11327d17d341Smrg  8.  Disclaimer
1133c06b6b69Smrg
1134c06b6b69Smrg
1135c06b6b69Smrg  The Xorg X server, allows the user to do damage to their hardware with
1136c06b6b69Smrg  software with old monitors which may not tolerate bad display
1137c06b6b69Smrg  settings.  Although the authors of this software have tried to prevent
1138c06b6b69Smrg  this, they disclaim all responsibility for any damage caused by the
1139c06b6b69Smrg  software. Use caution, if you think the X server is frying your
1140c06b6b69Smrg  screen, TURN THE COMPUTER OFF!!
1141c06b6b69Smrg
1142c06b6b69Smrg
11437d17d341Smrg  9.  Acknowledgement
1144c06b6b69Smrg
1145c06b6b69Smrg
1146c06b6b69Smrg  The authors of this software wish to acknowledge the support supplied
1147c06b6b69Smrg  by Chips and Technologies during the development of this software.
1148c06b6b69Smrg
1149c06b6b69Smrg
11507d17d341Smrg  10.  Authors
1151c06b6b69Smrg
1152c06b6b69Smrg
1153c06b6b69Smrg  Major Contributors (In no particular order)
1154c06b6b69Smrg
11557d17d341Smrg  o  Nozomi Ytow
1156c06b6b69Smrg
11577d17d341Smrg  o  Egbert Eich
1158c06b6b69Smrg
11597d17d341Smrg  o  David Bateman
1160c06b6b69Smrg
11617d17d341Smrg  o  Xavier Ducoin
1162c06b6b69Smrg
1163c06b6b69Smrg  Contributors (In no particular order)
1164c06b6b69Smrg
11657d17d341Smrg  o  Ken Raeburn
1166c06b6b69Smrg
1167c06b6b69Smrg
11687d17d341Smrg  o  Shigehiro Nomura
1169c06b6b69Smrg
11707d17d341Smrg  o  Marc de Courville
1171c06b6b69Smrg
11727d17d341Smrg  o  Adam Sulmicki
1173c06b6b69Smrg
11747d17d341Smrg  o  Jens Maurer
1175c06b6b69Smrg
1176c06b6b69Smrg  We also thank the many people on the net who have contributed by
1177c06b6b69Smrg  reporting bugs and extensively testing this server.
1178c06b6b69Smrg
1179c06b6b69Smrg
1180c06b6b69Smrg
1181