              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.

(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.
