diff options
Diffstat (limited to 'sys/dev/matcd/matcddrv.h')
-rw-r--r-- | sys/dev/matcd/matcddrv.h | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/sys/dev/matcd/matcddrv.h b/sys/dev/matcd/matcddrv.h new file mode 100644 index 0000000..b2f069e --- /dev/null +++ b/sys/dev/matcd/matcddrv.h @@ -0,0 +1,159 @@ +/*matcddrv.h------------------------------------------------------------------ + + Matsushita(Panasonic) / Creative CD-ROM Driver (matcd) + Authored by Frank Durda IV + +Copyright 1994, 1995, 2002, 2003 Frank Durda IV. All rights reserved. +"FDIV" is a trademark of Frank Durda IV. + +------------------------------------------------------------------------------ + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the author nor the names of their contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +------------------------------------------------------------------------------ + +See matcd.c for Edit History information. +*/ + +/* $FreeBSD$ +*/ + +/*---------------------------------------------------------------------------- + Matsushita CR562/CR563 Commands + + These equates are for commands accepted by the Matsushita drive. + This is not a complete list - just the ones that this driver uses. +----------------------------------------------------------------------------*/ + +#define NOP 0x05 /*No action - just return status*/ +#define DOOROPEN 0x06 /*Open tray*/ +#define DOORCLOSE 0x07 /*Close tray*/ +#define ABORT 0x08 /*Abort command*/ +#define MODESELECT 0x09 /*Set drive parameters*/ +#define LOCK 0x0c /*Prevent/Allow medium removal*/ +#define PAUSE 0x0d /*Pause/Resume playback*/ +#define PLAYBLOCKS 0x0e /*Play audio - block to block range*/ +#define PLAYTRKS 0x0f /*Play audio - tracks & index*/ +#define READ 0x10 /*Read data*/ +#define READERROR 0x82 /*Read Error*/ +#define READID 0x83 /*Read Drive Type & Firmware Info*/ +#define MODESENSE 0x84 /*Report drive settings*/ +#define READSUBQ 0x87 /*Read Q channel information*/ +#define READDINFO 0x8b /*Read TOC tracks & drive size*/ +#define READTOC 0x8c /*Read entry from TOC*/ + +#define BLOCKPARAM 0x00 /*Used with MODESELECT command*/ +#define SPEEDPARM 0x03 /*Adjust audio playback speed*/ +#define AUDIOPARM 0x05 /*Set/read audio levels & routing*/ +#define RESUME 0x80 /*Used with PAUSE command*/ + +#define MAXCMDSIZ 12 /*Max command size with NULL*/ + +/* Possible data transfers for MODESELECT + BLOCKPARAM */ + +#define MODE_DATA 0x00 /*2048, 2340*/ +#define MODE_DA 0x82 /*2352*/ +#define MODE_USER 0x01 /*2048, 2052, 2336, 2340, 2352*/ +#define MODE_UNKNOWN 0xff /*Uninitialized state*/ +#define MODE_XA 0x81 /*2048, 2060, 2324, 2336, 2340, 2352*/ + /*The driver does not implement XA.*/ +#define DEFVOL 0xff /*Default drive volume level, 100% + volume. Based on drive action.*/ +#define OUTLEFT 0x01 /*Output on Left*/ +#define OUTRIGHT 0x02 /*Output on Right*/ + + +/* Matsushita CR562/CR563 Status bits*/ + +#define MATCD_ST_DOOROPEN 0x80 /*Door is open right now*/ +#define MATCD_ST_DSKIN 0x40 /*Disc in drive*/ +#define MATCD_ST_SPIN 0x20 /*Disc is spinning*/ +#define MATCD_ST_ERROR 0x10 /*Error on command*/ +#define MATCD_ST_AUDIOBSY 0x08 /*Drive is playing audio*/ +#define MATCD_ST_LOCK 0x04 /*Drive is locked*/ +#define MATCD_ST_X2 0x02 /*Media is at double-speed*/ +#define MATCD_ST_READY 0x01 /*Drive is ready*/ + + +/* Error codes returned from READERROR command. + (The hardware vendor did not provide any additional information + on what conditions generate these errors.) +*/ + +#define NO_ERROR 0x00 +#define RECV_RETRY 0x01 +#define RECV_ECC 0x02 +#define NOT_READY 0x03 +#define TOC_ERROR 0x04 +#define UNRECV_ERROR 0x05 +#define SEEK_ERROR 0x06 +#define TRACK_ERROR 0x07 +#define RAM_ERROR 0x08 +#define DIAG_ERROR 0x09 +#define FOCUS_ERROR 0x0a +#define CLV_ERROR 0x0b +#define DATA_ERROR 0x0c +#define ADDRESS_ERROR 0x0d +#define CDB_ERROR 0x0e +#define END_ADDRESS 0x0f +#define MODE_ERROR 0x10 +#define MEDIA_CHANGED 0x11 +#define HARD_RESET 0x12 +#define ROM_ERROR 0x13 +#define CMD_ERROR 0x14 +#define DISC_OUT 0x15 +#define HARD_ERROR 0x16 +#define ILLEGAL_REQ 0x17 + + +/* Human-readable error messages - what a concept!*/ + +static unsigned char * matcderrors[]={"No error", /* 00 */ + "Soft read error after retry", /* 01 */ + "Soft read error after error-correction", /* 02 */ + "Not ready", /* 03 */ + "Unable to read TOC", /* 04 */ + "Hard read error of data track",/* 05 */ + "Seek did not complete", /* 06 */ + "Tracking servo failure", /* 07 */ + "Drive RAM failure", /* 08 */ + "Drive self-test failed", /* 09 */ + "Focusing servo failure", /* 0a */ + "Spindle servo failure", /* 0b */ + "Data path failure", /* 0c */ + "Illegal logical block address",/* 0d */ + "Illegal field in CDB", /* 0e */ + "End of user encountered on this track", /* 0f */ + "Illegal data mode for this track", /* 10 */ + "Media changed", /* 11 */ + "Power-on or drive reset occurred", /* 12 */ + "Drive ROM failure", /* 13 */ + "Illegal drive command received from host",/* 14 */ + "Disc removed during operation",/* 15 */ + "Drive Hardware error", /* 16 */ + "Illegal request from host"}; /* 17 */ + +/*End of matcddrv.h*/ + |