svn commit: r189239 - in stable/7/sys: . cam/scsi contrib/pf dev/ath/ath_hal dev/cxgb

Scott Long scottl at FreeBSD.org
Sun Mar 1 08:24:58 PST 2009


Author: scottl
Date: Sun Mar  1 16:24:57 2009
New Revision: 189239
URL: http://svn.freebsd.org/changeset/base/189239

Log:
  Merge 181381: Update SCSI opcodes and ASCs from t10.org.

Modified:
  stable/7/sys/   (props changed)
  stable/7/sys/cam/scsi/scsi_all.c
  stable/7/sys/cam/scsi/scsi_all.h
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/ath/ath_hal/   (props changed)
  stable/7/sys/dev/cxgb/   (props changed)

Modified: stable/7/sys/cam/scsi/scsi_all.c
==============================================================================
--- stable/7/sys/cam/scsi/scsi_all.c	Sun Mar  1 15:08:33 2009	(r189238)
+++ stable/7/sys/cam/scsi/scsi_all.c	Sun Mar  1 16:24:57 2009	(r189239)
@@ -103,23 +103,27 @@ static int	set_scsi_delay(int delay);
 
 #if !defined(SCSI_NO_OP_STRINGS)
 
-#define D 0x001
-#define T 0x002
-#define L 0x004
-#define P 0x008
-#define W 0x010
-#define R 0x020
-#define S 0x040
-#define O 0x080
-#define M 0x100
-#define C 0x200
-#define A 0x400
-#define E 0x800
+#define	D	(1 << T_DIRECT)
+#define	T	(1 << T_SEQUENTIAL)
+#define	L	(1 << T_PRINTER)
+#define	P	(1 << T_PROCESSOR)
+#define	W	(1 << T_WORM)
+#define	R	(1 << T_CDROM)
+#define	O	(1 << T_OPTICAL)
+#define	M	(1 << T_CHANGER)
+#define	A	(1 << T_STORARRAY)
+#define	E	(1 << T_ENCLOSURE)
+#define	B	(1 << T_RBC)
+#define	K	(1 << T_OCRW)
+#define	V	(1 << T_ADC)
+#define	F	(1 << T_OSD)
+#define	S	(1 << T_SCANNER)
+#define	C	(1 << T_COMM)
 
-#define ALL 0xFFF
+#define ALL	(D | T | L | P | W | R | O | M | A | E | B | K | V | F | S | C)
 
 static struct op_table_entry plextor_cd_ops[] = {
-	{0xD8, R, "CD-DA READ"}
+	{ 0xD8, R, "CD-DA READ" }
 };
 
 static struct scsi_op_quirk_entry scsi_op_quirk_table[] = {
@@ -140,519 +144,456 @@ static struct scsi_op_quirk_entry scsi_o
 };
 
 static struct op_table_entry scsi_op_codes[] = {
-/*
- * From: ftp://ftp.symbios.com/pub/standards/io/t10/drafts/spc/op-num.txt
- * Modifications by Kenneth Merry (ken at FreeBSD.ORG)
- *
- * Note:  order is important in this table, scsi_op_desc() currently
- * depends on the opcodes in the table being in order to save search time.
- */
-/*  
- * File: OP-NUM.TXT
- *
- * SCSI Operation Codes
- * Numeric Sorted Listing
- * as of 11/13/96
- * 
- *     D - DIRECT ACCESS DEVICE (SBC)                    device column key
- *     .T - SEQUENTIAL ACCESS DEVICE (SSC)              -------------------
- *     . L - PRINTER DEVICE (SSC)                       M = Mandatory
- *     .  P - PROCESSOR DEVICE (SPC)                    O = Optional
- *     .  .W - WRITE ONCE READ MULTIPLE DEVICE (SBC)    V = Vendor specific
- *     .  . R - CD DEVICE (MMC)                         R = Reserved
- *     .  .  S - SCANNER DEVICE (SGC)                   Z = Obsolete
- *     .  .  .O - OPTICAL MEMORY DEVICE (SBC)
- *     .  .  . M - MEDIA CHANGER DEVICE (SMC)
- *     .  .  .  C - COMMUNICATION DEVICE (SSC)
- *     .  .  .  .A - STORAGE ARRAY DEVICE (SCC)
- *     .  .  .  . E - ENCLOSURE SERVICES DEVICE (SES)
- * OP  DTLPWRSOMCAE  Description
- * --  ------------  ---------------------------------------------------- */
-/* 00  MMMMMMMMMMMM  TEST UNIT READY */
-{0x00, ALL, 		"TEST UNIT READY"},
-
-/* 01   M            REWIND */
-{0x01, T,           "REWIND"},
-/* 01  Z V ZO ZO     REZERO UNIT */
-{0x01, D|L|W|O|M,   "REZERO UNIT"},
-
-/* 02  VVVVVV  V   */
-
-/* 03  MMMMMMMMMMMM  REQUEST SENSE */
-{0x03, ALL,         "REQUEST SENSE"},
-
-/* 04  M    O O      FORMAT UNIT */
-{0x04, D|R|O,       "FORMAT UNIT"},
-/* 04   O            FORMAT MEDIUM */
-{0x04, T,           "FORMAT MEDIUM"},
-/* 04    O           FORMAT */
-{0x04, L,           "FORMAT"},
-
-/* 05  VMVVVV  V     READ BLOCK LIMITS */
-{0x05, T,           "READ BLOCK LIMITS"},
-
-/* 06  VVVVVV  V   */
-
-/* 07  OVV O  OV     REASSIGN BLOCKS */
-{0x07, D|W|O,       "REASSIGN BLOCKS"},
-/* 07          O     INITIALIZE ELEMENT STATUS */
-{0x07, M,           "INITIALIZE ELEMENT STATUS"},
-
-/* 08  OMV OO OV     READ(06) */
-{0x08, D|T|W|R|O,   "READ(06)"},
-/* 08     O          RECEIVE */
-{0x08, P,           "RECEIVE"},
-/* 08           M    GET MESSAGE(06) */
-{0x08, C,           "GET MESSAGE(06)"},
-
-/* 09  VVVVVV  V   */
-
-/* 0A  OM  O  OV     WRITE(06) */
-{0x0A, D|T|W|O, "WRITE(06)"},
-/* 0A     M          SEND(06) */
-{0x0A, P,           "SEND(06)"},
-/* 0A           M    SEND MESSAGE(06) */
-{0x0A, C,           "SEND MESSAGE(06)"},
-/* 0A    M           PRINT */
-{0x0A, L,           "PRINT"},
-
-/* 0B  Z   ZO ZV     SEEK(06) */
-{0x0B, D|W|R|O,     "SEEK(06)"},
-/* 0B    O           SLEW AND PRINT */
-{0x0B, L,           "SLEW AND PRINT"},
-
-/* 0C  VVVVVV  V   */
-/* 0D  VVVVVV  V   */
-/* 0E  VVVVVV  V   */
-/* 0F  VOVVVV  V     READ REVERSE */
-{0x0F, T,           "READ REVERSE"},
-
-/* 10  VM VVV        WRITE FILEMARKS */
-{0x10, T,           "WRITE FILEMARKS"},
-/* 10    O O         SYNCHRONIZE BUFFER */
-{0x10, L|W,         "SYNCHRONIZE BUFFER"},
-
-/* 11  VMVVVV        SPACE */
-{0x11, T,           "SPACE"},
-
-/* 12  MMMMMMMMMMMM  INQUIRY */
-{0x12, ALL,         "INQUIRY"},
-
-/* 13  VOVVVV        VERIFY(06) */
-{0x13, T,           "VERIFY(06)"},
-
-/* 14  VOOVVV        RECOVER BUFFERED DATA */
-{0x14, T|L,         "RECOVER BUFFERED DATA"},
-
-/* 15  OMO OOOOOOOO  MODE SELECT(06) */
-{0x15, ALL & ~(P),    "MODE SELECT(06)"},
-
-/* 16  MMMOMMMM   O  RESERVE(06) */
-{0x16, D|T|L|P|W|R|S|O|E, "RESERVE(06)"},
-/* 16          M     RESERVE ELEMENT(06) */
-{0x16, M,           "RESERVE ELEMENT(06)"},
-
-/* 17  MMMOMMMM   O  RELEASE(06) */
-{0x17, ALL & ~(M|C|A), "RELEASE(06)"},
-/* 17          M     RELEASE ELEMENT(06) */
-{0x17, M,           "RELEASE ELEMENT(06)"},
-
-/* 18  OOOOOOOO      COPY */
-{0x18, ALL & ~(M|C|A|E), "COPY"},
-
-/* 19  VMVVVV        ERASE */
-{0x19, T,           "ERASE"},
-
-/* 1A  OMO OOOOOOOO  MODE SENSE(06) */
-{0x1A, ALL & ~(P),  "MODE SENSE(06)"},
-
-/* 1B  O   OM O      STOP START UNIT */
-{0x1B, D|W|R|O,     "STOP START UNIT"},
-/* 1B   O            LOAD UNLOAD */
-{0x1B, T,           "LOAD UNLOAD"},
-/* 1B        O       SCAN */
-{0x1B, S,           "SCAN"},
-/* 1B    O           STOP PRINT */
-{0x1B, L,           "STOP PRINT"},
-
-/* 1C  OOOOOOOOOO M  RECEIVE DIAGNOSTIC RESULTS */
-{0x1C, ALL & ~(A),  "RECEIVE DIAGNOSTIC RESULTS"},
-
-/* 1D  MMMMMMMMMMMM  SEND DIAGNOSTIC */
-{0x1D, ALL,         "SEND DIAGNOSTIC"},
-
-/* 1E  OO  OM OO     PREVENT ALLOW MEDIUM REMOVAL */
-{0x1E, D|T|W|R|O|M, "PREVENT ALLOW MEDIUM REMOVAL"},
-
-/* 1F */
-/* 20  V   VV V */
-/* 21  V   VV V */
-/* 22  V   VV V */
-/* 23  V   VV V */
-
-/* 24  V   VVM       SET WINDOW */
-{0x24, S,           "SET WINDOW"},
-
-/* 25  M   M  M      READ CAPACITY */
-{0x25, D|W|O,       "READ CAPACITY"},
-/* 25       M        READ CD RECORDED CAPACITY */
-{0x25, R,           "READ CD RECORDED CAPACITY"},
-/* 25        O       GET WINDOW */
-{0x25, S,           "GET WINDOW"},
-
-/* 26  V   VV */
-/* 27  V   VV */
-
-/* 28  M   MMMM      READ(10) */
-{0x28, D|W|R|S|O,   "READ(10)"},
-/* 28           O    GET MESSAGE(10) */
-{0x28, C,           "GET MESSAGE(10)"},
-
-/* 29  V   VV O      READ GENERATION */
-{0x29, O,           "READ GENERATION"},
-
-/* 2A  M   MM M      WRITE(10) */
-{0x2A, D|W|R|O,     "WRITE(10)"},
-/* 2A        O       SEND(10) */
-{0x2A, S,           "SEND(10)"},
-/* 2A           O    SEND MESSAGE(10) */
-{0x2A, C,           "SEND MESSAGE(10)"},
-
-/* 2B  O   OM O      SEEK(10) */
-{0x2B, D|W|R|O,     "SEEK(10)"},
-/* 2B   O            LOCATE */
-{0x2B, T,           "LOCATE"},
-/* 2B          O     POSITION TO ELEMENT */
-{0x2B, M,           "POSITION TO ELEMENT"},
-
-/* 2C  V      O      ERASE(10) */
-{0x2C, O,           "ERASE(10)"},
-
-/* 2D  V   O  O      READ UPDATED BLOCK */
-{0x2D, W|O,         "READ UPDATED BLOCK"},
-
-/* 2E  O   O  O      WRITE AND VERIFY(10) */
-{0x2E, D|W|O,       "WRITE AND VERIFY(10)"},
-
-/* 2F  O   OO O      VERIFY(10) */
-{0x2F, D|W|R|O,     "VERIFY(10)"},
-
-/* 30  Z   ZO Z      SEARCH DATA HIGH(10) */
-{0x30, D|W|R|O,     "SEARCH DATA HIGH(10)"},
-
-/* 31  Z   ZO Z      SEARCH DATA EQUAL(10) */
-{0x31, D|W|R|O,     "SEARCH DATA EQUAL(10)"},
-/* 31        O       OBJECT POSITION */
-{0x31, S,           "OBJECT POSITION"},
-
-/* 32  Z   ZO Z      SEARCH DATA LOW(10) */
-{0x32, D|W|R|O,     "SEARCH DATA LOW(10"},
-
-/* 33  O   OO O      SET LIMITS(10) */
-{0x33, D|W|R|O,     "SET LIMITS(10)"},
-
-/* 34  O   OO O      PRE-FETCH */
-{0x34, D|W|R|O,     "PRE-FETCH"},
-/* 34   O            READ POSITION */
-{0x34, T,           "READ POSITION"},
-/* 34        O       GET DATA BUFFER STATUS */
-{0x34, S,           "GET DATA BUFFER STATUS"},
-
-/* 35  O   OM O      SYNCHRONIZE CACHE */
-{0x35, D|W|R|O,     "SYNCHRONIZE CACHE"},
-
-/* 36  O   OO O      LOCK UNLOCK CACHE */
-{0x36, D|W|R|O,     "LOCK UNLOCK CACHE"},
-
-/* 37  O      O      READ DEFECT DATA(10) */
-{0x37, D|O,         "READ DEFECT DATA(10)"},
-
-/* 38      O  O      MEDIUM SCAN */
-{0x38, W|O,         "MEDIUM SCAN"},
-
-/* 39  OOOOOOOO      COMPARE */
-{0x39, ALL & ~(M|C|A|E), "COMPARE"},
-
-/* 3A  OOOOOOOO      COPY AND VERIFY */
-{0x3A, ALL & ~(M|C|A|E), "COPY AND VERIFY"},
-
-/* 3B  OOOOOOOOOO O  WRITE BUFFER */
-{0x3B, ALL & ~(A),  "WRITE BUFFER"},
-
-/* 3C  OOOOOOOOOO    READ BUFFER */
-{0x3C, ALL & ~(A|E),"READ BUFFER"},
-
-/* 3D      O  O      UPDATE BLOCK */
-{0x3D, W|O,         "UPDATE BLOCK"},
-
-/* 3E  O   OO O      READ LONG */
-{0x3E, D|W|R|O,     "READ LONG"},
-
-/* 3F  O   O  O      WRITE LONG */
-{0x3F, D|W|O,       "WRITE LONG"},
-
-/* 40  OOOOOOOOOO    CHANGE DEFINITION */
-{0x40, ALL & ~(A|E),"CHANGE DEFINITION"},
-
-/* 41  O             WRITE SAME */
-{0x41, D,           "WRITE SAME"},
-
-/* 42       M        READ SUB-CHANNEL */
-{0x42, R,           "READ SUB-CHANNEL"}, 
-
-/* 43       M        READ TOC/PMA/ATIP {MMC Proposed} */
-{0x43, R,           "READ TOC/PMA/ATIP {MMC Proposed}"},
-
-/* 44   M            REPORT DENSITY SUPPORT */
-{0x44, T,           "REPORT DENSITY SUPPORT"},
-/* 44       M        READ HEADER */
-{0x44, R,           "READ HEADER"},
-
-/* 45       O        PLAY AUDIO(10) */
-{0x45, R,           "PLAY AUDIO(10)"},
-
-/* 46 */
-
-/* 47       O        PLAY AUDIO MSF */
-{0x47, R,           "PLAY AUDIO MSF"},
-
-/* 48       O        PLAY AUDIO TRACK INDEX */
-{0x48, R,           "PLAY AUDIO TRACK INDEX"},
-
-/* 49       O        PLAY TRACK RELATIVE(10) */
-{0x49, R,           "PLAY TRACK RELATIVE(10)"},
-
-/* 4A */
-
-/* 4B       O        PAUSE/RESUME */
-{0x4B, R,           "PAUSE/RESUME"},
-
-/* 4C  OOOOOOOOOOO   LOG SELECT */
-{0x4C, ALL & ~(E),  "LOG SELECT"},
-
-/* 4D  OOOOOOOOOOO   LOG SENSE */
-{0x4D, ALL & ~(E),  "LOG SENSE"},
-
-/* 4E       O        STOP PLAY/SCAN {MMC Proposed} */
-{0x4E, R,           "STOP PLAY/SCAN {MMC Proposed}"},
-
-/* 4F */
-
-/* 50  O             XDWRITE(10) */
-{0x50, D,           "XDWRITE(10)"},
-
-/* 51  O             XPWRITE(10) */
-{0x51, D,           "XPWRITE(10)"},
-/* 51       M        READ DISC INFORMATION {MMC Proposed} */
-{0x51, R,           "READ DISC INFORMATION {MMC Proposed}"},
-
-/* 52  O             XDREAD(10) */
-{0x52, D,           "XDREAD(10)"},
-/* 52       M        READ TRACK INFORMATION {MMC Proposed} */
-{0x52, R,           "READ TRACK INFORMATION {MMC Proposed}"},
-
-/* 53       M        RESERVE TRACK {MMC Proposed} */
-{0x53, R,           "RESERVE TRACK {MMC Proposed}"},
-
-/* 54       O        SEND OPC INFORMATION {MMC Proposed} */
-{0x54, R,           "SEND OPC INFORMATION {MMC Proposed}"},
-
-/* 55  OOO OOOOOOOO  MODE SELECT(10) */
-{0x55, ALL & ~(P),  "MODE SELECT(10)"},
-
-/* 56  MMMOMMMM   O  RESERVE(10) */
-{0x56, ALL & ~(M|C|A), "RESERVE(10)"},
-/* 56          M     RESERVE ELEMENT(10) */
-{0x56, M,           "RESERVE ELEMENT(10)"},
-
-/* 57  MMMOMMMM   O  RELEASE(10) */
-{0x57, ALL & ~(M|C|A), "RELEASE(10"},
-/* 57          M     RELEASE ELEMENT(10) */
-{0x57, M,           "RELEASE ELEMENT(10)"},
-
-/* 58       O        REPAIR TRACK {MMC Proposed} */
-{0x58, R,           "REPAIR TRACK {MMC Proposed}"},
-
-/* 59       O        READ MASTER CUE {MMC Proposed} */
-{0x59, R,           "READ MASTER CUE {MMC Proposed}"},
-
-/* 5A  OOO OOOOOOOO  MODE SENSE(10) */
-{0x5A, ALL & ~(P),  "MODE SENSE(10)"},
-
-/* 5B       M        CLOSE TRACK/SESSION {MMC Proposed} */
-{0x5B, R,           "CLOSE TRACK/SESSION {MMC Proposed}"},
-
-/* 5C       O        READ BUFFER CAPACITY {MMC Proposed} */
-{0x5C, R,           "READ BUFFER CAPACITY {MMC Proposed}"},
-
-/* 5D       O        SEND CUE SHEET {MMC Proposed} */
-{0x5D, R,           "SEND CUE SHEET {MMC Proposed}"},
-
-/* 5E  OOOOOOOOO  O  PERSISTENT RESERVE IN */
-{0x5E, ALL & ~(C|A),"PERSISTENT RESERVE IN"},
-
-/* 5F  OOOOOOOOO  O  PERSISTENT RESERVE OUT */
-{0x5F, ALL & ~(C|A),"PERSISTENT RESERVE OUT"},
-
-/* 80  O             XDWRITE EXTENDED(16) */
-{0x80, D,           "XDWRITE EXTENDED(16)"},
-
-/* 81  O             REBUILD(16) */
-{0x81, D,           "REBUILD(16)"},
-
-/* 82  O             REGENERATE(16) */
-{0x82, D,           "REGENERATE(16)"},
-
-/* 83 */
-/* 84 */
-/* 85 */
-/* 86 */
-/* 87 */
-/* 88  MM  OO O    O   READ(16) */
-{0x88, D|T|W|R|O,     "READ(16)"},
-/* 89 */
-/* 8A  OM  O  O    O   WRITE(16) */
-{0x8A, D|T|W|R|O,     "WRITE(16)"},
-/* 8B */
-/* 8C */
-/* 8D */
-/* 8E */
-/* 8F */
-/* 90 */
-/* 91 */
-/* 92 */
-/* 93 */
-/* 94 */
-/* 95 */
-/* 96 */
-/* 97 */
-/* 98 */
-/* 99 */
-/* 9A */
-/* 9B */
-/* 9C */
-/* 9D */
-/* XXX KDM ALL for these?  op-num.txt defines them for none.. */
-/* 9E                  SERVICE ACTION IN(16) */
-{0x9E, ALL,           "SERVICE ACTION IN(16)"},
-/* 9F                  SERVICE ACTION OUT(16) */
-{0x9F, ALL,           "SERVICE ACTION OUT(16)"},
-
-/* A0  OOOOOOOOOOO   REPORT LUNS */
-{0xA0, ALL & ~(E),  "REPORT LUNS"},
-
-/* A1       O        BLANK {MMC Proposed} */
-{0xA1, R,           "BLANK {MMC Proposed}"},
-
-/* A2       O        WRITE CD MSF {MMC Proposed} */
-{0xA2, R,           "WRITE CD MSF {MMC Proposed}"},
-
-/* A3            M   MAINTENANCE (IN) */
-{0xA3, A,           "MAINTENANCE (IN)"},
-
-/* A4            O   MAINTENANCE (OUT) */
-{0xA4, A,           "MAINTENANCE (OUT)"},
-
-/* A5   O      M     MOVE MEDIUM */
-{0xA5, T|M,         "MOVE MEDIUM"},
-/* A5       O        PLAY AUDIO(12) */
-{0xA5, R,           "PLAY AUDIO(12)"},
-
-/* A6          O     EXCHANGE MEDIUM */
-{0xA6, M,           "EXCHANGE MEDIUM"},
-/* A6       O        LOAD/UNLOAD CD {MMC Proposed} */
-{0xA6, R,           "LOAD/UNLOAD CD {MMC Proposed}"},
-
-/* A7  OO  OO OO     MOVE MEDIUM ATTACHED */
-{0xA7, D|T|W|R|O|M, "MOVE MEDIUM ATTACHED"},
-
-/* A8  O   OM O      READ(12) */
-{0xA8,D|W|R|O,      "READ(12)"},
-/* A8           O    GET MESSAGE(12) */
-{0xA8, C,           "GET MESSAGE(12)"},
-
-/* A9       O        PLAY TRACK RELATIVE(12) */
-{0xA9, R,           "PLAY TRACK RELATIVE(12)"},
-
-/* AA  O   O  O      WRITE(12) */
-{0xAA,D|W|O,        "WRITE(12)"},
-/* AA       O        WRITE CD(12) {MMC Proposed} */
-{0xAA, R,           "WRITE CD(12) {MMC Proposed}"},
-/* AA           O    SEND MESSAGE(12) */
-{0xAA, C,           "SEND MESSAGE(12)"},
-
-/* AB */
-
-/* AC         O      ERASE(12) */
-{0xAC, O,           "ERASE(12)"},
-
-/* AD */
-
-/* AE      O  O      WRITE AND VERIFY(12) */
-{0xAE, W|O,         "WRITE AND VERIFY(12)"},
-
-/* AF      OO O      VERIFY(12) */
-{0xAF, W|R|O,       "VERIFY(12)"},
-
-/* B0      ZO Z      SEARCH DATA HIGH(12) */
-{0xB0, W|R|O,       "SEARCH DATA HIGH(12)"},
-
-/* B1      ZO Z      SEARCH DATA EQUAL(12) */
-{0xB1, W|R|O,       "SEARCH DATA EQUAL(12)"},
-
-/* B2      ZO Z      SEARCH DATA LOW(12) */
-{0xB2, W|R|O,       "SEARCH DATA LOW(12)"},
-
-/* B3      OO O      SET LIMITS(12) */
-{0xB3, W|R|O,       "SET LIMITS(12)"},
-
-/* B4  OO  OO OO     READ ELEMENT STATUS ATTACHED */
-{0xB4, D|T|W|R|O|M, "READ ELEMENT STATUS ATTACHED"},
-
-/* B5          O     REQUEST VOLUME ELEMENT ADDRESS */
-{0xB5, M,           "REQUEST VOLUME ELEMENT ADDRESS"},
-
-/* B6          O     SEND VOLUME TAG */
-{0xB6, M,           "SEND VOLUME TAG"},
-
-/* B7         O      READ DEFECT DATA(12) */
-{0xB7, O,           "READ DEFECT DATA(12)"},
-
-/* B8   O      M     READ ELEMENT STATUS */
-{0xB8, T|M,         "READ ELEMENT STATUS"},
-/* B8       O        SET CD SPEED {MMC Proposed} */
-{0xB8, R,           "SET CD SPEED {MMC Proposed}"},
-
-/* B9       M        READ CD MSF {MMC Proposed} */
-{0xB9, R,           "READ CD MSF {MMC Proposed}"},
-
-/* BA       O        SCAN {MMC Proposed} */
-{0xBA, R,           "SCAN {MMC Proposed}"},
-/* BA            M   REDUNDANCY GROUP (IN) */
-{0xBA, A,           "REDUNDANCY GROUP (IN)"},
-
-/* BB       O        SET CD-ROM SPEED {proposed} */
-{0xBB, R,           "SET CD-ROM SPEED {proposed}"},
-/* BB            O   REDUNDANCY GROUP (OUT) */
-{0xBB, A,           "REDUNDANCY GROUP (OUT)"},
-
-/* BC       O        PLAY CD {MMC Proposed} */
-{0xBC, R,           "PLAY CD {MMC Proposed}"},
-/* BC            M   SPARE (IN) */
-{0xBC, A,           "SPARE (IN)"},
-
-/* BD       M        MECHANISM STATUS {MMC Proposed} */
-{0xBD, R,           "MECHANISM STATUS {MMC Proposed}"},
-/* BD            O   SPARE (OUT) */
-{0xBD, A,           "SPARE (OUT)"},
-
-/* BE       O        READ CD {MMC Proposed} */
-{0xBE, R,           "READ CD {MMC Proposed}"},
-/* BE            M   VOLUME SET (IN) */
-{0xBE, A,           "VOLUME SET (IN)"},
-
-/* BF            O   VOLUME SET (OUT) */
-{0xBF, A,           "VOLUME SET (OUT)"}
+	/*
+	 * From: http://www.t10.org/lists/op-num.txt
+	 * Modifications by Kenneth Merry (ken at FreeBSD.ORG)
+	 *              and Jung-uk Kim (jkim at FreeBSD.org)
+	 *
+	 * Note:  order is important in this table, scsi_op_desc() currently
+	 * depends on the opcodes in the table being in order to save
+	 * search time.
+	 * Note:  scanner and comm. devices are carried over from the previous
+	 * version because they were removed in the latest spec.
+	 */
+	/* File: OP-NUM.TXT
+	 *
+	 * SCSI Operation Codes
+	 * Numeric Sorted Listing
+	 * as of  3/11/08
+	 *
+	 *     D - DIRECT ACCESS DEVICE (SBC-2)                device column key
+	 *     .T - SEQUENTIAL ACCESS DEVICE (SSC-2)           -----------------
+	 *     . L - PRINTER DEVICE (SSC)                      M = Mandatory
+	 *     .  P - PROCESSOR DEVICE (SPC)                   O = Optional
+	 *     .  .W - WRITE ONCE READ MULTIPLE DEVICE (SBC-2) V = Vendor spec.
+	 *     .  . R - CD/DVE DEVICE (MMC-3)                  Z = Obsolete
+	 *     .  .  O - OPTICAL MEMORY DEVICE (SBC-2)
+	 *     .  .  .M - MEDIA CHANGER DEVICE (SMC-2)
+	 *     .  .  . A - STORAGE ARRAY DEVICE (SCC-2)
+	 *     .  .  . .E - ENCLOSURE SERVICES DEVICE (SES)
+	 *     .  .  .  .B - SIMPLIFIED DIRECT-ACCESS DEVICE (RBC)
+	 *     .  .  .  . K - OPTICAL CARD READER/WRITER DEVICE (OCRW)
+	 *     .  .  .  .  V - AUTOMATION/DRIVE INTERFACE (ADC)
+	 *     .  .  .  .  .F - OBJECT-BASED STORAGE (OSD)
+	 * OP  DTLPWROMAEBKVF  Description
+	 * --  --------------  ---------------------------------------------- */
+	/* 00  MMMMMMMMMMMMMM  TEST UNIT READY */
+	{ 0x00,	ALL, "TEST UNIT READY" },
+	/* 01   M              REWIND */
+	{ 0x01,	T, "REWIND" },
+	/* 01  Z V ZZZZ        REZERO UNIT */
+	{ 0x01,	D | W | R | O | M, "REZERO UNIT" },
+	/* 02  VVVVVV V */
+	/* 03  MMMMMMMMMMOMMM  REQUEST SENSE */
+	{ 0x03,	ALL, "REQUEST SENSE" },
+	/* 04  M    OO         FORMAT UNIT */
+	{ 0x04,	D | R | O, "FORMAT UNIT" },
+	/* 04   O              FORMAT MEDIUM */
+	{ 0x04,	T, "FORMAT MEDIUM" },
+	/* 04    O             FORMAT */
+	{ 0x04,	L, "FORMAT" },
+	/* 05  VMVVVV V        READ BLOCK LIMITS */
+	{ 0x05,	T, "READ BLOCK LIMITS" },
+	/* 06  VVVVVV V */
+	/* 07  OVV O OV        REASSIGN BLOCKS */
+	{ 0x07,	D | W | O, "REASSIGN BLOCKS" },
+	/* 07         O        INITIALIZE ELEMENT STATUS */
+	{ 0x07,	M, "INITIALIZE ELEMENT STATUS" },
+	/* 08  MOV O OV        READ(6) */
+	{ 0x08,	D | T | W | O, "READ(6)" },
+	/* 08     O            RECEIVE */
+	{ 0x08,	P, "RECEIVE" },
+	/* 08                  GET MESSAGE(6) */
+	{ 0x08, C, "GET MESSAGE(6)" },
+	/* 09  VVVVVV V */
+	/* 0A  OO  O OV        WRITE(6) */
+	{ 0x0A,	D | T | W | O, "WRITE(6)" },
+	/* 0A     M            SEND(6) */
+	{ 0x0A,	P, "SEND(6)" },
+	/* 0A                  SEND MESSAGE(6) */
+	{ 0x0A, C, "SEND MESSAGE(6)" },
+	/* 0A    M             PRINT */
+	{ 0x0A,	L, "PRINT" },
+	/* 0B  Z   ZOZV        SEEK(6) */
+	{ 0x0B,	D | W | R | O, "SEEK(6)" },
+	/* 0B   O              SET CAPACITY */
+	{ 0x0B,	T, "SET CAPACITY" },
+	/* 0B    O             SLEW AND PRINT */
+	{ 0x0B,	L, "SLEW AND PRINT" },
+	/* 0C  VVVVVV V */
+	/* 0D  VVVVVV V */
+	/* 0E  VVVVVV V */
+	/* 0F  VOVVVV V        READ REVERSE(6) */
+	{ 0x0F,	T, "READ REVERSE(6)" },
+	/* 10  VM VVV          WRITE FILEMARKS(6) */
+	{ 0x10,	T, "WRITE FILEMARKS(6)" },
+	/* 10    O             SYNCHRONIZE BUFFER */
+	{ 0x10,	L, "SYNCHRONIZE BUFFER" },
+	/* 11  VMVVVV          SPACE(6) */
+	{ 0x11,	T, "SPACE(6)" },
+	/* 12  MMMMMMMMMMMMMM  INQUIRY */
+	{ 0x12,	ALL, "INQUIRY" },
+	/* 13  V VVVV */
+	/* 13   O              VERIFY(6) */
+	{ 0x13,	T, "VERIFY(6)" },
+	/* 14  VOOVVV          RECOVER BUFFERED DATA */
+	{ 0x14,	T | L, "RECOVER BUFFERED DATA" },
+	/* 15  OMO O OOOO OO   MODE SELECT(6) */
+	{ 0x15,	ALL & ~(P | R | B | F), "MODE SELECT(6)" },
+	/* 16  ZZMZO OOOZ O    RESERVE(6) */
+	{ 0x16,	ALL & ~(R | B | V | F | C), "RESERVE(6)" },
+	/* 16         Z        RESERVE ELEMENT(6) */
+	{ 0x16,	M, "RESERVE ELEMENT(6)" },
+	/* 17  ZZMZO OOOZ O    RELEASE(6) */
+	{ 0x17,	ALL & ~(R | B | V | F | C), "RELEASE(6)" },
+	/* 17         Z        RELEASE ELEMENT(6) */
+	{ 0x17,	M, "RELEASE ELEMENT(6)" },
+	/* 18  ZZZZOZO    Z    COPY */
+	{ 0x18,	D | T | L | P | W | R | O | K | S, "COPY" },
+	/* 19  VMVVVV          ERASE(6) */
+	{ 0x19,	T, "ERASE(6)" },
+	/* 1A  OMO O OOOO OO   MODE SENSE(6) */
+	{ 0x1A,	ALL & ~(P | R | B | F), "MODE SENSE(6)" },
+	/* 1B  O   OOO O MO O  START STOP UNIT */
+	{ 0x1B,	D | W | R | O | A | B | K | F, "START STOP UNIT" },
+	/* 1B   O          M   LOAD UNLOAD */
+	{ 0x1B,	T | V, "LOAD UNLOAD" },
+	/* 1B                  SCAN */
+	{ 0x1B, S, "SCAN" },
+	/* 1B    O             STOP PRINT */
+	{ 0x1B,	L, "STOP PRINT" },
+	/* 1B         O        OPEN/CLOSE IMPORT/EXPORT ELEMENT */
+	{ 0x1B,	M, "OPEN/CLOSE IMPORT/EXPORT ELEMENT" },
+	/* 1C  OOOOO OOOM OOO  RECEIVE DIAGNOSTIC RESULTS */
+	{ 0x1C,	ALL & ~(R | B), "RECEIVE DIAGNOSTIC RESULTS" },
+	/* 1D  MMMMM MMOM MMM  SEND DIAGNOSTIC */
+	{ 0x1D,	ALL & ~(R | B), "SEND DIAGNOSTIC" },
+	/* 1E  OO  OOOO   O O  PREVENT ALLOW MEDIUM REMOVAL */
+	{ 0x1E,	D | T | W | R | O | M | K | F, "PREVENT ALLOW MEDIUM REMOVAL" },
+	/* 1F */
+	/* 20  V   VVV    V */
+	/* 21  V   VVV    V */
+	/* 22  V   VVV    V */
+	/* 23  V   V V    V */
+	/* 23       O          READ FORMAT CAPACITIES */
+	{ 0x23,	R, "READ FORMAT CAPACITIES" },
+	/* 24  V   VV          SET WINDOW */
+	{ 0x24, S, "SET WINDOW" },
+	/* 25  M   M M   M     READ CAPACITY(10) */
+	{ 0x25,	D | W | O | B, "READ CAPACITY(10)" },
+	/* 25       O          READ CAPACITY */
+	{ 0x25,	R, "READ CAPACITY" },
+	/* 25             M    READ CARD CAPACITY */
+	{ 0x25,	K, "READ CARD CAPACITY" },
+	/* 25                  GET WINDOW */
+	{ 0x25, S, "GET WINDOW" },
+	/* 26  V   VV */
+	/* 27  V   VV */
+	/* 28  M   MOM   MM    READ(10) */
+	{ 0x28,	D | W | R | O | B | K | S, "READ(10)" },
+	/* 28                  GET MESSAGE(10) */
+	{ 0x28, C, "GET MESSAGE(10)" },
+	/* 29  V   VVO         READ GENERATION */
+	{ 0x29,	O, "READ GENERATION" },
+	/* 2A  O   MOM   MO    WRITE(10) */
+	{ 0x2A,	D | W | R | O | B | K, "WRITE(10)" },
+	/* 2A                  SEND(10) */
+	{ 0x2A, S, "SEND(10)" },
+	/* 2A                  SEND MESSAGE(10) */
+	{ 0x2A, C, "SEND MESSAGE(10)" },
+	/* 2B  Z   OOO    O    SEEK(10) */
+	{ 0x2B,	D | W | R | O | K, "SEEK(10)" },
+	/* 2B   O              LOCATE(10) */
+	{ 0x2B,	T, "LOCATE(10)" },
+	/* 2B         O        POSITION TO ELEMENT */
+	{ 0x2B,	M, "POSITION TO ELEMENT" },
+	/* 2C  V    OO         ERASE(10) */
+	{ 0x2C,	R | O, "ERASE(10)" },
+	/* 2D        O         READ UPDATED BLOCK */
+	{ 0x2D,	O, "READ UPDATED BLOCK" },
+	/* 2D  V */
+	/* 2E  O   OOO   MO    WRITE AND VERIFY(10) */
+	{ 0x2E,	D | W | R | O | B | K, "WRITE AND VERIFY(10)" },
+	/* 2F  O   OOO         VERIFY(10) */
+	{ 0x2F,	D | W | R | O, "VERIFY(10)" },
+	/* 30  Z   ZZZ         SEARCH DATA HIGH(10) */
+	{ 0x30,	D | W | R | O, "SEARCH DATA HIGH(10)" },
+	/* 31  Z   ZZZ         SEARCH DATA EQUAL(10) */
+	{ 0x31,	D | W | R | O, "SEARCH DATA EQUAL(10)" },
+	/* 31                  OBJECT POSITION */
+	{ 0x31, S, "OBJECT POSITION" },
+	/* 32  Z   ZZZ         SEARCH DATA LOW(10) */
+	{ 0x32,	D | W | R | O, "SEARCH DATA LOW(10)" },
+	/* 33  Z   OZO         SET LIMITS(10) */
+	{ 0x33,	D | W | R | O, "SET LIMITS(10)" },
+	/* 34  O   O O    O    PRE-FETCH(10) */
+	{ 0x34,	D | W | O | K, "PRE-FETCH(10)" },
+	/* 34   M              READ POSITION */
+	{ 0x34,	T, "READ POSITION" },
+	/* 34                  GET DATA BUFFER STATUS */
+	{ 0x34, S, "GET DATA BUFFER STATUS" },
+	/* 35  O   OOO   MO    SYNCHRONIZE CACHE(10) */
+	{ 0x35,	D | W | R | O | B | K, "SYNCHRONIZE CACHE(10)" },
+	/* 36  Z   O O    O    LOCK UNLOCK CACHE(10) */
+	{ 0x36,	D | W | O | K, "LOCK UNLOCK CACHE(10)" },
+	/* 37  O     O         READ DEFECT DATA(10) */
+	{ 0x37,	D | O, "READ DEFECT DATA(10)" },
+	/* 37         O        INITIALIZE ELEMENT STATUS WITH RANGE */
+	{ 0x37,	M, "INITIALIZE ELEMENT STATUS WITH RANGE" },
+	/* 38      O O    O    MEDIUM SCAN */
+	{ 0x38,	W | O | K, "MEDIUM SCAN" },
+	/* 39  ZZZZOZO    Z    COMPARE */
+	{ 0x39,	D | T | L | P | W | R | O | K | S, "COMPARE" },
+	/* 3A  ZZZZOZO    Z    COPY AND VERIFY */
+	{ 0x3A,	D | T | L | P | W | R | O | K | S, "COPY AND VERIFY" },
+	/* 3B  OOOOOOOOOOMOOO  WRITE BUFFER */
+	{ 0x3B,	ALL, "WRITE BUFFER" },
+	/* 3C  OOOOOOOOOO OOO  READ BUFFER */
+	{ 0x3C,	ALL & ~(B), "READ BUFFER" },
+	/* 3D        O         UPDATE BLOCK */
+	{ 0x3D,	O, "UPDATE BLOCK" },
+	/* 3E  O   O O         READ LONG(10) */
+	{ 0x3E,	D | W | O, "READ LONG(10)" },
+	/* 3F  O   O O         WRITE LONG(10) */
+	{ 0x3F,	D | W | O, "WRITE LONG(10)" },
+	/* 40  ZZZZOZOZ        CHANGE DEFINITION */
+	{ 0x40,	D | T | L | P | W | R | O | M | S | C, "CHANGE DEFINITION" },
+	/* 41  O               WRITE SAME(10) */
+	{ 0x41,	D, "WRITE SAME(10)" },
+	/* 42       O          READ SUB-CHANNEL */
+	{ 0x42,	R, "READ SUB-CHANNEL" },
+	/* 43       O          READ TOC/PMA/ATIP */
+	{ 0x43,	R, "READ TOC/PMA/ATIP" },
+	/* 44   M          M   REPORT DENSITY SUPPORT */
+	{ 0x44,	T | V, "REPORT DENSITY SUPPORT" },
+	/* 44                  READ HEADER */
+	/* 45       O          PLAY AUDIO(10) */
+	{ 0x45,	R, "PLAY AUDIO(10)" },
+	/* 46       M          GET CONFIGURATION */
+	{ 0x46,	R, "GET CONFIGURATION" },
+	/* 47       O          PLAY AUDIO MSF */
+	{ 0x47,	R, "PLAY AUDIO MSF" },
+	/* 48 */
+	/* 49 */
+	/* 4A       M          GET EVENT STATUS NOTIFICATION */
+	{ 0x4A,	R, "GET EVENT STATUS NOTIFICATION" },
+	/* 4B       O          PAUSE/RESUME */
+	{ 0x4B,	R, "PAUSE/RESUME" },
+	/* 4C  OOOOO OOOO OOO  LOG SELECT */
+	{ 0x4C,	ALL & ~(R | B), "LOG SELECT" },
+	/* 4D  OOOOO OOOO OMO  LOG SENSE */
+	{ 0x4D,	ALL & ~(R | B), "LOG SENSE" },
+	/* 4E       O          STOP PLAY/SCAN */
+	{ 0x4E,	R, "STOP PLAY/SCAN" },
+	/* 4F */
+	/* 50  O               XDWRITE(10) */
+	{ 0x50,	D, "XDWRITE(10)" },
+	/* 51  O               XPWRITE(10) */
+	{ 0x51,	D, "XPWRITE(10)" },
+	/* 51       O          READ DISC INFORMATION */
+	{ 0x51,	R, "READ DISC INFORMATION" },
+	/* 52  O               XDREAD(10) */
+	{ 0x52,	D, "XDREAD(10)" },
+	/* 52       O          READ TRACK INFORMATION */
+	{ 0x52,	R, "READ TRACK INFORMATION" },
+	/* 53       O          RESERVE TRACK */
+	{ 0x53,	R, "RESERVE TRACK" },
+	/* 54       O          SEND OPC INFORMATION */
+	{ 0x54,	R, "SEND OPC INFORMATION" },
+	/* 55  OOO OMOOOOMOMO  MODE SELECT(10) */
+	{ 0x55,	ALL & ~(P), "MODE SELECT(10)" },
+	/* 56  ZZMZO OOOZ      RESERVE(10) */
+	{ 0x56,	ALL & ~(R | B | K | V | F | C), "RESERVE(10)" },
+	/* 56         Z        RESERVE ELEMENT(10) */
+	{ 0x56,	M, "RESERVE ELEMENT(10)" },
+	/* 57  ZZMZO OOOZ      RELEASE(10) */
+	{ 0x57,	ALL & ~(R | B | K | V | F | C), "RELEASE(10)" },
+	/* 57         Z        RELEASE ELEMENT(10) */
+	{ 0x57,	M, "RELEASE ELEMENT(10)" },
+	/* 58       O          REPAIR TRACK */
+	{ 0x58,	R, "REPAIR TRACK" },
+	/* 59 */
+	/* 5A  OOO OMOOOOMOMO  MODE SENSE(10) */
+	{ 0x5A,	ALL & ~(P), "MODE SENSE(10)" },
+	/* 5B       O          CLOSE TRACK/SESSION */
+	{ 0x5B,	R, "CLOSE TRACK/SESSION" },
+	/* 5C       O          READ BUFFER CAPACITY */
+	{ 0x5C,	R, "READ BUFFER CAPACITY" },
+	/* 5D       O          SEND CUE SHEET */
+	{ 0x5D,	R, "SEND CUE SHEET" },
+	/* 5E  OOOOO OOOO   M  PERSISTENT RESERVE IN */
+	{ 0x5E,	ALL & ~(R | B | K | V | C), "PERSISTENT RESERVE IN" },
+	/* 5F  OOOOO OOOO   M  PERSISTENT RESERVE OUT */
+	{ 0x5F,	ALL & ~(R | B | K | V | C), "PERSISTENT RESERVE OUT" },
+	/* 7E  OO   O OOOO O   extended CDB */
+	{ 0x7E,	D | T | R | M | A | E | B | V, "extended CDB" },
+	/* 7F  O            M  variable length CDB (more than 16 bytes) */
+	{ 0x7F,	D | F, "variable length CDB (more than 16 bytes)" },
+	/* 80  Z               XDWRITE EXTENDED(16) */
+	{ 0x80,	D, "XDWRITE EXTENDED(16)" },
+	/* 80   M              WRITE FILEMARKS(16) */
+	{ 0x80,	T, "WRITE FILEMARKS(16)" },
+	/* 81  Z               REBUILD(16) */
+	{ 0x81,	D, "REBUILD(16)" },
+	/* 81   O              READ REVERSE(16) */
+	{ 0x81,	T, "READ REVERSE(16)" },
+	/* 82  Z               REGENERATE(16) */
+	{ 0x82,	D, "REGENERATE(16)" },
+	/* 83  OOOOO O    OO   EXTENDED COPY */
+	{ 0x83,	D | T | L | P | W | O | K | V, "EXTENDED COPY" },
+	/* 84  OOOOO O    OO   RECEIVE COPY RESULTS */
+	{ 0x84,	D | T | L | P | W | O | K | V, "RECEIVE COPY RESULTS" },
+	/* 85  O    O    O     ATA COMMAND PASS THROUGH(16) */
+	{ 0x85,	D | R | B, "ATA COMMAND PASS THROUGH(16)" },
+	/* 86  OO OO OOOOOOO   ACCESS CONTROL IN */
+	{ 0x86,	ALL & ~(L | R | F), "ACCESS CONTROL IN" },
+	/* 87  OO OO OOOOOOO   ACCESS CONTROL OUT */
+	{ 0x87,	ALL & ~(L | R | F), "ACCESS CONTROL OUT" },
+	/*
+	 * XXX READ(16)/WRITE(16) were not listed for CD/DVE in op-num.txt
+	 * but we had it since r1.40.  Do we really want them?
+	 */
+	/* 88  MM  O O   O     READ(16) */
+	{ 0x88,	D | T | W | O | B, "READ(16)" },
+	/* 89 */
+	/* 8A  OM  O O   O     WRITE(16) */
+	{ 0x8A,	D | T | W | O | B, "WRITE(16)" },
+	/* 8B  O               ORWRITE */
+	{ 0x8B,	D, "ORWRITE" },
+	/* 8C  OO  O OO  O M   READ ATTRIBUTE */
+	{ 0x8C,	D | T | W | O | M | B | V, "READ ATTRIBUTE" },
+	/* 8D  OO  O OO  O O   WRITE ATTRIBUTE */
+	{ 0x8D,	D | T | W | O | M | B | V, "WRITE ATTRIBUTE" },
+	/* 8E  O   O O   O     WRITE AND VERIFY(16) */
+	{ 0x8E,	D | W | O | B, "WRITE AND VERIFY(16)" },
+	/* 8F  OO  O O   O     VERIFY(16) */
+	{ 0x8F,	D | T | W | O | B, "VERIFY(16)" },
+	/* 90  O   O O   O     PRE-FETCH(16) */
+	{ 0x90,	D | W | O | B, "PRE-FETCH(16)" },
+	/* 91  O   O O   O     SYNCHRONIZE CACHE(16) */
+	{ 0x91,	D | W | O | B, "SYNCHRONIZE CACHE(16)" },
+	/* 91   O              SPACE(16) */
+	{ 0x91,	T, "SPACE(16)" },
+	/* 92  Z   O O         LOCK UNLOCK CACHE(16) */
+	{ 0x92,	D | W | O, "LOCK UNLOCK CACHE(16)" },
+	/* 92   O              LOCATE(16) */
+	{ 0x92,	T, "LOCATE(16)" },
+	/* 93  O               WRITE SAME(16) */
+	{ 0x93,	D, "WRITE SAME(16)" },
+	/* 93   M              ERASE(16) */
+	{ 0x93,	T, "ERASE(16)" },
+	/* 94 [usage proposed by SCSI Socket Services project] */
+	/* 95 [usage proposed by SCSI Socket Services project] */
+	/* 96 [usage proposed by SCSI Socket Services project] */
+	/* 97 [usage proposed by SCSI Socket Services project] */
+	/* 98 */
+	/* 99 */
+	/* 9A */
+	/* 9B */
+	/* 9C */
+	/* 9D */
+	/* XXX KDM ALL for this?  op-num.txt defines it for none.. */
+	/* 9E                  SERVICE ACTION IN(16) */
+	{ 0x9E, ALL, "SERVICE ACTION IN(16)" },
+	/* XXX KDM ALL for this?  op-num.txt defines it for ADC.. */
+	/* 9F              M   SERVICE ACTION OUT(16) */
+	{ 0x9F,	ALL, "SERVICE ACTION OUT(16)" },
+	/* A0  MMOOO OMMM OMO  REPORT LUNS */
+	{ 0xA0,	ALL & ~(R | B), "REPORT LUNS" },
+	/* A1       O          BLANK */
+	{ 0xA1,	R, "BLANK" },
+	/* A1  O         O     ATA COMMAND PASS THROUGH(12) */
+	{ 0xA1,	D | B, "ATA COMMAND PASS THROUGH(12)" },
+	/* A2  OO   O      O   SECURITY PROTOCOL IN */
+	{ 0xA2,	D | T | R | V, "SECURITY PROTOCOL IN" },
+	/* A3  OOO O OOMOOOM   MAINTENANCE (IN) */
+	{ 0xA3,	ALL & ~(P | R | F), "MAINTENANCE (IN)" },
+	/* A3       O          SEND KEY */
+	{ 0xA3,	R, "SEND KEY" },
+	/* A4  OOO O OOOOOOO   MAINTENANCE (OUT) */
+	{ 0xA4,	ALL & ~(P | R | F), "MAINTENANCE (OUT)" },
+	/* A4       O          REPORT KEY */
+	{ 0xA4,	R, "REPORT KEY" },
+	/* A5   O  O OM        MOVE MEDIUM */
+	{ 0xA5,	T | W | O | M, "MOVE MEDIUM" },
+	/* A5       O          PLAY AUDIO(12) */
+	{ 0xA5,	R, "PLAY AUDIO(12)" },
+	/* A6         O        EXCHANGE MEDIUM */
+	{ 0xA6,	M, "EXCHANGE MEDIUM" },
+	/* A6       O          LOAD/UNLOAD C/DVD */
+	{ 0xA6,	R, "LOAD/UNLOAD C/DVD" },
+	/* A7  ZZ  O O         MOVE MEDIUM ATTACHED */
+	{ 0xA7,	D | T | W | O, "MOVE MEDIUM ATTACHED" },
+	/* A7       O          SET READ AHEAD */
+	{ 0xA7,	R, "SET READ AHEAD" },
+	/* A8  O   OOO         READ(12) */
+	{ 0xA8,	D | W | R | O, "READ(12)" },
+	/* A8                  GET MESSAGE(12) */
+	{ 0xA8, C, "GET MESSAGE(12)" },
+	/* A9              O   SERVICE ACTION OUT(12) */
+	{ 0xA9,	V, "SERVICE ACTION OUT(12)" },
+	/* AA  O   OOO         WRITE(12) */
+	{ 0xAA,	D | W | R | O, "WRITE(12)" },
+	/* AA                  SEND MESSAGE(12) */
+	{ 0xAA, C, "SEND MESSAGE(12)" },
+	/* AB       O      O   SERVICE ACTION IN(12) */
+	{ 0xAB,	R | V, "SERVICE ACTION IN(12)" },
+	/* AC        O         ERASE(12) */
+	{ 0xAC,	O, "ERASE(12)" },
+	/* AC       O          GET PERFORMANCE */
+	{ 0xAC,	R, "GET PERFORMANCE" },
+	/* AD       O          READ DVD STRUCTURE */
+	{ 0xAD,	R, "READ DVD STRUCTURE" },
+	/* AE  O   O O         WRITE AND VERIFY(12) */
+	{ 0xAE,	D | W | O, "WRITE AND VERIFY(12)" },
+	/* AF  O   OZO         VERIFY(12) */
+	{ 0xAF,	D | W | R | O, "VERIFY(12)" },
+	/* B0      ZZZ         SEARCH DATA HIGH(12) */
+	{ 0xB0,	W | R | O, "SEARCH DATA HIGH(12)" },
+	/* B1      ZZZ         SEARCH DATA EQUAL(12) */
+	{ 0xB1,	W | R | O, "SEARCH DATA EQUAL(12)" },
+	/* B2      ZZZ         SEARCH DATA LOW(12) */
+	{ 0xB2,	W | R | O, "SEARCH DATA LOW(12)" },
+	/* B3  Z   OZO         SET LIMITS(12) */
+	{ 0xB3,	D | W | R | O, "SET LIMITS(12)" },
+	/* B4  ZZ  OZO         READ ELEMENT STATUS ATTACHED */
+	{ 0xB4,	D | T | W | R | O, "READ ELEMENT STATUS ATTACHED" },
+	/* B5  OO   O      O   SECURITY PROTOCOL OUT */
+	{ 0xB5,	D | T | R | V, "SECURITY PROTOCOL OUT" },
+	/* B5         O        REQUEST VOLUME ELEMENT ADDRESS */
+	{ 0xB5,	M, "REQUEST VOLUME ELEMENT ADDRESS" },
+	/* B6         O        SEND VOLUME TAG */
+	{ 0xB6,	M, "SEND VOLUME TAG" },
+	/* B6       O          SET STREAMING */
+	{ 0xB6,	R, "SET STREAMING" },
+	/* B7  O     O         READ DEFECT DATA(12) */
+	{ 0xB7,	D | O, "READ DEFECT DATA(12)" },
+	/* B8   O  OZOM        READ ELEMENT STATUS */
+	{ 0xB8,	T | W | R | O | M, "READ ELEMENT STATUS" },
+	/* B9       O          READ CD MSF */
+	{ 0xB9,	R, "READ CD MSF" },
+	/* BA  O   O OOMO      REDUNDANCY GROUP (IN) */
+	{ 0xBA,	D | W | O | M | A | E, "REDUNDANCY GROUP (IN)" },
+	/* BA       O          SCAN */
+	{ 0xBA,	R, "SCAN" },
+	/* BB  O   O OOOO      REDUNDANCY GROUP (OUT) */
+	{ 0xBB,	D | W | O | M | A | E, "REDUNDANCY GROUP (OUT)" },
+	/* BB       O          SET CD SPEED */
+	{ 0xBB,	R, "SET CD SPEED" },
+	/* BC  O   O OOMO      SPARE (IN) */
+	{ 0xBC,	D | W | O | M | A | E, "SPARE (IN)" },
+	/* BD  O   O OOOO      SPARE (OUT) */

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list