              README FOR LINUX SONY CDU-535/531 DRIVER
              ========================================

This is the Sony CDU-535 (and 531) driver version 0.7 for Linux.
I do not think I have the documentation to add features like DMA support
so if anyone else wants to pursue it or help me with it, please do.
(I need to see what was done for the CDU-31A driver -- perhaps I can
steal some of that code.)

This is a Linux device driver for the Sony CDU-535 CDROM drive.  This is
one of the older Sony drives with its own interface card (Sony bus).
The DOS driver for this drive is named SONY_CDU.SYS - when you boot DOS
your drive should be identified as a SONY CDU-535.  The driver works
with a CDU-531 also.  One user reported that the driver worked on drives
OEM'ed by Procomm, drive and interface board were labelled Procomm.

The Linux driver is based on Corey Minyard's sonycd 0.3 driver for
the CDU-31A.  Ron Jeppesen just changed the commands that were sent
to the drive to correspond to the CDU-535 commands and registers.
There were enough changes to let bugs creep in but it seems to be stable.
Ron was able to tar an entire CDROM (should read all blocks) and built
ghostview and xfig off Walnut Creek's X11R5/GNU CDROM.  xcdplayer and
workman work with the driver.  Others have used the driver without
problems except those dealing with wait loops (fixed in third release).
Like Minyard's original driver this one uses a polled interface (this
is also the default setup for the DOS driver).  It has not been tried
with interrupts or DMA enabled on the board.

REQUIREMENTS
============

	- Sony CDU-535 drive, preferably without interrupts and DMA 
	  enabled on the card.

	- Drive must be set up as unit 1.  Only the first unit will be 
	  recognized

	- You must enter your interface address into 
          /usr/src/linux/drivers/cdrom/sonycd535.h and build the
          appropriate kernel or use the "kernel command line" parameter
                sonycd535=0x320
          with the correct interface address.

NOTES:
======

1) The drive MUST be turned on when booting or it will not be recognized!
   (but see comments on modularized version below)

2) when the cdrom device is opened the eject button is disabled to keep the
   user from ejecting a mounted disk and replacing it with another.
   Unfortunately xcdplayer and workman also open the cdrom device so you
   have to use the eject button in the software.  Keep this in mind if your
   cdrom player refuses to give up its disk -- exit workman or xcdplayer, or
   umount the drive if it has been mounted.

THANKS
======

Many thanks to Ron Jeppesen (ronj.an@site007.saic.com) for getting
this project off the ground.  He wrote the initial release
and the first two patches to this driver (0.1, 0.2, and 0.3).
Thanks also to Eberhard Moenkeberg (emoenke@gwdg.de) for prodding
me to place this code into the mainstream Linux source tree
(as of Linux version 1.1.91), as well as some patches to make
it a better device citizen.  Further thanks to Joel Katz
<joelkatz@webchat.org> for his MODULE patches (see details below),
Porfiri Claudio <C.Porfiri@nisms.tei.ericsson.se> for patches
to make the driver work with the older CDU-510/515 series, and
Heiko Eissfeldt <heiko@colossus.escape.de> for pointing out that
the verify_area() checks were ignoring the results of said checks
(note: verify_area() has since been replaced by access_ok()).

(Acknowledgments from Ron Jeppesen in the 0.3 release:)
Thanks to Corey Minyard who wrote the original CDU-31A driver on which
this driver is based.  Thanks to Ken Pizzini and Bob Blair who provided 
patches and feedback on the first release of this driver.

Ken Pizzini
ken@halcyon.com

------------------------------------------------------------------------------
(The following is from Joel Katz <joelkatz@webchat.org>.)

	To build a version of sony535.o that can be installed as a module,
use the following command:

gcc -c -D__KERNEL__ -DMODULE -O2 sonycd535.c -o sonycd535.o

	To install the module, simply type:

insmod sony535.o
	or
insmod sony535.o sonycd535=<address>

	And to remove it:

rmmod sony535

	The code checks to see if MODULE is defined and behaves as it used
to if MODULE is not defined. That means your patched file should behave
exactly as it used to if compiled into the kernel.

	I have an external drive, and I usually leave it powered off. I used
to have to reboot if I needed to use the CDROM drive. Now I don't.

	Even if you have an internal drive, why waste the 96K of memory
(unswappable) that the driver uses if you use your CD-ROM drive infrequently?

	This driver will not install (whether compiled in or loaded as a
module) if the CDROM drive is not available during its initialization. This
means that you can have the driver compiled into the kernel and still load
the module later (assuming the driver doesn't install itself during
power-on). This only wastes 12K when you boot with the CDROM drive off.

	This is what I usually do; I leave the driver compiled into the
kernel, but load it as a module if I powered the system up with the drive
off and then later decided to use the CDROM drive.

	Since the driver only uses a single page to point to the chunks,
attempting to set the buffer cache to more than 2 Megabytes would be very
bad; don't do that.
