xref: /freebsd/sys/cam/ctl/ctl_cmd_table.c (revision 8202971892862a26df0ad0fffd1ac03728a874d6)
1130f4520SKenneth D. Merry /*-
2130f4520SKenneth D. Merry  * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp.
3648dfc1aSAlexander Motin  * Copyright (c) 2014-2015 Alexander Motin <mav@FreeBSD.org>
4130f4520SKenneth D. Merry  * All rights reserved.
5130f4520SKenneth D. Merry  *
6130f4520SKenneth D. Merry  * Redistribution and use in source and binary forms, with or without
7130f4520SKenneth D. Merry  * modification, are permitted provided that the following conditions
8130f4520SKenneth D. Merry  * are met:
9130f4520SKenneth D. Merry  * 1. Redistributions of source code must retain the above copyright
10130f4520SKenneth D. Merry  *    notice, this list of conditions, and the following disclaimer,
11130f4520SKenneth D. Merry  *    without modification.
12130f4520SKenneth D. Merry  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
13130f4520SKenneth D. Merry  *    substantially similar to the "NO WARRANTY" disclaimer below
14130f4520SKenneth D. Merry  *    ("Disclaimer") and any redistribution must be conditioned upon
15130f4520SKenneth D. Merry  *    including a substantially similar Disclaimer requirement for further
16130f4520SKenneth D. Merry  *    binary redistribution.
17130f4520SKenneth D. Merry  *
18130f4520SKenneth D. Merry  * NO WARRANTY
19130f4520SKenneth D. Merry  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20130f4520SKenneth D. Merry  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21130f4520SKenneth D. Merry  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
22130f4520SKenneth D. Merry  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23130f4520SKenneth D. Merry  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24130f4520SKenneth D. Merry  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25130f4520SKenneth D. Merry  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26130f4520SKenneth D. Merry  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27130f4520SKenneth D. Merry  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
28130f4520SKenneth D. Merry  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29130f4520SKenneth D. Merry  * POSSIBILITY OF SUCH DAMAGES.
30130f4520SKenneth D. Merry  *
31130f4520SKenneth D. Merry  * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $
32130f4520SKenneth D. Merry  * $FreeBSD$
33130f4520SKenneth D. Merry  */
34130f4520SKenneth D. Merry /*
35130f4520SKenneth D. Merry  * CAM Target Layer command table.
36130f4520SKenneth D. Merry  *
37130f4520SKenneth D. Merry  * Author: Ken Merry <ken@FreeBSD.org>, Kim Le
38130f4520SKenneth D. Merry  */
39130f4520SKenneth D. Merry 
40130f4520SKenneth D. Merry #include <sys/cdefs.h>
41130f4520SKenneth D. Merry #include <sys/param.h>
42130f4520SKenneth D. Merry #include <sys/systm.h>
43130f4520SKenneth D. Merry #include <sys/kernel.h>
44130f4520SKenneth D. Merry #include <sys/types.h>
45130f4520SKenneth D. Merry #include <sys/malloc.h>
46130f4520SKenneth D. Merry #include <sys/condvar.h>
47130f4520SKenneth D. Merry #include <sys/queue.h>
48bf8f8f34SKenneth D. Merry #include <sys/sysctl.h>
49130f4520SKenneth D. Merry 
50130f4520SKenneth D. Merry #include <cam/scsi/scsi_all.h>
51130f4520SKenneth D. Merry #include <cam/scsi/scsi_da.h>
52130f4520SKenneth D. Merry #include <cam/ctl/ctl_io.h>
53130f4520SKenneth D. Merry #include <cam/ctl/ctl.h>
54130f4520SKenneth D. Merry #include <cam/ctl/ctl_frontend.h>
55130f4520SKenneth D. Merry #include <cam/ctl/ctl_backend.h>
56130f4520SKenneth D. Merry #include <cam/ctl/ctl_ioctl.h>
57130f4520SKenneth D. Merry #include <cam/ctl/ctl_ha.h>
58130f4520SKenneth D. Merry #include <cam/ctl/ctl_private.h>
59130f4520SKenneth D. Merry 
60130f4520SKenneth D. Merry /*
611b08cb4eSAlexander Motin  * Whenever support for a new command is added, it should be added to these
621b08cb4eSAlexander Motin  * tables.
63130f4520SKenneth D. Merry  */
641b08cb4eSAlexander Motin 
65*82029718SAlexander Motin /* 3B WRITE BUFFER */
66*82029718SAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_3b[32] =
67*82029718SAlexander Motin {
68*82029718SAlexander Motin /* 00 WRITE BUFFER HDR DATA */
69*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
70*82029718SAlexander Motin 
71*82029718SAlexander Motin /* 01 WRITE BUFFER VENDOR */
72*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
73*82029718SAlexander Motin 
74*82029718SAlexander Motin /* 02 WRITE BUFFER DATA */
75*82029718SAlexander Motin {ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
76*82029718SAlexander Motin 				      CTL_CMD_FLAG_OK_ON_NO_MEDIA |
77*82029718SAlexander Motin 				      CTL_CMD_FLAG_OK_ON_STANDBY |
78*82029718SAlexander Motin 				      CTL_FLAG_DATA_OUT,
79*82029718SAlexander Motin  CTL_LUN_PAT_NONE,
80*82029718SAlexander Motin  10, {0x02, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
81*82029718SAlexander Motin 
82*82029718SAlexander Motin /* 03 WRITE BUFFER DESCR */
83*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
84*82029718SAlexander Motin 
85*82029718SAlexander Motin /* 04 WRITE BUFFER DOWNLOAD */
86*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
87*82029718SAlexander Motin 
88*82029718SAlexander Motin /* 05 WRITE BUFFER DOWNLOAD SAVE */
89*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
90*82029718SAlexander Motin 
91*82029718SAlexander Motin /* 06 */
92*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
93*82029718SAlexander Motin 
94*82029718SAlexander Motin /* 07 */
95*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
96*82029718SAlexander Motin 
97*82029718SAlexander Motin /* 08 */
98*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
99*82029718SAlexander Motin 
100*82029718SAlexander Motin /* 09 */
101*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
102*82029718SAlexander Motin 
103*82029718SAlexander Motin /* 0A WRITE BUFFER ECHO */
104*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
105*82029718SAlexander Motin 
106*82029718SAlexander Motin /* 0B WRITE BUFFER ECHO DESCRIPTOR */
107*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
108*82029718SAlexander Motin 
109*82029718SAlexander Motin /* 0C */
110*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
111*82029718SAlexander Motin 
112*82029718SAlexander Motin /* 0D */
113*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
114*82029718SAlexander Motin 
115*82029718SAlexander Motin /* 0E */
116*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
117*82029718SAlexander Motin 
118*82029718SAlexander Motin /* 0F */
119*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
120*82029718SAlexander Motin 
121*82029718SAlexander Motin /* 10 */
122*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
123*82029718SAlexander Motin 
124*82029718SAlexander Motin /* 11 */
125*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
126*82029718SAlexander Motin 
127*82029718SAlexander Motin /* 12 */
128*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
129*82029718SAlexander Motin 
130*82029718SAlexander Motin /* 13 */
131*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
132*82029718SAlexander Motin 
133*82029718SAlexander Motin /* 14 */
134*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
135*82029718SAlexander Motin 
136*82029718SAlexander Motin /* 15 */
137*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
138*82029718SAlexander Motin 
139*82029718SAlexander Motin /* 16 */
140*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
141*82029718SAlexander Motin 
142*82029718SAlexander Motin /* 17 */
143*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
144*82029718SAlexander Motin 
145*82029718SAlexander Motin /* 18 */
146*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
147*82029718SAlexander Motin 
148*82029718SAlexander Motin /* 19 */
149*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
150*82029718SAlexander Motin 
151*82029718SAlexander Motin /* 1A */
152*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
153*82029718SAlexander Motin 
154*82029718SAlexander Motin /* 1B */
155*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
156*82029718SAlexander Motin 
157*82029718SAlexander Motin /* 1C WRITE BUFFER ERROR HISTORY */
158*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
159*82029718SAlexander Motin 
160*82029718SAlexander Motin /* 1d-1f */
161*82029718SAlexander Motin };
162*82029718SAlexander Motin 
163*82029718SAlexander Motin /* 3C READ BUFFER(10) */
164*82029718SAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_3c[32] =
165*82029718SAlexander Motin {
166*82029718SAlexander Motin /* 00 READ BUFFER(10) HDR DATA */
167*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
168*82029718SAlexander Motin 
169*82029718SAlexander Motin /* 01 READ BUFFER(10) VENDOR */
170*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
171*82029718SAlexander Motin 
172*82029718SAlexander Motin /* 02 READ BUFFER(10) DATA */
173*82029718SAlexander Motin {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
174*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
175*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
176*82029718SAlexander Motin 				     CTL_FLAG_DATA_IN |
177*82029718SAlexander Motin 				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
178*82029718SAlexander Motin  CTL_LUN_PAT_NONE,
179*82029718SAlexander Motin  10, {0x02, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
180*82029718SAlexander Motin 
181*82029718SAlexander Motin /* 03 READ BUFFER(10) DESCR */
182*82029718SAlexander Motin {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
183*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
184*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
185*82029718SAlexander Motin 				     CTL_FLAG_DATA_IN |
186*82029718SAlexander Motin 				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
187*82029718SAlexander Motin  CTL_LUN_PAT_NONE,
188*82029718SAlexander Motin  10, {0x03, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
189*82029718SAlexander Motin 
190*82029718SAlexander Motin /* 04 */
191*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
192*82029718SAlexander Motin 
193*82029718SAlexander Motin /* 05 */
194*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
195*82029718SAlexander Motin 
196*82029718SAlexander Motin /* 06 */
197*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
198*82029718SAlexander Motin 
199*82029718SAlexander Motin /* 07 */
200*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
201*82029718SAlexander Motin 
202*82029718SAlexander Motin /* 08 */
203*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
204*82029718SAlexander Motin 
205*82029718SAlexander Motin /* 09 */
206*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
207*82029718SAlexander Motin 
208*82029718SAlexander Motin /* 0A READ BUFFER(10) ECHO */
209*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
210*82029718SAlexander Motin 
211*82029718SAlexander Motin /* 0B READ BUFFER(10) ECHO DESCRIPTOR */
212*82029718SAlexander Motin {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
213*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
214*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
215*82029718SAlexander Motin 				     CTL_FLAG_DATA_IN |
216*82029718SAlexander Motin 				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
217*82029718SAlexander Motin  CTL_LUN_PAT_NONE,
218*82029718SAlexander Motin  10, {0x0b, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
219*82029718SAlexander Motin 
220*82029718SAlexander Motin /* 0C */
221*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
222*82029718SAlexander Motin 
223*82029718SAlexander Motin /* 0D */
224*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
225*82029718SAlexander Motin 
226*82029718SAlexander Motin /* 0E */
227*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
228*82029718SAlexander Motin 
229*82029718SAlexander Motin /* 0F */
230*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
231*82029718SAlexander Motin 
232*82029718SAlexander Motin /* 10 */
233*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
234*82029718SAlexander Motin 
235*82029718SAlexander Motin /* 11 */
236*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
237*82029718SAlexander Motin 
238*82029718SAlexander Motin /* 12 */
239*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
240*82029718SAlexander Motin 
241*82029718SAlexander Motin /* 13 */
242*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
243*82029718SAlexander Motin 
244*82029718SAlexander Motin /* 14 */
245*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
246*82029718SAlexander Motin 
247*82029718SAlexander Motin /* 15 */
248*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
249*82029718SAlexander Motin 
250*82029718SAlexander Motin /* 16 */
251*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
252*82029718SAlexander Motin 
253*82029718SAlexander Motin /* 17 */
254*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
255*82029718SAlexander Motin 
256*82029718SAlexander Motin /* 18 */
257*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
258*82029718SAlexander Motin 
259*82029718SAlexander Motin /* 19 */
260*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
261*82029718SAlexander Motin 
262*82029718SAlexander Motin /* 1A */
263*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
264*82029718SAlexander Motin 
265*82029718SAlexander Motin /* 1B */
266*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
267*82029718SAlexander Motin 
268*82029718SAlexander Motin /* 1C READ BUFFER(10) ERROR HISTORY */
269*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
270*82029718SAlexander Motin 
271*82029718SAlexander Motin /* 1d-1f */
272*82029718SAlexander Motin };
273*82029718SAlexander Motin 
2741b08cb4eSAlexander Motin /* 5E PERSISTENT RESERVE IN */
2751b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_5e[32] =
2761b08cb4eSAlexander Motin {
2771b08cb4eSAlexander Motin /* 00 READ KEYS */
2784d877c41SAlexander Motin {ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
2791b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
280648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
2817ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
2821b08cb4eSAlexander Motin 						CTL_FLAG_DATA_IN |
2831b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
2841b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
2851b08cb4eSAlexander Motin  10, { 0x00, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
2861b08cb4eSAlexander Motin 
2871b08cb4eSAlexander Motin /* 01 READ RESERVATION */
2884d877c41SAlexander Motin {ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
2891b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
290648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
2917ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
2921b08cb4eSAlexander Motin 						CTL_FLAG_DATA_IN |
2931b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
2941b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
2951b08cb4eSAlexander Motin  10, { 0x01, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
2961b08cb4eSAlexander Motin 
2971b08cb4eSAlexander Motin /* 02 REPORT CAPABILITIES */
2981b08cb4eSAlexander Motin {ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
2991b08cb4eSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_BOTH |
300648dfc1aSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
3017ac58230SAlexander Motin 					    CTL_CMD_FLAG_OK_ON_STANDBY |
3021b08cb4eSAlexander Motin 					    CTL_FLAG_DATA_IN |
3031b08cb4eSAlexander Motin 					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
3041b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
3051b08cb4eSAlexander Motin  10, { 0x02, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
3061b08cb4eSAlexander Motin 
3071b08cb4eSAlexander Motin /* 03 READ FULL STATUS */
3081e5a8b8fSAlexander Motin {ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
3091e5a8b8fSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_BOTH |
310648dfc1aSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
3117ac58230SAlexander Motin 					    CTL_CMD_FLAG_OK_ON_STANDBY |
3121e5a8b8fSAlexander Motin 					    CTL_FLAG_DATA_IN |
3131e5a8b8fSAlexander Motin 					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
3141e5a8b8fSAlexander Motin  CTL_LUN_PAT_NONE,
3151e5a8b8fSAlexander Motin  10, { 0x03, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
3161b08cb4eSAlexander Motin 
3171b08cb4eSAlexander Motin /* 04-1f */
3181b08cb4eSAlexander Motin };
3191b08cb4eSAlexander Motin 
3201b08cb4eSAlexander Motin /* 5F PERSISTENT RESERVE OUT */
3211b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_5f[32] =
3221b08cb4eSAlexander Motin {
3231b08cb4eSAlexander Motin /* 00 REGISTER */
3244d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
3251b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
326648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
3277ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
3281b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
3291b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
3301b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
3311b08cb4eSAlexander Motin  10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
3321b08cb4eSAlexander Motin 
3331b08cb4eSAlexander Motin /* 01 RESERVE */
3344d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
3351b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
336648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
3377ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
3381b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
3391b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
3401b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
341f44570f6SAlexander Motin  10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
3421b08cb4eSAlexander Motin 
3431b08cb4eSAlexander Motin /* 02 RELEASE */
3444d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
3451b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
346648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
3477ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
3481b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
3491b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
3501b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
351f44570f6SAlexander Motin  10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
3521b08cb4eSAlexander Motin 
3531b08cb4eSAlexander Motin /* 03 CLEAR */
3544d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
3551b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
356648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
3577ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
3581b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
3591b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
3601b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
3610f8de8afSAlexander Motin  10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
3621b08cb4eSAlexander Motin 
3631b08cb4eSAlexander Motin /* 04 PREEMPT */
3644d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
3651b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
366648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
3677ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
3681b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
3691b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
3701b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
3710f8de8afSAlexander Motin  10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
3721b08cb4eSAlexander Motin 
3731b08cb4eSAlexander Motin /* 05 PREEMPT AND ABORT */
374fb5780deSAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
375fb5780deSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
376648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
3777ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
378fb5780deSAlexander Motin 						CTL_FLAG_DATA_OUT |
379fb5780deSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
380fb5780deSAlexander Motin  CTL_LUN_PAT_NONE,
381fb5780deSAlexander Motin  10, { 0x05, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
3821b08cb4eSAlexander Motin 
3831b08cb4eSAlexander Motin /* 06 REGISTER AND IGNORE EXISTING KEY */
3844d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
3851b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
386648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
3877ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
3881b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
3891b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
3901b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
3910f8de8afSAlexander Motin  10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
3921b08cb4eSAlexander Motin 
3931b08cb4eSAlexander Motin /* 07 REGISTER AND MOVE */
3941b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
3951b08cb4eSAlexander Motin 
3961b08cb4eSAlexander Motin /* 08-1f */
3971b08cb4eSAlexander Motin };
3981b08cb4eSAlexander Motin 
399984a2ea9SAlexander Motin /* 83 EXTENDED COPY */
400984a2ea9SAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_83[32] =
401984a2ea9SAlexander Motin {
402984a2ea9SAlexander Motin /* 00 EXTENDED COPY (LID1) */
403984a2ea9SAlexander Motin {ctl_extended_copy_lid1, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
404648dfc1aSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
405984a2ea9SAlexander Motin 					    CTL_FLAG_DATA_OUT,
406984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
407984a2ea9SAlexander Motin  16, { 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
408984a2ea9SAlexander Motin 
409984a2ea9SAlexander Motin /* 01 EXTENDED COPY (LID4) */
410984a2ea9SAlexander Motin {ctl_extended_copy_lid4, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
411648dfc1aSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
412984a2ea9SAlexander Motin 					    CTL_FLAG_DATA_OUT,
413984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
414984a2ea9SAlexander Motin  16, { 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
415984a2ea9SAlexander Motin 
416984a2ea9SAlexander Motin /* 02 */
417984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
418984a2ea9SAlexander Motin 
419984a2ea9SAlexander Motin /* 03 */
420984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
421984a2ea9SAlexander Motin 
422984a2ea9SAlexander Motin /* 04 */
423984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
424984a2ea9SAlexander Motin 
425984a2ea9SAlexander Motin /* 05 */
426984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
427984a2ea9SAlexander Motin 
428984a2ea9SAlexander Motin /* 06 */
429984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
430984a2ea9SAlexander Motin 
431984a2ea9SAlexander Motin /* 07 */
432984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
433984a2ea9SAlexander Motin 
434984a2ea9SAlexander Motin /* 08 */
435984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
436984a2ea9SAlexander Motin 
437984a2ea9SAlexander Motin /* 09 */
438984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
439984a2ea9SAlexander Motin 
440984a2ea9SAlexander Motin /* 0A */
441984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
442984a2ea9SAlexander Motin 
443984a2ea9SAlexander Motin /* 0B */
444984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
445984a2ea9SAlexander Motin 
446984a2ea9SAlexander Motin /* 0C */
447984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
448984a2ea9SAlexander Motin 
449984a2ea9SAlexander Motin /* 0D */
450984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
451984a2ea9SAlexander Motin 
452984a2ea9SAlexander Motin /* 0E */
453984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
454984a2ea9SAlexander Motin 
455984a2ea9SAlexander Motin /* 0F */
456984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
457984a2ea9SAlexander Motin 
458984a2ea9SAlexander Motin /* 10 POPULATE TOKEN */
45991be33dcSAlexander Motin {ctl_populate_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
460115dc0c7SAlexander Motin 					CTL_FLAG_DATA_OUT |
461115dc0c7SAlexander Motin 					CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
46225eee848SAlexander Motin  CTL_LUN_PAT_NONE,
46325eee848SAlexander Motin  16, { 0x10, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
46425eee848SAlexander Motin        0xff, 0xff, 0xff, 0xff, 0, 0x07}},
465984a2ea9SAlexander Motin 
466984a2ea9SAlexander Motin /* 11 WRITE USING TOKEN */
46791be33dcSAlexander Motin {ctl_write_using_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
46825eee848SAlexander Motin 					CTL_FLAG_DATA_OUT,
46925eee848SAlexander Motin  CTL_LUN_PAT_NONE,
47025eee848SAlexander Motin  16, { 0x11, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
47125eee848SAlexander Motin        0xff, 0xff, 0xff, 0xff, 0, 0x07}},
472984a2ea9SAlexander Motin 
473984a2ea9SAlexander Motin /* 12 */
474984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
475984a2ea9SAlexander Motin 
476984a2ea9SAlexander Motin /* 13 */
477984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
478984a2ea9SAlexander Motin 
479984a2ea9SAlexander Motin /* 14 */
480984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
481984a2ea9SAlexander Motin 
482984a2ea9SAlexander Motin /* 15 */
483984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
484984a2ea9SAlexander Motin 
485984a2ea9SAlexander Motin /* 16 */
486984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
487984a2ea9SAlexander Motin 
488984a2ea9SAlexander Motin /* 17 */
489984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
490984a2ea9SAlexander Motin 
491984a2ea9SAlexander Motin /* 18 */
492984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
493984a2ea9SAlexander Motin 
494984a2ea9SAlexander Motin /* 19 */
495984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
496984a2ea9SAlexander Motin 
497984a2ea9SAlexander Motin /* 1A */
498984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
499984a2ea9SAlexander Motin 
500984a2ea9SAlexander Motin /* 1B */
501984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
502984a2ea9SAlexander Motin 
503984a2ea9SAlexander Motin /* 1C COPY OPERATION ABORT */
504984a2ea9SAlexander Motin {ctl_copy_operation_abort, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
505648dfc1aSAlexander Motin 					      CTL_CMD_FLAG_OK_ON_NO_MEDIA |
506984a2ea9SAlexander Motin 					      CTL_FLAG_DATA_NONE,
507984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
508984a2ea9SAlexander Motin  16, { 0x1c, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
509984a2ea9SAlexander Motin };
510984a2ea9SAlexander Motin 
511984a2ea9SAlexander Motin /* 84 RECEIVE COPY STATUS */
512984a2ea9SAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_84[32] =
513984a2ea9SAlexander Motin {
514984a2ea9SAlexander Motin /* 00 RECEIVE COPY STATUS (LID1) */
515984a2ea9SAlexander Motin {ctl_receive_copy_status_lid1, CTL_SERIDX_RD_CAP,
516984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
517648dfc1aSAlexander Motin  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
518fb767c2bSAlexander Motin  CTL_FLAG_DATA_IN |
519fb767c2bSAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
520984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
521984a2ea9SAlexander Motin  16, {0x00, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
522984a2ea9SAlexander Motin 
523984a2ea9SAlexander Motin /* 01 RECEIVE COPY DATA (LID1) */
524984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
525984a2ea9SAlexander Motin 
526984a2ea9SAlexander Motin /* 02 */
527984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
528984a2ea9SAlexander Motin 
529984a2ea9SAlexander Motin /* 03 RECEIVE COPY OPERATING PARAMETERS */
530984a2ea9SAlexander Motin {ctl_receive_copy_operating_parameters, CTL_SERIDX_RD_CAP,
531984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
532648dfc1aSAlexander Motin  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
5337ac58230SAlexander Motin  CTL_CMD_FLAG_OK_ON_STANDBY |
534fb767c2bSAlexander Motin  CTL_FLAG_DATA_IN |
535fb767c2bSAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
536984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
537984a2ea9SAlexander Motin  16, {0x03, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
538984a2ea9SAlexander Motin 
539984a2ea9SAlexander Motin /* 04 RECEIVE COPY FAILURE DETAILS (LID1) */
540984a2ea9SAlexander Motin {ctl_receive_copy_failure_details, CTL_SERIDX_RD_CAP,
541984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
542648dfc1aSAlexander Motin  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
543fb767c2bSAlexander Motin  CTL_FLAG_DATA_IN |
544fb767c2bSAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
545984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
546984a2ea9SAlexander Motin  16, {0x04, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
547984a2ea9SAlexander Motin 
548984a2ea9SAlexander Motin /* 05 RECEIVE COPY STATUS (LID4) */
549984a2ea9SAlexander Motin {ctl_receive_copy_status_lid4, CTL_SERIDX_RD_CAP,
550984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
551648dfc1aSAlexander Motin  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
552115dc0c7SAlexander Motin  CTL_FLAG_DATA_IN |
553115dc0c7SAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
554984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
555984a2ea9SAlexander Motin  16, {0x05, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
556984a2ea9SAlexander Motin 
557984a2ea9SAlexander Motin /* 06 RECEIVE COPY DATA (LID4)*/
558984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
559984a2ea9SAlexander Motin 
560984a2ea9SAlexander Motin /* 07 RECEIVE ROD TOKEN INFORMATION */
56125eee848SAlexander Motin {ctl_receive_rod_token_information, CTL_SERIDX_RD_CAP,
56225eee848SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
563648dfc1aSAlexander Motin  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
564115dc0c7SAlexander Motin  CTL_FLAG_DATA_IN |
565115dc0c7SAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
56625eee848SAlexander Motin  CTL_LUN_PAT_NONE,
56725eee848SAlexander Motin  16, {0x07, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
568984a2ea9SAlexander Motin 
569984a2ea9SAlexander Motin /* 08 REPORT ALL ROD TOKENS */
57025eee848SAlexander Motin {ctl_report_all_rod_tokens, CTL_SERIDX_RD_CAP,
57125eee848SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
572648dfc1aSAlexander Motin  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
573115dc0c7SAlexander Motin  CTL_FLAG_DATA_IN |
574115dc0c7SAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
57525eee848SAlexander Motin  CTL_LUN_PAT_NONE,
57625eee848SAlexander Motin  16, {0x08, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
577984a2ea9SAlexander Motin };
578984a2ea9SAlexander Motin 
579*82029718SAlexander Motin /* 9B READ BUFFER(16) */
580*82029718SAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_9b[32] =
581*82029718SAlexander Motin {
582*82029718SAlexander Motin /* 00 READ BUFFER(16) HDR DATA */
583*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
584*82029718SAlexander Motin 
585*82029718SAlexander Motin /* 01 READ BUFFER(16) VENDOR */
586*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
587*82029718SAlexander Motin 
588*82029718SAlexander Motin /* 02 READ BUFFER(16) DATA */
589*82029718SAlexander Motin {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
590*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
591*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
592*82029718SAlexander Motin 				     CTL_FLAG_DATA_IN,
593*82029718SAlexander Motin  CTL_LUN_PAT_NONE,
594*82029718SAlexander Motin  16, {0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
595*82029718SAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
596*82029718SAlexander Motin 
597*82029718SAlexander Motin /* 03 READ BUFFER(16) DESCR */
598*82029718SAlexander Motin {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
599*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
600*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
601*82029718SAlexander Motin 				     CTL_FLAG_DATA_IN,
602*82029718SAlexander Motin  CTL_LUN_PAT_NONE,
603*82029718SAlexander Motin  16, {0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
604*82029718SAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
605*82029718SAlexander Motin 
606*82029718SAlexander Motin /* 04 READ BUFFER(16) */
607*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
608*82029718SAlexander Motin 
609*82029718SAlexander Motin /* 05 READ BUFFER(16) */
610*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
611*82029718SAlexander Motin 
612*82029718SAlexander Motin /* 06 */
613*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
614*82029718SAlexander Motin 
615*82029718SAlexander Motin /* 07 */
616*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
617*82029718SAlexander Motin 
618*82029718SAlexander Motin /* 08 */
619*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
620*82029718SAlexander Motin 
621*82029718SAlexander Motin /* 09 */
622*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
623*82029718SAlexander Motin 
624*82029718SAlexander Motin /* 0A READ BUFFER(16) ECHO */
625*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
626*82029718SAlexander Motin 
627*82029718SAlexander Motin /* 0B READ BUFFER(16) ECHO DESCRIPTOR */
628*82029718SAlexander Motin {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
629*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
630*82029718SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
631*82029718SAlexander Motin 				     CTL_FLAG_DATA_IN,
632*82029718SAlexander Motin  CTL_LUN_PAT_NONE,
633*82029718SAlexander Motin  16, {0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
634*82029718SAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
635*82029718SAlexander Motin 
636*82029718SAlexander Motin /* 0C */
637*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
638*82029718SAlexander Motin 
639*82029718SAlexander Motin /* 0D */
640*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
641*82029718SAlexander Motin 
642*82029718SAlexander Motin /* 0E */
643*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
644*82029718SAlexander Motin 
645*82029718SAlexander Motin /* 0F */
646*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
647*82029718SAlexander Motin 
648*82029718SAlexander Motin /* 10 */
649*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
650*82029718SAlexander Motin 
651*82029718SAlexander Motin /* 11 */
652*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
653*82029718SAlexander Motin 
654*82029718SAlexander Motin /* 12 */
655*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
656*82029718SAlexander Motin 
657*82029718SAlexander Motin /* 13 */
658*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
659*82029718SAlexander Motin 
660*82029718SAlexander Motin /* 14 */
661*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
662*82029718SAlexander Motin 
663*82029718SAlexander Motin /* 15 */
664*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
665*82029718SAlexander Motin 
666*82029718SAlexander Motin /* 16 */
667*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
668*82029718SAlexander Motin 
669*82029718SAlexander Motin /* 17 */
670*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
671*82029718SAlexander Motin 
672*82029718SAlexander Motin /* 18 */
673*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
674*82029718SAlexander Motin 
675*82029718SAlexander Motin /* 19 */
676*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
677*82029718SAlexander Motin 
678*82029718SAlexander Motin /* 1A */
679*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
680*82029718SAlexander Motin 
681*82029718SAlexander Motin /* 1B */
682*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
683*82029718SAlexander Motin 
684*82029718SAlexander Motin /* 1C READ BUFFER(16) ERROR HISTORY */
685*82029718SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
686*82029718SAlexander Motin 
687*82029718SAlexander Motin /* 1d-1f */
688*82029718SAlexander Motin };
689*82029718SAlexander Motin 
690*82029718SAlexander Motin 
6911b08cb4eSAlexander Motin /* 9E SERVICE ACTION IN(16) */
6921b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_9e[32] =
6931b08cb4eSAlexander Motin {
6941b08cb4eSAlexander Motin /* 00 */
6951b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
6961b08cb4eSAlexander Motin 
6971b08cb4eSAlexander Motin /* 01 */
6981b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
6991b08cb4eSAlexander Motin 
7001b08cb4eSAlexander Motin /* 02 */
7011b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7021b08cb4eSAlexander Motin 
7031b08cb4eSAlexander Motin /* 03 */
7041b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7051b08cb4eSAlexander Motin 
7061b08cb4eSAlexander Motin /* 04 */
7071b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7081b08cb4eSAlexander Motin 
7091b08cb4eSAlexander Motin /* 05 */
7101b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7111b08cb4eSAlexander Motin 
7121b08cb4eSAlexander Motin /* 06 */
7131b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7141b08cb4eSAlexander Motin 
7151b08cb4eSAlexander Motin /* 07 */
7161b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7171b08cb4eSAlexander Motin 
7181b08cb4eSAlexander Motin /* 08 */
7191b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7201b08cb4eSAlexander Motin 
7211b08cb4eSAlexander Motin /* 09 */
7221b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7231b08cb4eSAlexander Motin 
7241b08cb4eSAlexander Motin /* 0A */
7251b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7261b08cb4eSAlexander Motin 
7271b08cb4eSAlexander Motin /* 0B */
7281b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7291b08cb4eSAlexander Motin 
7301b08cb4eSAlexander Motin /* 0C */
7311b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7321b08cb4eSAlexander Motin 
7331b08cb4eSAlexander Motin /* 0D */
7341b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7351b08cb4eSAlexander Motin 
7361b08cb4eSAlexander Motin /* 0E */
7371b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7381b08cb4eSAlexander Motin 
7391b08cb4eSAlexander Motin /* 0F */
7401b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7411b08cb4eSAlexander Motin 
742ef8daf3fSAlexander Motin /* 10 READ CAPACITY(16) */
74391be33dcSAlexander Motin {ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
7441b08cb4eSAlexander Motin 					  CTL_FLAG_DATA_IN |
7451b08cb4eSAlexander Motin 					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
7461b08cb4eSAlexander Motin  CTL_LUN_PAT_READCAP,
7471b08cb4eSAlexander Motin  16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
7481b08cb4eSAlexander Motin 
749ef8daf3fSAlexander Motin /* 11 */
750ef8daf3fSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
751ef8daf3fSAlexander Motin 
752ef8daf3fSAlexander Motin /* 12 GET LBA STATUS */
75391be33dcSAlexander Motin {ctl_get_lba_status, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
754ef8daf3fSAlexander Motin 				      CTL_FLAG_DATA_IN |
755ef8daf3fSAlexander Motin 				      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
756ef8daf3fSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
757ef8daf3fSAlexander Motin  16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
758ef8daf3fSAlexander Motin     0xff, 0xff, 0xff, 0xff, 0, 0x07}},
759ef8daf3fSAlexander Motin 
760ef8daf3fSAlexander Motin /* 13-1f */
7611b08cb4eSAlexander Motin };
7621b08cb4eSAlexander Motin 
7631b08cb4eSAlexander Motin /* A3 MAINTENANCE IN */
7641b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_a3[32] =
7651b08cb4eSAlexander Motin {
7661b08cb4eSAlexander Motin /* 00 */
7671b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7681b08cb4eSAlexander Motin 
7691b08cb4eSAlexander Motin /* 01 */
7701b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7711b08cb4eSAlexander Motin 
7721b08cb4eSAlexander Motin /* 02 */
7731b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7741b08cb4eSAlexander Motin 
7751b08cb4eSAlexander Motin /* 03 */
7761b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7771b08cb4eSAlexander Motin 
7781b08cb4eSAlexander Motin /* 04 */
7791b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7801b08cb4eSAlexander Motin 
7811b08cb4eSAlexander Motin /* 05 */
7821b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7831b08cb4eSAlexander Motin 
7841b08cb4eSAlexander Motin /* 06 */
7851b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7861b08cb4eSAlexander Motin 
7871b08cb4eSAlexander Motin /* 07 */
7881b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7891b08cb4eSAlexander Motin 
7901b08cb4eSAlexander Motin /* 08 */
7911b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7921b08cb4eSAlexander Motin 
7931b08cb4eSAlexander Motin /* 09 */
7941b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
7951b08cb4eSAlexander Motin 
7961b08cb4eSAlexander Motin /* 0A REPORT TARGET PORT GROUPS */
7974d877c41SAlexander Motin {ctl_report_tagret_port_groups, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
798648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
7997ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
8007ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_UNAVAIL |
801115dc0c7SAlexander Motin 						CTL_FLAG_DATA_IN |
802115dc0c7SAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
8031b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
804eed0d596SAlexander Motin  12, {0xea, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
8051b08cb4eSAlexander Motin 
8061b08cb4eSAlexander Motin /* 0B */
8071b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
8081b08cb4eSAlexander Motin 
8091b08cb4eSAlexander Motin /* 0C REPORT SUPPORTED_OPCODES */
8104d877c41SAlexander Motin {ctl_report_supported_opcodes, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
811648dfc1aSAlexander Motin 						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
8127ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
8137ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_UNAVAIL |
814fb767c2bSAlexander Motin 						CTL_FLAG_DATA_IN |
815fb767c2bSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
8161b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
817cb743034SAlexander Motin  12, {0x0c, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
8181b08cb4eSAlexander Motin 
8191b08cb4eSAlexander Motin /* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */
8204d877c41SAlexander Motin {ctl_report_supported_tmf, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
821648dfc1aSAlexander Motin 					   CTL_CMD_FLAG_OK_ON_NO_MEDIA |
8227ac58230SAlexander Motin 					   CTL_CMD_FLAG_OK_ON_STANDBY |
8237ac58230SAlexander Motin 					   CTL_CMD_FLAG_OK_ON_UNAVAIL |
824fb767c2bSAlexander Motin 					   CTL_FLAG_DATA_IN |
825fb767c2bSAlexander Motin 					   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
8261b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
8271b08cb4eSAlexander Motin  12, {0x0d, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
8281b08cb4eSAlexander Motin 
82925c9d5e5SAlexander Motin /* 0E */
83025c9d5e5SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
83125c9d5e5SAlexander Motin 
83225c9d5e5SAlexander Motin /* 0F REPORT TIMESTAMP */
8334d877c41SAlexander Motin {ctl_report_timestamp, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
834648dfc1aSAlexander Motin 					CTL_CMD_FLAG_OK_ON_NO_MEDIA |
8357ac58230SAlexander Motin 					CTL_CMD_FLAG_OK_ON_STANDBY |
8367ac58230SAlexander Motin 					CTL_CMD_FLAG_OK_ON_UNAVAIL |
837115dc0c7SAlexander Motin 					CTL_FLAG_DATA_IN |
838115dc0c7SAlexander Motin 					CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
83925c9d5e5SAlexander Motin  CTL_LUN_PAT_NONE,
84025c9d5e5SAlexander Motin  12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
84125c9d5e5SAlexander Motin 
84225c9d5e5SAlexander Motin /* 10-1f */
8431b08cb4eSAlexander Motin };
8441b08cb4eSAlexander Motin 
8451b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table[256] =
846130f4520SKenneth D. Merry {
847130f4520SKenneth D. Merry /* 00 TEST UNIT READY */
848130f4520SKenneth D. Merry {ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
849130f4520SKenneth D. Merry 			  CTL_FLAG_DATA_NONE |
850130f4520SKenneth D. Merry 			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
8511b08cb4eSAlexander Motin  CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}},
852130f4520SKenneth D. Merry 
853130f4520SKenneth D. Merry /* 01 REWIND */
854130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
855130f4520SKenneth D. Merry 
856130f4520SKenneth D. Merry /* 02 */
857130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
858130f4520SKenneth D. Merry 
859130f4520SKenneth D. Merry /* 03 REQUEST SENSE */
860130f4520SKenneth D. Merry {ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
861efbf6139SAlexander Motin 				       CTL_CMD_FLAG_OK_ON_NO_LUN |
862efbf6139SAlexander Motin 				       CTL_CMD_FLAG_OK_ON_BOTH |
863130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_ALLOW_ON_RESV |
864130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_NO_SENSE |
865648dfc1aSAlexander Motin 				       CTL_CMD_FLAG_OK_ON_NO_MEDIA |
8667ac58230SAlexander Motin 				       CTL_CMD_FLAG_OK_ON_STANDBY |
8677ac58230SAlexander Motin 				       CTL_CMD_FLAG_OK_ON_UNAVAIL |
868921af507SAlexander Motin 				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
869921af507SAlexander Motin 				       CTL_CMD_FLAG_RUN_HERE,
8701b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}},
871130f4520SKenneth D. Merry 
872130f4520SKenneth D. Merry /* 04 FORMAT UNIT */
87391be33dcSAlexander Motin {ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_DIRECT |
874130f4520SKenneth D. Merry 				CTL_FLAG_DATA_OUT,
8751b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}},
876130f4520SKenneth D. Merry 
877130f4520SKenneth D. Merry /* 05 READ BLOCK LIMITS */
878130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
879130f4520SKenneth D. Merry 
880130f4520SKenneth D. Merry /* 06 */
881130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
882130f4520SKenneth D. Merry 
883130f4520SKenneth D. Merry /* 07 REASSIGN BLOCKS */
884130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
885130f4520SKenneth D. Merry 
886130f4520SKenneth D. Merry /* 08 READ(6) */
88791be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
888130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_IN |
889115dc0c7SAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
8901b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
891130f4520SKenneth D. Merry 
892130f4520SKenneth D. Merry /* 09 */
893130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
894130f4520SKenneth D. Merry 
895130f4520SKenneth D. Merry /* 0A WRITE(6) */
89691be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT |
897130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_OUT,
8981b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
899130f4520SKenneth D. Merry 
900130f4520SKenneth D. Merry /* 0B SEEK(6) */
901130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
902130f4520SKenneth D. Merry 
903130f4520SKenneth D. Merry /* 0C */
904130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
905130f4520SKenneth D. Merry 
906130f4520SKenneth D. Merry /* 0D */
907130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
908130f4520SKenneth D. Merry 
909130f4520SKenneth D. Merry /* 0E */
910130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
911130f4520SKenneth D. Merry 
912130f4520SKenneth D. Merry /* 0F READ REVERSE(6) */
913130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
914130f4520SKenneth D. Merry 
915130f4520SKenneth D. Merry /* 10 WRITE FILEMARKS(6) */
916130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
917130f4520SKenneth D. Merry 
918130f4520SKenneth D. Merry /* 11 SPACE(6) */
919130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
920130f4520SKenneth D. Merry 
921130f4520SKenneth D. Merry /* 12 INQUIRY */
922efbf6139SAlexander Motin {ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_NO_LUN |
923efbf6139SAlexander Motin 			      CTL_CMD_FLAG_OK_ON_BOTH |
924130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_ALLOW_ON_RESV |
925130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_NO_SENSE |
926648dfc1aSAlexander Motin 			      CTL_CMD_FLAG_OK_ON_NO_MEDIA |
9277ac58230SAlexander Motin 			      CTL_CMD_FLAG_OK_ON_STANDBY |
9287ac58230SAlexander Motin 			      CTL_CMD_FLAG_OK_ON_UNAVAIL |
929130f4520SKenneth D. Merry 			      CTL_FLAG_DATA_IN |
930130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
931561764b1SAlexander Motin  CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}},
932130f4520SKenneth D. Merry 
933130f4520SKenneth D. Merry /* 13 */
934130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
935130f4520SKenneth D. Merry 
936130f4520SKenneth D. Merry /* 14 RECOVER BUFFERED DATA */
937130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
938130f4520SKenneth D. Merry 
939130f4520SKenneth D. Merry /* 15 MODE SELECT(6) */
940130f4520SKenneth D. Merry {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
941648dfc1aSAlexander Motin 				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
9427ac58230SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
943130f4520SKenneth D. Merry 				     CTL_FLAG_DATA_OUT,
9441b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}},
945130f4520SKenneth D. Merry 
946130f4520SKenneth D. Merry /* 16 RESERVE(6) */
9474d877c41SAlexander Motin {ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
948130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_BOTH |
949648dfc1aSAlexander Motin 				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
9507ac58230SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
951130f4520SKenneth D. Merry 				    CTL_FLAG_DATA_OUT,
9521b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
953130f4520SKenneth D. Merry 
954130f4520SKenneth D. Merry /* 17 RELEASE(6) */
9554d877c41SAlexander Motin {ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
956130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_BOTH |
957648dfc1aSAlexander Motin 				   CTL_CMD_FLAG_OK_ON_NO_MEDIA |
9587ac58230SAlexander Motin 				   CTL_CMD_FLAG_OK_ON_STANDBY |
959130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_NONE,
9601b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
961130f4520SKenneth D. Merry 
962130f4520SKenneth D. Merry /* 18 COPY */
963130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
964130f4520SKenneth D. Merry 
965130f4520SKenneth D. Merry /* 19 ERASE(6) */
966130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
967130f4520SKenneth D. Merry 
968130f4520SKenneth D. Merry /* 1A MODE SENSE(6) */
969130f4520SKenneth D. Merry {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
970648dfc1aSAlexander Motin 				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
9717ac58230SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
972f82388fdSAlexander Motin 				    CTL_FLAG_DATA_IN |
973115dc0c7SAlexander Motin 				    CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
974c7a7dbbcSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0xff, 0xff, 0x07}},
975130f4520SKenneth D. Merry 
976130f4520SKenneth D. Merry /* 1B START STOP UNIT */
97791be33dcSAlexander Motin {ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_DIRECT |
97891be33dcSAlexander Motin 				   CTL_CMD_FLAG_OK_ON_CDROM |
979648dfc1aSAlexander Motin 				   CTL_CMD_FLAG_OK_ON_NO_MEDIA |
980130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_NONE |
981130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
98266b69676SAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x01, 0, 0x0f, 0xf7, 0x07}},
983130f4520SKenneth D. Merry 
984130f4520SKenneth D. Merry /* 1C RECEIVE DIAGNOSTIC RESULTS */
985130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
986130f4520SKenneth D. Merry 
987130f4520SKenneth D. Merry /* 1D SEND DIAGNOSTIC */
988130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
989130f4520SKenneth D. Merry 
990130f4520SKenneth D. Merry /* 1E PREVENT ALLOW MEDIUM REMOVAL */
99191be33dcSAlexander Motin {ctl_prevent_allow, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_DIRECT |
99291be33dcSAlexander Motin 				      CTL_CMD_FLAG_OK_ON_CDROM |
993648dfc1aSAlexander Motin 				      CTL_CMD_FLAG_OK_ON_NO_MEDIA |
99491be33dcSAlexander Motin 				      CTL_FLAG_DATA_NONE,
99591be33dcSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
996130f4520SKenneth D. Merry 
997130f4520SKenneth D. Merry /* 1F */
998130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
999130f4520SKenneth D. Merry 
1000130f4520SKenneth D. Merry /* 20 */
1001130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1002130f4520SKenneth D. Merry 
1003130f4520SKenneth D. Merry /* 21 */
1004130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1005130f4520SKenneth D. Merry 
1006130f4520SKenneth D. Merry /* 22 */
1007130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1008130f4520SKenneth D. Merry 
1009130f4520SKenneth D. Merry /* 23 */
1010130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1011130f4520SKenneth D. Merry 
1012130f4520SKenneth D. Merry /* 24 SET WINDOW */
1013130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1014130f4520SKenneth D. Merry 
1015130f4520SKenneth D. Merry /* 25 READ CAPACITY(10) */
101691be33dcSAlexander Motin {ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
101791be33dcSAlexander Motin 				       CTL_CMD_FLAG_OK_ON_CDROM |
1018130f4520SKenneth D. Merry 				       CTL_FLAG_DATA_IN |
1019130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
10201b08cb4eSAlexander Motin  CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
1021130f4520SKenneth D. Merry 
1022130f4520SKenneth D. Merry /* 26 */
1023130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1024130f4520SKenneth D. Merry 
1025130f4520SKenneth D. Merry /* 27 */
1026130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1027130f4520SKenneth D. Merry 
1028130f4520SKenneth D. Merry /* 28 READ(10) */
102991be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
103091be33dcSAlexander Motin 				  CTL_CMD_FLAG_OK_ON_CDROM |
1031130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_IN |
1032115dc0c7SAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
10331b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1034b0737f1aSAlexander Motin  10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1035130f4520SKenneth D. Merry 
1036130f4520SKenneth D. Merry /* 29 READ GENERATION */
1037130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1038130f4520SKenneth D. Merry 
1039130f4520SKenneth D. Merry /* 2A WRITE(10) */
104091be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
10411b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1042b0737f1aSAlexander Motin  10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1043130f4520SKenneth D. Merry 
1044130f4520SKenneth D. Merry /* 2B SEEK(10) */
1045130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1046130f4520SKenneth D. Merry 
1047130f4520SKenneth D. Merry /* 2C ERASE(10) */
1048130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1049130f4520SKenneth D. Merry 
1050130f4520SKenneth D. Merry /* 2D READ UPDATED BLOCK */
1051130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1052130f4520SKenneth D. Merry 
1053130f4520SKenneth D. Merry /* 2E WRITE AND VERIFY(10) */
105491be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
10551b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
10565b5ad150SAlexander Motin  10, {0x12, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1057130f4520SKenneth D. Merry 
1058130f4520SKenneth D. Merry /* 2F VERIFY(10) */
105991be33dcSAlexander Motin {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
106011b569f7SAlexander Motin 			      CTL_FLAG_DATA_OUT |
1061115dc0c7SAlexander Motin 			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
10621b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
10631b08cb4eSAlexander Motin  10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1064130f4520SKenneth D. Merry 
1065130f4520SKenneth D. Merry /* 30 SEARCH DATA HIGH(10) */
1066130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1067130f4520SKenneth D. Merry 
1068130f4520SKenneth D. Merry /* 31 SEARCH DATA EQUAL(10) */
1069130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1070130f4520SKenneth D. Merry 
1071130f4520SKenneth D. Merry /* 32 SEARCH DATA LOW(10) */
1072130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1073130f4520SKenneth D. Merry 
1074130f4520SKenneth D. Merry /* 33 SET LIMITS(10) */
1075130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1076130f4520SKenneth D. Merry 
1077130f4520SKenneth D. Merry /* 34 PRE-FETCH(10) */
1078130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1079130f4520SKenneth D. Merry 
1080130f4520SKenneth D. Merry /* 35 SYNCHRONIZE CACHE(10) */
108191be33dcSAlexander Motin {ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_DIRECT |
1082130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_NONE,
10836187d472SAlexander Motin  CTL_LUN_PAT_WRITE,
10847f3d6f1fSAlexander Motin  10, {0x06, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1085130f4520SKenneth D. Merry 
1086130f4520SKenneth D. Merry /* 36 LOCK UNLOCK CACHE(10) */
1087130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1088130f4520SKenneth D. Merry 
1089130f4520SKenneth D. Merry /* 37 READ DEFECT DATA(10) */
109091be33dcSAlexander Motin {ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_DIRECT |
1091d70698b3SAlexander Motin 				     CTL_FLAG_DATA_IN |
1092115dc0c7SAlexander Motin 				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1093d70698b3SAlexander Motin  CTL_LUN_PAT_NONE,
1094d70698b3SAlexander Motin  10, {0, 0x1f, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
1095130f4520SKenneth D. Merry 
1096130f4520SKenneth D. Merry /* 38 MEDIUM SCAN */
1097130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1098130f4520SKenneth D. Merry 
1099130f4520SKenneth D. Merry /* 39 COMPARE */
1100130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1101130f4520SKenneth D. Merry 
1102130f4520SKenneth D. Merry /* 3A COPY AND VERIFY */
1103130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1104130f4520SKenneth D. Merry 
1105130f4520SKenneth D. Merry /* 3B WRITE BUFFER */
1106*82029718SAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_3b), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1107*82029718SAlexander Motin  CTL_LUN_PAT_NONE},
1108130f4520SKenneth D. Merry 
1109130f4520SKenneth D. Merry /* 3C READ BUFFER */
1110*82029718SAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_3c), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1111*82029718SAlexander Motin  CTL_LUN_PAT_NONE},
1112130f4520SKenneth D. Merry 
1113130f4520SKenneth D. Merry /* 3D UPDATE BLOCK */
1114130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1115130f4520SKenneth D. Merry 
1116130f4520SKenneth D. Merry /* 3E READ LONG */
1117130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1118130f4520SKenneth D. Merry 
1119130f4520SKenneth D. Merry /* 3F WRITE LONG */
1120130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1121130f4520SKenneth D. Merry 
1122130f4520SKenneth D. Merry /* 40 CHANGE DEFINITION */
1123130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1124130f4520SKenneth D. Merry 
1125130f4520SKenneth D. Merry /* 41 WRITE SAME(10) */
112691be33dcSAlexander Motin {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT |
1127ee7f31c0SAlexander Motin 				   CTL_FLAG_DATA_OUT,
11281b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
11293406a2a0SAlexander Motin  10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1130130f4520SKenneth D. Merry 
1131ee7f31c0SAlexander Motin /* 42 READ SUB-CHANNEL / UNMAP */
113291be33dcSAlexander Motin {ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_DIRECT | CTL_FLAG_DATA_OUT,
11331b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE,
11343406a2a0SAlexander Motin  10, {1, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
1135130f4520SKenneth D. Merry 
1136130f4520SKenneth D. Merry /* 43 READ TOC/PMA/ATIP */
113791be33dcSAlexander Motin {ctl_read_toc, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM |
113891be33dcSAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV |
113991be33dcSAlexander Motin 				  CTL_FLAG_DATA_IN,
114091be33dcSAlexander Motin  CTL_LUN_PAT_NONE,
114191be33dcSAlexander Motin  10, {0x02, 0x01, 0, 0, 0, 0xff, 0xff, 0xff, 0x07}},
1142130f4520SKenneth D. Merry 
1143130f4520SKenneth D. Merry /* 44 REPORT DENSITY SUPPORT */
1144130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1145130f4520SKenneth D. Merry 
1146130f4520SKenneth D. Merry /* 45 PLAY AUDIO(10) */
1147130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1148130f4520SKenneth D. Merry 
1149130f4520SKenneth D. Merry /* 46 GET CONFIGURATION */
115091be33dcSAlexander Motin {ctl_get_config, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_CDROM |
1151648dfc1aSAlexander Motin 				 CTL_CMD_FLAG_OK_ON_NO_MEDIA |
115291be33dcSAlexander Motin 				 CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
115391be33dcSAlexander Motin 				 CTL_FLAG_DATA_IN,
115491be33dcSAlexander Motin  CTL_LUN_PAT_NONE,
115591be33dcSAlexander Motin  10, {0x03, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07}},
1156130f4520SKenneth D. Merry 
1157130f4520SKenneth D. Merry /* 47 PLAY AUDIO MSF */
1158130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1159130f4520SKenneth D. Merry 
1160130f4520SKenneth D. Merry /* 48 PLAY AUDIO TRACK INDEX */
1161130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1162130f4520SKenneth D. Merry 
1163130f4520SKenneth D. Merry /* 49 PLAY TRACK RELATIVE(10) */
1164130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1165130f4520SKenneth D. Merry 
1166130f4520SKenneth D. Merry /* 4A GET EVENT STATUS NOTIFICATION */
116791be33dcSAlexander Motin {ctl_get_event_status, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM |
1168648dfc1aSAlexander Motin 					  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
116991be33dcSAlexander Motin 					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
117091be33dcSAlexander Motin 					  CTL_FLAG_DATA_IN,
117191be33dcSAlexander Motin  CTL_LUN_PAT_NONE,
117291be33dcSAlexander Motin  10, {0x02, 0x01, 0, 0, 0, 0xff, 0xff, 0xff, 0x07}},
1173130f4520SKenneth D. Merry 
1174130f4520SKenneth D. Merry /* 4B PAUSE/RESUME */
1175130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1176130f4520SKenneth D. Merry 
1177130f4520SKenneth D. Merry /* 4C LOG SELECT */
1178130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1179130f4520SKenneth D. Merry 
1180130f4520SKenneth D. Merry /* 4D LOG SENSE */
11812e33ae99SAlexander Motin {ctl_log_sense, CTL_SERIDX_LOG_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
1182648dfc1aSAlexander Motin 				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
11832e33ae99SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
1184523f047eSAlexander Motin 				    CTL_FLAG_DATA_IN |
1185523f047eSAlexander Motin 				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1186523f047eSAlexander Motin  CTL_LUN_PAT_NONE, 10, {0, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0x07} },
1187130f4520SKenneth D. Merry 
1188130f4520SKenneth D. Merry /* 4E STOP PLAY/SCAN */
1189130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1190130f4520SKenneth D. Merry 
1191130f4520SKenneth D. Merry /* 4F */
1192130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1193130f4520SKenneth D. Merry 
1194130f4520SKenneth D. Merry /* 50 XDWRITE(10) */
1195130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1196130f4520SKenneth D. Merry 
1197130f4520SKenneth D. Merry /* 51 XPWRITE(10) */
1198130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1199130f4520SKenneth D. Merry 
1200130f4520SKenneth D. Merry /* 52 XDREAD(10) */
1201130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1202130f4520SKenneth D. Merry 
1203130f4520SKenneth D. Merry /* 53 RESERVE TRACK */
1204130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1205130f4520SKenneth D. Merry 
1206130f4520SKenneth D. Merry /* 54 SEND OPC INFORMATION */
1207130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1208130f4520SKenneth D. Merry 
1209130f4520SKenneth D. Merry /* 55 MODE SELECT(10) */
1210130f4520SKenneth D. Merry {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
1211648dfc1aSAlexander Motin 				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
12127ac58230SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
1213130f4520SKenneth D. Merry 				     CTL_FLAG_DATA_OUT,
12141b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
1215130f4520SKenneth D. Merry 
1216130f4520SKenneth D. Merry /* 56 RESERVE(10) */
12174d877c41SAlexander Motin {ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1218130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_BOTH |
1219648dfc1aSAlexander Motin 				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
12207ac58230SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
1221130f4520SKenneth D. Merry 				    CTL_FLAG_DATA_OUT,
1222f44570f6SAlexander Motin  CTL_LUN_PAT_NONE, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07} },
1223130f4520SKenneth D. Merry 
1224130f4520SKenneth D. Merry /* 57 RELEASE(10) */
12254d877c41SAlexander Motin {ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1226130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_BOTH |
1227648dfc1aSAlexander Motin 				   CTL_CMD_FLAG_OK_ON_NO_MEDIA |
12287ac58230SAlexander Motin 				   CTL_CMD_FLAG_OK_ON_STANDBY |
1229130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_OUT,
1230f44570f6SAlexander Motin  CTL_LUN_PAT_NONE, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
1231130f4520SKenneth D. Merry 
1232130f4520SKenneth D. Merry /* 58 REPAIR TRACK */
1233130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1234130f4520SKenneth D. Merry 
1235130f4520SKenneth D. Merry /* 59 READ MASTER CUE */
1236130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1237130f4520SKenneth D. Merry 
1238130f4520SKenneth D. Merry /* 5A MODE SENSE(10) */
1239130f4520SKenneth D. Merry {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
1240648dfc1aSAlexander Motin 				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
12417ac58230SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
1242f82388fdSAlexander Motin 				    CTL_FLAG_DATA_IN |
1243115dc0c7SAlexander Motin 				    CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1244c7a7dbbcSAlexander Motin  CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
1245130f4520SKenneth D. Merry 
1246130f4520SKenneth D. Merry /* 5B CLOSE TRACK/SESSION */
1247130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1248130f4520SKenneth D. Merry 
1249130f4520SKenneth D. Merry /* 5C READ BUFFER CAPACITY */
1250130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1251130f4520SKenneth D. Merry 
1252130f4520SKenneth D. Merry /* 5D SEND CUE SHEET */
1253130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1254130f4520SKenneth D. Merry 
1255130f4520SKenneth D. Merry /* 5E PERSISTENT RESERVE IN */
12561b08cb4eSAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1257130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
1258130f4520SKenneth D. Merry 
1259130f4520SKenneth D. Merry /* 5F PERSISTENT RESERVE OUT */
12601b08cb4eSAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1261130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
1262130f4520SKenneth D. Merry 
1263130f4520SKenneth D. Merry /* 60 */
1264130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1265130f4520SKenneth D. Merry 
1266130f4520SKenneth D. Merry /* 61 */
1267130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1268130f4520SKenneth D. Merry 
1269130f4520SKenneth D. Merry /* 62 */
1270130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1271130f4520SKenneth D. Merry 
1272130f4520SKenneth D. Merry /* 63 */
1273130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1274130f4520SKenneth D. Merry 
1275130f4520SKenneth D. Merry /* 64 */
1276130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1277130f4520SKenneth D. Merry 
1278130f4520SKenneth D. Merry /* 65 */
1279130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1280130f4520SKenneth D. Merry 
1281130f4520SKenneth D. Merry /* 66 */
1282130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1283130f4520SKenneth D. Merry 
1284130f4520SKenneth D. Merry /* 67 */
1285130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1286130f4520SKenneth D. Merry 
1287130f4520SKenneth D. Merry /* 68 */
1288130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1289130f4520SKenneth D. Merry 
1290130f4520SKenneth D. Merry /* 69 */
1291130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1292130f4520SKenneth D. Merry 
1293130f4520SKenneth D. Merry /* 6A */
1294130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1295130f4520SKenneth D. Merry 
1296130f4520SKenneth D. Merry /* 6B */
1297130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1298130f4520SKenneth D. Merry 
1299130f4520SKenneth D. Merry /* 6C */
1300130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1301130f4520SKenneth D. Merry 
1302130f4520SKenneth D. Merry /* 6D */
1303130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1304130f4520SKenneth D. Merry 
1305130f4520SKenneth D. Merry /* 6E */
1306130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1307130f4520SKenneth D. Merry 
1308130f4520SKenneth D. Merry /* 6F */
1309130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1310130f4520SKenneth D. Merry 
1311130f4520SKenneth D. Merry /* 70 */
1312130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1313130f4520SKenneth D. Merry 
1314130f4520SKenneth D. Merry /* 71 */
1315130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1316130f4520SKenneth D. Merry 
1317130f4520SKenneth D. Merry /* 72 */
1318130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1319130f4520SKenneth D. Merry 
1320130f4520SKenneth D. Merry /* 73 */
1321130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1322130f4520SKenneth D. Merry 
1323130f4520SKenneth D. Merry /* 74 */
1324130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1325130f4520SKenneth D. Merry 
1326130f4520SKenneth D. Merry /* 75 */
1327130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1328130f4520SKenneth D. Merry 
1329130f4520SKenneth D. Merry /* 76 */
1330130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1331130f4520SKenneth D. Merry 
1332130f4520SKenneth D. Merry /* 77 */
1333130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1334130f4520SKenneth D. Merry 
1335130f4520SKenneth D. Merry /* 78 */
1336130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1337130f4520SKenneth D. Merry 
1338130f4520SKenneth D. Merry /* 79 */
1339130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1340130f4520SKenneth D. Merry 
1341130f4520SKenneth D. Merry /* 7A */
1342130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1343130f4520SKenneth D. Merry 
1344130f4520SKenneth D. Merry /* 7B */
1345130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1346130f4520SKenneth D. Merry 
1347130f4520SKenneth D. Merry /* 7C */
1348130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1349130f4520SKenneth D. Merry 
1350130f4520SKenneth D. Merry /* 7D */
1351130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1352130f4520SKenneth D. Merry 
1353130f4520SKenneth D. Merry /* 7E */
1354130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1355130f4520SKenneth D. Merry 
1356130f4520SKenneth D. Merry /* 7F */
1357130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1358130f4520SKenneth D. Merry 
1359130f4520SKenneth D. Merry /* 80 XDWRITE EXTENDED(16) */
1360130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1361130f4520SKenneth D. Merry 
1362130f4520SKenneth D. Merry /* 81 REBUILD(16) */
1363130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1364130f4520SKenneth D. Merry 
1365130f4520SKenneth D. Merry /* 82 REGENERATE(16) */
1366130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1367130f4520SKenneth D. Merry 
1368130f4520SKenneth D. Merry /* 83 EXTENDED COPY */
1369984a2ea9SAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_83), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1370984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE},
1371130f4520SKenneth D. Merry 
1372130f4520SKenneth D. Merry /* 84 RECEIVE COPY RESULTS */
1373984a2ea9SAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_84), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1374984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE},
1375130f4520SKenneth D. Merry 
1376130f4520SKenneth D. Merry /* 85 */
1377130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1378130f4520SKenneth D. Merry 
1379130f4520SKenneth D. Merry /* 86 ACCESS CONTROL IN */
1380130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1381130f4520SKenneth D. Merry 
1382130f4520SKenneth D. Merry /* 87 ACCESS CONTROL OUT */
1383130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1384130f4520SKenneth D. Merry 
1385130f4520SKenneth D. Merry /* 88 READ(16) */
138691be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | CTL_FLAG_DATA_IN |
1387115dc0c7SAlexander Motin                                   CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
13881b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1389b0737f1aSAlexander Motin  16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13901b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1391130f4520SKenneth D. Merry 
139211b569f7SAlexander Motin /* 89 COMPARE AND WRITE */
139391be33dcSAlexander Motin {ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
13941b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
13951b08cb4eSAlexander Motin  16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
13961b08cb4eSAlexander Motin       0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}},
1397130f4520SKenneth D. Merry 
1398130f4520SKenneth D. Merry /* 8A WRITE(16) */
139991be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
14001b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1401b0737f1aSAlexander Motin  16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14021b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1403130f4520SKenneth D. Merry 
1404130f4520SKenneth D. Merry /* 8B */
1405130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1406130f4520SKenneth D. Merry 
1407130f4520SKenneth D. Merry /* 8C READ ATTRIBUTE */
1408130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1409130f4520SKenneth D. Merry 
1410130f4520SKenneth D. Merry /* 8D WRITE ATTRIBUTE */
1411130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1412130f4520SKenneth D. Merry 
1413130f4520SKenneth D. Merry /* 8E WRITE AND VERIFY(16) */
141491be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
14151b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
14165b5ad150SAlexander Motin  16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14171b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1418130f4520SKenneth D. Merry 
1419130f4520SKenneth D. Merry /* 8F VERIFY(16) */
142091be33dcSAlexander Motin {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
142111b569f7SAlexander Motin 			      CTL_FLAG_DATA_OUT |
1422115dc0c7SAlexander Motin 			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
14231b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
14241b08cb4eSAlexander Motin  16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14251b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1426130f4520SKenneth D. Merry 
1427130f4520SKenneth D. Merry /* 90 PRE-FETCH(16) */
1428130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1429130f4520SKenneth D. Merry 
1430130f4520SKenneth D. Merry /* 91 SYNCHRONIZE CACHE(16) */
143191be33dcSAlexander Motin {ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_DIRECT |
1432130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_NONE,
14336187d472SAlexander Motin  CTL_LUN_PAT_WRITE,
14347f3d6f1fSAlexander Motin  16, {0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14351b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1436130f4520SKenneth D. Merry 
1437130f4520SKenneth D. Merry /* 92 LOCK UNLOCK CACHE(16) */
1438130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1439130f4520SKenneth D. Merry 
1440130f4520SKenneth D. Merry /* 93 WRITE SAME(16) */
144191be33dcSAlexander Motin {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT |
1442ee7f31c0SAlexander Motin 				   CTL_FLAG_DATA_OUT,
14431b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
144464c5167cSAlexander Motin  16, {0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14451b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1446130f4520SKenneth D. Merry 
1447130f4520SKenneth D. Merry /* 94 */
1448130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1449130f4520SKenneth D. Merry 
1450130f4520SKenneth D. Merry /* 95 */
1451130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1452130f4520SKenneth D. Merry 
1453130f4520SKenneth D. Merry /* 96 */
1454130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1455130f4520SKenneth D. Merry 
1456130f4520SKenneth D. Merry /* 97 */
1457130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1458130f4520SKenneth D. Merry 
1459130f4520SKenneth D. Merry /* 98 */
1460130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1461130f4520SKenneth D. Merry 
1462130f4520SKenneth D. Merry /* 99 */
1463130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1464130f4520SKenneth D. Merry 
1465130f4520SKenneth D. Merry /* 9A */
1466130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1467130f4520SKenneth D. Merry 
1468de988746SAlexander Motin /* 9B READ BUFFER(16) */
1469*82029718SAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_9b), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1470*82029718SAlexander Motin  CTL_LUN_PAT_NONE},
1471130f4520SKenneth D. Merry 
14728a416753SAlexander Motin /* 9C WRITE ATOMIC (16) */
147391be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
14748a416753SAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
14758a416753SAlexander Motin  16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
14768a416753SAlexander Motin       0xff, 0xff, 0, 0, 0xff, 0xff, 0, 0x07}},
1477130f4520SKenneth D. Merry 
1478130f4520SKenneth D. Merry /* 9D */
1479130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1480130f4520SKenneth D. Merry 
1481130f4520SKenneth D. Merry /* 9E SERVICE ACTION IN(16) */
14821b08cb4eSAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
14831b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE},
1484130f4520SKenneth D. Merry 
1485130f4520SKenneth D. Merry /* 9F SERVICE ACTION OUT(16) */
1486130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1487130f4520SKenneth D. Merry 
1488130f4520SKenneth D. Merry /* A0 REPORT LUNS */
1489921af507SAlexander Motin {ctl_report_luns, CTL_SERIDX_INQ, CTL_FLAG_DATA_IN |
1490921af507SAlexander Motin 				  CTL_CMD_FLAG_OK_ON_NO_LUN |
1491efbf6139SAlexander Motin 				  CTL_CMD_FLAG_OK_ON_BOTH |
1492130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_ALLOW_ON_RESV |
1493130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_NO_SENSE |
1494648dfc1aSAlexander Motin 				  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
14957ac58230SAlexander Motin 				  CTL_CMD_FLAG_OK_ON_STANDBY |
14967ac58230SAlexander Motin 				  CTL_CMD_FLAG_OK_ON_UNAVAIL |
1497921af507SAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
1498921af507SAlexander Motin 				  CTL_CMD_FLAG_RUN_HERE,
14991b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
15001b08cb4eSAlexander Motin  12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1501130f4520SKenneth D. Merry 
1502130f4520SKenneth D. Merry /* A1 BLANK */
1503130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1504130f4520SKenneth D. Merry 
1505130f4520SKenneth D. Merry /* A2 SEND EVENT */
1506130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1507130f4520SKenneth D. Merry 
15081b08cb4eSAlexander Motin /* A3 MAINTENANCE IN */
15091b08cb4eSAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1510130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
1511130f4520SKenneth D. Merry 
15121b08cb4eSAlexander Motin /* A4 MAINTENANCE OUT */
1513130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1514130f4520SKenneth D. Merry 
1515130f4520SKenneth D. Merry /* A5 MOVE MEDIUM */
1516130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1517130f4520SKenneth D. Merry 
1518130f4520SKenneth D. Merry /* A6 EXCHANGE MEDIUM */
1519130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1520130f4520SKenneth D. Merry 
1521130f4520SKenneth D. Merry /* A7 MOVE MEDIUM ATTACHED */
1522130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1523130f4520SKenneth D. Merry 
1524130f4520SKenneth D. Merry /* A8 READ(12) */
152591be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
152691be33dcSAlexander Motin 				  CTL_CMD_FLAG_OK_ON_CDROM |
152791be33dcSAlexander Motin 				  CTL_FLAG_DATA_IN |
1528115dc0c7SAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
15291b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1530b0737f1aSAlexander Motin  12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1531130f4520SKenneth D. Merry 
1532130f4520SKenneth D. Merry /* A9 PLAY TRACK RELATIVE(12) */
1533130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1534130f4520SKenneth D. Merry 
1535130f4520SKenneth D. Merry /* AA WRITE(12) */
153691be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
15371b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1538b0737f1aSAlexander Motin  12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1539130f4520SKenneth D. Merry 
1540130f4520SKenneth D. Merry /* AB SERVICE ACTION IN(12) */
1541130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1542130f4520SKenneth D. Merry 
1543130f4520SKenneth D. Merry /* AC ERASE(12) */
1544130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1545130f4520SKenneth D. Merry 
1546130f4520SKenneth D. Merry /* AD READ DVD STRUCTURE */
1547130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1548130f4520SKenneth D. Merry 
1549130f4520SKenneth D. Merry /* AE WRITE AND VERIFY(12) */
155091be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
15511b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
15525b5ad150SAlexander Motin  12, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1553130f4520SKenneth D. Merry 
1554130f4520SKenneth D. Merry /* AF VERIFY(12) */
155591be33dcSAlexander Motin {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
155611b569f7SAlexander Motin 			      CTL_FLAG_DATA_OUT |
1557115dc0c7SAlexander Motin 			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
15581b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
15591b08cb4eSAlexander Motin  12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1560130f4520SKenneth D. Merry 
1561130f4520SKenneth D. Merry /* B0 SEARCH DATA HIGH(12) */
1562130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1563130f4520SKenneth D. Merry 
1564130f4520SKenneth D. Merry /* B1 SEARCH DATA EQUAL(12) */
1565130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1566130f4520SKenneth D. Merry 
1567130f4520SKenneth D. Merry /* B2 SEARCH DATA LOW(12) */
1568130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1569130f4520SKenneth D. Merry 
1570130f4520SKenneth D. Merry /* B3 SET LIMITS(12) */
1571130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1572130f4520SKenneth D. Merry 
1573130f4520SKenneth D. Merry /* B4 READ ELEMENT STATUS ATTACHED */
1574130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1575130f4520SKenneth D. Merry 
1576130f4520SKenneth D. Merry /* B5 REQUEST VOLUME ELEMENT ADDRESS */
1577130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1578130f4520SKenneth D. Merry 
1579130f4520SKenneth D. Merry /* B6 SEND VOLUME TAG */
1580130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1581130f4520SKenneth D. Merry 
1582130f4520SKenneth D. Merry /* B7 READ DEFECT DATA(12) */
158391be33dcSAlexander Motin {ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_DIRECT |
1584d70698b3SAlexander Motin 				     CTL_FLAG_DATA_IN |
1585115dc0c7SAlexander Motin 				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1586d70698b3SAlexander Motin  CTL_LUN_PAT_NONE,
1587d70698b3SAlexander Motin  12, {0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1588130f4520SKenneth D. Merry 
1589130f4520SKenneth D. Merry /* B8 READ ELEMENT STATUS */
1590130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1591130f4520SKenneth D. Merry 
1592130f4520SKenneth D. Merry /* B9 READ CD MSF */
1593130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1594130f4520SKenneth D. Merry 
15951b08cb4eSAlexander Motin /* BA REDUNDANCY GROUP IN */
1596130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1597130f4520SKenneth D. Merry 
15981b08cb4eSAlexander Motin /* BB REDUNDANCY GROUP OUT */
1599130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1600130f4520SKenneth D. Merry 
16011b08cb4eSAlexander Motin /* BC SPARE IN */
1602130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1603130f4520SKenneth D. Merry 
160491be33dcSAlexander Motin /* BD SPARE OUT / MECHANISM STATUS */
160591be33dcSAlexander Motin {ctl_mechanism_status, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM |
1606648dfc1aSAlexander Motin 					  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
160791be33dcSAlexander Motin 					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
160891be33dcSAlexander Motin 					  CTL_FLAG_DATA_IN,
160991be33dcSAlexander Motin  CTL_LUN_PAT_NONE,
161091be33dcSAlexander Motin  12, {0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0, 0x07}},
1611130f4520SKenneth D. Merry 
16121b08cb4eSAlexander Motin /* BE VOLUME SET IN */
1613130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1614130f4520SKenneth D. Merry 
16151b08cb4eSAlexander Motin /* BF VOLUME SET OUT */
1616130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1617130f4520SKenneth D. Merry 
16187ac58230SAlexander Motin /* C0 */
16197ac58230SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1620130f4520SKenneth D. Merry 
16217ac58230SAlexander Motin /* C1 */
16227ac58230SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1623130f4520SKenneth D. Merry 
16247ac58230SAlexander Motin /* C2 */
16257ac58230SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1626130f4520SKenneth D. Merry 
16277ac58230SAlexander Motin /* C3 */
16287ac58230SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1629130f4520SKenneth D. Merry 
1630130f4520SKenneth D. Merry /* C4 */
1631130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1632130f4520SKenneth D. Merry 
1633130f4520SKenneth D. Merry /* C5 */
1634130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1635130f4520SKenneth D. Merry 
1636130f4520SKenneth D. Merry /* C6 */
1637130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1638130f4520SKenneth D. Merry 
1639130f4520SKenneth D. Merry /* C7 */
1640130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1641130f4520SKenneth D. Merry 
1642130f4520SKenneth D. Merry /* C8 */
1643130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1644130f4520SKenneth D. Merry 
1645130f4520SKenneth D. Merry /* C9 */
1646130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1647130f4520SKenneth D. Merry 
1648130f4520SKenneth D. Merry /* CA */
1649130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1650130f4520SKenneth D. Merry 
1651130f4520SKenneth D. Merry /* CB */
1652130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1653130f4520SKenneth D. Merry 
1654130f4520SKenneth D. Merry /* CC */
1655130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1656130f4520SKenneth D. Merry 
1657130f4520SKenneth D. Merry /* CD */
1658130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1659130f4520SKenneth D. Merry 
1660130f4520SKenneth D. Merry /* CE */
1661130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1662130f4520SKenneth D. Merry 
1663130f4520SKenneth D. Merry /* CF */
1664130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1665130f4520SKenneth D. Merry 
1666130f4520SKenneth D. Merry /* D0 */
1667130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1668130f4520SKenneth D. Merry 
1669130f4520SKenneth D. Merry /* D1 */
1670130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1671130f4520SKenneth D. Merry 
1672130f4520SKenneth D. Merry /* D2 */
1673130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1674130f4520SKenneth D. Merry 
1675130f4520SKenneth D. Merry /* D3 */
1676130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1677130f4520SKenneth D. Merry 
1678130f4520SKenneth D. Merry /* D4 */
1679130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1680130f4520SKenneth D. Merry 
1681130f4520SKenneth D. Merry /* D5 */
1682130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1683130f4520SKenneth D. Merry 
1684130f4520SKenneth D. Merry /* D6 */
1685130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1686130f4520SKenneth D. Merry 
1687130f4520SKenneth D. Merry /* D7 */
1688130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1689130f4520SKenneth D. Merry 
1690130f4520SKenneth D. Merry /* D8 */
1691130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1692130f4520SKenneth D. Merry 
1693130f4520SKenneth D. Merry /* D9 */
1694130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1695130f4520SKenneth D. Merry 
1696130f4520SKenneth D. Merry /* DA */
1697130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1698130f4520SKenneth D. Merry 
1699130f4520SKenneth D. Merry /* DB */
1700130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1701130f4520SKenneth D. Merry 
1702130f4520SKenneth D. Merry /* DC */
1703130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1704130f4520SKenneth D. Merry 
1705130f4520SKenneth D. Merry /* DD */
1706130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1707130f4520SKenneth D. Merry 
1708130f4520SKenneth D. Merry /* DE */
1709130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1710130f4520SKenneth D. Merry 
1711130f4520SKenneth D. Merry /* DF */
1712130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1713130f4520SKenneth D. Merry 
1714130f4520SKenneth D. Merry /* E0 */
1715130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1716130f4520SKenneth D. Merry 
1717130f4520SKenneth D. Merry /* E1 */
1718130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1719130f4520SKenneth D. Merry 
1720130f4520SKenneth D. Merry /* E2 */
1721130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1722130f4520SKenneth D. Merry 
1723130f4520SKenneth D. Merry /* E3 */
1724130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1725130f4520SKenneth D. Merry 
1726130f4520SKenneth D. Merry /* E4 */
1727130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1728130f4520SKenneth D. Merry 
1729130f4520SKenneth D. Merry /* E5 */
1730130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1731130f4520SKenneth D. Merry 
1732130f4520SKenneth D. Merry /* E6 */
1733130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1734130f4520SKenneth D. Merry 
1735130f4520SKenneth D. Merry /* E7 */
1736130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1737130f4520SKenneth D. Merry 
1738130f4520SKenneth D. Merry /* E8 */
1739130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1740130f4520SKenneth D. Merry 
1741130f4520SKenneth D. Merry /* E9 */
1742130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1743130f4520SKenneth D. Merry 
1744130f4520SKenneth D. Merry /* EA */
1745130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1746130f4520SKenneth D. Merry 
1747130f4520SKenneth D. Merry /* EB */
1748130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1749130f4520SKenneth D. Merry 
1750130f4520SKenneth D. Merry /* EC */
1751130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1752130f4520SKenneth D. Merry 
1753130f4520SKenneth D. Merry /* ED */
1754130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1755130f4520SKenneth D. Merry 
1756130f4520SKenneth D. Merry /* EE */
1757130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1758130f4520SKenneth D. Merry 
1759130f4520SKenneth D. Merry /* EF */
1760130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1761130f4520SKenneth D. Merry 
1762130f4520SKenneth D. Merry /* F0 */
1763130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1764130f4520SKenneth D. Merry 
1765130f4520SKenneth D. Merry /* F1 */
1766130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1767130f4520SKenneth D. Merry 
1768130f4520SKenneth D. Merry /* F2 */
1769130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1770130f4520SKenneth D. Merry 
1771130f4520SKenneth D. Merry /* F3 */
1772130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1773130f4520SKenneth D. Merry 
1774130f4520SKenneth D. Merry /* F4 */
1775130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1776130f4520SKenneth D. Merry 
1777130f4520SKenneth D. Merry /* F5 */
1778130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1779130f4520SKenneth D. Merry 
1780130f4520SKenneth D. Merry /* F6 */
1781130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1782130f4520SKenneth D. Merry 
1783130f4520SKenneth D. Merry /* F7 */
1784130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1785130f4520SKenneth D. Merry 
1786130f4520SKenneth D. Merry /* F8 */
1787130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1788130f4520SKenneth D. Merry 
1789130f4520SKenneth D. Merry /* F9 */
1790130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1791130f4520SKenneth D. Merry 
1792130f4520SKenneth D. Merry /* FA */
1793130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1794130f4520SKenneth D. Merry 
1795130f4520SKenneth D. Merry /* FB */
1796130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1797130f4520SKenneth D. Merry 
1798130f4520SKenneth D. Merry /* FC */
1799130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1800130f4520SKenneth D. Merry 
1801130f4520SKenneth D. Merry /* FD */
1802130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1803130f4520SKenneth D. Merry 
1804130f4520SKenneth D. Merry /* FE */
1805130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1806130f4520SKenneth D. Merry 
1807130f4520SKenneth D. Merry /* FF */
1808130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
1809130f4520SKenneth D. Merry 
1810130f4520SKenneth D. Merry };
1811