
This is new driver for Gravis UltraSound card. It's only in kernel 
module version. This driver isn't complete. Unimplemented things are 
written below. Driver can coexist with VoxWare driver, but both can't
be used at the same time.

Driver have implemented following things:

	- native synth interface (original idea)
		- direct control of GF1 registers
        - SEQUENCER compatible with VoxWare 3.00
	- PCM compatible with VoxWare 3.00
		- full GF1 chip support
		- full CODEC chip support (GUS MAX only)
	- MIXER	compatible with VoxWare 3.00
		- full ICS chip support
		- full CODEC chip support (GUS MAX only)

Driver is in beta state and was created in Linux version 1.2.9 (and 1.3.3)
(distribution - Slackware 2.2.0; GNU C - v2.6.3) on computer with 
Gravis UltraSound MAX card (CPU - AMD 486DX2/80 [used as 486DX4/100], 
16MB RAM, NCR 53c810 SCSI [PCI]).

WARNING! /dev/sequencer device is in very very alpha state and you must
use header files from VoxWare 3.0 which cames with Linux v1.3.X.

Installation (coexistence with VoxWare driver):

  - see to Makefile for options setup
  - create device file gus 'mknod -m 222 /dev/gus c 26 1'
  - create device file gusinfo 'mknod -m 222 /dev/gusinfo c 26 255'
  - create link from directory /usr/include/sys to gus.h header file
  - compile driver

Installation (replacement of VoxWare driver):

  - see to Makefile for options setup
  - use gogus shell script for automaticaly creating devices
    or create devices manualy
      - create device file gus 'mknod -m 222 /dev/gus c 26 1'
      - create device file mixer 'mknod -m 666 /dev/mixer c 26 2'
      - create device file dsp 'mknod -m 666 /dev/dsp c 26 4'
      - create device file dsp1 'mknod -m 666 /dev/dsp1 c 26 3'
      - create device file audio 'mknod -m 666 /dev/audio c 26 5'
      - create device file sequencer 'mknod -m 666 /dev/sequencer c 26 6'
      - create device file sequencer2 'mknod -m 666 /dev/sequencer2 c 26 7'
      - create device file sndstat 'mknod -m 222 /dev/sndstat c 26 254'
      - create device file gusinfo 'mknod -m 222 /dev/gusinfo c 26 255'
  - create link from directory /usr/include/sys to gus.h header file
    (gus.h header file is in same directory as this README file)
  - compile driver
  - note: you can use at this point /dev/synth device from
    voxware driver, too (if you have VoxWare driver compiled)

At "insert time" of gus module you may change this values:

  Variable		 Description
  --------------------------------------------------------------------------
  gus_port		 port of GUS card - default = 0x220
  gus_irq		 GF1 (and maybe CODEC) IRQ number for GUS card
  gus_dma1		 first DMA channel (GF1 download and CODEC record)
  gus_dma2		 second DMA channel (GF1 record and CODEC playback);
			 gus_dma1 and gus_dma2 maybe equal if you don't plan
                         playback and record at the same time
  gus_mix_gf1_default	 default mixer value for GF1 output 
  gus_mix_cd_default	 default mixer value for CD input
  gus_mix_line_default	 default mixer value for LINE input
  gus_mix_mic_default	 default mixer value for MIC input
  gus_mix_gain_default	 default mixer value for GAIN (record - GUS MAX)
  gus_mix_output_default default mixer value for OUTPUT (PCM - GUS MAX,
			 MASTER - rev 3.7+)
  gus_mix_gf1_master_default
                         default mixer value for GF1 master (software volume
                         control)


  Note: gus_mix_XXXX_default values are accepted only if you have card
        with mixer (rev 3.7+ or GUS MAX)..


				Happy GUSing !!!
 
				Author: Jaroslav Kysela (on IRC: Perex)
				E-mail:	perex@pf.jcu.cz

Notes:

  - don't use module utilities 1.1.85 !!! they are broken!!!
  - if make report error by line with 'insmod' command - try see to file
    /var/adm/messages what's happen..
  - if you have 4MB memory, try uncomment switch STATIC_GF1_QUEUE 
    and select small size for DMA buffers in Makefile
  - more information about driver you can get with command 'cat /dev/gusinfo'
  - /dev/dsp1 device is the same as /dev/dsp device, but it's default set to 
    8-bit
  - early GUS cards v3.7 which have some mixer channels flipped are detected 
    as GUS v3.5
  - if you want play huge files with maximum quality (44.1Khz, 16-bit, 
    stereo) - try to setup dma buffer size to 64KB

To do:

  - port to OSF/1 v3.0 on DEC ALPHA with EISA bus (currently stoped)
  - some next ideas are welcome

Revision history:

v1.25a

  - 3.7.1995
  - cleanups in gf1_synth.c
  - sequencer code added for the support of VoxWare programs (gmod, s3mod)..

v1.23a

  - 20.6.1995
  - some changes in pcm.c - DMA channels lock
  - major change in CODEC routines (GUS MAX) - timer handling
  - mixer default settings changed

v1.22b

  - 27.5.1995
  - fixed bug (system hangup) caused by smooth pan function

v1.22a

  - 18.5.1995
  - /dev/gusinfo device extended
  - abort fixed
  - added smooth change of pan positions - some next ultraclick removed

v1.21c

  - 5.5.1995
  - sleep bug fixed

v1.21b

  - 4.5.1995
  - some minor changes - no comment

v1.21a

  - 2.5.1995
  - fast abort for /dev/gus added
  - some ioctls for time synchronization added (/dev/gus)
  - what_is_new "bug" fixed - probs with GF1 reset

v1.20b

  - 25.4.1995
  - gus memory allocation routine recoded - optimalization for 16-bit waves
  - some minor changes in gf1_synth.c (new use of sleep and wakeup fcns)
  - new frequency type GUS_FREQ_TYPE_HZ

v1.20a

  - 31.3.1995
  - XX.1-2.1995 - commercial break - because lack of time
  - small DMA bug fixed (big click removed)
  - Linux v1.1.83+ kernel support (irq routine prototype changed)
  - some code for OSF/1 added (unfunctional)
  - work on OSF/1 version stoped - small time - probs with OSF/1 system
  - some detection problems fixed (GUS v3.4)
  - buffer for synth commands are now dynamically allocated (vmalloc)
  - PCM routines totaly recoded - now is more realtime - DOOM works ok
  - full support for CODEC chip (GUS MAX only)
    - ALAW and ULAW compression works ok
    - ADPCM probs with freq > 22Khz and chip busy bit
  - volume ramping bug fixed in gf1_synth.c -> most ultraclick fixed
  - version 2.0 of GF1 synth protocol
  - ICS mixer tested and small bug fixed.. Thanx to Assassin/Dimension
  - bug in download of 16-bit waves fixed
  - support for GUS cards v3.4 (without mixer) 
    - synth mixer now work correctly
  - some cleanups in mixer part
  - added mix mixer device - software control for gf1 volume
    (good if you want record GF1 output with CODEC chip)
    

v1.11b

  - 29.12.1994
  - problems with timer 2 fixed
  - some small changes in gf1_synth.c
  - some files renamed
  - port to OSF/1 v3.00 started !!!

v1.11a

  - 26.12.1994
  - debug free of 128Kb GUS memory disabled - startup is now quicker
  - /dev/gus changed (some ioctls added), synth protocol changed

v1.10a

  - 23.12.1994
  - initialization again recoded 
    (IRQ & DMA & CODEC initialization - should be now ok - driver works
    now without VoxWare driver (tested only with GUS MAX!!!)
  - device.c totaly recoded - some function are moved to another files
  - /dev/gus is now capable work with 16-bit waves (it wasn't tested!!!)
  - mixer compatible with VoxWare driver done (tested with aumix on GUS MAX)
  - ICS mixer wasn't tested !!
  - PCM driver added - in very alpha state - only playback & record over GF1 -
    version for CODEC in near future - Linux DOOM work, but not realtime :(
  - /dev/audio device wasn't tested !! - but it can work...
  - another minor changes in code

v1.02a

  - 1.12.1994
  - some small initialization bugs fixed (IRQ problems)
  - DMA transfer of waveforms to GUS DRAM added

v1.01a

  - many volume click fixed
  - timeout for sequencer queue added
  - downloading of 8-bit unsigned waveform
  - ramping over GF1 IRQ

v1.00a

  - first release (30.10.1994)
