Sun May 19 19:24:43 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Redundant comments removed from mcdx.h. I changed the Copyright,
	  since there isn't much code left from 1.9 anymore there.
	* Removed port() and irq() - use direct references instead.
	  Fixed readundand physical read of the TOC in the ioctl handling.
	  This should help WorkMan and WorkBone, to speedup on start.
	  (6445)
	* Fixed transfer_data() to never return 0 blocks readed and thus to
	  never to cause a reread of the requested block. This proved
	  once again LINUS'S LAW about indentation :-) (6397)
	* Removed compleatly redundant error messages from do_transfer_data().
	  Some other minor code tweaks. (6297).
	* Version 2.4 released.

Sun May 19 14:06:42 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Ensure exclusive usage per drive in mcdx_open().
	  In case of data CD's they will be only used by mounting, which 
	  ensures anyway exclusive usage. In case of sound CD's its anyway 
	  meaningless to try playing two different tracts at once! This saves 
	  us A LOT of trouble. This way it's not possible anymore to mount a
	  data CD and then to start WorkMan over it, which would make the
	  driver go wired!
	* Due to the chage above we can savely remove the sutffp->busy locking
	  from talk().
	* Added release_toc() function to avoid code duplication.
	 (6597 Byte).
	* Use consequent u_int instead of unsigned int. Rename n_first to first
	  and n_last to last.
	* Repleace the sutffp->users counter by a flag stuffp->used.
	* Removed impossible assertion if (NULL == tp) from handling of
	  CDROMREADTOCENTRY ioctl handling.
	* Removed printk after failed kmalloc()'s. When such a thing happens we
	  are anyway out of any good. They don't check for in in ide.c for
	  example.
	* Removed check for usage from CDROMEJECT. We use the drive exclusive
	  anyway now.

Sat May 18 22:40:21 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Replaced bogous while (...) interruptible_sleep_on(&stuffp->busyq);
	  ... wakeup_interruptible. from talk() by a simply return -1 on busy. 
	  In case of data transfers this can't occur, due to the way the read 
	  requests are handled. In any other cases this has no usefull 
	  semantics.
	* Remove unneded macros MCDX_CDBLK and MCDX_DATA_TIMEOUT from mcdx.h.
	* Set blocksize to 2048 in mcdx_init for each registered minor device.
	* Removed DRIECT_SIZE - use REUQEST_SIZE. This made it possible to
	  entierly remove the suffp->off_direct variable, which was in
	  fact allways equal to stuffp->off_requested.
	  Renamed stuffp->off_requested to stuffp->border, since this is more
	  adequate. 

Sun May 12 16:55:07 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Removed bogous printk(NR_DRIVES) from mcdx_init().
	* Version 2.3 released.

Sat May 11 22:05:44 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Changed values for some channels from 0xFF to 0x00 in handling of
	  the  CDROMVOLCTRL ioctl handling.

Tue May  7 00:04:58 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Tested with TWO drives connected. Works fine. This is to say that my
	  assumptions about the need for locking are right!
	* Version 2.2 released.

Mon May  6 19:53:53 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Removed redundant check for stuffp->audio form transfer_data().
	  Removed brain dead check for impossible error condition from
	  transfer_data().
	* Moved the whole stuffp->lockq stuff out of transfer_data().
	  The usage there was in any way broken. As I understand it the 
	  do_*_request() functions are allways working on a reuqest queue and 
	  therefore the requests are allready atomic through devices with the 
	  same major number?! I havent seen anywhere else a similiar locking
	  behaviour. So let us forget about it.
	  However the removing of this stuff helped to provide reasonable
	  behaviour on errors.
	* Oh je! Removed a call to invalidate_buffers() from do_mcdx_request()
	  after an error condition. Don't even think about calling this
	  function there!!!
	* Since there was no further interferring between lockq and busyq, I
	  decided to remove stuffp->lock and stuffp-lockq compleatly.
	  The mcdx_open function is atomic anyway, so this doesn't bother us
	  much. Really.

Sun May  5 22:17:30 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Volume controll fixed. This was the reason why the driver didn't
	  work for other pepole then myself. Im using a hacked WorkMan, which
	  didn't trigger this bug.

Sat May  4 14:04:37 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Don't report if CDROMPLAYMSF fails, workman will see it anyway.
	* Remove one shoot function set_atenuattor().
	* Handling of pause fixed!.
	* Provided a replacement for Documentation/cdrom/mcdx.

Fri May  3 16:57:15 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Fixed typo in the ioctl handling of CDROMEJECT command, which 
	  caused to return with -EIO, even when all went good.
	* Add #ifndef #endif wrapper to the mcdx.h header. Just in case...
	* Removed unused stuffp->readerrs field.
	  Renamed get_value() into get_status();
	* Use bitfields adr, ctrl in s_subqcode insead of control
	  Removed redundant stuffp->yyy field.
	* Use set_command for handling of CDROMPLAYMSF, instead of blindly
	  issuing outb()-es. Likewise for play_track().

Thu May  2 17:24:19 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Fix mcdx.c for direct compilation in the original kernel source 
	  tree (silly me...:-).
	* Removed stuffp->readcmd, use a flag instead.

===============================================================================

Mon Apr 29 17:31:20 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Version 2.1 released.	
	* Fix now the get_vall pooling procedure to try first a quick snap
	  and then to giving prozessing up for some time. This *greatly*
	  improves the systems resposibility.
	* Fixed problems with Workman, when disks are changed.
	  Now the point is reached, where I may use mcdx entierly instead
	  of mcd for myself :-).
	* Upated the TRACE method used. A lots of messages where removed,
	  since they where only usefull during developement of the
	  corresponding features.
	* Schedule, during autoclose of the drive. It works now!
	* Schedule in init before getting junk, instead of using a 
	  busy loop.
	  
Sun Apr 28 15:53:23 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Removed borken usage of stuffp->present as a test for existence
	  of the drive. When there was no drive found, the ENTIRE stuffp
	  strucct si freed in macx_init(), so stuffp->present was
	  derefferencing in nirvana!! Use additional flags: door and  
	  multi_cap instead of present.
	* Removed stuffp->ejected. It was guarded anyway  by a register test.
	* Removed global cmd[] array again. 
	* Change get_value to return the value on sucess and -1 otherwise.
	  (6570).
	* Fixed problem introduced by myself by adding a dummy field do
	  the struct s_subqcode;
	* Invalidate stuffp->toc, when the drive is ejected. Otherwise it
	  is impossible to really change disks on the fly.

Fri Apr 26 20:43:38 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Change parameter scheme in mcdx_talk() to the one currently used.
	  Added issue_command() as wraparound for mcdx_talk in case of
	  simple commands.
	  Use the command name macros instead of hard coded values now!
	* Renamed mcdx_getval to get_value. Remove broken usage of
	  mcdx_delay there. It was calling mutually interruptiple_sleep_on
	  without end, but the get_value function returns usually FAST!
	* Remove broken mcdx_delay() and stuffp->sleepq compleatly!
	  Removed stuffp->playcmd, stuffp->minor. Removed unnecessary 
	  parameters from severall functions. Removed borken usage of 
	  stuffp->status. Handle stuffp->stop as pointer ???
	  (6722kB :)

Thu Apr 25 21:08:40 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Changed all WARN((*)); messages into appriopriate kernel
	  printk(KERN_* ...); messages. Removed the warn() function and some
	  redundant debugging messages. (7062)
	* Rename check_mcdx_media_change to mcdx_media_change.
	* Times reported by testing the transfer speed with mcd against mcdx:
	   mcdx: 0.02user 33.61 system 4:09.69elapsed 13%CPU
	   mcd:  0.00user 0.02 system 3:06.86elapsed 0%CPU
	   so we NEED to look after the reason!!!!!!

Wed Apr 24 15:19:02 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Removed mcdx_reset() and enum resetmode{}.
	* Added checking for disk in drive to open. Without this the driver
	  was going into nirvana, when trying to mount without an allready
	  inserted disk.

Tue Apr 23 21:16:28 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* Oh, jee... moved the unregister_blkdev ind cleanup_module in the front
	  of all the other functions. Set the blk_dev[...] to 0!
	* mcdx_talk() - don't report the status byte in *buffer[0] it's never
	  used. Removed some of the memcpy's introduced earlier. (7050)

Tue Apr 23 05:15:45 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* I convinced myself that the memcpy'y are no problem, since
	  the filled fieled's are used by explicit memcpy only again.
	* Removed the msf_first entry from the s_diskinfo struct; it was only 
	  used ones in an debugging message.

Sun Apr 21 16:12:38 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwgd.de>
	* Removed redundant struct s_msf use cdrom_msf0 instead.
	* Reorder functions and used inline's cleverly to reduce code size
	  from 8099 byets to 7738 bytes !! 
	* Removed semanticaly unused splitting in mcdx_xfer() and
	  mcdx_transfer(). The fallback stuff will be added, when all the other 
	  minor flaws are gone :)
	* Removed one shoot function log2msf() (7714).
	  Changed flags to use bitfields (7603).
	  Guard the mcdx_setup() function by #ifndef MODULE ist unused other- 
	  wise. Use a global command frame cmd[11] (7503).
	  Removed global struct s_version and function mcdx_requeseversion() 
	  (7459).
	  Removed global function mcdx setdatamode() (7395).
	* Use macros instead of wreg_* rreg_*; store only base in stuff! (7327).
	* Optimze away the playmsf() function.
	* Use memcpy, where appriopriate (7235). (this may be problematic
	  in conjunction with other architectures then i386).

Fri Apr 19 19:04:13 MET DST 1996 Marcin Dalecki <dalecki@namu01.gwdg.de>
	* removed unused macros in mcdx.h; 
	  some rearrangements in mcdx.h;
	  improved comments in mcdx.h; 
	  run it all through indent -kr i8;
	  changed version number to 2.0;
	* add static in front of all constants and functions;

The numbers in round parens are representing the codesize as reported by size.
