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.