How to use the CV64 (not 3D) driver under Linux/m68k
Author: Alan Bair  abair@prismnet.com
Dated:   01/28/1999

I have tested as much of this as I can on my A3000/25 8MB with
CV64-2MB. This was primarily just for console usage, so at this
point I don't have much information about X Server usage. So, I 
need more people to test this to make sure it is all OK and add
any details about using the X Server with these setups before I 
put it into the mainstream documentation. I plan to get the info
merged into the kernel source documentation, FAQ and Framebuffer 
HOWTO.

The driver code has gone through a fair amount of updating recently,
so the verison of kernel being used makes a big difference in how
you need to perpare for and use the driver. See the section below
that applies to your kernel.

The 8 bits/pixel modes work correctly at this time. Acceleration
is only partially supported if at all.  Some 16 bits/pixel code is
implemented, but does not work correctly. No 24 bits/pixel code
is implemented. X Windows probably only works at 8 bits/pixel.

Kernels 2.0.3x
---------------
With these kernels the driver was not able to initialize the CV64
during boot-up, so the board had to be setup properly under AmigaDOS
for the mode desired under Linux before booting Linux.

The only available modes under Linux (without editing the driver) are:
8 bits/pixel
   640x480, 800x600, 1024x768, 1152x886, 1280x1024, 1600x1200
16 bits/pixel - does not work correctly, only for testing
   800x600

Under AmigaDOS you must create a CyberGraphX mode to match the one
you want to use under Linux. I use the following CyberGraphX environment
variable settings on my machine:
   CPU2C=0 (Some users had to use CPU2C=1 on their machine)
   HIRESCRSR=0, HIDE15BIT=1, ALERTMENU=0, NOCHIPSCREEN=0
   PLANES2FAST=0, NOPASSTHROUGH=0, KEEPAMIGAVIDEO=1
   BOOTLOGO=1, SAVEMEM=0
When you select the mode in the 'screenmode' tool, also make sure the
following settngs are made:
   No Autoscroll
   Color slider matches mode; 8 bits/pixel = 256
   Window size default button selected; same size as selected mode

Once you have AmigaDOS booted with the selected graphics mode, you
boot into Linux using 'amiboot', Lilo can NOT be used. Here is an example 
for using the mode 640x480 with 8 bits/pixel:
   amiboot -v -k vmlinux root=/dev/sda1 video=cyberfb:640x480-8
The "-v" option prevents reseting of the graphics board so the AmigaDOS
graphics mode stays in affect. Substitute "vmlinux" and "/dev/sda1" as
required for your setup. 

If no mode or an illegal one is specified after the "video=cyberfb:", the 
640x480-8 mode should be used by default. There is also a set of 
alternate names for some modes that are still in the code, but should 
probably not be used any more since I plan to remove these in favor of 
the more direct XxY-BPP coding.
   cyber8 = 640x480-8
   cyber16 = 800x600-16

NOTE: Considering the age of this kernel and that the CV64 can be used,
I don't plan on doing much more work on this driver, but instead will be
concentrating on the newer kernels.


Kernels 2.1.124-130
--------------------
I provided a complete update of the cyberfb.c/h code for 2.1.120.
With these kernels the CV64 is initialized by the driver on boot-up, 
so no presetup is required under AmigaDOS. Besides the builtin
modes, the 'fbset' program can be used to change the mode on the
fly. See the documentation for 'fbset' for details on using it. The main
problem is getting the timing values for a desried mode.

The only available modes during booting (without editing the driver) are:
8 bits/pixel
   640x480, 800x490, 800x600, 1024x768, 1152x886, 1280x1024
16 bits/pixel - does NOT work correctly, only for testing
   640x480
24 bits/pixel - does NOT work, only for testing
   640x480

Using 'amiboot' or Lilo, boot Linux with the desired graphics mode.
Here is an example that matches with the earlier example for 2.0.3x:
   amiboot -k vmlinux root=/dev/sda1 video=cyber:640x480-8
The "-v" option is no longer required. Note that the video driver
identifier has changed from "cyberfb" to "cyber".  Again, substitute 
"vmlinux" and "/dev/sda1" as required for your setup. 

The default mode is 640x480-8. The "cyber8" and "cyber16"  names
are still in place, but I discourage there use since I will be turing
them off.

These kernels also support using multiple graphics display drivers.
For my testing of the CV64 driver, I have two monitors connected,
one to the normal Amiga output and one on the CV64 without the
passthrough cable. It should be possible to do this with a single
monitor with the passthrough cable, but currently the driver does
not handle switching the passthrough correctly. Here is an example
of an 'amiboot' command to do this:
   amiboot -k vmlinux root=/dev/sda1 video=amifb:ntsc-lace
      video=cyber:640x480-8 video=map:0110000000
This puts the CV64 display on VCs 2 & 3 and the Amiga display
on all the other VCs. There are occasionally some messed up
dislays on VC 1, but it generally works nicely for me.


Kernels 2.1.131 and later
------------------------
The 2.1.131 kernel includes updates dealing with use of virtual vs
physical addresses for certain Framebuffer usage. I have not been able
to get a working kernel with these updates. Still trying to figure out
this problem which only seems to affect a small number of users.

The 2.2.x kernels build OK, but I have not been able to boot any of them,
except maybe the 2.2.0.pre4 one. In any case, this has stoped me from 
doing any further work on the driver for the 2.2 stable kernel release.
As of now, I think the CV64 driver may be broken in 2.2.x kernels.
Hopefully the kernel problem will be fixed and I will be able to work 
on the driver again. 


Improvements I'll try to work on
---------------------------------
* Get acceleration working and/or improved
* Release an AmigaDOS program to convert the CyberGraphX monitor
   modes file into entries for the 'fbset' program and X Windows config
* Try to get 16/24 bits/pixel modes working
* Merge cyberfb. c and S3triofb.c
* Maybe dive into the X server code


Notes on CV64/3D
------------------
I don't have one of these, so I can't do any testing, but here is what
I think is the situation with the driver. Those of you working on this
driver please provide any corrections or further details.

* Barely supported in 2.0.3x kernels, though I think some work is
   underway to improve this.
* None of the drivers can initialize the board during boot-up, so
   similar AmigaDOS setup is needed like for CV64 under 2.0.3x.
   Work is starting on fixing this like with the CV64.
* Initial support for ZorroII mode has recently been completed and
   may be in the latest driver now.


