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