1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ 2 /* 3 * Libbrasero-media 4 * Copyright (C) Philippe Rouquier 2005-2009 <bonfire-app@wanadoo.fr> 5 * 6 * Libbrasero-media is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * The Libbrasero-media authors hereby grant permission for non-GPL compatible 12 * GStreamer plugins to be used and distributed together with GStreamer 13 * and Libbrasero-media. This permission is above and beyond the permissions granted 14 * by the GPL license by which Libbrasero-media is covered. If you modify this code 15 * you may extend this exception to your version of the code, but you are not 16 * obligated to do so. If you do not wish to do so, delete this exception 17 * statement from your version. 18 * 19 * Libbrasero-media is distributed in the hope that it will be useful, 20 * but WITHOUT ANY WARRANTY; without even the implied warranty of 21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 * GNU Library General Public License for more details. 23 * 24 * You should have received a copy of the GNU General Public License 25 * along with this program; if not, write to: 26 * The Free Software Foundation, Inc., 27 * 51 Franklin Street, Fifth Floor 28 * Boston, MA 02110-1301, USA. 29 */ 30 31 #include <glib.h> 32 33 #include "scsi-base.h" 34 35 #ifndef _SCSI_GET_CONFIGURATION_H 36 #define _SCSI_GET_CONFIGURATION_H 37 38 G_BEGIN_DECLS 39 40 typedef enum { 41 BRASERO_SCSI_PROF_EMPTY = 0x0000, 42 BRASERO_SCSI_PROF_NON_REMOVABLE = 0x0001, 43 BRASERO_SCSI_PROF_REMOVABLE = 0x0002, 44 BRASERO_SCSI_PROF_MO_ERASABLE = 0x0003, 45 BRASERO_SCSI_PROF_MO_WRITE_ONCE = 0x0004, 46 BRASERO_SCSI_PROF_MO_ADVANCED_STORAGE = 0x0005, 47 /* reserved */ 48 BRASERO_SCSI_PROF_CDROM = 0x0008, 49 BRASERO_SCSI_PROF_CDR = 0x0009, 50 BRASERO_SCSI_PROF_CDRW = 0x000A, 51 /* reserved */ 52 BRASERO_SCSI_PROF_DVD_ROM = 0x0010, 53 BRASERO_SCSI_PROF_DVD_R = 0x0011, 54 BRASERO_SCSI_PROF_DVD_RAM = 0x0012, 55 BRASERO_SCSI_PROF_DVD_RW_RESTRICTED = 0x0013, 56 BRASERO_SCSI_PROF_DVD_RW_SEQUENTIAL = 0x0014, 57 BRASERO_SCSI_PROF_DVD_R_DL_SEQUENTIAL = 0x0015, 58 BRASERO_SCSI_PROF_DVD_R_DL_JUMP = 0x0016, 59 /* reserved */ 60 BRASERO_SCSI_PROF_DVD_RW_PLUS = 0x001A, 61 BRASERO_SCSI_PROF_DVD_R_PLUS = 0x001B, 62 /* reserved */ 63 BRASERO_SCSI_PROF_DDCD_ROM = 0x0020, 64 BRASERO_SCSI_PROF_DDCD_R = 0x0021, 65 BRASERO_SCSI_PROF_DDCD_RW = 0x0022, 66 /* reserved */ 67 BRASERO_SCSI_PROF_DVD_RW_PLUS_DL = 0x002A, 68 BRASERO_SCSI_PROF_DVD_R_PLUS_DL = 0x002B, 69 /* reserved */ 70 BRASERO_SCSI_PROF_BD_ROM = 0x0040, 71 BRASERO_SCSI_PROF_BR_R_SEQUENTIAL = 0x0041, 72 BRASERO_SCSI_PROF_BR_R_RANDOM = 0x0042, 73 BRASERO_SCSI_PROF_BD_RW = 0x0043, 74 BRASERO_SCSI_PROF_HD_DVD_ROM = 0x0050, 75 BRASERO_SCSI_PROF_HD_DVD_R = 0x0051, 76 BRASERO_SCSI_PROF_HD_DVD_RAM = 0x0052, 77 /* reserved */ 78 } BraseroScsiProfile; 79 80 typedef enum { 81 BRASERO_SCSI_INTERFACE_NONE = 0x00000000, 82 BRASERO_SCSI_INTERFACE_SCSI = 0x00000001, 83 BRASERO_SCSI_INTERFACE_ATAPI = 0x00000002, 84 BRASERO_SCSI_INTERFACE_FIREWIRE_95 = 0x00000003, 85 BRASERO_SCSI_INTERFACE_FIREWIRE_A = 0x00000004, 86 BRASERO_SCSI_INTERFACE_FCP = 0x00000005, 87 BRASERO_SCSI_INTERFACE_FIREWIRE_B = 0x00000006, 88 BRASERO_SCSI_INTERFACE_SERIAL_ATAPI = 0x00000007, 89 BRASERO_SCSI_INTERFACE_USB = 0x00000008 90 } BraseroScsiInterface; 91 92 typedef enum { 93 BRASERO_SCSI_LOADING_CADDY = 0x000, 94 BRASERO_SCSI_LOADING_TRAY = 0x001, 95 BRASERO_SCSI_LOADING_POPUP = 0x002, 96 BRASERO_SCSI_LOADING_EMBED_CHANGER_IND = 0X004, 97 BRASERO_SCSI_LOADING_EMBED_CHANGER_MAG = 0x005 98 } BraseroScsiLoadingMech; 99 100 typedef enum { 101 BRASERO_SCSI_FEAT_PROFILES = 0x0000, 102 BRASERO_SCSI_FEAT_CORE = 0x0001, 103 BRASERO_SCSI_FEAT_MORPHING = 0x0002, 104 BRASERO_SCSI_FEAT_REMOVABLE = 0x0003, 105 BRASERO_SCSI_FEAT_WRT_PROTECT = 0x0004, 106 /* reserved */ 107 BRASERO_SCSI_FEAT_RD_RANDOM = 0x0010, 108 /* reserved */ 109 BRASERO_SCSI_FEAT_RD_MULTI = 0x001D, 110 BRASERO_SCSI_FEAT_RD_CD = 0x001E, 111 BRASERO_SCSI_FEAT_RD_DVD = 0x001F, 112 BRASERO_SCSI_FEAT_WRT_RANDOM = 0x0020, 113 BRASERO_SCSI_FEAT_WRT_INCREMENT = 0x0021, 114 BRASERO_SCSI_FEAT_WRT_ERASE = 0x0022, 115 BRASERO_SCSI_FEAT_WRT_FORMAT = 0x0023, 116 BRASERO_SCSI_FEAT_DEFECT_MNGT = 0x0024, 117 BRASERO_SCSI_FEAT_WRT_ONCE = 0x0025, 118 BRASERO_SCSI_FEAT_RESTRICT_OVERWRT = 0x0026, 119 BRASERO_SCSI_FEAT_WRT_CAV_CDRW = 0x0027, 120 BRASERO_SCSI_FEAT_MRW = 0x0028, 121 BRASERO_SCSI_FEAT_DEFECT_REPORT = 0x0029, 122 BRASERO_SCSI_FEAT_WRT_DVDRW_PLUS = 0x002A, 123 BRASERO_SCSI_FEAT_WRT_DVDR_PLUS = 0x002B, 124 BRASERO_SCSI_FEAT_RIGID_OVERWRT = 0x002C, 125 BRASERO_SCSI_FEAT_WRT_TAO = 0x002D, 126 BRASERO_SCSI_FEAT_WRT_SAO_RAW = 0x002E, 127 BRASERO_SCSI_FEAT_WRT_DVD_LESS = 0x002F, 128 BRASERO_SCSI_FEAT_RD_DDCD = 0x0030, 129 BRASERO_SCSI_FEAT_WRT_DDCD = 0x0031, 130 BRASERO_SCSI_FEAT_RW_DDCD = 0x0032, 131 BRASERO_SCSI_FEAT_LAYER_JUMP = 0x0033, 132 BRASERO_SCSI_FEAT_WRT_CDRW = 0x0037, 133 BRASERO_SCSI_FEAT_BDR_POW = 0x0038, 134 /* reserved */ 135 BRASERO_SCSI_FEAT_WRT_DVDRW_PLUS_DL = 0x003A, 136 BRASERO_SCSI_FEAT_WRT_DVDR_PLUS_DL = 0x003B, 137 /* reserved */ 138 BRASERO_SCSI_FEAT_RD_BD = 0x0040, 139 BRASERO_SCSI_FEAT_WRT_BD = 0x0041, 140 BRASERO_SCSI_FEAT_TSR = 0x0042, 141 /* reserved */ 142 BRASERO_SCSI_FEAT_RD_HDDVD = 0x0050, 143 BRASERO_SCSI_FEAT_WRT_HDDVD = 0x0051, 144 /* reserved */ 145 BRASERO_SCSI_FEAT_HYBRID_DISC = 0x0080, 146 /* reserved */ 147 BRASERO_SCSI_FEAT_PWR_MNGT = 0x0100, 148 BRASERO_SCSI_FEAT_SMART = 0x0101, 149 BRASERO_SCSI_FEAT_EMBED_CHNGR = 0x0102, 150 BRASERO_SCSI_FEAT_AUDIO_PLAY = 0x0103, 151 BRASERO_SCSI_FEAT_FIRM_UPGRADE = 0x0104, 152 BRASERO_SCSI_FEAT_TIMEOUT = 0x0105, 153 BRASERO_SCSI_FEAT_DVD_CSS = 0x0106, 154 BRASERO_SCSI_FEAT_REAL_TIME_STREAM = 0x0107, 155 BRASERO_SCSI_FEAT_DRIVE_SERIAL_NB = 0x0108, 156 BRASERO_SCSI_FEAT_MEDIA_SERIAL_NB = 0x0109, 157 BRASERO_SCSI_FEAT_DCB = 0x010A, 158 BRASERO_SCSI_FEAT_DVD_CPRM = 0x010B, 159 BRASERO_SCSI_FEAT_FIRMWARE_INFO = 0x010C, 160 BRASERO_SCSI_FEAT_AACS = 0x010D, 161 /* reserved */ 162 BRASERO_SCSI_FEAT_VCPS = 0x0110, 163 } BraseroScsiFeatureType; 164 165 166 #if G_BYTE_ORDER == G_LITTLE_ENDIAN 167 168 struct _BraseroScsiFeatureDesc { 169 uchar code [2]; 170 171 uchar current :1; 172 uchar persistent :1; 173 uchar version :4; 174 uchar reserved :2; 175 176 uchar add_len; 177 uchar data [0]; 178 }; 179 180 struct _BraseroScsiCoreDescMMC4 { 181 /* this is for MMC4 & MMC5 */ 182 uchar dbe :1; 183 uchar inq2 :1; 184 uchar reserved0 :6; 185 186 uchar reserved1 [3]; 187 }; 188 189 struct _BraseroScsiCoreDescMMC3 { 190 uchar interface [4]; 191 }; 192 193 struct _BraseroScsiProfileDesc { 194 uchar number [2]; 195 196 uchar currentp :1; 197 uchar reserved0 :7; 198 199 uchar reserved1; 200 }; 201 202 struct _BraseroScsiMorphingDesc { 203 uchar async :1; 204 uchar op_chge_event :1; 205 uchar reserved0 :6; 206 207 uchar reserved1 [3]; 208 }; 209 210 struct _BraseroScsiMediumDesc { 211 uchar lock :1; 212 uchar reserved :1; 213 uchar prevent_jmp :1; 214 uchar eject :1; 215 uchar reserved1 :1; 216 uchar loading_mech :3; 217 218 uchar reserved2 [3]; 219 }; 220 221 struct _BraseroScsiWrtProtectDesc { 222 uchar sswpp :1; 223 uchar spwp :1; 224 uchar wdcb :1; 225 uchar dwp :1; 226 uchar reserved0 :4; 227 228 uchar reserved1 [3]; 229 }; 230 231 struct _BraseroScsiRandomReadDesc { 232 uchar block_size [4]; 233 uchar blocking [2]; 234 235 uchar pp :1; 236 uchar reserved0 :7; 237 238 uchar reserved1; 239 }; 240 241 struct _BraseroScsiCDReadDesc { 242 uchar cdtext :1; 243 uchar c2flags :1; 244 uchar reserved0 :5; 245 uchar dap :1; 246 247 uchar reserved1 [3]; 248 }; 249 250 /* MMC5 only otherwise just the header */ 251 struct _BraseroScsiDVDReadDesc { 252 uchar multi110 :1; 253 uchar reserved0 :7; 254 255 uchar reserved1; 256 257 uchar dual_R :1; 258 uchar reserved2 :7; 259 260 uchar reserved3; 261 }; 262 263 struct _BraseroScsiRandomWriteDesc { 264 /* MMC4/MMC5 only */ 265 uchar last_lba [4]; 266 267 uchar block_size [4]; 268 uchar blocking [2]; 269 270 uchar pp :1; 271 uchar reserved0 :7; 272 273 uchar reserved1; 274 }; 275 276 struct _BraseroScsiIncrementalWrtDesc { 277 uchar block_type [2]; 278 279 uchar buf :1; 280 uchar arsv :1; /* MMC5 */ 281 uchar trio :1; /* MMC5 */ 282 uchar reserved0 :5; 283 284 uchar num_link_sizes; 285 uchar links [0]; 286 }; 287 288 /* MMC5 only */ 289 struct _BraseroScsiFormatDesc { 290 uchar cert :1; 291 uchar qcert :1; 292 uchar expand :1; 293 uchar renosa :1; 294 uchar reserved0 :4; 295 296 uchar reserved1 [3]; 297 298 uchar rrm :1; 299 uchar reserved2 :7; 300 301 uchar reserved3 [3]; 302 }; 303 304 struct _BraseroScsiDefectMngDesc { 305 uchar reserved0 :7; 306 uchar ssa :1; 307 308 uchar reserved1 [3]; 309 }; 310 311 struct _BraseroScsiWrtOnceDesc { 312 uchar lba_size [4]; 313 uchar blocking [2]; 314 315 uchar pp :1; 316 uchar reserved0 :7; 317 318 uchar reserved1; 319 }; 320 321 struct _BraseroScsiMRWDesc { 322 uchar wrt_CD :1; 323 uchar rd_DVDplus :1; 324 uchar wrt_DVDplus :1; 325 uchar reserved0 :5; 326 327 uchar reserved1 [3]; 328 }; 329 330 struct _BraseroScsiDefectReportDesc { 331 uchar drt_dm :1; 332 uchar reserved0 :7; 333 334 uchar dbi_zones_num; 335 uchar num_entries [2]; 336 }; 337 338 struct _BraseroScsiDVDRWplusDesc { 339 uchar write :1; 340 uchar reserved0 :7; 341 342 uchar close :1; 343 uchar quick_start :1; 344 uchar reserved1 :6; 345 346 uchar reserved2 [2]; 347 }; 348 349 struct _BraseroScsiDVDRplusDesc { 350 uchar write :1; 351 uchar reserved0 :7; 352 353 uchar reserved1 [3]; 354 }; 355 356 struct _BraseroScsiRigidOverwrtDesc { 357 uchar blank :1; 358 uchar intermediate :1; 359 uchar dsdr :1; 360 uchar dsdg :1; 361 uchar reserved0 :4; 362 363 uchar reserved1 [3]; 364 }; 365 366 struct _BraseroScsiCDTAODesc { 367 uchar RW_subcode :1; 368 uchar CDRW :1; 369 uchar dummy :1; 370 uchar RW_pack :1; 371 uchar RW_raw :1; 372 uchar reserved0 :1; 373 uchar buf :1; 374 uchar reserved1 :1; 375 376 uchar reserved2; 377 378 uchar data_type [2]; 379 }; 380 381 struct _BraseroScsiCDSAODesc { 382 uchar rw_sub_chan :1; 383 uchar rw_CD :1; 384 uchar dummy :1; 385 uchar raw :1; 386 uchar raw_multi :1; 387 uchar sao :1; 388 uchar buf :1; 389 uchar reserved :1; 390 391 uchar max_cue_size [3]; 392 }; 393 394 struct _BraseroScsiDVDRWlessWrtDesc { 395 uchar reserved0 :1; 396 uchar rw_DVD :1; 397 uchar dummy :1; 398 uchar dual_layer_r :1; 399 uchar reserved1 :2; 400 uchar buf :1; 401 uchar reserved2 :1; 402 403 uchar reserved3 [3]; 404 }; 405 406 struct _BraseroScsiCDRWWrtDesc { 407 uchar reserved0; 408 409 uchar sub0 :1; 410 uchar sub1 :1; 411 uchar sub2 :1; 412 uchar sub3 :1; 413 uchar sub4 :1; 414 uchar sub5 :1; 415 uchar sub6 :1; 416 uchar sub7 :1; 417 418 uchar reserved1 [2]; 419 }; 420 421 struct _BraseroScsiDVDRWDLDesc { 422 uchar write :1; 423 uchar reserved0 :7; 424 425 uchar close :1; 426 uchar quick_start :1; 427 uchar reserved1 :6; 428 429 uchar reserved2 [2]; 430 }; 431 432 struct _BraseroScsiDVDRDLDesc { 433 uchar write :1; 434 uchar reserved0 :7; 435 436 uchar reserved1 [3]; 437 }; 438 439 struct _BraseroScsiBDReadDesc { 440 uchar reserved [4]; 441 442 uchar class0_RE_v8 :1; 443 uchar class0_RE_v9 :1; 444 uchar class0_RE_v10 :1; 445 uchar class0_RE_v11 :1; 446 uchar class0_RE_v12 :1; 447 uchar class0_RE_v13 :1; 448 uchar class0_RE_v14 :1; 449 uchar class0_RE_v15 :1; 450 451 uchar class0_RE_v0 :1; 452 uchar class0_RE_v1 :1; 453 uchar class0_RE_v2 :1; 454 uchar class0_RE_v3 :1; 455 uchar class0_RE_v4 :1; 456 uchar class0_RE_v5 :1; 457 uchar class0_RE_v6 :1; 458 uchar class0_RE_v7 :1; 459 460 uchar class1_RE_v8 :1; 461 uchar class1_RE_v9 :1; 462 uchar class1_RE_v10 :1; 463 uchar class1_RE_v11 :1; 464 uchar class1_RE_v12 :1; 465 uchar class1_RE_v13 :1; 466 uchar class1_RE_v14 :1; 467 uchar class1_RE_v15 :1; 468 469 uchar class1_RE_v0 :1; 470 uchar class1_RE_v1 :1; 471 uchar class1_RE_v2 :1; 472 uchar class1_RE_v3 :1; 473 uchar class1_RE_v4 :1; 474 uchar class1_RE_v5 :1; 475 uchar class1_RE_v6 :1; 476 uchar class1_RE_v7 :1; 477 478 uchar class2_RE_v8 :1; 479 uchar class2_RE_v9 :1; 480 uchar class2_RE_v10 :1; 481 uchar class2_RE_v11 :1; 482 uchar class2_RE_v12 :1; 483 uchar class2_RE_v13 :1; 484 uchar class2_RE_v14 :1; 485 uchar class2_RE_v15 :1; 486 487 uchar class2_RE_v0 :1; 488 uchar class2_RE_v1 :1; 489 uchar class2_RE_v2 :1; 490 uchar class2_RE_v3 :1; 491 uchar class2_RE_v4 :1; 492 uchar class2_RE_v5 :1; 493 uchar class2_RE_v6 :1; 494 uchar class2_RE_v7 :1; 495 496 uchar class3_RE_v8 :1; 497 uchar class3_RE_v9 :1; 498 uchar class3_RE_v10 :1; 499 uchar class3_RE_v11 :1; 500 uchar class3_RE_v12 :1; 501 uchar class3_RE_v13 :1; 502 uchar class3_RE_v14 :1; 503 uchar class3_RE_v15 :1; 504 505 uchar class3_RE_v0 :1; 506 uchar class3_RE_v1 :1; 507 uchar class3_RE_v2 :1; 508 uchar class3_RE_v3 :1; 509 uchar class3_RE_v4 :1; 510 uchar class3_RE_v5 :1; 511 uchar class3_RE_v6 :1; 512 uchar class3_RE_v7 :1; 513 514 uchar class0_R_v8 :1; 515 uchar class0_R_v9 :1; 516 uchar class0_R_v10 :1; 517 uchar class0_R_v11 :1; 518 uchar class0_R_v12 :1; 519 uchar class0_R_v13 :1; 520 uchar class0_R_v14 :1; 521 uchar class0_R_v15 :1; 522 523 uchar class0_R_v0 :1; 524 uchar class0_R_v1 :1; 525 uchar class0_R_v2 :1; 526 uchar class0_R_v3 :1; 527 uchar class0_R_v4 :1; 528 uchar class0_R_v5 :1; 529 uchar class0_R_v6 :1; 530 uchar class0_R_v7 :1; 531 532 uchar class1_R_v8 :1; 533 uchar class1_R_v9 :1; 534 uchar class1_R_v10 :1; 535 uchar class1_R_v11 :1; 536 uchar class1_R_v12 :1; 537 uchar class1_R_v13 :1; 538 uchar class1_R_v14 :1; 539 uchar class1_R_v15 :1; 540 541 uchar class1_R_v0 :1; 542 uchar class1_R_v1 :1; 543 uchar class1_R_v2 :1; 544 uchar class1_R_v3 :1; 545 uchar class1_R_v4 :1; 546 uchar class1_R_v5 :1; 547 uchar class1_R_v6 :1; 548 uchar class1_R_v7 :1; 549 550 uchar class2_R_v8 :1; 551 uchar class2_R_v9 :1; 552 uchar class2_R_v10 :1; 553 uchar class2_R_v11 :1; 554 uchar class2_R_v12 :1; 555 uchar class2_R_v13 :1; 556 uchar class2_R_v14 :1; 557 uchar class2_R_v15 :1; 558 559 uchar class2_R_v0 :1; 560 uchar class2_R_v1 :1; 561 uchar class2_R_v2 :1; 562 uchar class2_R_v3 :1; 563 uchar class2_R_v4 :1; 564 uchar class2_R_v5 :1; 565 uchar class2_R_v6 :1; 566 uchar class2_R_v7 :1; 567 568 uchar class3_R_v8 :1; 569 uchar class3_R_v9 :1; 570 uchar class3_R_v10 :1; 571 uchar class3_R_v11 :1; 572 uchar class3_R_v12 :1; 573 uchar class3_R_v13 :1; 574 uchar class3_R_v14 :1; 575 uchar class3_R_v15 :1; 576 577 uchar class3_R_v0 :1; 578 uchar class3_R_v1 :1; 579 uchar class3_R_v2 :1; 580 uchar class3_R_v3 :1; 581 uchar class3_R_v4 :1; 582 uchar class3_R_v5 :1; 583 uchar class3_R_v6 :1; 584 uchar class3_R_v7 :1; 585 }; 586 587 struct _BraseroScsiBDWriteDesc { 588 uchar reserved [4]; 589 590 uchar class0_RE_v8 :1; 591 uchar class0_RE_v9 :1; 592 uchar class0_RE_v10 :1; 593 uchar class0_RE_v11 :1; 594 uchar class0_RE_v12 :1; 595 uchar class0_RE_v13 :1; 596 uchar class0_RE_v14 :1; 597 uchar class0_RE_v15 :1; 598 599 uchar class0_RE_v0 :1; 600 uchar class0_RE_v1 :1; 601 uchar class0_RE_v2 :1; 602 uchar class0_RE_v3 :1; 603 uchar class0_RE_v4 :1; 604 uchar class0_RE_v5 :1; 605 uchar class0_RE_v6 :1; 606 uchar class0_RE_v7 :1; 607 608 uchar class1_RE_v8 :1; 609 uchar class1_RE_v9 :1; 610 uchar class1_RE_v10 :1; 611 uchar class1_RE_v11 :1; 612 uchar class1_RE_v12 :1; 613 uchar class1_RE_v13 :1; 614 uchar class1_RE_v14 :1; 615 uchar class1_RE_v15 :1; 616 617 uchar class1_RE_v0 :1; 618 uchar class1_RE_v1 :1; 619 uchar class1_RE_v2 :1; 620 uchar class1_RE_v3 :1; 621 uchar class1_RE_v4 :1; 622 uchar class1_RE_v5 :1; 623 uchar class1_RE_v6 :1; 624 uchar class1_RE_v7 :1; 625 626 uchar class2_RE_v8 :1; 627 uchar class2_RE_v9 :1; 628 uchar class2_RE_v10 :1; 629 uchar class2_RE_v11 :1; 630 uchar class2_RE_v12 :1; 631 uchar class2_RE_v13 :1; 632 uchar class2_RE_v14 :1; 633 uchar class2_RE_v15 :1; 634 635 uchar class2_RE_v0 :1; 636 uchar class2_RE_v1 :1; 637 uchar class2_RE_v2 :1; 638 uchar class2_RE_v3 :1; 639 uchar class2_RE_v4 :1; 640 uchar class2_RE_v5 :1; 641 uchar class2_RE_v6 :1; 642 uchar class2_RE_v7 :1; 643 644 uchar class3_RE_v8 :1; 645 uchar class3_RE_v9 :1; 646 uchar class3_RE_v10 :1; 647 uchar class3_RE_v11 :1; 648 uchar class3_RE_v12 :1; 649 uchar class3_RE_v13 :1; 650 uchar class3_RE_v14 :1; 651 uchar class3_RE_v15 :1; 652 653 uchar class3_RE_v0 :1; 654 uchar class3_RE_v1 :1; 655 uchar class3_RE_v2 :1; 656 uchar class3_RE_v3 :1; 657 uchar class3_RE_v4 :1; 658 uchar class3_RE_v5 :1; 659 uchar class3_RE_v6 :1; 660 uchar class3_RE_v7 :1; 661 662 uchar class0_R_v8 :1; 663 uchar class0_R_v9 :1; 664 uchar class0_R_v10 :1; 665 uchar class0_R_v11 :1; 666 uchar class0_R_v12 :1; 667 uchar class0_R_v13 :1; 668 uchar class0_R_v14 :1; 669 uchar class0_R_v15 :1; 670 671 uchar class0_R_v0 :1; 672 uchar class0_R_v1 :1; 673 uchar class0_R_v2 :1; 674 uchar class0_R_v3 :1; 675 uchar class0_R_v4 :1; 676 uchar class0_R_v5 :1; 677 uchar class0_R_v6 :1; 678 uchar class0_R_v7 :1; 679 680 uchar class1_R_v8 :1; 681 uchar class1_R_v9 :1; 682 uchar class1_R_v10 :1; 683 uchar class1_R_v11 :1; 684 uchar class1_R_v12 :1; 685 uchar class1_R_v13 :1; 686 uchar class1_R_v14 :1; 687 uchar class1_R_v15 :1; 688 689 uchar class1_R_v0 :1; 690 uchar class1_R_v1 :1; 691 uchar class1_R_v2 :1; 692 uchar class1_R_v3 :1; 693 uchar class1_R_v4 :1; 694 uchar class1_R_v5 :1; 695 uchar class1_R_v6 :1; 696 uchar class1_R_v7 :1; 697 698 uchar class2_R_v8 :1; 699 uchar class2_R_v9 :1; 700 uchar class2_R_v10 :1; 701 uchar class2_R_v11 :1; 702 uchar class2_R_v12 :1; 703 uchar class2_R_v13 :1; 704 uchar class2_R_v14 :1; 705 uchar class2_R_v15 :1; 706 707 uchar class2_R_v0 :1; 708 uchar class2_R_v1 :1; 709 uchar class2_R_v2 :1; 710 uchar class2_R_v3 :1; 711 uchar class2_R_v4 :1; 712 uchar class2_R_v5 :1; 713 uchar class2_R_v6 :1; 714 uchar class2_R_v7 :1; 715 716 uchar class3_R_v8 :1; 717 uchar class3_R_v9 :1; 718 uchar class3_R_v10 :1; 719 uchar class3_R_v11 :1; 720 uchar class3_R_v12 :1; 721 uchar class3_R_v13 :1; 722 uchar class3_R_v14 :1; 723 uchar class3_R_v15 :1; 724 725 uchar class3_R_v0 :1; 726 uchar class3_R_v1 :1; 727 uchar class3_R_v2 :1; 728 uchar class3_R_v3 :1; 729 uchar class3_R_v4 :1; 730 uchar class3_R_v5 :1; 731 uchar class3_R_v6 :1; 732 uchar class3_R_v7 :1; 733 }; 734 735 struct _BraseroScsiHDDVDReadDesc { 736 uchar hd_dvd_r :1; 737 uchar reserved0 :7; 738 739 uchar reserved1; 740 741 uchar hd_dvd_ram :1; 742 uchar reserved2 :7; 743 744 uchar reserved3; 745 }; 746 747 struct _BraseroScsiHDDVDWriteDesc { 748 uchar hd_dvd_r :1; 749 uchar reserved0 :7; 750 751 uchar reserved1; 752 753 uchar hd_dvd_ram :1; 754 uchar reserved2 :7; 755 756 uchar reserved3; 757 }; 758 759 struct _BraseroScsiHybridDiscDesc { 760 uchar ri :1; 761 uchar reserved0 :7; 762 763 uchar reserved1 [3]; 764 }; 765 766 struct _BraseroScsiSmartDesc { 767 uchar pp :1; 768 uchar reserved0 :7; 769 770 uchar reserved1 [3]; 771 }; 772 773 struct _BraseroScsiEmbedChngDesc { 774 uchar reserved0 :1; 775 uchar sdp :1; 776 uchar reserved1 :1; 777 uchar scc :1; 778 uchar reserved2 :3; 779 780 uchar reserved3 [2]; 781 782 uchar slot_num :5; 783 uchar reserved4 :3; 784 }; 785 786 struct _BraseroScsiExtAudioPlayDesc { 787 uchar separate_vol :1; 788 uchar separate_chnl_mute:1; 789 uchar scan_command :1; 790 uchar reserved0 :5; 791 792 uchar reserved1; 793 794 uchar number_vol [2]; 795 }; 796 797 struct _BraseroScsiFirmwareUpgrDesc { 798 uchar m5 :1; 799 uchar reserved0 :7; 800 801 uchar reserved1 [3]; 802 }; 803 804 struct _BraseroScsiTimeoutDesc { 805 uchar group3 :1; 806 uchar reserved0 :7; 807 808 uchar reserved1; 809 uchar unit_len [2]; 810 }; 811 812 struct _BraseroScsiRTStreamDesc { 813 uchar stream_wrt :1; 814 uchar wrt_spd :1; 815 uchar mp2a :1; 816 uchar set_cd_spd :1; 817 uchar rd_buf_caps_block :1; 818 uchar reserved0 :3; 819 820 uchar reserved1 [3]; 821 }; 822 823 struct _BraseroScsiAACSDesc { 824 uchar bng :1; 825 uchar reserved0 :7; 826 827 uchar block_count; 828 829 uchar agids_num :4; 830 uchar reserved1 :4; 831 832 uchar version; 833 }; 834 835 #else 836 837 struct _BraseroScsiFeatureDesc { 838 uchar code [2]; 839 840 uchar current :1; 841 uchar persistent :1; 842 uchar version :4; 843 uchar reserved :2; 844 845 uchar add_len; 846 uchar data [0]; 847 }; 848 849 struct _BraseroScsiProfileDesc { 850 uchar number [2]; 851 852 uchar reserved0 :7; 853 uchar currentp :1; 854 855 uchar reserved1; 856 }; 857 858 struct _BraseroScsiCoreDescMMC4 { 859 uchar reserved0 :6; 860 uchar inq2 :1; 861 uchar dbe :1; 862 863 uchar mmc4 [0]; 864 uchar reserved1 [3]; 865 }; 866 867 struct _BraseroScsiCoreDescMMC3 { 868 uchar interface [4]; 869 }; 870 871 struct _BraseroScsiMorphingDesc { 872 uchar reserved0 :6; 873 uchar op_chge_event :1; 874 uchar async :1; 875 876 uchar reserved1 [3]; 877 }; 878 879 struct _BraseroScsiMediumDesc { 880 uchar loading_mech :3; 881 uchar reserved1 :1; 882 uchar eject :1; 883 uchar prevent_jmp :1; 884 uchar reserved :1; 885 uchar lock :1; 886 887 uchar reserved2 [3]; 888 }; 889 890 struct _BraseroScsiWrtProtectDesc { 891 uchar reserved0 :4; 892 uchar dwp :1; 893 uchar wdcb :1; 894 uchar spwp :1; 895 uchar sswpp :1; 896 897 uchar reserved1 [3]; 898 }; 899 900 struct _BraseroScsiRandomReadDesc { 901 uchar block_size [4]; 902 uchar blocking [2]; 903 904 uchar reserved0 :7; 905 uchar pp :1; 906 907 uchar reserved1; 908 }; 909 910 struct _BraseroScsiCDReadDesc { 911 uchar dap :1; 912 uchar reserved0 :5; 913 uchar c2flags :1; 914 uchar cdtext :1; 915 916 uchar reserved1 [3]; 917 }; 918 919 struct _BraseroScsiDVDReadDesc { 920 uchar reserved0 :7; 921 uchar multi110 :1; 922 923 uchar reserved1; 924 925 uchar reserved2 :7; 926 uchar dual_R :1; 927 928 uchar reserved3; 929 }; 930 931 struct _BraseroScsiRandomWriteDesc { 932 uchar last_lba [4]; 933 uchar block_size [4]; 934 uchar blocking [2]; 935 936 uchar reserved0 :7; 937 uchar pp :1; 938 939 uchar reserved1; 940 }; 941 942 struct _BraseroScsiIncrementalWrtDesc { 943 uchar block_type [2]; 944 945 uchar reserved0 :5; 946 uchar trio :1; 947 uchar arsv :1; 948 uchar buf :1; 949 950 uchar num_link_sizes; 951 uchar links; 952 }; 953 954 struct _BraseroScsiFormatDesc { 955 uchar reserved0 :4; 956 uchar renosa :1; 957 uchar expand :1; 958 uchar qcert :1; 959 uchar cert :1; 960 961 uchar reserved1 [3]; 962 963 uchar reserved2 :7; 964 uchar rrm :1; 965 966 uchar reserved3 [3]; 967 }; 968 969 struct _BraseroScsiDefectMngDesc { 970 uchar ssa :1; 971 uchar reserved0 :7; 972 973 uchar reserved1 [3]; 974 }; 975 976 struct _BraseroScsiWrtOnceDesc { 977 uchar lba_size [4]; 978 uchar blocking [2]; 979 980 uchar reserved0 :7; 981 uchar pp :1; 982 983 uchar reserved1; 984 }; 985 986 struct _BraseroScsiMRWDesc { 987 uchar reserved0 :5; 988 uchar wrt_DVDplus :1; 989 uchar rd_DVDplus :1; 990 uchar wrt_CD :1; 991 992 uchar reserved1 [3]; 993 }; 994 995 struct _BraseroScsiDefectReportDesc { 996 uchar reserved0 :7; 997 uchar drt_dm :1; 998 999 uchar dbi_zones_num; 1000 uchar num_entries [2]; 1001 }; 1002 1003 struct _BraseroScsiDVDRWplusDesc { 1004 uchar reserved0 :7; 1005 uchar write :1; 1006 1007 uchar reserved1 :6; 1008 uchar quick_start :1; 1009 uchar close :1; 1010 1011 uchar reserved2 [2]; 1012 }; 1013 1014 struct _BraseroScsiDVDRplusDesc { 1015 uchar reserved0 :7; 1016 uchar write :1; 1017 1018 uchar reserved1 [3]; 1019 }; 1020 1021 struct _BraseroScsiRigidOverwrtDesc { 1022 uchar reserved0 :4; 1023 uchar dsdg :1; 1024 uchar dsdr :1; 1025 uchar intermediate :1; 1026 uchar blank :1; 1027 1028 uchar reserved1 [3]; 1029 }; 1030 1031 struct _BraseroScsiCDTAODesc { 1032 uchar reserved1 :1; 1033 uchar buf :1; 1034 uchar reserved0 :1; 1035 uchar RW_raw :1; 1036 uchar RW_pack :1; 1037 uchar dummy :1; 1038 uchar CDRW :1; 1039 uchar RW_subcode :1; 1040 1041 uchar reserved2; 1042 1043 uchar data_type [2]; 1044 }; 1045 1046 struct _BraseroScsiCDSAODesc { 1047 uchar reserved :1; 1048 uchar buf :1; 1049 uchar sao :1; 1050 uchar raw_multi :1; 1051 uchar raw :1; 1052 uchar dummy :1; 1053 uchar rw_CD :1; 1054 uchar rw_sub_chan :1; 1055 1056 uchar max_cue_size [3]; 1057 }; 1058 1059 struct _BraseroScsiDVDRWlessWrtDesc { 1060 uchar reserved2 :1; 1061 uchar buf :1; 1062 uchar reserved1 :2; 1063 uchar dual_layer_r :1; 1064 uchar dummy :1; 1065 uchar rw_DVD :1; 1066 uchar reserved0 :1; 1067 1068 uchar reserved3 [3]; 1069 }; 1070 1071 struct _BraseroScsiCDRWWrtDesc { 1072 uchar reserved0; 1073 1074 uchar sub7 :1; 1075 uchar sub6 :1; 1076 uchar sub5 :1; 1077 uchar sub4 :1; 1078 uchar sub3 :1; 1079 uchar sub2 :1; 1080 uchar sub1 :1; 1081 uchar sub0 :1; 1082 1083 uchar reserved1 [2]; 1084 }; 1085 1086 struct _BraseroScsiDVDRWDLDesc { 1087 uchar reserved0 :7; 1088 uchar write :1; 1089 1090 uchar reserved1 :6; 1091 uchar quick_start :1; 1092 uchar close :1; 1093 1094 uchar reserved2 [2]; 1095 }; 1096 1097 struct _BraseroScsiDVDRDLDesc { 1098 uchar reserved0 :7; 1099 uchar write :1; 1100 1101 uchar reserved1 [3]; 1102 }; 1103 1104 struct _BraseroScsiBDReadDesc { 1105 uchar reserved [4]; 1106 1107 uchar class0_RE_v15 :1; 1108 uchar class0_RE_v14 :1; 1109 uchar class0_RE_v13 :1; 1110 uchar class0_RE_v12 :1; 1111 uchar class0_RE_v11 :1; 1112 uchar class0_RE_v10 :1; 1113 uchar class0_RE_v9 :1; 1114 uchar class0_RE_v8 :1; 1115 1116 uchar class0_RE_v7 :1; 1117 uchar class0_RE_v6 :1; 1118 uchar class0_RE_v5 :1; 1119 uchar class0_RE_v4 :1; 1120 uchar class0_RE_v3 :1; 1121 uchar class0_RE_v2 :1; 1122 uchar class0_RE_v1 :1; 1123 uchar class0_RE_v0 :1; 1124 1125 uchar class1_RE_v15 :1; 1126 uchar class1_RE_v14 :1; 1127 uchar class1_RE_v13 :1; 1128 uchar class1_RE_v12 :1; 1129 uchar class1_RE_v11 :1; 1130 uchar class1_RE_v10 :1; 1131 uchar class1_RE_v9 :1; 1132 uchar class1_RE_v8 :1; 1133 1134 uchar class1_RE_v7 :1; 1135 uchar class1_RE_v6 :1; 1136 uchar class1_RE_v5 :1; 1137 uchar class1_RE_v4 :1; 1138 uchar class1_RE_v3 :1; 1139 uchar class1_RE_v2 :1; 1140 uchar class1_RE_v1 :1; 1141 uchar class1_RE_v0 :1; 1142 1143 uchar class2_RE_v15 :1; 1144 uchar class2_RE_v14 :1; 1145 uchar class2_RE_v13 :1; 1146 uchar class2_RE_v12 :1; 1147 uchar class2_RE_v11 :1; 1148 uchar class2_RE_v10 :1; 1149 uchar class2_RE_v9 :1; 1150 uchar class2_RE_v8 :1; 1151 1152 uchar class2_RE_v7 :1; 1153 uchar class2_RE_v6 :1; 1154 uchar class2_RE_v5 :1; 1155 uchar class2_RE_v4 :1; 1156 uchar class2_RE_v3 :1; 1157 uchar class2_RE_v2 :1; 1158 uchar class2_RE_v1 :1; 1159 uchar class2_RE_v0 :1; 1160 1161 uchar class3_RE_v15 :1; 1162 uchar class3_RE_v14 :1; 1163 uchar class3_RE_v13 :1; 1164 uchar class3_RE_v12 :1; 1165 uchar class3_RE_v11 :1; 1166 uchar class3_RE_v10 :1; 1167 uchar class3_RE_v9 :1; 1168 uchar class3_RE_v8 :1; 1169 1170 uchar class3_RE_v7 :1; 1171 uchar class3_RE_v6 :1; 1172 uchar class3_RE_v5 :1; 1173 uchar class3_RE_v4 :1; 1174 uchar class3_RE_v3 :1; 1175 uchar class3_RE_v2 :1; 1176 uchar class3_RE_v1 :1; 1177 uchar class3_RE_v0 :1; 1178 1179 uchar class0_R_v15 :1; 1180 uchar class0_R_v14 :1; 1181 uchar class0_R_v13 :1; 1182 uchar class0_R_v12 :1; 1183 uchar class0_R_v11 :1; 1184 uchar class0_R_v10 :1; 1185 uchar class0_R_v9 :1; 1186 uchar class0_R_v8 :1; 1187 1188 uchar class0_R_v7 :1; 1189 uchar class0_R_v6 :1; 1190 uchar class0_R_v5 :1; 1191 uchar class0_R_v4 :1; 1192 uchar class0_R_v3 :1; 1193 uchar class0_R_v2 :1; 1194 uchar class0_R_v1 :1; 1195 uchar class0_R_v0 :1; 1196 1197 uchar class1_R_v15 :1; 1198 uchar class1_R_v14 :1; 1199 uchar class1_R_v13 :1; 1200 uchar class1_R_v12 :1; 1201 uchar class1_R_v11 :1; 1202 uchar class1_R_v10 :1; 1203 uchar class1_R_v9 :1; 1204 uchar class1_R_v8 :1; 1205 1206 uchar class1_R_v7 :1; 1207 uchar class1_R_v6 :1; 1208 uchar class1_R_v5 :1; 1209 uchar class1_R_v4 :1; 1210 uchar class1_R_v3 :1; 1211 uchar class1_R_v2 :1; 1212 uchar class1_R_v1 :1; 1213 uchar class1_R_v0 :1; 1214 1215 uchar class2_R_v15 :1; 1216 uchar class2_R_v14 :1; 1217 uchar class2_R_v13 :1; 1218 uchar class2_R_v12 :1; 1219 uchar class2_R_v11 :1; 1220 uchar class2_R_v10 :1; 1221 uchar class2_R_v9 :1; 1222 uchar class2_R_v8 :1; 1223 1224 uchar class2_R_v7 :1; 1225 uchar class2_R_v6 :1; 1226 uchar class2_R_v5 :1; 1227 uchar class2_R_v4 :1; 1228 uchar class2_R_v3 :1; 1229 uchar class2_R_v2 :1; 1230 uchar class2_R_v1 :1; 1231 uchar class2_R_v0 :1; 1232 1233 uchar class3_R_v15 :1; 1234 uchar class3_R_v14 :1; 1235 uchar class3_R_v13 :1; 1236 uchar class3_R_v12 :1; 1237 uchar class3_R_v11 :1; 1238 uchar class3_R_v10 :1; 1239 uchar class3_R_v9 :1; 1240 uchar class3_R_v8 :1; 1241 1242 uchar class3_R_v7 :1; 1243 uchar class3_R_v6 :1; 1244 uchar class3_R_v5 :1; 1245 uchar class3_R_v4 :1; 1246 uchar class3_R_v3 :1; 1247 uchar class3_R_v2 :1; 1248 uchar class3_R_v1 :1; 1249 uchar class3_R_v0 :1; 1250 }; 1251 1252 struct _BraseroScsiBDWriteDesc { 1253 uchar reserved [4]; 1254 1255 uchar class0_RE_v15 :1; 1256 uchar class0_RE_v14 :1; 1257 uchar class0_RE_v13 :1; 1258 uchar class0_RE_v12 :1; 1259 uchar class0_RE_v11 :1; 1260 uchar class0_RE_v10 :1; 1261 uchar class0_RE_v9 :1; 1262 uchar class0_RE_v8 :1; 1263 1264 uchar class0_RE_v7 :1; 1265 uchar class0_RE_v6 :1; 1266 uchar class0_RE_v5 :1; 1267 uchar class0_RE_v4 :1; 1268 uchar class0_RE_v3 :1; 1269 uchar class0_RE_v2 :1; 1270 uchar class0_RE_v1 :1; 1271 uchar class0_RE_v0 :1; 1272 1273 uchar class1_RE_v15 :1; 1274 uchar class1_RE_v14 :1; 1275 uchar class1_RE_v13 :1; 1276 uchar class1_RE_v12 :1; 1277 uchar class1_RE_v11 :1; 1278 uchar class1_RE_v10 :1; 1279 uchar class1_RE_v9 :1; 1280 uchar class1_RE_v8 :1; 1281 1282 uchar class1_RE_v7 :1; 1283 uchar class1_RE_v6 :1; 1284 uchar class1_RE_v5 :1; 1285 uchar class1_RE_v4 :1; 1286 uchar class1_RE_v3 :1; 1287 uchar class1_RE_v2 :1; 1288 uchar class1_RE_v1 :1; 1289 uchar class1_RE_v0 :1; 1290 1291 uchar class2_RE_v15 :1; 1292 uchar class2_RE_v14 :1; 1293 uchar class2_RE_v13 :1; 1294 uchar class2_RE_v12 :1; 1295 uchar class2_RE_v11 :1; 1296 uchar class2_RE_v10 :1; 1297 uchar class2_RE_v9 :1; 1298 uchar class2_RE_v8 :1; 1299 1300 uchar class2_RE_v7 :1; 1301 uchar class2_RE_v6 :1; 1302 uchar class2_RE_v5 :1; 1303 uchar class2_RE_v4 :1; 1304 uchar class2_RE_v3 :1; 1305 uchar class2_RE_v2 :1; 1306 uchar class2_RE_v1 :1; 1307 uchar class2_RE_v0 :1; 1308 1309 uchar class3_RE_v15 :1; 1310 uchar class3_RE_v14 :1; 1311 uchar class3_RE_v13 :1; 1312 uchar class3_RE_v12 :1; 1313 uchar class3_RE_v11 :1; 1314 uchar class3_RE_v10 :1; 1315 uchar class3_RE_v9 :1; 1316 uchar class3_RE_v8 :1; 1317 1318 uchar class3_RE_v7 :1; 1319 uchar class3_RE_v6 :1; 1320 uchar class3_RE_v5 :1; 1321 uchar class3_RE_v4 :1; 1322 uchar class3_RE_v3 :1; 1323 uchar class3_RE_v2 :1; 1324 uchar class3_RE_v1 :1; 1325 uchar class3_RE_v0 :1; 1326 1327 uchar class0_R_v15 :1; 1328 uchar class0_R_v14 :1; 1329 uchar class0_R_v13 :1; 1330 uchar class0_R_v12 :1; 1331 uchar class0_R_v11 :1; 1332 uchar class0_R_v10 :1; 1333 uchar class0_R_v9 :1; 1334 uchar class0_R_v8 :1; 1335 1336 uchar class0_R_v7 :1; 1337 uchar class0_R_v6 :1; 1338 uchar class0_R_v5 :1; 1339 uchar class0_R_v4 :1; 1340 uchar class0_R_v3 :1; 1341 uchar class0_R_v2 :1; 1342 uchar class0_R_v1 :1; 1343 uchar class0_R_v0 :1; 1344 1345 uchar class1_R_v15 :1; 1346 uchar class1_R_v14 :1; 1347 uchar class1_R_v13 :1; 1348 uchar class1_R_v12 :1; 1349 uchar class1_R_v11 :1; 1350 uchar class1_R_v10 :1; 1351 uchar class1_R_v9 :1; 1352 uchar class1_R_v8 :1; 1353 1354 uchar class1_R_v7 :1; 1355 uchar class1_R_v6 :1; 1356 uchar class1_R_v5 :1; 1357 uchar class1_R_v4 :1; 1358 uchar class1_R_v3 :1; 1359 uchar class1_R_v2 :1; 1360 uchar class1_R_v1 :1; 1361 uchar class1_R_v0 :1; 1362 1363 uchar class2_R_v15 :1; 1364 uchar class2_R_v14 :1; 1365 uchar class2_R_v13 :1; 1366 uchar class2_R_v12 :1; 1367 uchar class2_R_v11 :1; 1368 uchar class2_R_v10 :1; 1369 uchar class2_R_v9 :1; 1370 uchar class2_R_v8 :1; 1371 1372 uchar class2_R_v7 :1; 1373 uchar class2_R_v6 :1; 1374 uchar class2_R_v5 :1; 1375 uchar class2_R_v4 :1; 1376 uchar class2_R_v3 :1; 1377 uchar class2_R_v2 :1; 1378 uchar class2_R_v1 :1; 1379 uchar class2_R_v0 :1; 1380 1381 uchar class3_R_v15 :1; 1382 uchar class3_R_v14 :1; 1383 uchar class3_R_v13 :1; 1384 uchar class3_R_v12 :1; 1385 uchar class3_R_v11 :1; 1386 uchar class3_R_v10 :1; 1387 uchar class3_R_v9 :1; 1388 uchar class3_R_v8 :1; 1389 1390 uchar class3_R_v7 :1; 1391 uchar class3_R_v6 :1; 1392 uchar class3_R_v5 :1; 1393 uchar class3_R_v4 :1; 1394 uchar class3_R_v3 :1; 1395 uchar class3_R_v2 :1; 1396 uchar class3_R_v1 :1; 1397 uchar class3_R_v0 :1; 1398 }; 1399 1400 struct _BraseroScsiHDDVDReadDesc { 1401 uchar reserved0 :7; 1402 uchar hd_dvd_r :1; 1403 1404 uchar reserved1; 1405 1406 uchar reserved2 :7; 1407 uchar hd_dvd_ram :1; 1408 1409 uchar reserved3; 1410 }; 1411 1412 struct _BraseroScsiHDDVDWriteDesc { 1413 uchar reserved0 :7; 1414 uchar hd_dvd_r :1; 1415 1416 uchar reserved1; 1417 1418 uchar reserved2 :7; 1419 uchar hd_dvd_ram :1; 1420 1421 uchar reserved3; 1422 }; 1423 1424 struct _BraseroScsiHybridDiscDesc { 1425 uchar reserved0 :7; 1426 uchar ri :1; 1427 1428 uchar reserved1 [3]; 1429 }; 1430 1431 struct _BraseroScsiSmartDesc { 1432 uchar reserved0 :7; 1433 uchar pp :1; 1434 1435 uchar reserved1 [3]; 1436 }; 1437 1438 struct _BraseroScsiEmbedChngDesc { 1439 uchar reserved2 :3; 1440 uchar scc :1; 1441 uchar reserved1 :1; 1442 uchar sdp :1; 1443 uchar reserved0 :1; 1444 1445 uchar reserved3 [2]; 1446 1447 uchar reserved4 :3; 1448 uchar slot_num :5; 1449 }; 1450 1451 struct _BraseroScsiExtAudioPlayDesc { 1452 uchar reserved0 :5; 1453 uchar scan_command :1; 1454 uchar separate_chnl_mute:1; 1455 uchar separate_vol :1; 1456 1457 uchar reserved1; 1458 1459 uchar number_vol [2]; 1460 }; 1461 1462 struct _BraseroScsiFirmwareUpgrDesc { 1463 uchar reserved0 :7; 1464 uchar m5 :1; 1465 1466 uchar reserved1 [3]; 1467 }; 1468 1469 struct _BraseroScsiTimeoutDesc { 1470 uchar reserved0 :7; 1471 uchar group3 :1; 1472 1473 uchar reserved1; 1474 uchar unit_len [2]; 1475 }; 1476 1477 struct _BraseroScsiRTStreamDesc { 1478 uchar reserved0 :3; 1479 uchar rd_buf_caps_block :1; 1480 uchar set_cd_spd :1; 1481 uchar mp2a :1; 1482 uchar wrt_spd :1; 1483 uchar stream_wrt :1; 1484 1485 uchar reserved1 [3]; 1486 }; 1487 1488 struct _BraseroScsiAACSDesc { 1489 uchar reserved0 :7; 1490 uchar bng :1; 1491 1492 uchar block_count; 1493 1494 uchar reserved1 :4; 1495 uchar agids_num :4; 1496 1497 uchar version; 1498 }; 1499 1500 #endif 1501 1502 struct _BraseroScsiInterfaceDesc { 1503 uchar code [4]; 1504 }; 1505 1506 struct _BraseroScsiCDrwCavDesc { 1507 uchar reserved [4]; 1508 }; 1509 1510 /* NOTE: this structure is extendable with padding to have a multiple of 4 */ 1511 struct _BraseroScsiLayerJmpDesc { 1512 uchar reserved0 [3]; 1513 uchar num_link_sizes; 1514 uchar links [0]; 1515 }; 1516 1517 struct _BraseroScsiPOWDesc { 1518 uchar reserved [4]; 1519 }; 1520 1521 struct _BraseroScsiDVDCssDesc { 1522 uchar reserved [3]; 1523 uchar version; 1524 }; 1525 1526 /* NOTE: this structure is extendable with padding to have a multiple of 4 */ 1527 struct _BraseroScsiDriveSerialNumDesc { 1528 uchar serial [4]; 1529 }; 1530 1531 struct _BraseroScsiMediaSerialNumDesc { 1532 uchar serial [4]; 1533 }; 1534 1535 /* NOTE: this structure is extendable with padding to have a multiple of 4 */ 1536 struct _BraseroScsiDiscCtlBlocksDesc { 1537 uchar entry [1][4]; 1538 }; 1539 1540 struct _BraseroScsiDVDCprmDesc { 1541 uchar reserved0 [3]; 1542 uchar version; 1543 }; 1544 1545 struct _BraseroScsiFirmwareDesc { 1546 uchar century [2]; 1547 uchar year [2]; 1548 uchar month [2]; 1549 uchar day [2]; 1550 uchar hour [2]; 1551 uchar minute [2]; 1552 uchar second [2]; 1553 uchar reserved [2]; 1554 }; 1555 1556 struct _BraseroScsiVPSDesc { 1557 uchar reserved [4]; 1558 }; 1559 1560 typedef struct _BraseroScsiFeatureDesc BraseroScsiFeatureDesc; 1561 typedef struct _BraseroScsiProfileDesc BraseroScsiProfileDesc; 1562 typedef struct _BraseroScsiCoreDescMMC3 BraseroScsiCoreDescMMC3; 1563 typedef struct _BraseroScsiCoreDescMMC4 BraseroScsiCoreDescMMC4; 1564 typedef struct _BraseroScsiInterfaceDesc BraseroScsiInterfaceDesc; 1565 typedef struct _BraseroScsiMorphingDesc BraseroScsiMorphingDesc; 1566 typedef struct _BraseroScsiMediumDesc BraseroScsiMediumDesc; 1567 typedef struct _BraseroScsiWrtProtectDesc BraseroScsiWrtProtectDesc; 1568 typedef struct _BraseroScsiRandomReadDesc BraseroScsiRandomReadDesc; 1569 typedef struct _BraseroScsiCDReadDesc BraseroScsiCDReadDesc; 1570 typedef struct _BraseroScsiDVDReadDesc BraseroScsiDVDReadDesc; 1571 typedef struct _BraseroScsiRandomWriteDesc BraseroScsiRandomWriteDesc; 1572 typedef struct _BraseroScsiIncrementalWrtDesc BraseroScsiIncrementalWrtDesc; 1573 typedef struct _BraseroScsiFormatDesc BraseroScsiFormatDesc; 1574 typedef struct _BraseroScsiDefectMngDesc BraseroScsiDefectMngDesc; 1575 typedef struct _BraseroScsiWrtOnceDesc BraseroScsiWrtOnceDesc; 1576 typedef struct _BraseroScsiCDrwCavDesc BraseroScsiCDrwCavDesc; 1577 typedef struct _BraseroScsiMRWDesc BraseroScsiMRWDesc; 1578 typedef struct _BraseroScsiDefectReportDesc BraseroScsiDefectReportDesc; 1579 typedef struct _BraseroScsiDVDRWplusDesc BraseroScsiDVDRWplusDesc; 1580 typedef struct _BraseroScsiDVDRplusDesc BraseroScsiDVDRplusDesc; 1581 typedef struct _BraseroScsiRigidOverwrtDesc BraseroScsiRigidOverwrtDesc; 1582 typedef struct _BraseroScsiCDTAODesc BraseroScsiCDTAODesc; 1583 typedef struct _BraseroScsiCDSAODesc BraseroScsiCDSAODesc; 1584 typedef struct _BraseroScsiDVDRWlessWrtDesc BraseroScsiDVDRWlessWrtDesc; 1585 typedef struct _BraseroScsiLayerJmpDesc BraseroScsiLayerJmpDesc; 1586 typedef struct _BraseroScsiCDRWWrtDesc BraseroScsiCDRWWrtDesc; 1587 typedef struct _BraseroScsiDVDRWDLDesc BraseroScsiDVDRWDLDesc; 1588 typedef struct _BraseroScsiDVDRDLDesc BraseroScsiDVDRDLDesc; 1589 typedef struct _BraseroScsiBDReadDesc BraseroScsiBDReadDesc; 1590 typedef struct _BraseroScsiBDWriteDesc BraseroScsiBDWriteDesc; 1591 typedef struct _BraseroScsiHDDVDReadDesc BraseroScsiHDDVDReadDesc; 1592 typedef struct _BraseroScsiHDDVDWriteDesc BraseroScsiHDDVDWriteDesc; 1593 typedef struct _BraseroScsiHybridDiscDesc BraseroScsiHybridDiscDesc; 1594 typedef struct _BraseroScsiSmartDesc BraseroScsiSmartDesc; 1595 typedef struct _BraseroScsiEmbedChngDesc BraseroScsiEmbedChngDesc; 1596 typedef struct _BraseroScsiExtAudioPlayDesc BraseroScsiExtAudioPlayDesc; 1597 typedef struct _BraseroScsiFirmwareUpgrDesc BraseroScsiFirmwareUpgrDesc; 1598 typedef struct _BraseroScsiTimeoutDesc BraseroScsiTimeoutDesc; 1599 typedef struct _BraseroScsiRTStreamDesc BraseroScsiRTStreamDesc; 1600 typedef struct _BraseroScsiAACSDesc BraseroScsiAACSDesc; 1601 typedef struct _BraseroScsiPOWDesc BraseroScsiPOWDesc; 1602 typedef struct _BraseroScsiDVDCssDesc BraseroScsiDVDCssDesc; 1603 typedef struct _BraseroScsiDriveSerialNumDesc BraseroScsiDriveSerialNumDesc; 1604 typedef struct _BraseroScsiMediaSerialNumDesc BraseroScsiMediaSerialNumDesc; 1605 typedef struct _BraseroScsiDiscCtlBlocksDesc BraseroScsiDiscCtlBlocksDesc; 1606 typedef struct _BraseroScsiDVDCprmDesc BraseroScsiDVDCprmDesc; 1607 typedef struct _BraseroScsiFirmwareDesc BraseroScsiFirmwareDesc; 1608 typedef struct _BraseroScsiVPSDesc BraseroScsiVPSDesc; 1609 1610 struct _BraseroScsiGetConfigHdr { 1611 uchar len [4]; 1612 uchar reserved [2]; 1613 uchar current_profile [2]; 1614 1615 BraseroScsiFeatureDesc desc [0]; 1616 }; 1617 typedef struct _BraseroScsiGetConfigHdr BraseroScsiGetConfigHdr; 1618 1619 G_END_DECLS 1620 1621 #endif /* _SCSI_GET_CONFIGURATION_H */ 1622 1623 1624