| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 |               README FOR LINUX SONY CDU-535/531 DRIVER | 
 | 2 |               ======================================== | 
 | 3 |  | 
 | 4 | This is the Sony CDU-535 (and 531) driver version 0.7 for Linux. | 
 | 5 | I do not think I have the documentation to add features like DMA support | 
 | 6 | so if anyone else wants to pursue it or help me with it, please do. | 
 | 7 | (I need to see what was done for the CDU-31A driver -- perhaps I can | 
 | 8 | steal some of that code.) | 
 | 9 |  | 
 | 10 | This is a Linux device driver for the Sony CDU-535 CDROM drive.  This is | 
 | 11 | one of the older Sony drives with its own interface card (Sony bus). | 
 | 12 | The DOS driver for this drive is named SONY_CDU.SYS - when you boot DOS | 
 | 13 | your drive should be identified as a SONY CDU-535.  The driver works | 
 | 14 | with a CDU-531 also.  One user reported that the driver worked on drives | 
 | 15 | OEM'ed by Procomm, drive and interface board were labelled Procomm. | 
 | 16 |  | 
 | 17 | The Linux driver is based on Corey Minyard's sonycd 0.3 driver for | 
 | 18 | the CDU-31A.  Ron Jeppesen just changed the commands that were sent | 
 | 19 | to the drive to correspond to the CDU-535 commands and registers. | 
 | 20 | There were enough changes to let bugs creep in but it seems to be stable. | 
 | 21 | Ron was able to tar an entire CDROM (should read all blocks) and built | 
 | 22 | ghostview and xfig off Walnut Creek's X11R5/GNU CDROM.  xcdplayer and | 
 | 23 | workman work with the driver.  Others have used the driver without | 
 | 24 | problems except those dealing with wait loops (fixed in third release). | 
 | 25 | Like Minyard's original driver this one uses a polled interface (this | 
 | 26 | is also the default setup for the DOS driver).  It has not been tried | 
 | 27 | with interrupts or DMA enabled on the board. | 
 | 28 |  | 
 | 29 | REQUIREMENTS | 
 | 30 | ============ | 
 | 31 |  | 
 | 32 | 	- Sony CDU-535 drive, preferably without interrupts and DMA  | 
 | 33 | 	  enabled on the card. | 
 | 34 |  | 
 | 35 | 	- Drive must be set up as unit 1.  Only the first unit will be  | 
 | 36 | 	  recognized | 
 | 37 |  | 
 | 38 | 	- You must enter your interface address into  | 
 | 39 |           /usr/src/linux/drivers/cdrom/sonycd535.h and build the | 
 | 40 |           appropriate kernel or use the "kernel command line" parameter | 
 | 41 |                 sonycd535=0x320 | 
 | 42 |           with the correct interface address. | 
 | 43 |  | 
 | 44 | NOTES: | 
 | 45 | ====== | 
 | 46 |  | 
 | 47 | 1) The drive MUST be turned on when booting or it will not be recognized! | 
 | 48 |    (but see comments on modularized version below) | 
 | 49 |  | 
 | 50 | 2) when the cdrom device is opened the eject button is disabled to keep the | 
 | 51 |    user from ejecting a mounted disk and replacing it with another. | 
 | 52 |    Unfortunately xcdplayer and workman also open the cdrom device so you | 
 | 53 |    have to use the eject button in the software.  Keep this in mind if your | 
 | 54 |    cdrom player refuses to give up its disk -- exit workman or xcdplayer, or | 
 | 55 |    umount the drive if it has been mounted. | 
 | 56 |  | 
 | 57 | THANKS | 
 | 58 | ====== | 
 | 59 |  | 
 | 60 | Many thanks to Ron Jeppesen (ronj.an@site007.saic.com) for getting | 
 | 61 | this project off the ground.  He wrote the initial release | 
 | 62 | and the first two patches to this driver (0.1, 0.2, and 0.3). | 
 | 63 | Thanks also to Eberhard Moenkeberg (emoenke@gwdg.de) for prodding | 
 | 64 | me to place this code into the mainstream Linux source tree | 
 | 65 | (as of Linux version 1.1.91), as well as some patches to make | 
 | 66 | it a better device citizen.  Further thanks to Joel Katz | 
 | 67 | <joelkatz@webchat.org> for his MODULE patches (see details below), | 
 | 68 | Porfiri Claudio <C.Porfiri@nisms.tei.ericsson.se> for patches | 
 | 69 | to make the driver work with the older CDU-510/515 series, and | 
 | 70 | Heiko Eissfeldt <heiko@colossus.escape.de> for pointing out that | 
| Jesper Juhl | 720a845 | 2005-09-06 15:17:50 -0700 | [diff] [blame] | 71 | the verify_area() checks were ignoring the results of said checks | 
 | 72 | (note: verify_area() has since been replaced by access_ok()). | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 73 |  | 
 | 74 | (Acknowledgments from Ron Jeppesen in the 0.3 release:) | 
 | 75 | Thanks to Corey Minyard who wrote the original CDU-31A driver on which | 
 | 76 | this driver is based.  Thanks to Ken Pizzini and Bob Blair who provided  | 
 | 77 | patches and feedback on the first release of this driver. | 
 | 78 |  | 
 | 79 | Ken Pizzini | 
 | 80 | ken@halcyon.com | 
 | 81 |  | 
 | 82 | ------------------------------------------------------------------------------ | 
 | 83 | (The following is from Joel Katz <joelkatz@webchat.org>.) | 
 | 84 |  | 
 | 85 | 	To build a version of sony535.o that can be installed as a module, | 
 | 86 | use the following command: | 
 | 87 |  | 
 | 88 | gcc -c -D__KERNEL__ -DMODULE -O2 sonycd535.c -o sonycd535.o | 
 | 89 |  | 
 | 90 | 	To install the module, simply type: | 
 | 91 |  | 
 | 92 | insmod sony535.o | 
 | 93 | 	or | 
 | 94 | insmod sony535.o sonycd535=<address> | 
 | 95 |  | 
 | 96 | 	And to remove it: | 
 | 97 |  | 
 | 98 | rmmod sony535 | 
 | 99 |  | 
 | 100 | 	The code checks to see if MODULE is defined and behaves as it used | 
 | 101 | to if MODULE is not defined. That means your patched file should behave | 
 | 102 | exactly as it used to if compiled into the kernel. | 
 | 103 |  | 
 | 104 | 	I have an external drive, and I usually leave it powered off. I used | 
 | 105 | to have to reboot if I needed to use the CDROM drive. Now I don't. | 
 | 106 |  | 
 | 107 | 	Even if you have an internal drive, why waste the 96K of memory | 
 | 108 | (unswappable) that the driver uses if you use your CD-ROM drive infrequently? | 
 | 109 |  | 
 | 110 | 	This driver will not install (whether compiled in or loaded as a | 
 | 111 | module) if the CDROM drive is not available during its initialization. This | 
 | 112 | means that you can have the driver compiled into the kernel and still load | 
 | 113 | the module later (assuming the driver doesn't install itself during | 
 | 114 | power-on). This only wastes 12K when you boot with the CDROM drive off. | 
 | 115 |  | 
 | 116 | 	This is what I usually do; I leave the driver compiled into the | 
 | 117 | kernel, but load it as a module if I powered the system up with the drive | 
 | 118 | off and then later decided to use the CDROM drive. | 
 | 119 |  | 
 | 120 | 	Since the driver only uses a single page to point to the chunks, | 
 | 121 | attempting to set the buffer cache to more than 2 Megabytes would be very | 
 | 122 | bad; don't do that. |