ctl_cmd_table.c revision 311433
1/*-
2 * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp.
3 * Copyright (c) 2014-2015 Alexander Motin <mav@FreeBSD.org>
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions, and the following disclaimer,
11 *    without modification.
12 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
13 *    substantially similar to the "NO WARRANTY" disclaimer below
14 *    ("Disclaimer") and any redistribution must be conditioned upon
15 *    including a substantially similar Disclaimer requirement for further
16 *    binary redistribution.
17 *
18 * NO WARRANTY
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
28 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGES.
30 *
31 * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $
32 * $FreeBSD: stable/10/sys/cam/ctl/ctl_cmd_table.c 311433 2017-01-05 11:50:01Z mav $
33 */
34/*
35 * CAM Target Layer command table.
36 *
37 * Author: Ken Merry <ken@FreeBSD.org>, Kim Le
38 */
39
40#include <sys/cdefs.h>
41#include <sys/param.h>
42#include <sys/systm.h>
43#include <sys/kernel.h>
44#include <sys/types.h>
45#include <sys/malloc.h>
46#include <sys/condvar.h>
47#include <sys/queue.h>
48#include <sys/sysctl.h>
49
50#include <cam/scsi/scsi_all.h>
51#include <cam/scsi/scsi_da.h>
52#include <cam/ctl/ctl_io.h>
53#include <cam/ctl/ctl.h>
54#include <cam/ctl/ctl_frontend.h>
55#include <cam/ctl/ctl_backend.h>
56#include <cam/ctl/ctl_ioctl.h>
57#include <cam/ctl/ctl_ha.h>
58#include <cam/ctl/ctl_private.h>
59
60/*
61 * Whenever support for a new command is added, it should be added to these
62 * tables.
63 */
64
65/* 3B WRITE BUFFER */
66const struct ctl_cmd_entry ctl_cmd_table_3b[32] =
67{
68/* 00 WRITE BUFFER HDR DATA */
69{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
70
71/* 01 WRITE BUFFER VENDOR */
72{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
73
74/* 02 WRITE BUFFER DATA */
75{ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
76				      CTL_CMD_FLAG_OK_ON_NO_MEDIA |
77				      CTL_CMD_FLAG_OK_ON_STANDBY |
78				      CTL_FLAG_DATA_OUT,
79 CTL_LUN_PAT_NONE,
80 10, {0x02, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
81
82/* 03 WRITE BUFFER DESCR */
83{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
84
85/* 04 WRITE BUFFER DOWNLOAD */
86{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
87
88/* 05 WRITE BUFFER DOWNLOAD SAVE */
89{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
90
91/* 06 */
92{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
93
94/* 07 */
95{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
96
97/* 08 */
98{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
99
100/* 09 */
101{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
102
103/* 0A WRITE BUFFER ECHO */
104{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
105
106/* 0B WRITE BUFFER ECHO DESCRIPTOR */
107{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
108
109/* 0C */
110{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
111
112/* 0D */
113{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
114
115/* 0E */
116{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
117
118/* 0F */
119{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
120
121/* 10 */
122{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
123
124/* 11 */
125{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
126
127/* 12 */
128{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
129
130/* 13 */
131{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
132
133/* 14 */
134{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
135
136/* 15 */
137{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
138
139/* 16 */
140{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
141
142/* 17 */
143{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
144
145/* 18 */
146{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
147
148/* 19 */
149{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
150
151/* 1A */
152{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
153
154/* 1B */
155{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
156
157/* 1C WRITE BUFFER ERROR HISTORY */
158{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
159
160/* 1d-1f */
161};
162
163/* 3C READ BUFFER(10) */
164const struct ctl_cmd_entry ctl_cmd_table_3c[32] =
165{
166/* 00 READ BUFFER(10) HDR DATA */
167{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
168
169/* 01 READ BUFFER(10) VENDOR */
170{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
171
172/* 02 READ BUFFER(10) DATA */
173{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
174				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
175				     CTL_CMD_FLAG_OK_ON_STANDBY |
176				     CTL_FLAG_DATA_IN |
177				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
178 CTL_LUN_PAT_NONE,
179 10, {0x02, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
180
181/* 03 READ BUFFER(10) DESCR */
182{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
183				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
184				     CTL_CMD_FLAG_OK_ON_STANDBY |
185				     CTL_FLAG_DATA_IN |
186				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
187 CTL_LUN_PAT_NONE,
188 10, {0x03, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
189
190/* 04 */
191{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
192
193/* 05 */
194{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
195
196/* 06 */
197{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
198
199/* 07 */
200{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
201
202/* 08 */
203{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
204
205/* 09 */
206{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
207
208/* 0A READ BUFFER(10) ECHO */
209{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
210
211/* 0B READ BUFFER(10) ECHO DESCRIPTOR */
212{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
213				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
214				     CTL_CMD_FLAG_OK_ON_STANDBY |
215				     CTL_FLAG_DATA_IN |
216				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
217 CTL_LUN_PAT_NONE,
218 10, {0x0b, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
219
220/* 0C */
221{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
222
223/* 0D */
224{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
225
226/* 0E */
227{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
228
229/* 0F */
230{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
231
232/* 10 */
233{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
234
235/* 11 */
236{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
237
238/* 12 */
239{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
240
241/* 13 */
242{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
243
244/* 14 */
245{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
246
247/* 15 */
248{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
249
250/* 16 */
251{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
252
253/* 17 */
254{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
255
256/* 18 */
257{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
258
259/* 19 */
260{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
261
262/* 1A */
263{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
264
265/* 1B */
266{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
267
268/* 1C READ BUFFER(10) ERROR HISTORY */
269{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
270
271/* 1d-1f */
272};
273
274/* 5E PERSISTENT RESERVE IN */
275const struct ctl_cmd_entry ctl_cmd_table_5e[32] =
276{
277/* 00 READ KEYS */
278{ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
279						CTL_CMD_FLAG_OK_ON_BOTH |
280						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
281						CTL_CMD_FLAG_OK_ON_STANDBY |
282						CTL_FLAG_DATA_IN |
283						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
284 CTL_LUN_PAT_NONE,
285 10, { 0x00, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
286
287/* 01 READ RESERVATION */
288{ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
289						CTL_CMD_FLAG_OK_ON_BOTH |
290						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
291						CTL_CMD_FLAG_OK_ON_STANDBY |
292						CTL_FLAG_DATA_IN |
293						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
294 CTL_LUN_PAT_NONE,
295 10, { 0x01, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
296
297/* 02 REPORT CAPABILITIES */
298{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
299					    CTL_CMD_FLAG_OK_ON_BOTH |
300					    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
301					    CTL_CMD_FLAG_OK_ON_STANDBY |
302					    CTL_FLAG_DATA_IN |
303					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
304 CTL_LUN_PAT_NONE,
305 10, { 0x02, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
306
307/* 03 READ FULL STATUS */
308{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
309					    CTL_CMD_FLAG_OK_ON_BOTH |
310					    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
311					    CTL_CMD_FLAG_OK_ON_STANDBY |
312					    CTL_FLAG_DATA_IN |
313					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
314 CTL_LUN_PAT_NONE,
315 10, { 0x03, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
316
317/* 04-1f */
318};
319
320/* 5F PERSISTENT RESERVE OUT */
321const struct ctl_cmd_entry ctl_cmd_table_5f[32] =
322{
323/* 00 REGISTER */
324{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
325						CTL_CMD_FLAG_OK_ON_BOTH |
326						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
327						CTL_CMD_FLAG_OK_ON_STANDBY |
328						CTL_FLAG_DATA_OUT |
329						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
330 CTL_LUN_PAT_NONE,
331 10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
332
333/* 01 RESERVE */
334{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
335						CTL_CMD_FLAG_OK_ON_BOTH |
336						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
337						CTL_CMD_FLAG_OK_ON_STANDBY |
338						CTL_FLAG_DATA_OUT |
339						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
340 CTL_LUN_PAT_NONE,
341 10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
342
343/* 02 RELEASE */
344{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
345						CTL_CMD_FLAG_OK_ON_BOTH |
346						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
347						CTL_CMD_FLAG_OK_ON_STANDBY |
348						CTL_FLAG_DATA_OUT |
349						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
350 CTL_LUN_PAT_NONE,
351 10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
352
353/* 03 CLEAR */
354{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
355						CTL_CMD_FLAG_OK_ON_BOTH |
356						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
357						CTL_CMD_FLAG_OK_ON_STANDBY |
358						CTL_FLAG_DATA_OUT |
359						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
360 CTL_LUN_PAT_NONE,
361 10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
362
363/* 04 PREEMPT */
364{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
365						CTL_CMD_FLAG_OK_ON_BOTH |
366						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
367						CTL_CMD_FLAG_OK_ON_STANDBY |
368						CTL_FLAG_DATA_OUT |
369						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
370 CTL_LUN_PAT_NONE,
371 10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
372
373/* 05 PREEMPT AND ABORT */
374{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
375						CTL_CMD_FLAG_OK_ON_BOTH |
376						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
377						CTL_CMD_FLAG_OK_ON_STANDBY |
378						CTL_FLAG_DATA_OUT |
379						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
380 CTL_LUN_PAT_NONE,
381 10, { 0x05, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
382
383/* 06 REGISTER AND IGNORE EXISTING KEY */
384{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
385						CTL_CMD_FLAG_OK_ON_BOTH |
386						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
387						CTL_CMD_FLAG_OK_ON_STANDBY |
388						CTL_FLAG_DATA_OUT |
389						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
390 CTL_LUN_PAT_NONE,
391 10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
392
393/* 07 REGISTER AND MOVE */
394{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
395
396/* 08-1f */
397};
398
399/* 83 EXTENDED COPY */
400const struct ctl_cmd_entry ctl_cmd_table_83[32] =
401{
402/* 00 EXTENDED COPY (LID1) */
403{ctl_extended_copy_lid1, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
404					    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
405					    CTL_FLAG_DATA_OUT,
406 CTL_LUN_PAT_NONE,
407 16, { 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
408
409/* 01 EXTENDED COPY (LID4) */
410{ctl_extended_copy_lid4, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
411					    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
412					    CTL_FLAG_DATA_OUT,
413 CTL_LUN_PAT_NONE,
414 16, { 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
415
416/* 02 */
417{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
418
419/* 03 */
420{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
421
422/* 04 */
423{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
424
425/* 05 */
426{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
427
428/* 06 */
429{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
430
431/* 07 */
432{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
433
434/* 08 */
435{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
436
437/* 09 */
438{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
439
440/* 0A */
441{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
442
443/* 0B */
444{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
445
446/* 0C */
447{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
448
449/* 0D */
450{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
451
452/* 0E */
453{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
454
455/* 0F */
456{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
457
458/* 10 POPULATE TOKEN */
459{ctl_populate_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
460					CTL_FLAG_DATA_OUT |
461					CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
462 CTL_LUN_PAT_NONE,
463 16, { 0x10, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
464       0xff, 0xff, 0xff, 0xff, 0, 0x07}},
465
466/* 11 WRITE USING TOKEN */
467{ctl_write_using_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
468					CTL_FLAG_DATA_OUT,
469 CTL_LUN_PAT_NONE,
470 16, { 0x11, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
471       0xff, 0xff, 0xff, 0xff, 0, 0x07}},
472
473/* 12 */
474{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
475
476/* 13 */
477{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
478
479/* 14 */
480{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
481
482/* 15 */
483{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
484
485/* 16 */
486{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
487
488/* 17 */
489{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
490
491/* 18 */
492{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
493
494/* 19 */
495{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
496
497/* 1A */
498{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
499
500/* 1B */
501{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
502
503/* 1C COPY OPERATION ABORT */
504{ctl_copy_operation_abort, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
505					      CTL_CMD_FLAG_OK_ON_NO_MEDIA |
506					      CTL_FLAG_DATA_NONE,
507 CTL_LUN_PAT_NONE,
508 16, { 0x1c, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
509};
510
511/* 84 RECEIVE COPY STATUS */
512const struct ctl_cmd_entry ctl_cmd_table_84[32] =
513{
514/* 00 RECEIVE COPY STATUS (LID1) */
515{ctl_receive_copy_status_lid1, CTL_SERIDX_RD_CAP,
516 CTL_CMD_FLAG_OK_ON_BOTH |
517 CTL_CMD_FLAG_OK_ON_NO_MEDIA |
518 CTL_FLAG_DATA_IN |
519 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
520 CTL_LUN_PAT_NONE,
521 16, {0x00, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
522
523/* 01 RECEIVE COPY DATA (LID1) */
524{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
525
526/* 02 */
527{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
528
529/* 03 RECEIVE COPY OPERATING PARAMETERS */
530{ctl_receive_copy_operating_parameters, CTL_SERIDX_RD_CAP,
531 CTL_CMD_FLAG_OK_ON_BOTH |
532 CTL_CMD_FLAG_OK_ON_NO_MEDIA |
533 CTL_CMD_FLAG_OK_ON_STANDBY |
534 CTL_FLAG_DATA_IN |
535 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
536 CTL_LUN_PAT_NONE,
537 16, {0x03, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
538
539/* 04 RECEIVE COPY FAILURE DETAILS (LID1) */
540{ctl_receive_copy_failure_details, CTL_SERIDX_RD_CAP,
541 CTL_CMD_FLAG_OK_ON_BOTH |
542 CTL_CMD_FLAG_OK_ON_NO_MEDIA |
543 CTL_FLAG_DATA_IN |
544 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
545 CTL_LUN_PAT_NONE,
546 16, {0x04, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
547
548/* 05 RECEIVE COPY STATUS (LID4) */
549{ctl_receive_copy_status_lid4, CTL_SERIDX_RD_CAP,
550 CTL_CMD_FLAG_OK_ON_BOTH |
551 CTL_CMD_FLAG_OK_ON_NO_MEDIA |
552 CTL_FLAG_DATA_IN |
553 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
554 CTL_LUN_PAT_NONE,
555 16, {0x05, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
556
557/* 06 RECEIVE COPY DATA (LID4)*/
558{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
559
560/* 07 RECEIVE ROD TOKEN INFORMATION */
561{ctl_receive_rod_token_information, CTL_SERIDX_RD_CAP,
562 CTL_CMD_FLAG_OK_ON_BOTH |
563 CTL_CMD_FLAG_OK_ON_NO_MEDIA |
564 CTL_FLAG_DATA_IN |
565 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
566 CTL_LUN_PAT_NONE,
567 16, {0x07, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
568
569/* 08 REPORT ALL ROD TOKENS */
570{ctl_report_all_rod_tokens, CTL_SERIDX_RD_CAP,
571 CTL_CMD_FLAG_OK_ON_BOTH |
572 CTL_CMD_FLAG_OK_ON_NO_MEDIA |
573 CTL_FLAG_DATA_IN |
574 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
575 CTL_LUN_PAT_NONE,
576 16, {0x08, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
577};
578
579/* 9B READ BUFFER(16) */
580const struct ctl_cmd_entry ctl_cmd_table_9b[32] =
581{
582/* 00 READ BUFFER(16) HDR DATA */
583{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
584
585/* 01 READ BUFFER(16) VENDOR */
586{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
587
588/* 02 READ BUFFER(16) DATA */
589{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
590				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
591				     CTL_CMD_FLAG_OK_ON_STANDBY |
592				     CTL_FLAG_DATA_IN,
593 CTL_LUN_PAT_NONE,
594 16, {0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
595      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
596
597/* 03 READ BUFFER(16) DESCR */
598{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
599				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
600				     CTL_CMD_FLAG_OK_ON_STANDBY |
601				     CTL_FLAG_DATA_IN,
602 CTL_LUN_PAT_NONE,
603 16, {0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
604      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
605
606/* 04 READ BUFFER(16) */
607{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
608
609/* 05 READ BUFFER(16) */
610{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
611
612/* 06 */
613{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
614
615/* 07 */
616{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
617
618/* 08 */
619{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
620
621/* 09 */
622{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
623
624/* 0A READ BUFFER(16) ECHO */
625{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
626
627/* 0B READ BUFFER(16) ECHO DESCRIPTOR */
628{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
629				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
630				     CTL_CMD_FLAG_OK_ON_STANDBY |
631				     CTL_FLAG_DATA_IN,
632 CTL_LUN_PAT_NONE,
633 16, {0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
634      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
635
636/* 0C */
637{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
638
639/* 0D */
640{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
641
642/* 0E */
643{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
644
645/* 0F */
646{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
647
648/* 10 */
649{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
650
651/* 11 */
652{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
653
654/* 12 */
655{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
656
657/* 13 */
658{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
659
660/* 14 */
661{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
662
663/* 15 */
664{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
665
666/* 16 */
667{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
668
669/* 17 */
670{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
671
672/* 18 */
673{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
674
675/* 19 */
676{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
677
678/* 1A */
679{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
680
681/* 1B */
682{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
683
684/* 1C READ BUFFER(16) ERROR HISTORY */
685{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
686
687/* 1d-1f */
688};
689
690
691/* 9E SERVICE ACTION IN(16) */
692const struct ctl_cmd_entry ctl_cmd_table_9e[32] =
693{
694/* 00 */
695{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
696
697/* 01 */
698{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
699
700/* 02 */
701{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
702
703/* 03 */
704{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
705
706/* 04 */
707{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
708
709/* 05 */
710{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
711
712/* 06 */
713{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
714
715/* 07 */
716{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
717
718/* 08 */
719{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
720
721/* 09 */
722{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
723
724/* 0A */
725{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
726
727/* 0B */
728{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
729
730/* 0C */
731{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
732
733/* 0D */
734{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
735
736/* 0E */
737{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
738
739/* 0F */
740{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
741
742/* 10 READ CAPACITY(16) */
743{ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
744					  CTL_FLAG_DATA_IN |
745					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
746 CTL_LUN_PAT_READCAP,
747 16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
748
749/* 11 */
750{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
751
752/* 12 GET LBA STATUS */
753{ctl_get_lba_status, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
754				      CTL_FLAG_DATA_IN |
755				      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
756 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
757 16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
758    0xff, 0xff, 0xff, 0xff, 0, 0x07}},
759
760/* 13-1f */
761};
762
763/* A3 MAINTENANCE IN */
764const struct ctl_cmd_entry ctl_cmd_table_a3[32] =
765{
766/* 00 */
767{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
768
769/* 01 */
770{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
771
772/* 02 */
773{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
774
775/* 03 */
776{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
777
778/* 04 */
779{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
780
781/* 05 */
782{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
783
784/* 06 */
785{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
786
787/* 07 */
788{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
789
790/* 08 */
791{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
792
793/* 09 */
794{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
795
796/* 0A REPORT TARGET PORT GROUPS */
797{ctl_report_tagret_port_groups, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
798						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
799						CTL_CMD_FLAG_OK_ON_STANDBY |
800						CTL_CMD_FLAG_OK_ON_UNAVAIL |
801						CTL_FLAG_DATA_IN |
802						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
803 CTL_LUN_PAT_NONE,
804 12, {0xea, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
805
806/* 0B */
807{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
808
809/* 0C REPORT SUPPORTED_OPCODES */
810{ctl_report_supported_opcodes, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
811						CTL_CMD_FLAG_OK_ON_NO_MEDIA |
812						CTL_CMD_FLAG_OK_ON_STANDBY |
813						CTL_CMD_FLAG_OK_ON_UNAVAIL |
814						CTL_FLAG_DATA_IN |
815						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
816 CTL_LUN_PAT_NONE,
817 12, {0x0c, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
818
819/* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */
820{ctl_report_supported_tmf, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
821					   CTL_CMD_FLAG_OK_ON_NO_MEDIA |
822					   CTL_CMD_FLAG_OK_ON_STANDBY |
823					   CTL_CMD_FLAG_OK_ON_UNAVAIL |
824					   CTL_FLAG_DATA_IN |
825					   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
826 CTL_LUN_PAT_NONE,
827 12, {0x0d, 0x80, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
828
829/* 0E */
830{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
831
832/* 0F REPORT TIMESTAMP */
833{ctl_report_timestamp, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
834					CTL_CMD_FLAG_OK_ON_NO_MEDIA |
835					CTL_CMD_FLAG_OK_ON_STANDBY |
836					CTL_CMD_FLAG_OK_ON_UNAVAIL |
837					CTL_FLAG_DATA_IN |
838					CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
839 CTL_LUN_PAT_NONE,
840 12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
841
842/* 10-1f */
843};
844
845const struct ctl_cmd_entry ctl_cmd_table[256] =
846{
847/* 00 TEST UNIT READY */
848{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
849			  CTL_FLAG_DATA_NONE |
850			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
851 CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}},
852
853/* 01 REWIND */
854{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
855
856/* 02 */
857{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
858
859/* 03 REQUEST SENSE */
860{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
861				       CTL_CMD_FLAG_OK_ON_NO_LUN |
862				       CTL_CMD_FLAG_OK_ON_BOTH |
863				       CTL_CMD_FLAG_ALLOW_ON_RESV |
864				       CTL_CMD_FLAG_NO_SENSE |
865				       CTL_CMD_FLAG_OK_ON_NO_MEDIA |
866				       CTL_CMD_FLAG_OK_ON_STANDBY |
867				       CTL_CMD_FLAG_OK_ON_UNAVAIL |
868				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
869				       CTL_CMD_FLAG_RUN_HERE,
870 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}},
871
872/* 04 FORMAT UNIT */
873{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_DIRECT |
874				CTL_FLAG_DATA_OUT,
875 CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}},
876
877/* 05 READ BLOCK LIMITS */
878{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
879
880/* 06 */
881{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
882
883/* 07 REASSIGN BLOCKS */
884{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
885
886/* 08 READ(6) */
887{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
888				  CTL_FLAG_DATA_IN |
889				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
890 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
891
892/* 09 */
893{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
894
895/* 0A WRITE(6) */
896{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT |
897				   CTL_FLAG_DATA_OUT,
898 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
899
900/* 0B SEEK(6) */
901{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
902
903/* 0C */
904{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
905
906/* 0D */
907{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
908
909/* 0E */
910{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
911
912/* 0F READ REVERSE(6) */
913{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
914
915/* 10 WRITE FILEMARKS(6) */
916{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
917
918/* 11 SPACE(6) */
919{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
920
921/* 12 INQUIRY */
922{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_NO_LUN |
923			      CTL_CMD_FLAG_OK_ON_BOTH |
924			      CTL_CMD_FLAG_ALLOW_ON_RESV |
925			      CTL_CMD_FLAG_NO_SENSE |
926			      CTL_CMD_FLAG_OK_ON_NO_MEDIA |
927			      CTL_CMD_FLAG_OK_ON_STANDBY |
928			      CTL_CMD_FLAG_OK_ON_UNAVAIL |
929			      CTL_FLAG_DATA_IN |
930			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
931 CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}},
932
933/* 13 */
934{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
935
936/* 14 RECOVER BUFFERED DATA */
937{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
938
939/* 15 MODE SELECT(6) */
940{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
941				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
942				     CTL_CMD_FLAG_OK_ON_STANDBY |
943				     CTL_FLAG_DATA_OUT,
944 CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}},
945
946/* 16 RESERVE(6) */
947{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
948				    CTL_CMD_FLAG_OK_ON_BOTH |
949				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
950				    CTL_CMD_FLAG_OK_ON_STANDBY |
951				    CTL_FLAG_DATA_OUT,
952 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
953
954/* 17 RELEASE(6) */
955{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
956				   CTL_CMD_FLAG_OK_ON_BOTH |
957				   CTL_CMD_FLAG_OK_ON_NO_MEDIA |
958				   CTL_CMD_FLAG_OK_ON_STANDBY |
959				   CTL_FLAG_DATA_NONE,
960 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
961
962/* 18 COPY */
963{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
964
965/* 19 ERASE(6) */
966{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
967
968/* 1A MODE SENSE(6) */
969{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
970				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
971				    CTL_CMD_FLAG_OK_ON_STANDBY |
972				    CTL_FLAG_DATA_IN |
973				    CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
974 CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0xff, 0xff, 0x07}},
975
976/* 1B START STOP UNIT */
977{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_DIRECT |
978				   CTL_CMD_FLAG_OK_ON_CDROM |
979				   CTL_CMD_FLAG_OK_ON_NO_MEDIA |
980				   CTL_FLAG_DATA_NONE |
981				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
982 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0x0f, 0xf7, 0x07}},
983
984/* 1C RECEIVE DIAGNOSTIC RESULTS */
985{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
986
987/* 1D SEND DIAGNOSTIC */
988{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
989
990/* 1E PREVENT ALLOW MEDIUM REMOVAL */
991{ctl_prevent_allow, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_DIRECT |
992				      CTL_CMD_FLAG_OK_ON_CDROM |
993				      CTL_CMD_FLAG_OK_ON_NO_MEDIA |
994				      CTL_FLAG_DATA_NONE,
995 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
996
997/* 1F */
998{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
999
1000/* 20 */
1001{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1002
1003/* 21 */
1004{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1005
1006/* 22 */
1007{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1008
1009/* 23 */
1010{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1011
1012/* 24 SET WINDOW */
1013{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1014
1015/* 25 READ CAPACITY(10) */
1016{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
1017				       CTL_CMD_FLAG_OK_ON_CDROM |
1018				       CTL_FLAG_DATA_IN |
1019				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1020 CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
1021
1022/* 26 */
1023{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1024
1025/* 27 */
1026{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1027
1028/* 28 READ(10) */
1029{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
1030				  CTL_CMD_FLAG_OK_ON_CDROM |
1031				  CTL_FLAG_DATA_IN |
1032				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1033 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1034 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1035
1036/* 29 READ GENERATION */
1037{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1038
1039/* 2A WRITE(10) */
1040{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
1041 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1042 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1043
1044/* 2B SEEK(10) */
1045{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1046
1047/* 2C ERASE(10) */
1048{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1049
1050/* 2D READ UPDATED BLOCK */
1051{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1052
1053/* 2E WRITE AND VERIFY(10) */
1054{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
1055 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1056 10, {0x12, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1057
1058/* 2F VERIFY(10) */
1059{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
1060			      CTL_FLAG_DATA_OUT |
1061			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1062 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1063 10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1064
1065/* 30 SEARCH DATA HIGH(10) */
1066{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1067
1068/* 31 SEARCH DATA EQUAL(10) */
1069{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1070
1071/* 32 SEARCH DATA LOW(10) */
1072{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1073
1074/* 33 SET LIMITS(10) */
1075{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1076
1077/* 34 PRE-FETCH(10) */
1078{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1079
1080/* 35 SYNCHRONIZE CACHE(10) */
1081{ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_DIRECT |
1082				  CTL_FLAG_DATA_NONE,
1083 CTL_LUN_PAT_WRITE,
1084 10, {0x06, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1085
1086/* 36 LOCK UNLOCK CACHE(10) */
1087{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1088
1089/* 37 READ DEFECT DATA(10) */
1090{ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_DIRECT |
1091				     CTL_FLAG_DATA_IN |
1092				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1093 CTL_LUN_PAT_NONE,
1094 10, {0, 0x1f, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
1095
1096/* 38 MEDIUM SCAN */
1097{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1098
1099/* 39 COMPARE */
1100{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1101
1102/* 3A COPY AND VERIFY */
1103{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1104
1105/* 3B WRITE BUFFER */
1106{__DECONST(ctl_opfunc *, ctl_cmd_table_3b), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1107 CTL_LUN_PAT_NONE},
1108
1109/* 3C READ BUFFER */
1110{__DECONST(ctl_opfunc *, ctl_cmd_table_3c), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1111 CTL_LUN_PAT_NONE},
1112
1113/* 3D UPDATE BLOCK */
1114{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1115
1116/* 3E READ LONG */
1117{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1118
1119/* 3F WRITE LONG */
1120{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1121
1122/* 40 CHANGE DEFINITION */
1123{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1124
1125/* 41 WRITE SAME(10) */
1126{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT |
1127				   CTL_FLAG_DATA_OUT,
1128 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1129 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
1130
1131/* 42 READ SUB-CHANNEL / UNMAP */
1132{ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_DIRECT | CTL_FLAG_DATA_OUT,
1133 CTL_LUN_PAT_WRITE,
1134 10, {1, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
1135
1136/* 43 READ TOC/PMA/ATIP */
1137{ctl_read_toc, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM |
1138				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV |
1139				  CTL_FLAG_DATA_IN,
1140 CTL_LUN_PAT_NONE,
1141 10, {0x02, 0x01, 0, 0, 0, 0xff, 0xff, 0xff, 0x07}},
1142
1143/* 44 REPORT DENSITY SUPPORT */
1144{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1145
1146/* 45 PLAY AUDIO(10) */
1147{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1148
1149/* 46 GET CONFIGURATION */
1150{ctl_get_config, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_CDROM |
1151				 CTL_CMD_FLAG_OK_ON_NO_MEDIA |
1152				 CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
1153				 CTL_FLAG_DATA_IN,
1154 CTL_LUN_PAT_NONE,
1155 10, {0x03, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07}},
1156
1157/* 47 PLAY AUDIO MSF */
1158{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1159
1160/* 48 PLAY AUDIO TRACK INDEX */
1161{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1162
1163/* 49 PLAY TRACK RELATIVE(10) */
1164{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1165
1166/* 4A GET EVENT STATUS NOTIFICATION */
1167{ctl_get_event_status, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM |
1168					  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
1169					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
1170					  CTL_FLAG_DATA_IN,
1171 CTL_LUN_PAT_NONE,
1172 10, {0x02, 0x01, 0, 0, 0, 0xff, 0xff, 0xff, 0x07}},
1173
1174/* 4B PAUSE/RESUME */
1175{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1176
1177/* 4C LOG SELECT */
1178{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1179
1180/* 4D LOG SENSE */
1181{ctl_log_sense, CTL_SERIDX_LOG_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
1182				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
1183				    CTL_CMD_FLAG_OK_ON_STANDBY |
1184				    CTL_FLAG_DATA_IN |
1185				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1186 CTL_LUN_PAT_NONE, 10, {0, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0x07} },
1187
1188/* 4E STOP PLAY/SCAN */
1189{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1190
1191/* 4F */
1192{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1193
1194/* 50 XDWRITE(10) */
1195{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1196
1197/* 51 XPWRITE(10) */
1198{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1199
1200/* 52 XDREAD(10) */
1201{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1202
1203/* 53 RESERVE TRACK */
1204{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1205
1206/* 54 SEND OPC INFORMATION */
1207{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1208
1209/* 55 MODE SELECT(10) */
1210{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
1211				     CTL_CMD_FLAG_OK_ON_NO_MEDIA |
1212				     CTL_CMD_FLAG_OK_ON_STANDBY |
1213				     CTL_FLAG_DATA_OUT,
1214 CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
1215
1216/* 56 RESERVE(10) */
1217{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1218				    CTL_CMD_FLAG_OK_ON_BOTH |
1219				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
1220				    CTL_CMD_FLAG_OK_ON_STANDBY |
1221				    CTL_FLAG_DATA_OUT,
1222 CTL_LUN_PAT_NONE, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07} },
1223
1224/* 57 RELEASE(10) */
1225{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1226				   CTL_CMD_FLAG_OK_ON_BOTH |
1227				   CTL_CMD_FLAG_OK_ON_NO_MEDIA |
1228				   CTL_CMD_FLAG_OK_ON_STANDBY |
1229				   CTL_FLAG_DATA_OUT,
1230 CTL_LUN_PAT_NONE, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
1231
1232/* 58 REPAIR TRACK */
1233{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1234
1235/* 59 READ MASTER CUE */
1236{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1237
1238/* 5A MODE SENSE(10) */
1239{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
1240				    CTL_CMD_FLAG_OK_ON_NO_MEDIA |
1241				    CTL_CMD_FLAG_OK_ON_STANDBY |
1242				    CTL_FLAG_DATA_IN |
1243				    CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1244 CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
1245
1246/* 5B CLOSE TRACK/SESSION */
1247{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1248
1249/* 5C READ BUFFER CAPACITY */
1250{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1251
1252/* 5D SEND CUE SHEET */
1253{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1254
1255/* 5E PERSISTENT RESERVE IN */
1256{__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1257 CTL_LUN_PAT_NONE},
1258
1259/* 5F PERSISTENT RESERVE OUT */
1260{__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1261 CTL_LUN_PAT_NONE},
1262
1263/* 60 */
1264{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1265
1266/* 61 */
1267{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1268
1269/* 62 */
1270{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1271
1272/* 63 */
1273{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1274
1275/* 64 */
1276{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1277
1278/* 65 */
1279{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1280
1281/* 66 */
1282{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1283
1284/* 67 */
1285{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1286
1287/* 68 */
1288{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1289
1290/* 69 */
1291{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1292
1293/* 6A */
1294{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1295
1296/* 6B */
1297{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1298
1299/* 6C */
1300{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1301
1302/* 6D */
1303{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1304
1305/* 6E */
1306{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1307
1308/* 6F */
1309{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1310
1311/* 70 */
1312{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1313
1314/* 71 */
1315{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1316
1317/* 72 */
1318{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1319
1320/* 73 */
1321{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1322
1323/* 74 */
1324{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1325
1326/* 75 */
1327{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1328
1329/* 76 */
1330{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1331
1332/* 77 */
1333{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1334
1335/* 78 */
1336{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1337
1338/* 79 */
1339{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1340
1341/* 7A */
1342{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1343
1344/* 7B */
1345{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1346
1347/* 7C */
1348{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1349
1350/* 7D */
1351{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1352
1353/* 7E */
1354{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1355
1356/* 7F */
1357{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1358
1359/* 80 XDWRITE EXTENDED(16) */
1360{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1361
1362/* 81 REBUILD(16) */
1363{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1364
1365/* 82 REGENERATE(16) */
1366{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1367
1368/* 83 EXTENDED COPY */
1369{__DECONST(ctl_opfunc *, ctl_cmd_table_83), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1370 CTL_LUN_PAT_NONE},
1371
1372/* 84 RECEIVE COPY RESULTS */
1373{__DECONST(ctl_opfunc *, ctl_cmd_table_84), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1374 CTL_LUN_PAT_NONE},
1375
1376/* 85 */
1377{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1378
1379/* 86 ACCESS CONTROL IN */
1380{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1381
1382/* 87 ACCESS CONTROL OUT */
1383{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1384
1385/* 88 READ(16) */
1386{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | CTL_FLAG_DATA_IN |
1387                                  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1388 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1389 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1390      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1391
1392/* 89 COMPARE AND WRITE */
1393{ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
1394 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1395 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1396      0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}},
1397
1398/* 8A WRITE(16) */
1399{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
1400 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1401 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1402      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1403
1404/* 8B */
1405{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1406
1407/* 8C READ ATTRIBUTE */
1408{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1409
1410/* 8D WRITE ATTRIBUTE */
1411{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1412
1413/* 8E WRITE AND VERIFY(16) */
1414{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
1415 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1416 16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1417      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1418
1419/* 8F VERIFY(16) */
1420{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
1421			      CTL_FLAG_DATA_OUT |
1422			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1423 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1424 16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1425      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1426
1427/* 90 PRE-FETCH(16) */
1428{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1429
1430/* 91 SYNCHRONIZE CACHE(16) */
1431{ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_DIRECT |
1432				  CTL_FLAG_DATA_NONE,
1433 CTL_LUN_PAT_WRITE,
1434 16, {0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1435      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1436
1437/* 92 LOCK UNLOCK CACHE(16) */
1438{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1439
1440/* 93 WRITE SAME(16) */
1441{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT |
1442				   CTL_FLAG_DATA_OUT,
1443 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1444 16, {0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1445      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1446
1447/* 94 */
1448{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1449
1450/* 95 */
1451{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1452
1453/* 96 */
1454{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1455
1456/* 97 */
1457{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1458
1459/* 98 */
1460{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1461
1462/* 99 */
1463{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1464
1465/* 9A */
1466{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1467
1468/* 9B READ BUFFER(16) */
1469{__DECONST(ctl_opfunc *, ctl_cmd_table_9b), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1470 CTL_LUN_PAT_NONE},
1471
1472/* 9C WRITE ATOMIC (16) */
1473{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
1474 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1475 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1476      0xff, 0xff, 0, 0, 0xff, 0xff, 0, 0x07}},
1477
1478/* 9D */
1479{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1480
1481/* 9E SERVICE ACTION IN(16) */
1482{__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1483 CTL_LUN_PAT_NONE},
1484
1485/* 9F SERVICE ACTION OUT(16) */
1486{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1487
1488/* A0 REPORT LUNS */
1489{ctl_report_luns, CTL_SERIDX_INQ, CTL_FLAG_DATA_IN |
1490				  CTL_CMD_FLAG_OK_ON_NO_LUN |
1491				  CTL_CMD_FLAG_OK_ON_BOTH |
1492				  CTL_CMD_FLAG_ALLOW_ON_RESV |
1493				  CTL_CMD_FLAG_NO_SENSE |
1494				  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
1495				  CTL_CMD_FLAG_OK_ON_STANDBY |
1496				  CTL_CMD_FLAG_OK_ON_UNAVAIL |
1497				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
1498				  CTL_CMD_FLAG_RUN_HERE,
1499 CTL_LUN_PAT_NONE,
1500 12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1501
1502/* A1 BLANK */
1503{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1504
1505/* A2 SEND EVENT */
1506{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1507
1508/* A3 MAINTENANCE IN */
1509{__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1510 CTL_LUN_PAT_NONE},
1511
1512/* A4 MAINTENANCE OUT */
1513{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1514
1515/* A5 MOVE MEDIUM */
1516{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1517
1518/* A6 EXCHANGE MEDIUM */
1519{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1520
1521/* A7 MOVE MEDIUM ATTACHED */
1522{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1523
1524/* A8 READ(12) */
1525{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
1526				  CTL_CMD_FLAG_OK_ON_CDROM |
1527				  CTL_FLAG_DATA_IN |
1528				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1529 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1530 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1531
1532/* A9 PLAY TRACK RELATIVE(12) */
1533{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1534
1535/* AA WRITE(12) */
1536{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
1537 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1538 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1539
1540/* AB SERVICE ACTION IN(12) */
1541{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1542
1543/* AC ERASE(12) */
1544{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1545
1546/* AD READ DVD STRUCTURE */
1547{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1548
1549/* AE WRITE AND VERIFY(12) */
1550{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
1551 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1552 12, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1553
1554/* AF VERIFY(12) */
1555{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
1556			      CTL_FLAG_DATA_OUT |
1557			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1558 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1559 12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1560
1561/* B0 SEARCH DATA HIGH(12) */
1562{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1563
1564/* B1 SEARCH DATA EQUAL(12) */
1565{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1566
1567/* B2 SEARCH DATA LOW(12) */
1568{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1569
1570/* B3 SET LIMITS(12) */
1571{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1572
1573/* B4 READ ELEMENT STATUS ATTACHED */
1574{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1575
1576/* B5 REQUEST VOLUME ELEMENT ADDRESS */
1577{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1578
1579/* B6 SEND VOLUME TAG */
1580{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1581
1582/* B7 READ DEFECT DATA(12) */
1583{ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_DIRECT |
1584				     CTL_FLAG_DATA_IN |
1585				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1586 CTL_LUN_PAT_NONE,
1587 12, {0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1588
1589/* B8 READ ELEMENT STATUS */
1590{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1591
1592/* B9 READ CD MSF */
1593{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1594
1595/* BA REDUNDANCY GROUP IN */
1596{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1597
1598/* BB REDUNDANCY GROUP OUT */
1599{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1600
1601/* BC SPARE IN */
1602{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1603
1604/* BD SPARE OUT / MECHANISM STATUS */
1605{ctl_mechanism_status, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM |
1606					  CTL_CMD_FLAG_OK_ON_NO_MEDIA |
1607					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
1608					  CTL_FLAG_DATA_IN,
1609 CTL_LUN_PAT_NONE,
1610 12, {0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0, 0x07}},
1611
1612/* BE VOLUME SET IN */
1613{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1614
1615/* BF VOLUME SET OUT */
1616{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1617
1618/* C0 */
1619{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1620
1621/* C1 */
1622{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1623
1624/* C2 */
1625{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1626
1627/* C3 */
1628{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1629
1630/* C4 */
1631{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1632
1633/* C5 */
1634{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1635
1636/* C6 */
1637{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1638
1639/* C7 */
1640{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1641
1642/* C8 */
1643{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1644
1645/* C9 */
1646{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1647
1648/* CA */
1649{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1650
1651/* CB */
1652{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1653
1654/* CC */
1655{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1656
1657/* CD */
1658{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1659
1660/* CE */
1661{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1662
1663/* CF */
1664{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1665
1666/* D0 */
1667{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1668
1669/* D1 */
1670{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1671
1672/* D2 */
1673{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1674
1675/* D3 */
1676{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1677
1678/* D4 */
1679{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1680
1681/* D5 */
1682{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1683
1684/* D6 */
1685{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1686
1687/* D7 */
1688{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1689
1690/* D8 */
1691{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1692
1693/* D9 */
1694{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1695
1696/* DA */
1697{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1698
1699/* DB */
1700{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1701
1702/* DC */
1703{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1704
1705/* DD */
1706{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1707
1708/* DE */
1709{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1710
1711/* DF */
1712{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1713
1714/* E0 */
1715{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1716
1717/* E1 */
1718{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1719
1720/* E2 */
1721{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1722
1723/* E3 */
1724{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1725
1726/* E4 */
1727{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1728
1729/* E5 */
1730{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1731
1732/* E6 */
1733{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1734
1735/* E7 */
1736{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1737
1738/* E8 */
1739{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1740
1741/* E9 */
1742{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1743
1744/* EA */
1745{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1746
1747/* EB */
1748{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1749
1750/* EC */
1751{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1752
1753/* ED */
1754{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1755
1756/* EE */
1757{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1758
1759/* EF */
1760{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1761
1762/* F0 */
1763{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1764
1765/* F1 */
1766{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1767
1768/* F2 */
1769{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1770
1771/* F3 */
1772{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1773
1774/* F4 */
1775{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1776
1777/* F5 */
1778{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1779
1780/* F6 */
1781{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1782
1783/* F7 */
1784{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1785
1786/* F8 */
1787{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1788
1789/* F9 */
1790{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1791
1792/* FA */
1793{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1794
1795/* FB */
1796{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1797
1798/* FC */
1799{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1800
1801/* FD */
1802{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1803
1804/* FE */
1805{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1806
1807/* FF */
1808{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
1809
1810};
1811