xref: /freebsd/sys/cam/ctl/ctl_cmd_table.c (revision 91be33dc78989dbc29e7a1194a6eb0d31b0e93b0)
1130f4520SKenneth D. Merry /*-
2130f4520SKenneth D. Merry  * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp.
3130f4520SKenneth D. Merry  * All rights reserved.
4130f4520SKenneth D. Merry  *
5130f4520SKenneth D. Merry  * Redistribution and use in source and binary forms, with or without
6130f4520SKenneth D. Merry  * modification, are permitted provided that the following conditions
7130f4520SKenneth D. Merry  * are met:
8130f4520SKenneth D. Merry  * 1. Redistributions of source code must retain the above copyright
9130f4520SKenneth D. Merry  *    notice, this list of conditions, and the following disclaimer,
10130f4520SKenneth D. Merry  *    without modification.
11130f4520SKenneth D. Merry  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12130f4520SKenneth D. Merry  *    substantially similar to the "NO WARRANTY" disclaimer below
13130f4520SKenneth D. Merry  *    ("Disclaimer") and any redistribution must be conditioned upon
14130f4520SKenneth D. Merry  *    including a substantially similar Disclaimer requirement for further
15130f4520SKenneth D. Merry  *    binary redistribution.
16130f4520SKenneth D. Merry  *
17130f4520SKenneth D. Merry  * NO WARRANTY
18130f4520SKenneth D. Merry  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19130f4520SKenneth D. Merry  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20130f4520SKenneth D. Merry  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
21130f4520SKenneth D. Merry  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22130f4520SKenneth D. Merry  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23130f4520SKenneth D. Merry  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24130f4520SKenneth D. Merry  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25130f4520SKenneth D. Merry  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26130f4520SKenneth D. Merry  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
27130f4520SKenneth D. Merry  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28130f4520SKenneth D. Merry  * POSSIBILITY OF SUCH DAMAGES.
29130f4520SKenneth D. Merry  *
30130f4520SKenneth D. Merry  * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $
31130f4520SKenneth D. Merry  * $FreeBSD$
32130f4520SKenneth D. Merry  */
33130f4520SKenneth D. Merry /*
34130f4520SKenneth D. Merry  * CAM Target Layer command table.
35130f4520SKenneth D. Merry  *
36130f4520SKenneth D. Merry  * Author: Ken Merry <ken@FreeBSD.org>, Kim Le
37130f4520SKenneth D. Merry  */
38130f4520SKenneth D. Merry 
39130f4520SKenneth D. Merry #include <sys/cdefs.h>
40130f4520SKenneth D. Merry #include <sys/param.h>
41130f4520SKenneth D. Merry #include <sys/systm.h>
42130f4520SKenneth D. Merry #include <sys/kernel.h>
43130f4520SKenneth D. Merry #include <sys/types.h>
44130f4520SKenneth D. Merry #include <sys/malloc.h>
45130f4520SKenneth D. Merry #include <sys/condvar.h>
46130f4520SKenneth D. Merry #include <sys/queue.h>
47bf8f8f34SKenneth D. Merry #include <sys/sysctl.h>
48130f4520SKenneth D. Merry 
49130f4520SKenneth D. Merry #include <cam/scsi/scsi_all.h>
50130f4520SKenneth D. Merry #include <cam/scsi/scsi_da.h>
51130f4520SKenneth D. Merry #include <cam/ctl/ctl_io.h>
52130f4520SKenneth D. Merry #include <cam/ctl/ctl.h>
53130f4520SKenneth D. Merry #include <cam/ctl/ctl_frontend.h>
54130f4520SKenneth D. Merry #include <cam/ctl/ctl_backend.h>
55130f4520SKenneth D. Merry #include <cam/ctl/ctl_ioctl.h>
56130f4520SKenneth D. Merry #include <cam/ctl/ctl_ha.h>
57130f4520SKenneth D. Merry #include <cam/ctl/ctl_private.h>
58130f4520SKenneth D. Merry 
59130f4520SKenneth D. Merry /*
601b08cb4eSAlexander Motin  * Whenever support for a new command is added, it should be added to these
611b08cb4eSAlexander Motin  * tables.
62130f4520SKenneth D. Merry  */
631b08cb4eSAlexander Motin 
641b08cb4eSAlexander Motin /* 5E PERSISTENT RESERVE IN */
651b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_5e[32] =
661b08cb4eSAlexander Motin {
671b08cb4eSAlexander Motin /* 00 READ KEYS */
684d877c41SAlexander Motin {ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
691b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
701b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
711b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
727ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
731b08cb4eSAlexander Motin 						CTL_FLAG_DATA_IN |
741b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
751b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
761b08cb4eSAlexander Motin  10, { 0x00, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
771b08cb4eSAlexander Motin 
781b08cb4eSAlexander Motin /* 01 READ RESERVATION */
794d877c41SAlexander Motin {ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
801b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
811b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
821b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
837ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
841b08cb4eSAlexander Motin 						CTL_FLAG_DATA_IN |
851b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
861b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
871b08cb4eSAlexander Motin  10, { 0x01, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
881b08cb4eSAlexander Motin 
891b08cb4eSAlexander Motin /* 02 REPORT CAPABILITIES */
901b08cb4eSAlexander Motin {ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
911b08cb4eSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_BOTH |
921b08cb4eSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_STOPPED |
931b08cb4eSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_INOPERABLE |
947ac58230SAlexander Motin 					    CTL_CMD_FLAG_OK_ON_STANDBY |
951b08cb4eSAlexander Motin 					    CTL_FLAG_DATA_IN |
961b08cb4eSAlexander Motin 					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
971b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
981b08cb4eSAlexander Motin  10, { 0x02, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
991b08cb4eSAlexander Motin 
1001b08cb4eSAlexander Motin /* 03 READ FULL STATUS */
1011e5a8b8fSAlexander Motin {ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
1021e5a8b8fSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_BOTH |
1031e5a8b8fSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_STOPPED |
1041e5a8b8fSAlexander Motin 					    CTL_CMD_FLAG_OK_ON_INOPERABLE |
1057ac58230SAlexander Motin 					    CTL_CMD_FLAG_OK_ON_STANDBY |
1061e5a8b8fSAlexander Motin 					    CTL_FLAG_DATA_IN |
1071e5a8b8fSAlexander Motin 					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1081e5a8b8fSAlexander Motin  CTL_LUN_PAT_NONE,
1091e5a8b8fSAlexander Motin  10, { 0x03, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
1101b08cb4eSAlexander Motin 
1111b08cb4eSAlexander Motin /* 04-1f */
1121b08cb4eSAlexander Motin };
1131b08cb4eSAlexander Motin 
1141b08cb4eSAlexander Motin /* 5F PERSISTENT RESERVE OUT */
1151b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_5f[32] =
1161b08cb4eSAlexander Motin {
1171b08cb4eSAlexander Motin /* 00 REGISTER */
1184d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1191b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
1201b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
1211b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
1227ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
1231b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
1241b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1251b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
1261b08cb4eSAlexander Motin  10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
1271b08cb4eSAlexander Motin 
1281b08cb4eSAlexander Motin /* 01 RESERVE */
1294d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1301b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
1311b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
1321b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
1337ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
1341b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
1351b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1361b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
137f44570f6SAlexander Motin  10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
1381b08cb4eSAlexander Motin 
1391b08cb4eSAlexander Motin /* 02 RELEASE */
1404d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1411b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
1421b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
1431b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
1447ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
1451b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
1461b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1471b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
148f44570f6SAlexander Motin  10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
1491b08cb4eSAlexander Motin 
1501b08cb4eSAlexander Motin /* 03 CLEAR */
1514d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1521b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
1531b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
1541b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
1557ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
1561b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
1571b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1581b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
1590f8de8afSAlexander Motin  10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
1601b08cb4eSAlexander Motin 
1611b08cb4eSAlexander Motin /* 04 PREEMPT */
1624d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1631b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
1641b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
1651b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
1667ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
1671b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
1681b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1691b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
1700f8de8afSAlexander Motin  10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
1711b08cb4eSAlexander Motin 
1721b08cb4eSAlexander Motin /* 05 PREEMPT AND ABORT */
173fb5780deSAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
174fb5780deSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
175fb5780deSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
176fb5780deSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
1777ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
178fb5780deSAlexander Motin 						CTL_FLAG_DATA_OUT |
179fb5780deSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
180fb5780deSAlexander Motin  CTL_LUN_PAT_NONE,
181fb5780deSAlexander Motin  10, { 0x05, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
1821b08cb4eSAlexander Motin 
1831b08cb4eSAlexander Motin /* 06 REGISTER AND IGNORE EXISTING KEY */
1844d877c41SAlexander Motin {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
1851b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_BOTH |
1861b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
1871b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
1887ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
1891b08cb4eSAlexander Motin 						CTL_FLAG_DATA_OUT |
1901b08cb4eSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1911b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
1920f8de8afSAlexander Motin  10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
1931b08cb4eSAlexander Motin 
1941b08cb4eSAlexander Motin /* 07 REGISTER AND MOVE */
1951b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1961b08cb4eSAlexander Motin 
1971b08cb4eSAlexander Motin /* 08-1f */
1981b08cb4eSAlexander Motin };
1991b08cb4eSAlexander Motin 
200984a2ea9SAlexander Motin /* 83 EXTENDED COPY */
201984a2ea9SAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_83[32] =
202984a2ea9SAlexander Motin {
203984a2ea9SAlexander Motin /* 00 EXTENDED COPY (LID1) */
204984a2ea9SAlexander Motin {ctl_extended_copy_lid1, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
205984a2ea9SAlexander Motin 					    CTL_FLAG_DATA_OUT,
206984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
207984a2ea9SAlexander Motin  16, { 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
208984a2ea9SAlexander Motin 
209984a2ea9SAlexander Motin /* 01 EXTENDED COPY (LID4) */
210984a2ea9SAlexander Motin {ctl_extended_copy_lid4, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
211984a2ea9SAlexander Motin 					    CTL_FLAG_DATA_OUT,
212984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
213984a2ea9SAlexander Motin  16, { 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
214984a2ea9SAlexander Motin 
215984a2ea9SAlexander Motin /* 02 */
216984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
217984a2ea9SAlexander Motin 
218984a2ea9SAlexander Motin /* 03 */
219984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
220984a2ea9SAlexander Motin 
221984a2ea9SAlexander Motin /* 04 */
222984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
223984a2ea9SAlexander Motin 
224984a2ea9SAlexander Motin /* 05 */
225984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
226984a2ea9SAlexander Motin 
227984a2ea9SAlexander Motin /* 06 */
228984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
229984a2ea9SAlexander Motin 
230984a2ea9SAlexander Motin /* 07 */
231984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
232984a2ea9SAlexander Motin 
233984a2ea9SAlexander Motin /* 08 */
234984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
235984a2ea9SAlexander Motin 
236984a2ea9SAlexander Motin /* 09 */
237984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
238984a2ea9SAlexander Motin 
239984a2ea9SAlexander Motin /* 0A */
240984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
241984a2ea9SAlexander Motin 
242984a2ea9SAlexander Motin /* 0B */
243984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
244984a2ea9SAlexander Motin 
245984a2ea9SAlexander Motin /* 0C */
246984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
247984a2ea9SAlexander Motin 
248984a2ea9SAlexander Motin /* 0D */
249984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
250984a2ea9SAlexander Motin 
251984a2ea9SAlexander Motin /* 0E */
252984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
253984a2ea9SAlexander Motin 
254984a2ea9SAlexander Motin /* 0F */
255984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
256984a2ea9SAlexander Motin 
257984a2ea9SAlexander Motin /* 10 POPULATE TOKEN */
258*91be33dcSAlexander Motin {ctl_populate_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
259115dc0c7SAlexander Motin 					CTL_FLAG_DATA_OUT |
260115dc0c7SAlexander Motin 					CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
26125eee848SAlexander Motin  CTL_LUN_PAT_NONE,
26225eee848SAlexander Motin  16, { 0x10, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
26325eee848SAlexander Motin        0xff, 0xff, 0xff, 0xff, 0, 0x07}},
264984a2ea9SAlexander Motin 
265984a2ea9SAlexander Motin /* 11 WRITE USING TOKEN */
266*91be33dcSAlexander Motin {ctl_write_using_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
26725eee848SAlexander Motin 					CTL_FLAG_DATA_OUT,
26825eee848SAlexander Motin  CTL_LUN_PAT_NONE,
26925eee848SAlexander Motin  16, { 0x11, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
27025eee848SAlexander Motin        0xff, 0xff, 0xff, 0xff, 0, 0x07}},
271984a2ea9SAlexander Motin 
272984a2ea9SAlexander Motin /* 12 */
273984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
274984a2ea9SAlexander Motin 
275984a2ea9SAlexander Motin /* 13 */
276984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
277984a2ea9SAlexander Motin 
278984a2ea9SAlexander Motin /* 14 */
279984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
280984a2ea9SAlexander Motin 
281984a2ea9SAlexander Motin /* 15 */
282984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
283984a2ea9SAlexander Motin 
284984a2ea9SAlexander Motin /* 16 */
285984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
286984a2ea9SAlexander Motin 
287984a2ea9SAlexander Motin /* 17 */
288984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
289984a2ea9SAlexander Motin 
290984a2ea9SAlexander Motin /* 18 */
291984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
292984a2ea9SAlexander Motin 
293984a2ea9SAlexander Motin /* 19 */
294984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
295984a2ea9SAlexander Motin 
296984a2ea9SAlexander Motin /* 1A */
297984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
298984a2ea9SAlexander Motin 
299984a2ea9SAlexander Motin /* 1B */
300984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
301984a2ea9SAlexander Motin 
302984a2ea9SAlexander Motin /* 1C COPY OPERATION ABORT */
303984a2ea9SAlexander Motin {ctl_copy_operation_abort, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
304984a2ea9SAlexander Motin 					      CTL_FLAG_DATA_NONE,
305984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
306984a2ea9SAlexander Motin  16, { 0x1c, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
307984a2ea9SAlexander Motin };
308984a2ea9SAlexander Motin 
309984a2ea9SAlexander Motin /* 84 RECEIVE COPY STATUS */
310984a2ea9SAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_84[32] =
311984a2ea9SAlexander Motin {
312984a2ea9SAlexander Motin /* 00 RECEIVE COPY STATUS (LID1) */
313984a2ea9SAlexander Motin {ctl_receive_copy_status_lid1, CTL_SERIDX_RD_CAP,
314984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
315fb767c2bSAlexander Motin  CTL_FLAG_DATA_IN |
316fb767c2bSAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
317984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
318984a2ea9SAlexander Motin  16, {0x00, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
319984a2ea9SAlexander Motin 
320984a2ea9SAlexander Motin /* 01 RECEIVE COPY DATA (LID1) */
321984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
322984a2ea9SAlexander Motin 
323984a2ea9SAlexander Motin /* 02 */
324984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
325984a2ea9SAlexander Motin 
326984a2ea9SAlexander Motin /* 03 RECEIVE COPY OPERATING PARAMETERS */
327984a2ea9SAlexander Motin {ctl_receive_copy_operating_parameters, CTL_SERIDX_RD_CAP,
328984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
329984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_STOPPED |
330984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_INOPERABLE |
3317ac58230SAlexander Motin  CTL_CMD_FLAG_OK_ON_STANDBY |
332fb767c2bSAlexander Motin  CTL_FLAG_DATA_IN |
333fb767c2bSAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
334984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
335984a2ea9SAlexander Motin  16, {0x03, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
336984a2ea9SAlexander Motin 
337984a2ea9SAlexander Motin /* 04 RECEIVE COPY FAILURE DETAILS (LID1) */
338984a2ea9SAlexander Motin {ctl_receive_copy_failure_details, CTL_SERIDX_RD_CAP,
339984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
340fb767c2bSAlexander Motin  CTL_FLAG_DATA_IN |
341fb767c2bSAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
342984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
343984a2ea9SAlexander Motin  16, {0x04, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
344984a2ea9SAlexander Motin 
345984a2ea9SAlexander Motin /* 05 RECEIVE COPY STATUS (LID4) */
346984a2ea9SAlexander Motin {ctl_receive_copy_status_lid4, CTL_SERIDX_RD_CAP,
347984a2ea9SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
348115dc0c7SAlexander Motin  CTL_FLAG_DATA_IN |
349115dc0c7SAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
350984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE,
351984a2ea9SAlexander Motin  16, {0x05, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
352984a2ea9SAlexander Motin 
353984a2ea9SAlexander Motin /* 06 RECEIVE COPY DATA (LID4)*/
354984a2ea9SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
355984a2ea9SAlexander Motin 
356984a2ea9SAlexander Motin /* 07 RECEIVE ROD TOKEN INFORMATION */
35725eee848SAlexander Motin {ctl_receive_rod_token_information, CTL_SERIDX_RD_CAP,
35825eee848SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
359115dc0c7SAlexander Motin  CTL_FLAG_DATA_IN |
360115dc0c7SAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
36125eee848SAlexander Motin  CTL_LUN_PAT_NONE,
36225eee848SAlexander Motin  16, {0x07, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
363984a2ea9SAlexander Motin 
364984a2ea9SAlexander Motin /* 08 REPORT ALL ROD TOKENS */
36525eee848SAlexander Motin {ctl_report_all_rod_tokens, CTL_SERIDX_RD_CAP,
36625eee848SAlexander Motin  CTL_CMD_FLAG_OK_ON_BOTH |
367115dc0c7SAlexander Motin  CTL_FLAG_DATA_IN |
368115dc0c7SAlexander Motin  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
36925eee848SAlexander Motin  CTL_LUN_PAT_NONE,
37025eee848SAlexander Motin  16, {0x08, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
371984a2ea9SAlexander Motin };
372984a2ea9SAlexander Motin 
3731b08cb4eSAlexander Motin /* 9E SERVICE ACTION IN(16) */
3741b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_9e[32] =
3751b08cb4eSAlexander Motin {
3761b08cb4eSAlexander Motin /* 00 */
3771b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
3781b08cb4eSAlexander Motin 
3791b08cb4eSAlexander Motin /* 01 */
3801b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
3811b08cb4eSAlexander Motin 
3821b08cb4eSAlexander Motin /* 02 */
3831b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
3841b08cb4eSAlexander Motin 
3851b08cb4eSAlexander Motin /* 03 */
3861b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
3871b08cb4eSAlexander Motin 
3881b08cb4eSAlexander Motin /* 04 */
3891b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
3901b08cb4eSAlexander Motin 
3911b08cb4eSAlexander Motin /* 05 */
3921b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
3931b08cb4eSAlexander Motin 
3941b08cb4eSAlexander Motin /* 06 */
3951b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
3961b08cb4eSAlexander Motin 
3971b08cb4eSAlexander Motin /* 07 */
3981b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
3991b08cb4eSAlexander Motin 
4001b08cb4eSAlexander Motin /* 08 */
4011b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4021b08cb4eSAlexander Motin 
4031b08cb4eSAlexander Motin /* 09 */
4041b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4051b08cb4eSAlexander Motin 
4061b08cb4eSAlexander Motin /* 0A */
4071b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4081b08cb4eSAlexander Motin 
4091b08cb4eSAlexander Motin /* 0B */
4101b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4111b08cb4eSAlexander Motin 
4121b08cb4eSAlexander Motin /* 0C */
4131b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4141b08cb4eSAlexander Motin 
4151b08cb4eSAlexander Motin /* 0D */
4161b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4171b08cb4eSAlexander Motin 
4181b08cb4eSAlexander Motin /* 0E */
4191b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4201b08cb4eSAlexander Motin 
4211b08cb4eSAlexander Motin /* 0F */
4221b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4231b08cb4eSAlexander Motin 
424ef8daf3fSAlexander Motin /* 10 READ CAPACITY(16) */
425*91be33dcSAlexander Motin {ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
4261b08cb4eSAlexander Motin 					  CTL_CMD_FLAG_OK_ON_STOPPED |
4271b08cb4eSAlexander Motin 					  CTL_CMD_FLAG_OK_ON_INOPERABLE |
4281b08cb4eSAlexander Motin 					  CTL_FLAG_DATA_IN |
4291b08cb4eSAlexander Motin 					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
4301b08cb4eSAlexander Motin  CTL_LUN_PAT_READCAP,
4311b08cb4eSAlexander Motin  16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
4321b08cb4eSAlexander Motin 
433ef8daf3fSAlexander Motin /* 11 */
434ef8daf3fSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
435ef8daf3fSAlexander Motin 
436ef8daf3fSAlexander Motin /* 12 GET LBA STATUS */
437*91be33dcSAlexander Motin {ctl_get_lba_status, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
438ef8daf3fSAlexander Motin 				      CTL_FLAG_DATA_IN |
439ef8daf3fSAlexander Motin 				      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
440ef8daf3fSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
441ef8daf3fSAlexander Motin  16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
442ef8daf3fSAlexander Motin     0xff, 0xff, 0xff, 0xff, 0, 0x07}},
443ef8daf3fSAlexander Motin 
444ef8daf3fSAlexander Motin /* 13-1f */
4451b08cb4eSAlexander Motin };
4461b08cb4eSAlexander Motin 
4471b08cb4eSAlexander Motin /* A3 MAINTENANCE IN */
4481b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table_a3[32] =
4491b08cb4eSAlexander Motin {
4501b08cb4eSAlexander Motin /* 00 */
4511b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4521b08cb4eSAlexander Motin 
4531b08cb4eSAlexander Motin /* 01 */
4541b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4551b08cb4eSAlexander Motin 
4561b08cb4eSAlexander Motin /* 02 */
4571b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4581b08cb4eSAlexander Motin 
4591b08cb4eSAlexander Motin /* 03 */
4601b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4611b08cb4eSAlexander Motin 
4621b08cb4eSAlexander Motin /* 04 */
4631b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4641b08cb4eSAlexander Motin 
4651b08cb4eSAlexander Motin /* 05 */
4661b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4671b08cb4eSAlexander Motin 
4681b08cb4eSAlexander Motin /* 06 */
4691b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4701b08cb4eSAlexander Motin 
4711b08cb4eSAlexander Motin /* 07 */
4721b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4731b08cb4eSAlexander Motin 
4741b08cb4eSAlexander Motin /* 08 */
4751b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4761b08cb4eSAlexander Motin 
4771b08cb4eSAlexander Motin /* 09 */
4781b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4791b08cb4eSAlexander Motin 
4801b08cb4eSAlexander Motin /* 0A REPORT TARGET PORT GROUPS */
4814d877c41SAlexander Motin {ctl_report_tagret_port_groups, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
4821b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
4831b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
4847ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
4857ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_UNAVAIL |
486115dc0c7SAlexander Motin 						CTL_FLAG_DATA_IN |
487115dc0c7SAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
4881b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
489eed0d596SAlexander Motin  12, {0xea, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
4901b08cb4eSAlexander Motin 
4911b08cb4eSAlexander Motin /* 0B */
4921b08cb4eSAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
4931b08cb4eSAlexander Motin 
4941b08cb4eSAlexander Motin /* 0C REPORT SUPPORTED_OPCODES */
4954d877c41SAlexander Motin {ctl_report_supported_opcodes, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
4961b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_STOPPED |
4971b08cb4eSAlexander Motin 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
4987ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_STANDBY |
4997ac58230SAlexander Motin 						CTL_CMD_FLAG_OK_ON_UNAVAIL |
500fb767c2bSAlexander Motin 						CTL_FLAG_DATA_IN |
501fb767c2bSAlexander Motin 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
5021b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
503cb743034SAlexander Motin  12, {0x0c, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
5041b08cb4eSAlexander Motin 
5051b08cb4eSAlexander Motin /* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */
5064d877c41SAlexander Motin {ctl_report_supported_tmf, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
5071b08cb4eSAlexander Motin 					   CTL_CMD_FLAG_OK_ON_STOPPED |
5081b08cb4eSAlexander Motin 					   CTL_CMD_FLAG_OK_ON_INOPERABLE |
5097ac58230SAlexander Motin 					   CTL_CMD_FLAG_OK_ON_STANDBY |
5107ac58230SAlexander Motin 					   CTL_CMD_FLAG_OK_ON_UNAVAIL |
511fb767c2bSAlexander Motin 					   CTL_FLAG_DATA_IN |
512fb767c2bSAlexander Motin 					   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
5131b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
5141b08cb4eSAlexander Motin  12, {0x0d, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
5151b08cb4eSAlexander Motin 
51625c9d5e5SAlexander Motin /* 0E */
51725c9d5e5SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
51825c9d5e5SAlexander Motin 
51925c9d5e5SAlexander Motin /* 0F REPORT TIMESTAMP */
5204d877c41SAlexander Motin {ctl_report_timestamp, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
52125c9d5e5SAlexander Motin 					CTL_CMD_FLAG_OK_ON_STOPPED |
52225c9d5e5SAlexander Motin 					CTL_CMD_FLAG_OK_ON_INOPERABLE |
5237ac58230SAlexander Motin 					CTL_CMD_FLAG_OK_ON_STANDBY |
5247ac58230SAlexander Motin 					CTL_CMD_FLAG_OK_ON_UNAVAIL |
525115dc0c7SAlexander Motin 					CTL_FLAG_DATA_IN |
526115dc0c7SAlexander Motin 					CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
52725c9d5e5SAlexander Motin  CTL_LUN_PAT_NONE,
52825c9d5e5SAlexander Motin  12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
52925c9d5e5SAlexander Motin 
53025c9d5e5SAlexander Motin /* 10-1f */
5311b08cb4eSAlexander Motin };
5321b08cb4eSAlexander Motin 
5331b08cb4eSAlexander Motin const struct ctl_cmd_entry ctl_cmd_table[256] =
534130f4520SKenneth D. Merry {
535130f4520SKenneth D. Merry /* 00 TEST UNIT READY */
536130f4520SKenneth D. Merry {ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
537130f4520SKenneth D. Merry 			  CTL_FLAG_DATA_NONE |
538130f4520SKenneth D. Merry 			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
5391b08cb4eSAlexander Motin  CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}},
540130f4520SKenneth D. Merry 
541130f4520SKenneth D. Merry /* 01 REWIND */
542130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
543130f4520SKenneth D. Merry 
544130f4520SKenneth D. Merry /* 02 */
545130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
546130f4520SKenneth D. Merry 
547130f4520SKenneth D. Merry /* 03 REQUEST SENSE */
548130f4520SKenneth D. Merry {ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
549efbf6139SAlexander Motin 				       CTL_CMD_FLAG_OK_ON_NO_LUN |
550efbf6139SAlexander Motin 				       CTL_CMD_FLAG_OK_ON_BOTH |
551130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_ALLOW_ON_RESV |
552130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_NO_SENSE |
553130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_STOPPED |
554130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
5557ac58230SAlexander Motin 				       CTL_CMD_FLAG_OK_ON_STANDBY |
5567ac58230SAlexander Motin 				       CTL_CMD_FLAG_OK_ON_UNAVAIL |
557921af507SAlexander Motin 				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
558921af507SAlexander Motin 				       CTL_CMD_FLAG_RUN_HERE,
5591b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}},
560130f4520SKenneth D. Merry 
561130f4520SKenneth D. Merry /* 04 FORMAT UNIT */
562*91be33dcSAlexander Motin {ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_DIRECT |
563130f4520SKenneth D. Merry 				CTL_CMD_FLAG_OK_ON_INOPERABLE |
564130f4520SKenneth D. Merry 				CTL_FLAG_DATA_OUT,
5651b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}},
566130f4520SKenneth D. Merry 
567130f4520SKenneth D. Merry /* 05 READ BLOCK LIMITS */
568130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
569130f4520SKenneth D. Merry 
570130f4520SKenneth D. Merry /* 06 */
571130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
572130f4520SKenneth D. Merry 
573130f4520SKenneth D. Merry /* 07 REASSIGN BLOCKS */
574130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
575130f4520SKenneth D. Merry 
576130f4520SKenneth D. Merry /* 08 READ(6) */
577*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
578130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_IN |
579115dc0c7SAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
5801b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
581130f4520SKenneth D. Merry 
582130f4520SKenneth D. Merry /* 09 */
583130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
584130f4520SKenneth D. Merry 
585130f4520SKenneth D. Merry /* 0A WRITE(6) */
586*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT |
587130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_OUT,
5881b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
589130f4520SKenneth D. Merry 
590130f4520SKenneth D. Merry /* 0B SEEK(6) */
591130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
592130f4520SKenneth D. Merry 
593130f4520SKenneth D. Merry /* 0C */
594130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
595130f4520SKenneth D. Merry 
596130f4520SKenneth D. Merry /* 0D */
597130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
598130f4520SKenneth D. Merry 
599130f4520SKenneth D. Merry /* 0E */
600130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
601130f4520SKenneth D. Merry 
602130f4520SKenneth D. Merry /* 0F READ REVERSE(6) */
603130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
604130f4520SKenneth D. Merry 
605130f4520SKenneth D. Merry /* 10 WRITE FILEMARKS(6) */
606130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
607130f4520SKenneth D. Merry 
608130f4520SKenneth D. Merry /* 11 SPACE(6) */
609130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
610130f4520SKenneth D. Merry 
611130f4520SKenneth D. Merry /* 12 INQUIRY */
612efbf6139SAlexander Motin {ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_NO_LUN |
613efbf6139SAlexander Motin 			      CTL_CMD_FLAG_OK_ON_BOTH |
614130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_ALLOW_ON_RESV |
615130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_NO_SENSE |
616130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_OK_ON_STOPPED |
617130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_OK_ON_INOPERABLE |
6187ac58230SAlexander Motin 			      CTL_CMD_FLAG_OK_ON_STANDBY |
6197ac58230SAlexander Motin 			      CTL_CMD_FLAG_OK_ON_UNAVAIL |
620130f4520SKenneth D. Merry 			      CTL_FLAG_DATA_IN |
621130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
622561764b1SAlexander Motin  CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}},
623130f4520SKenneth D. Merry 
624130f4520SKenneth D. Merry /* 13 */
625130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
626130f4520SKenneth D. Merry 
627130f4520SKenneth D. Merry /* 14 RECOVER BUFFERED DATA */
628130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
629130f4520SKenneth D. Merry 
630130f4520SKenneth D. Merry /* 15 MODE SELECT(6) */
631130f4520SKenneth D. Merry {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
632130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_STOPPED |
633130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
6347ac58230SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
635130f4520SKenneth D. Merry 				     CTL_FLAG_DATA_OUT,
6361b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}},
637130f4520SKenneth D. Merry 
638130f4520SKenneth D. Merry /* 16 RESERVE(6) */
6394d877c41SAlexander Motin {ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
640130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_BOTH |
641130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_STOPPED |
642130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
6437ac58230SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
644130f4520SKenneth D. Merry 				    CTL_FLAG_DATA_OUT,
6451b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
646130f4520SKenneth D. Merry 
647130f4520SKenneth D. Merry /* 17 RELEASE(6) */
6484d877c41SAlexander Motin {ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
649130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_BOTH |
650130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_STOPPED |
651130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
6527ac58230SAlexander Motin 				   CTL_CMD_FLAG_OK_ON_STANDBY |
653130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_NONE,
6541b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
655130f4520SKenneth D. Merry 
656130f4520SKenneth D. Merry /* 18 COPY */
657130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
658130f4520SKenneth D. Merry 
659130f4520SKenneth D. Merry /* 19 ERASE(6) */
660130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
661130f4520SKenneth D. Merry 
662130f4520SKenneth D. Merry /* 1A MODE SENSE(6) */
663130f4520SKenneth D. Merry {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
664130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_STOPPED |
665130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
6667ac58230SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
667f82388fdSAlexander Motin 				    CTL_FLAG_DATA_IN |
668115dc0c7SAlexander Motin 				    CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
669c7a7dbbcSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0xff, 0xff, 0x07}},
670130f4520SKenneth D. Merry 
671130f4520SKenneth D. Merry /* 1B START STOP UNIT */
672*91be33dcSAlexander Motin {ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_DIRECT |
673*91be33dcSAlexander Motin 				   CTL_CMD_FLAG_OK_ON_CDROM |
674130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_STOPPED |
675130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
676130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_NONE |
677130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
6781b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
679130f4520SKenneth D. Merry 
680130f4520SKenneth D. Merry /* 1C RECEIVE DIAGNOSTIC RESULTS */
681130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
682130f4520SKenneth D. Merry 
683130f4520SKenneth D. Merry /* 1D SEND DIAGNOSTIC */
684130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
685130f4520SKenneth D. Merry 
686130f4520SKenneth D. Merry /* 1E PREVENT ALLOW MEDIUM REMOVAL */
687*91be33dcSAlexander Motin {ctl_prevent_allow, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_DIRECT |
688*91be33dcSAlexander Motin 				      CTL_CMD_FLAG_OK_ON_CDROM |
689*91be33dcSAlexander Motin 				      CTL_CMD_FLAG_OK_ON_STOPPED |
690*91be33dcSAlexander Motin 				      CTL_CMD_FLAG_OK_ON_INOPERABLE |
691*91be33dcSAlexander Motin 				      CTL_FLAG_DATA_NONE,
692*91be33dcSAlexander Motin  CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
693130f4520SKenneth D. Merry 
694130f4520SKenneth D. Merry /* 1F */
695130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
696130f4520SKenneth D. Merry 
697130f4520SKenneth D. Merry /* 20 */
698130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
699130f4520SKenneth D. Merry 
700130f4520SKenneth D. Merry /* 21 */
701130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
702130f4520SKenneth D. Merry 
703130f4520SKenneth D. Merry /* 22 */
704130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
705130f4520SKenneth D. Merry 
706130f4520SKenneth D. Merry /* 23 */
707130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
708130f4520SKenneth D. Merry 
709130f4520SKenneth D. Merry /* 24 SET WINDOW */
710130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
711130f4520SKenneth D. Merry 
712130f4520SKenneth D. Merry /* 25 READ CAPACITY(10) */
713*91be33dcSAlexander Motin {ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT |
714*91be33dcSAlexander Motin 				       CTL_CMD_FLAG_OK_ON_CDROM |
715130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_STOPPED |
716130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
717130f4520SKenneth D. Merry 				       CTL_FLAG_DATA_IN |
718130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
7191b08cb4eSAlexander Motin  CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
720130f4520SKenneth D. Merry 
721130f4520SKenneth D. Merry /* 26 */
722130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
723130f4520SKenneth D. Merry 
724130f4520SKenneth D. Merry /* 27 */
725130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
726130f4520SKenneth D. Merry 
727130f4520SKenneth D. Merry /* 28 READ(10) */
728*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
729*91be33dcSAlexander Motin 				  CTL_CMD_FLAG_OK_ON_CDROM |
730130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_IN |
731115dc0c7SAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
7321b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
733b0737f1aSAlexander Motin  10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
734130f4520SKenneth D. Merry 
735130f4520SKenneth D. Merry /* 29 READ GENERATION */
736130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
737130f4520SKenneth D. Merry 
738130f4520SKenneth D. Merry /* 2A WRITE(10) */
739*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
7401b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
741b0737f1aSAlexander Motin  10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
742130f4520SKenneth D. Merry 
743130f4520SKenneth D. Merry /* 2B SEEK(10) */
744130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
745130f4520SKenneth D. Merry 
746130f4520SKenneth D. Merry /* 2C ERASE(10) */
747130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
748130f4520SKenneth D. Merry 
749130f4520SKenneth D. Merry /* 2D READ UPDATED BLOCK */
750130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
751130f4520SKenneth D. Merry 
752130f4520SKenneth D. Merry /* 2E WRITE AND VERIFY(10) */
753*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
7541b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
7555b5ad150SAlexander Motin  10, {0x12, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
756130f4520SKenneth D. Merry 
757130f4520SKenneth D. Merry /* 2F VERIFY(10) */
758*91be33dcSAlexander Motin {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
75911b569f7SAlexander Motin 			      CTL_FLAG_DATA_OUT |
760115dc0c7SAlexander Motin 			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
7611b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
7621b08cb4eSAlexander Motin  10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
763130f4520SKenneth D. Merry 
764130f4520SKenneth D. Merry /* 30 SEARCH DATA HIGH(10) */
765130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
766130f4520SKenneth D. Merry 
767130f4520SKenneth D. Merry /* 31 SEARCH DATA EQUAL(10) */
768130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
769130f4520SKenneth D. Merry 
770130f4520SKenneth D. Merry /* 32 SEARCH DATA LOW(10) */
771130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
772130f4520SKenneth D. Merry 
773130f4520SKenneth D. Merry /* 33 SET LIMITS(10) */
774130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
775130f4520SKenneth D. Merry 
776130f4520SKenneth D. Merry /* 34 PRE-FETCH(10) */
777130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
778130f4520SKenneth D. Merry 
779130f4520SKenneth D. Merry /* 35 SYNCHRONIZE CACHE(10) */
780*91be33dcSAlexander Motin {ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_DIRECT |
781130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_NONE,
7826187d472SAlexander Motin  CTL_LUN_PAT_WRITE,
7837d0d4342SAlexander Motin  10, {0x02, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
784130f4520SKenneth D. Merry 
785130f4520SKenneth D. Merry /* 36 LOCK UNLOCK CACHE(10) */
786130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
787130f4520SKenneth D. Merry 
788130f4520SKenneth D. Merry /* 37 READ DEFECT DATA(10) */
789*91be33dcSAlexander Motin {ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_DIRECT |
790d70698b3SAlexander Motin 				     CTL_FLAG_DATA_IN |
791115dc0c7SAlexander Motin 				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
792d70698b3SAlexander Motin  CTL_LUN_PAT_NONE,
793d70698b3SAlexander Motin  10, {0, 0x1f, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
794130f4520SKenneth D. Merry 
795130f4520SKenneth D. Merry /* 38 MEDIUM SCAN */
796130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
797130f4520SKenneth D. Merry 
798130f4520SKenneth D. Merry /* 39 COMPARE */
799130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
800130f4520SKenneth D. Merry 
801130f4520SKenneth D. Merry /* 3A COPY AND VERIFY */
802130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
803130f4520SKenneth D. Merry 
804130f4520SKenneth D. Merry /* 3B WRITE BUFFER */
80585165a3fSAlexander Motin {ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
80623b30f56SAlexander Motin 				      CTL_CMD_FLAG_OK_ON_STOPPED |
80723b30f56SAlexander Motin 				      CTL_CMD_FLAG_OK_ON_INOPERABLE |
8087ac58230SAlexander Motin 				      CTL_CMD_FLAG_OK_ON_STANDBY |
809130f4520SKenneth D. Merry 				      CTL_FLAG_DATA_OUT,
8101b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
8111b08cb4eSAlexander Motin  10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
812130f4520SKenneth D. Merry 
813130f4520SKenneth D. Merry /* 3C READ BUFFER */
81485165a3fSAlexander Motin {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
81523b30f56SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STOPPED |
81623b30f56SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
8177ac58230SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
81885165a3fSAlexander Motin 				     CTL_FLAG_DATA_IN |
819115dc0c7SAlexander Motin 				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
8201b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
8211b08cb4eSAlexander Motin  10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
822130f4520SKenneth D. Merry 
823130f4520SKenneth D. Merry /* 3D UPDATE BLOCK */
824130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
825130f4520SKenneth D. Merry 
826130f4520SKenneth D. Merry /* 3E READ LONG */
827130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
828130f4520SKenneth D. Merry 
829130f4520SKenneth D. Merry /* 3F WRITE LONG */
830130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
831130f4520SKenneth D. Merry 
832130f4520SKenneth D. Merry /* 40 CHANGE DEFINITION */
833130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
834130f4520SKenneth D. Merry 
835130f4520SKenneth D. Merry /* 41 WRITE SAME(10) */
836*91be33dcSAlexander Motin {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT |
837ee7f31c0SAlexander Motin 				   CTL_FLAG_DATA_OUT,
8381b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
8393406a2a0SAlexander Motin  10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
840130f4520SKenneth D. Merry 
841ee7f31c0SAlexander Motin /* 42 READ SUB-CHANNEL / UNMAP */
842*91be33dcSAlexander Motin {ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_DIRECT | CTL_FLAG_DATA_OUT,
8431b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE,
8443406a2a0SAlexander Motin  10, {1, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
845130f4520SKenneth D. Merry 
846130f4520SKenneth D. Merry /* 43 READ TOC/PMA/ATIP */
847*91be33dcSAlexander Motin {ctl_read_toc, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM |
848*91be33dcSAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV |
849*91be33dcSAlexander Motin 				  CTL_FLAG_DATA_IN,
850*91be33dcSAlexander Motin  CTL_LUN_PAT_NONE,
851*91be33dcSAlexander Motin  10, {0x02, 0x01, 0, 0, 0, 0xff, 0xff, 0xff, 0x07}},
852130f4520SKenneth D. Merry 
853130f4520SKenneth D. Merry /* 44 REPORT DENSITY SUPPORT */
854130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
855130f4520SKenneth D. Merry 
856130f4520SKenneth D. Merry /* 45 PLAY AUDIO(10) */
857130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
858130f4520SKenneth D. Merry 
859130f4520SKenneth D. Merry /* 46 GET CONFIGURATION */
860*91be33dcSAlexander Motin {ctl_get_config, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_CDROM |
861*91be33dcSAlexander Motin 				 CTL_CMD_FLAG_OK_ON_STOPPED |
862*91be33dcSAlexander Motin 				 CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
863*91be33dcSAlexander Motin 				 CTL_FLAG_DATA_IN,
864*91be33dcSAlexander Motin  CTL_LUN_PAT_NONE,
865*91be33dcSAlexander Motin  10, {0x03, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07}},
866130f4520SKenneth D. Merry 
867130f4520SKenneth D. Merry /* 47 PLAY AUDIO MSF */
868130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
869130f4520SKenneth D. Merry 
870130f4520SKenneth D. Merry /* 48 PLAY AUDIO TRACK INDEX */
871130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
872130f4520SKenneth D. Merry 
873130f4520SKenneth D. Merry /* 49 PLAY TRACK RELATIVE(10) */
874130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
875130f4520SKenneth D. Merry 
876130f4520SKenneth D. Merry /* 4A GET EVENT STATUS NOTIFICATION */
877*91be33dcSAlexander Motin {ctl_get_event_status, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM |
878*91be33dcSAlexander Motin 					  CTL_CMD_FLAG_OK_ON_STOPPED |
879*91be33dcSAlexander Motin 					  CTL_CMD_FLAG_OK_ON_INOPERABLE |
880*91be33dcSAlexander Motin 					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
881*91be33dcSAlexander Motin 					  CTL_FLAG_DATA_IN,
882*91be33dcSAlexander Motin  CTL_LUN_PAT_NONE,
883*91be33dcSAlexander Motin  10, {0x02, 0x01, 0, 0, 0, 0xff, 0xff, 0xff, 0x07}},
884130f4520SKenneth D. Merry 
885130f4520SKenneth D. Merry /* 4B PAUSE/RESUME */
886130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
887130f4520SKenneth D. Merry 
888130f4520SKenneth D. Merry /* 4C LOG SELECT */
889130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
890130f4520SKenneth D. Merry 
891130f4520SKenneth D. Merry /* 4D LOG SENSE */
8922e33ae99SAlexander Motin {ctl_log_sense, CTL_SERIDX_LOG_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
8932e33ae99SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STOPPED |
8942e33ae99SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
8952e33ae99SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
896523f047eSAlexander Motin 				    CTL_FLAG_DATA_IN |
897523f047eSAlexander Motin 				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
898523f047eSAlexander Motin  CTL_LUN_PAT_NONE, 10, {0, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0x07} },
899130f4520SKenneth D. Merry 
900130f4520SKenneth D. Merry /* 4E STOP PLAY/SCAN */
901130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
902130f4520SKenneth D. Merry 
903130f4520SKenneth D. Merry /* 4F */
904130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
905130f4520SKenneth D. Merry 
906130f4520SKenneth D. Merry /* 50 XDWRITE(10) */
907130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
908130f4520SKenneth D. Merry 
909130f4520SKenneth D. Merry /* 51 XPWRITE(10) */
910130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
911130f4520SKenneth D. Merry 
912130f4520SKenneth D. Merry /* 52 XDREAD(10) */
913130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
914130f4520SKenneth D. Merry 
915130f4520SKenneth D. Merry /* 53 RESERVE TRACK */
916130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
917130f4520SKenneth D. Merry 
918130f4520SKenneth D. Merry /* 54 SEND OPC INFORMATION */
919130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
920130f4520SKenneth D. Merry 
921130f4520SKenneth D. Merry /* 55 MODE SELECT(10) */
922130f4520SKenneth D. Merry {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
923130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_STOPPED |
924130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
9257ac58230SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
926130f4520SKenneth D. Merry 				     CTL_FLAG_DATA_OUT,
9271b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
928130f4520SKenneth D. Merry 
929130f4520SKenneth D. Merry /* 56 RESERVE(10) */
9304d877c41SAlexander Motin {ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
931130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_BOTH |
932130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_STOPPED |
933130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
9347ac58230SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
935130f4520SKenneth D. Merry 				    CTL_FLAG_DATA_OUT,
936f44570f6SAlexander Motin  CTL_LUN_PAT_NONE, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07} },
937130f4520SKenneth D. Merry 
938130f4520SKenneth D. Merry /* 57 RELEASE(10) */
9394d877c41SAlexander Motin {ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
940130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_BOTH |
941130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_STOPPED |
942130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
9437ac58230SAlexander Motin 				   CTL_CMD_FLAG_OK_ON_STANDBY |
944130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_OUT,
945f44570f6SAlexander Motin  CTL_LUN_PAT_NONE, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
946130f4520SKenneth D. Merry 
947130f4520SKenneth D. Merry /* 58 REPAIR TRACK */
948130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
949130f4520SKenneth D. Merry 
950130f4520SKenneth D. Merry /* 59 READ MASTER CUE */
951130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
952130f4520SKenneth D. Merry 
953130f4520SKenneth D. Merry /* 5A MODE SENSE(10) */
954130f4520SKenneth D. Merry {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
955130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_STOPPED |
956130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
9577ac58230SAlexander Motin 				    CTL_CMD_FLAG_OK_ON_STANDBY |
958f82388fdSAlexander Motin 				    CTL_FLAG_DATA_IN |
959115dc0c7SAlexander Motin 				    CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
960c7a7dbbcSAlexander Motin  CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
961130f4520SKenneth D. Merry 
962130f4520SKenneth D. Merry /* 5B CLOSE TRACK/SESSION */
963130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
964130f4520SKenneth D. Merry 
965130f4520SKenneth D. Merry /* 5C READ BUFFER CAPACITY */
966130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
967130f4520SKenneth D. Merry 
968130f4520SKenneth D. Merry /* 5D SEND CUE SHEET */
969130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
970130f4520SKenneth D. Merry 
971130f4520SKenneth D. Merry /* 5E PERSISTENT RESERVE IN */
9721b08cb4eSAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
973130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
974130f4520SKenneth D. Merry 
975130f4520SKenneth D. Merry /* 5F PERSISTENT RESERVE OUT */
9761b08cb4eSAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
977130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
978130f4520SKenneth D. Merry 
979130f4520SKenneth D. Merry /* 60 */
980130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
981130f4520SKenneth D. Merry 
982130f4520SKenneth D. Merry /* 61 */
983130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
984130f4520SKenneth D. Merry 
985130f4520SKenneth D. Merry /* 62 */
986130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
987130f4520SKenneth D. Merry 
988130f4520SKenneth D. Merry /* 63 */
989130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
990130f4520SKenneth D. Merry 
991130f4520SKenneth D. Merry /* 64 */
992130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
993130f4520SKenneth D. Merry 
994130f4520SKenneth D. Merry /* 65 */
995130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
996130f4520SKenneth D. Merry 
997130f4520SKenneth D. Merry /* 66 */
998130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
999130f4520SKenneth D. Merry 
1000130f4520SKenneth D. Merry /* 67 */
1001130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1002130f4520SKenneth D. Merry 
1003130f4520SKenneth D. Merry /* 68 */
1004130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1005130f4520SKenneth D. Merry 
1006130f4520SKenneth D. Merry /* 69 */
1007130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1008130f4520SKenneth D. Merry 
1009130f4520SKenneth D. Merry /* 6A */
1010130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1011130f4520SKenneth D. Merry 
1012130f4520SKenneth D. Merry /* 6B */
1013130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1014130f4520SKenneth D. Merry 
1015130f4520SKenneth D. Merry /* 6C */
1016130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1017130f4520SKenneth D. Merry 
1018130f4520SKenneth D. Merry /* 6D */
1019130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1020130f4520SKenneth D. Merry 
1021130f4520SKenneth D. Merry /* 6E */
1022130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1023130f4520SKenneth D. Merry 
1024130f4520SKenneth D. Merry /* 6F */
1025130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1026130f4520SKenneth D. Merry 
1027130f4520SKenneth D. Merry /* 70 */
1028130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1029130f4520SKenneth D. Merry 
1030130f4520SKenneth D. Merry /* 71 */
1031130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1032130f4520SKenneth D. Merry 
1033130f4520SKenneth D. Merry /* 72 */
1034130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1035130f4520SKenneth D. Merry 
1036130f4520SKenneth D. Merry /* 73 */
1037130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1038130f4520SKenneth D. Merry 
1039130f4520SKenneth D. Merry /* 74 */
1040130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1041130f4520SKenneth D. Merry 
1042130f4520SKenneth D. Merry /* 75 */
1043130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1044130f4520SKenneth D. Merry 
1045130f4520SKenneth D. Merry /* 76 */
1046130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1047130f4520SKenneth D. Merry 
1048130f4520SKenneth D. Merry /* 77 */
1049130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1050130f4520SKenneth D. Merry 
1051130f4520SKenneth D. Merry /* 78 */
1052130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1053130f4520SKenneth D. Merry 
1054130f4520SKenneth D. Merry /* 79 */
1055130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1056130f4520SKenneth D. Merry 
1057130f4520SKenneth D. Merry /* 7A */
1058130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1059130f4520SKenneth D. Merry 
1060130f4520SKenneth D. Merry /* 7B */
1061130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1062130f4520SKenneth D. Merry 
1063130f4520SKenneth D. Merry /* 7C */
1064130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1065130f4520SKenneth D. Merry 
1066130f4520SKenneth D. Merry /* 7D */
1067130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1068130f4520SKenneth D. Merry 
1069130f4520SKenneth D. Merry /* 7E */
1070130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1071130f4520SKenneth D. Merry 
1072130f4520SKenneth D. Merry /* 7F */
1073130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1074130f4520SKenneth D. Merry 
1075130f4520SKenneth D. Merry /* 80 XDWRITE EXTENDED(16) */
1076130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1077130f4520SKenneth D. Merry 
1078130f4520SKenneth D. Merry /* 81 REBUILD(16) */
1079130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1080130f4520SKenneth D. Merry 
1081130f4520SKenneth D. Merry /* 82 REGENERATE(16) */
1082130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1083130f4520SKenneth D. Merry 
1084130f4520SKenneth D. Merry /* 83 EXTENDED COPY */
1085984a2ea9SAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_83), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1086984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE},
1087130f4520SKenneth D. Merry 
1088130f4520SKenneth D. Merry /* 84 RECEIVE COPY RESULTS */
1089984a2ea9SAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_84), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1090984a2ea9SAlexander Motin  CTL_LUN_PAT_NONE},
1091130f4520SKenneth D. Merry 
1092130f4520SKenneth D. Merry /* 85 */
1093130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1094130f4520SKenneth D. Merry 
1095130f4520SKenneth D. Merry /* 86 ACCESS CONTROL IN */
1096130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1097130f4520SKenneth D. Merry 
1098130f4520SKenneth D. Merry /* 87 ACCESS CONTROL OUT */
1099130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1100130f4520SKenneth D. Merry 
1101130f4520SKenneth D. Merry /* 88 READ(16) */
1102*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | CTL_FLAG_DATA_IN |
1103115dc0c7SAlexander Motin                                   CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
11041b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1105b0737f1aSAlexander Motin  16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11061b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1107130f4520SKenneth D. Merry 
110811b569f7SAlexander Motin /* 89 COMPARE AND WRITE */
1109*91be33dcSAlexander Motin {ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
11101b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
11111b08cb4eSAlexander Motin  16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11121b08cb4eSAlexander Motin       0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}},
1113130f4520SKenneth D. Merry 
1114130f4520SKenneth D. Merry /* 8A WRITE(16) */
1115*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
11161b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1117b0737f1aSAlexander Motin  16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11181b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1119130f4520SKenneth D. Merry 
1120130f4520SKenneth D. Merry /* 8B */
1121130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1122130f4520SKenneth D. Merry 
1123130f4520SKenneth D. Merry /* 8C READ ATTRIBUTE */
1124130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1125130f4520SKenneth D. Merry 
1126130f4520SKenneth D. Merry /* 8D WRITE ATTRIBUTE */
1127130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1128130f4520SKenneth D. Merry 
1129130f4520SKenneth D. Merry /* 8E WRITE AND VERIFY(16) */
1130*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
11311b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
11325b5ad150SAlexander Motin  16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11331b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1134130f4520SKenneth D. Merry 
1135130f4520SKenneth D. Merry /* 8F VERIFY(16) */
1136*91be33dcSAlexander Motin {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
113711b569f7SAlexander Motin 			      CTL_FLAG_DATA_OUT |
1138115dc0c7SAlexander Motin 			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
11391b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
11401b08cb4eSAlexander Motin  16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11411b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1142130f4520SKenneth D. Merry 
1143130f4520SKenneth D. Merry /* 90 PRE-FETCH(16) */
1144130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1145130f4520SKenneth D. Merry 
1146130f4520SKenneth D. Merry /* 91 SYNCHRONIZE CACHE(16) */
1147*91be33dcSAlexander Motin {ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_DIRECT |
1148130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_NONE,
11496187d472SAlexander Motin  CTL_LUN_PAT_WRITE,
11507d0d4342SAlexander Motin  16, {0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11511b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1152130f4520SKenneth D. Merry 
1153130f4520SKenneth D. Merry /* 92 LOCK UNLOCK CACHE(16) */
1154130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1155130f4520SKenneth D. Merry 
1156130f4520SKenneth D. Merry /* 93 WRITE SAME(16) */
1157*91be33dcSAlexander Motin {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT |
1158ee7f31c0SAlexander Motin 				   CTL_FLAG_DATA_OUT,
11591b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
116064c5167cSAlexander Motin  16, {0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11611b08cb4eSAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1162130f4520SKenneth D. Merry 
1163130f4520SKenneth D. Merry /* 94 */
1164130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1165130f4520SKenneth D. Merry 
1166130f4520SKenneth D. Merry /* 95 */
1167130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1168130f4520SKenneth D. Merry 
1169130f4520SKenneth D. Merry /* 96 */
1170130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1171130f4520SKenneth D. Merry 
1172130f4520SKenneth D. Merry /* 97 */
1173130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1174130f4520SKenneth D. Merry 
1175130f4520SKenneth D. Merry /* 98 */
1176130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1177130f4520SKenneth D. Merry 
1178130f4520SKenneth D. Merry /* 99 */
1179130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1180130f4520SKenneth D. Merry 
1181130f4520SKenneth D. Merry /* 9A */
1182130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1183130f4520SKenneth D. Merry 
1184de988746SAlexander Motin /* 9B READ BUFFER(16) */
1185de988746SAlexander Motin {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
1186de988746SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STOPPED |
1187de988746SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
1188de988746SAlexander Motin 				     CTL_CMD_FLAG_OK_ON_STANDBY |
1189de988746SAlexander Motin 				     CTL_FLAG_DATA_IN |
1190de988746SAlexander Motin 				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1191de988746SAlexander Motin  CTL_LUN_PAT_NONE,
1192de988746SAlexander Motin  10, {0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1193de988746SAlexander Motin       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1194130f4520SKenneth D. Merry 
11958a416753SAlexander Motin /* 9C WRITE ATOMIC (16) */
1196*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
11978a416753SAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
11988a416753SAlexander Motin  16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
11998a416753SAlexander Motin       0xff, 0xff, 0, 0, 0xff, 0xff, 0, 0x07}},
1200130f4520SKenneth D. Merry 
1201130f4520SKenneth D. Merry /* 9D */
1202130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1203130f4520SKenneth D. Merry 
1204130f4520SKenneth D. Merry /* 9E SERVICE ACTION IN(16) */
12051b08cb4eSAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
12061b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE},
1207130f4520SKenneth D. Merry 
1208130f4520SKenneth D. Merry /* 9F SERVICE ACTION OUT(16) */
1209130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1210130f4520SKenneth D. Merry 
1211130f4520SKenneth D. Merry /* A0 REPORT LUNS */
1212921af507SAlexander Motin {ctl_report_luns, CTL_SERIDX_INQ, CTL_FLAG_DATA_IN |
1213921af507SAlexander Motin 				  CTL_CMD_FLAG_OK_ON_NO_LUN |
1214efbf6139SAlexander Motin 				  CTL_CMD_FLAG_OK_ON_BOTH |
1215130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_ALLOW_ON_RESV |
1216130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_NO_SENSE |
1217130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_OK_ON_STOPPED |
1218130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_OK_ON_INOPERABLE |
12197ac58230SAlexander Motin 				  CTL_CMD_FLAG_OK_ON_STANDBY |
12207ac58230SAlexander Motin 				  CTL_CMD_FLAG_OK_ON_UNAVAIL |
1221921af507SAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
1222921af507SAlexander Motin 				  CTL_CMD_FLAG_RUN_HERE,
12231b08cb4eSAlexander Motin  CTL_LUN_PAT_NONE,
12241b08cb4eSAlexander Motin  12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1225130f4520SKenneth D. Merry 
1226130f4520SKenneth D. Merry /* A1 BLANK */
1227130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1228130f4520SKenneth D. Merry 
1229130f4520SKenneth D. Merry /* A2 SEND EVENT */
1230130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1231130f4520SKenneth D. Merry 
12321b08cb4eSAlexander Motin /* A3 MAINTENANCE IN */
12331b08cb4eSAlexander Motin {__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1234130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
1235130f4520SKenneth D. Merry 
12361b08cb4eSAlexander Motin /* A4 MAINTENANCE OUT */
1237130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1238130f4520SKenneth D. Merry 
1239130f4520SKenneth D. Merry /* A5 MOVE MEDIUM */
1240130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1241130f4520SKenneth D. Merry 
1242130f4520SKenneth D. Merry /* A6 EXCHANGE MEDIUM */
1243130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1244130f4520SKenneth D. Merry 
1245130f4520SKenneth D. Merry /* A7 MOVE MEDIUM ATTACHED */
1246130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1247130f4520SKenneth D. Merry 
1248130f4520SKenneth D. Merry /* A8 READ(12) */
1249*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
1250*91be33dcSAlexander Motin 				  CTL_CMD_FLAG_OK_ON_CDROM |
1251*91be33dcSAlexander Motin 				  CTL_FLAG_DATA_IN |
1252115dc0c7SAlexander Motin 				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
12531b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1254b0737f1aSAlexander Motin  12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1255130f4520SKenneth D. Merry 
1256130f4520SKenneth D. Merry /* A9 PLAY TRACK RELATIVE(12) */
1257130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1258130f4520SKenneth D. Merry 
1259130f4520SKenneth D. Merry /* AA WRITE(12) */
1260*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
12611b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1262b0737f1aSAlexander Motin  12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1263130f4520SKenneth D. Merry 
1264130f4520SKenneth D. Merry /* AB SERVICE ACTION IN(12) */
1265130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1266130f4520SKenneth D. Merry 
1267130f4520SKenneth D. Merry /* AC ERASE(12) */
1268130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1269130f4520SKenneth D. Merry 
1270130f4520SKenneth D. Merry /* AD READ DVD STRUCTURE */
1271130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1272130f4520SKenneth D. Merry 
1273130f4520SKenneth D. Merry /* AE WRITE AND VERIFY(12) */
1274*91be33dcSAlexander Motin {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT,
12751b08cb4eSAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
12765b5ad150SAlexander Motin  12, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1277130f4520SKenneth D. Merry 
1278130f4520SKenneth D. Merry /* AF VERIFY(12) */
1279*91be33dcSAlexander Motin {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT |
128011b569f7SAlexander Motin 			      CTL_FLAG_DATA_OUT |
1281115dc0c7SAlexander Motin 			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
12821b08cb4eSAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
12831b08cb4eSAlexander Motin  12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1284130f4520SKenneth D. Merry 
1285130f4520SKenneth D. Merry /* B0 SEARCH DATA HIGH(12) */
1286130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1287130f4520SKenneth D. Merry 
1288130f4520SKenneth D. Merry /* B1 SEARCH DATA EQUAL(12) */
1289130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1290130f4520SKenneth D. Merry 
1291130f4520SKenneth D. Merry /* B2 SEARCH DATA LOW(12) */
1292130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1293130f4520SKenneth D. Merry 
1294130f4520SKenneth D. Merry /* B3 SET LIMITS(12) */
1295130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1296130f4520SKenneth D. Merry 
1297130f4520SKenneth D. Merry /* B4 READ ELEMENT STATUS ATTACHED */
1298130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1299130f4520SKenneth D. Merry 
1300130f4520SKenneth D. Merry /* B5 REQUEST VOLUME ELEMENT ADDRESS */
1301130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1302130f4520SKenneth D. Merry 
1303130f4520SKenneth D. Merry /* B6 SEND VOLUME TAG */
1304130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1305130f4520SKenneth D. Merry 
1306130f4520SKenneth D. Merry /* B7 READ DEFECT DATA(12) */
1307*91be33dcSAlexander Motin {ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_DIRECT |
1308d70698b3SAlexander Motin 				     CTL_FLAG_DATA_IN |
1309115dc0c7SAlexander Motin 				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1310d70698b3SAlexander Motin  CTL_LUN_PAT_NONE,
1311d70698b3SAlexander Motin  12, {0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1312130f4520SKenneth D. Merry 
1313130f4520SKenneth D. Merry /* B8 READ ELEMENT STATUS */
1314130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1315130f4520SKenneth D. Merry 
1316130f4520SKenneth D. Merry /* B9 READ CD MSF */
1317130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1318130f4520SKenneth D. Merry 
13191b08cb4eSAlexander Motin /* BA REDUNDANCY GROUP IN */
1320130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1321130f4520SKenneth D. Merry 
13221b08cb4eSAlexander Motin /* BB REDUNDANCY GROUP OUT */
1323130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1324130f4520SKenneth D. Merry 
13251b08cb4eSAlexander Motin /* BC SPARE IN */
1326130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1327130f4520SKenneth D. Merry 
1328*91be33dcSAlexander Motin /* BD SPARE OUT / MECHANISM STATUS */
1329*91be33dcSAlexander Motin {ctl_mechanism_status, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM |
1330*91be33dcSAlexander Motin 					  CTL_CMD_FLAG_OK_ON_STOPPED |
1331*91be33dcSAlexander Motin 					  CTL_CMD_FLAG_OK_ON_INOPERABLE |
1332*91be33dcSAlexander Motin 					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV |
1333*91be33dcSAlexander Motin 					  CTL_FLAG_DATA_IN,
1334*91be33dcSAlexander Motin  CTL_LUN_PAT_NONE,
1335*91be33dcSAlexander Motin  12, {0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0, 0x07}},
1336130f4520SKenneth D. Merry 
13371b08cb4eSAlexander Motin /* BE VOLUME SET IN */
1338130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1339130f4520SKenneth D. Merry 
13401b08cb4eSAlexander Motin /* BF VOLUME SET OUT */
1341130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1342130f4520SKenneth D. Merry 
13437ac58230SAlexander Motin /* C0 */
13447ac58230SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1345130f4520SKenneth D. Merry 
13467ac58230SAlexander Motin /* C1 */
13477ac58230SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1348130f4520SKenneth D. Merry 
13497ac58230SAlexander Motin /* C2 */
13507ac58230SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1351130f4520SKenneth D. Merry 
13527ac58230SAlexander Motin /* C3 */
13537ac58230SAlexander Motin {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1354130f4520SKenneth D. Merry 
1355130f4520SKenneth D. Merry /* C4 */
1356130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1357130f4520SKenneth D. Merry 
1358130f4520SKenneth D. Merry /* C5 */
1359130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1360130f4520SKenneth D. Merry 
1361130f4520SKenneth D. Merry /* C6 */
1362130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1363130f4520SKenneth D. Merry 
1364130f4520SKenneth D. Merry /* C7 */
1365130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1366130f4520SKenneth D. Merry 
1367130f4520SKenneth D. Merry /* C8 */
1368130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1369130f4520SKenneth D. Merry 
1370130f4520SKenneth D. Merry /* C9 */
1371130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1372130f4520SKenneth D. Merry 
1373130f4520SKenneth D. Merry /* CA */
1374130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1375130f4520SKenneth D. Merry 
1376130f4520SKenneth D. Merry /* CB */
1377130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1378130f4520SKenneth D. Merry 
1379130f4520SKenneth D. Merry /* CC */
1380130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1381130f4520SKenneth D. Merry 
1382130f4520SKenneth D. Merry /* CD */
1383130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1384130f4520SKenneth D. Merry 
1385130f4520SKenneth D. Merry /* CE */
1386130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1387130f4520SKenneth D. Merry 
1388130f4520SKenneth D. Merry /* CF */
1389130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1390130f4520SKenneth D. Merry 
1391130f4520SKenneth D. Merry /* D0 */
1392130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1393130f4520SKenneth D. Merry 
1394130f4520SKenneth D. Merry /* D1 */
1395130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1396130f4520SKenneth D. Merry 
1397130f4520SKenneth D. Merry /* D2 */
1398130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1399130f4520SKenneth D. Merry 
1400130f4520SKenneth D. Merry /* D3 */
1401130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1402130f4520SKenneth D. Merry 
1403130f4520SKenneth D. Merry /* D4 */
1404130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1405130f4520SKenneth D. Merry 
1406130f4520SKenneth D. Merry /* D5 */
1407130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1408130f4520SKenneth D. Merry 
1409130f4520SKenneth D. Merry /* D6 */
1410130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1411130f4520SKenneth D. Merry 
1412130f4520SKenneth D. Merry /* D7 */
1413130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1414130f4520SKenneth D. Merry 
1415130f4520SKenneth D. Merry /* D8 */
1416130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1417130f4520SKenneth D. Merry 
1418130f4520SKenneth D. Merry /* D9 */
1419130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1420130f4520SKenneth D. Merry 
1421130f4520SKenneth D. Merry /* DA */
1422130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1423130f4520SKenneth D. Merry 
1424130f4520SKenneth D. Merry /* DB */
1425130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1426130f4520SKenneth D. Merry 
1427130f4520SKenneth D. Merry /* DC */
1428130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1429130f4520SKenneth D. Merry 
1430130f4520SKenneth D. Merry /* DD */
1431130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1432130f4520SKenneth D. Merry 
1433130f4520SKenneth D. Merry /* DE */
1434130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1435130f4520SKenneth D. Merry 
1436130f4520SKenneth D. Merry /* DF */
1437130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1438130f4520SKenneth D. Merry 
1439130f4520SKenneth D. Merry /* E0 */
1440130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1441130f4520SKenneth D. Merry 
1442130f4520SKenneth D. Merry /* E1 */
1443130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1444130f4520SKenneth D. Merry 
1445130f4520SKenneth D. Merry /* E2 */
1446130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1447130f4520SKenneth D. Merry 
1448130f4520SKenneth D. Merry /* E3 */
1449130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1450130f4520SKenneth D. Merry 
1451130f4520SKenneth D. Merry /* E4 */
1452130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1453130f4520SKenneth D. Merry 
1454130f4520SKenneth D. Merry /* E5 */
1455130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1456130f4520SKenneth D. Merry 
1457130f4520SKenneth D. Merry /* E6 */
1458130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1459130f4520SKenneth D. Merry 
1460130f4520SKenneth D. Merry /* E7 */
1461130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1462130f4520SKenneth D. Merry 
1463130f4520SKenneth D. Merry /* E8 */
1464130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1465130f4520SKenneth D. Merry 
1466130f4520SKenneth D. Merry /* E9 */
1467130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1468130f4520SKenneth D. Merry 
1469130f4520SKenneth D. Merry /* EA */
1470130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1471130f4520SKenneth D. Merry 
1472130f4520SKenneth D. Merry /* EB */
1473130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1474130f4520SKenneth D. Merry 
1475130f4520SKenneth D. Merry /* EC */
1476130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1477130f4520SKenneth D. Merry 
1478130f4520SKenneth D. Merry /* ED */
1479130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1480130f4520SKenneth D. Merry 
1481130f4520SKenneth D. Merry /* EE */
1482130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1483130f4520SKenneth D. Merry 
1484130f4520SKenneth D. Merry /* EF */
1485130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1486130f4520SKenneth D. Merry 
1487130f4520SKenneth D. Merry /* F0 */
1488130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1489130f4520SKenneth D. Merry 
1490130f4520SKenneth D. Merry /* F1 */
1491130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1492130f4520SKenneth D. Merry 
1493130f4520SKenneth D. Merry /* F2 */
1494130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1495130f4520SKenneth D. Merry 
1496130f4520SKenneth D. Merry /* F3 */
1497130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1498130f4520SKenneth D. Merry 
1499130f4520SKenneth D. Merry /* F4 */
1500130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1501130f4520SKenneth D. Merry 
1502130f4520SKenneth D. Merry /* F5 */
1503130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1504130f4520SKenneth D. Merry 
1505130f4520SKenneth D. Merry /* F6 */
1506130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1507130f4520SKenneth D. Merry 
1508130f4520SKenneth D. Merry /* F7 */
1509130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1510130f4520SKenneth D. Merry 
1511130f4520SKenneth D. Merry /* F8 */
1512130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1513130f4520SKenneth D. Merry 
1514130f4520SKenneth D. Merry /* F9 */
1515130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1516130f4520SKenneth D. Merry 
1517130f4520SKenneth D. Merry /* FA */
1518130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1519130f4520SKenneth D. Merry 
1520130f4520SKenneth D. Merry /* FB */
1521130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1522130f4520SKenneth D. Merry 
1523130f4520SKenneth D. Merry /* FC */
1524130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1525130f4520SKenneth D. Merry 
1526130f4520SKenneth D. Merry /* FD */
1527130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1528130f4520SKenneth D. Merry 
1529130f4520SKenneth D. Merry /* FE */
1530130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1531130f4520SKenneth D. Merry 
1532130f4520SKenneth D. Merry /* FF */
1533130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
1534130f4520SKenneth D. Merry 
1535130f4520SKenneth D. Merry };
1536