2 * This file has been modified for the cdrkit suite.
4 * The behaviour and appearence of the program code below can differ to a major
5 * extent from the version distributed by the original author(s).
7 * For details, see Changelog file distributed with the cdrkit package. If you
8 * received this file from another source then ask the distributing person for
9 * a log of modifications.
13 /* @(#)scsimmc.h 1.11 04/03/01 Copyright 1997-2004 J. Schilling */
15 * Definitions for SCSI/mmc compliant drives
17 * Copyright (c) 1997-2004 J. Schilling
20 * This program is free software; you can redistribute it and/or modify
21 * it under the terms of the GNU General Public License version 2
22 * as published by the Free Software Foundation.
24 * This program is distributed in the hope that it will be useful,
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 * GNU General Public License for more details.
29 * You should have received a copy of the GNU General Public License along with
30 * this program; see the file COPYING. If not, write to the Free Software
31 * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
45 #if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
48 Uchar data_len[2]; /* Data len without this info */
49 Ucbit disk_status : 2; /* Status of the disk */
50 Ucbit sess_status : 2; /* Status of last session */
51 Ucbit erasable : 1; /* Disk is erasable */
52 Ucbit res2 : 3; /* Reserved */
53 Uchar first_track; /* # of first track on disk */
54 Uchar numsess; /* # of sessions */
55 Uchar first_track_ls; /* First track in last sessaion */
56 Uchar last_track_ls; /* Last track in last sessaion */
57 Ucbit bg_format_stat : 2; /* Background format status */
58 Ucbit dbit : 1; /* Dirty Bit of defect table */
59 Ucbit res7_34 : 2; /* Reserved */
60 Ucbit uru : 1; /* This is an unrestricted disk */
61 Ucbit dbc_v : 1; /* Disk bar code valid */
62 Ucbit did_v : 1; /* Disk id valid */
63 Uchar disk_type; /* Disk type */
64 Uchar res9[3]; /* Reserved */
65 Uchar disk_id[4]; /* Disk identification */
66 Uchar last_lead_in[4]; /* Last session lead in time */
67 Uchar last_lead_out[4]; /* Last session lead out time */
68 Uchar disk_barcode[8]; /* Disk bar code */
69 Uchar res32; /* Reserved */
70 Uchar num_opc_entries; /* # of OPC table entries */
71 opc_t opc_table[1]; /* OPC table */
74 #else /* Motorola bitorder */
77 Uchar data_len[2]; /* Data len without this info */
78 Ucbit res2 : 3; /* Reserved */
79 Ucbit erasable : 1; /* Disk is erasable */
80 Ucbit sess_status : 2; /* Status of last session */
81 Ucbit disk_status : 2; /* Status of the disk */
82 Uchar first_track; /* # of first track on disk */
83 Uchar numsess; /* # of sessions */
84 Uchar first_track_ls; /* First track in last sessaion */
85 Uchar last_track_ls; /* Last track in last sessaion */
86 Ucbit did_v : 1; /* Disk id valid */
87 Ucbit dbc_v : 1; /* Disk bar code valid */
88 Ucbit uru : 1; /* This is an unrestricted disk */
89 Ucbit res7_34 : 2; /* Reserved */
90 Ucbit dbit : 1; /* Dirty Bit of defect table */
91 Ucbit bg_format_stat : 2; /* Background format status */
92 Uchar disk_type; /* Disk type */
93 Uchar res9[3]; /* Reserved */
94 Uchar disk_id[4]; /* Disk identification */
95 Uchar last_lead_in[4]; /* Last session lead in time */
96 Uchar last_lead_out[4]; /* Last session lead out time */
97 Uchar disk_barcode[8]; /* Disk bar code */
98 Uchar res32; /* Reserved */
99 Uchar num_opc_entries; /* # of OPC table entries */
100 opc_t opc_table[1]; /* OPC table */
105 struct cd_mode_data {
106 struct scsi_mode_header header;
108 struct cd_mode_page_05 page05;
109 struct cd_mode_page_2A page2A;
125 #if defined(_BIT_FIELDS_LTOH) /* Intel byteorder */
128 #else /* Motorola byteorder */
146 struct ftrackdesc desc[1];
151 #if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
154 Ucbit ref_speed : 3; /* Reference speed */
155 Ucbit res4_3 : 1; /* Reserved */
156 Ucbit ind_wr_power : 3; /* Indicative tgt writing power */
157 Ucbit res4_7 : 1; /* Reserved (must be "1") */
158 Ucbit res5_05 : 6; /* Reserved */
159 Ucbit uru : 1; /* Disk is for unrestricted use */
160 Ucbit res5_7 : 1; /* Reserved (must be "0") */
161 Ucbit a3_v : 1; /* A 3 Values valid */
162 Ucbit a2_v : 1; /* A 2 Values valid */
163 Ucbit a1_v : 1; /* A 1 Values valid */
164 Ucbit sub_type : 3; /* Disc sub type */
165 Ucbit erasable : 1; /* Disk is erasable */
166 Ucbit res6_7 : 1; /* Reserved (must be "1") */
167 Uchar lead_in[4]; /* Lead in time */
168 Uchar lead_out[4]; /* Lead out time */
169 Uchar res15; /* Reserved */
170 Ucbit clv_high : 4; /* Highes usable CLV recording speed */
171 Ucbit clv_low : 3; /* Lowest usable CLV recording speed */
172 Ucbit res16_7 : 1; /* Reserved (must be "0") */
173 Ucbit res17_0 : 1; /* Reserved */
174 Ucbit tgt_y_pow : 3; /* Tgt y val of the power mod fun */
175 Ucbit power_mult : 3; /* Power multiplication factor */
176 Ucbit res17_7 : 1; /* Reserved (must be "0") */
177 Ucbit res_18_30 : 4; /* Reserved */
178 Ucbit rerase_pwr_ratio: 3; /* Recommended erase/write power*/
179 Ucbit res18_7 : 1; /* Reserved (must be "1") */
180 Uchar res19; /* Reserved */
181 Uchar a2[3]; /* A 2 Values */
182 Uchar res23; /* Reserved */
183 Uchar a3[3]; /* A 3 Vaules */
184 Uchar res27; /* Reserved */
187 #else /* Motorola bitorder */
190 Ucbit res4_7 : 1; /* Reserved (must be "1") */
191 Ucbit ind_wr_power : 3; /* Indicative tgt writing power */
192 Ucbit res4_3 : 1; /* Reserved */
193 Ucbit ref_speed : 3; /* Reference speed */
194 Ucbit res5_7 : 1; /* Reserved (must be "0") */
195 Ucbit uru : 1; /* Disk is for unrestricted use */
196 Ucbit res5_05 : 6; /* Reserved */
197 Ucbit res6_7 : 1; /* Reserved (must be "1") */
198 Ucbit erasable : 1; /* Disk is erasable */
199 Ucbit sub_type : 3; /* Disc sub type */
200 Ucbit a1_v : 1; /* A 1 Values valid */
201 Ucbit a2_v : 1; /* A 2 Values valid */
202 Ucbit a3_v : 1; /* A 3 Values valid */
203 Uchar lead_in[4]; /* Lead in time */
204 Uchar lead_out[4]; /* Lead out time */
205 Uchar res15; /* Reserved */
206 Ucbit res16_7 : 1; /* Reserved (must be "0") */
207 Ucbit clv_low : 3; /* Lowest usable CLV recording speed */
208 Ucbit clv_high : 4; /* Highes usable CLV recording speed */
209 Ucbit res17_7 : 1; /* Reserved (must be "0") */
210 Ucbit power_mult : 3; /* Power multiplication factor */
211 Ucbit tgt_y_pow : 3; /* Tgt y val of the power mod fun */
212 Ucbit res17_0 : 1; /* Reserved */
213 Ucbit res18_7 : 1; /* Reserved (must be "1") */
214 Ucbit rerase_pwr_ratio: 3; /* Recommended erase/write power*/
215 Ucbit res_18_30 : 4; /* Reserved */
216 Uchar res19; /* Reserved */
217 Uchar a2[3]; /* A 2 Values */
218 Uchar res23; /* Reserved */
219 Uchar a3[3]; /* A 3 Vaules */
220 Uchar res27; /* Reserved */
227 struct atipdesc desc;
231 * XXX Check how we may merge Track_info & Rzone_info
233 #if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
236 Uchar data_len[2]; /* Data len without this info */
237 Uchar track_number; /* Track number for this info */
238 Uchar session_number; /* Session number for this info */
239 Uchar res4; /* Reserved */
240 Ucbit track_mode : 4; /* Track mode (Q-sub control) */
241 Ucbit copy : 1; /* This track is a higher copy */
242 Ucbit damage : 1; /* if 1 & nwa_valid 0: inc track*/
243 Ucbit res5_67 : 2; /* Reserved */
244 Ucbit data_mode : 4; /* Data mode of this track */
245 Ucbit fp : 1; /* This is a fixed packet track */
246 Ucbit packet : 1; /* This track is in packet mode */
247 Ucbit blank : 1; /* This is an invisible track */
248 Ucbit rt : 1; /* This is a reserved track */
249 Ucbit nwa_valid : 1; /* Next writable addr valid */
250 Ucbit res7_17 : 7; /* Reserved */
251 Uchar track_start[4]; /* Track start address */
252 Uchar next_writable_addr[4]; /* Next writable address */
253 Uchar free_blocks[4]; /* Free usr blocks in this track*/
254 Uchar packet_size[4]; /* Packet size if in fixed mode */
255 Uchar track_size[4]; /* # of user data blocks in trk */
258 #else /* Motorola bitorder */
261 Uchar data_len[2]; /* Data len without this info */
262 Uchar track_number; /* Track number for this info */
263 Uchar session_number; /* Session number for this info */
264 Uchar res4; /* Reserved */
265 Ucbit res5_67 : 2; /* Reserved */
266 Ucbit damage : 1; /* if 1 & nwa_valid 0: inc track*/
267 Ucbit copy : 1; /* This track is a higher copy */
268 Ucbit track_mode : 4; /* Track mode (Q-sub control) */
269 Ucbit rt : 1; /* This is a reserved track */
270 Ucbit blank : 1; /* This is an invisible track */
271 Ucbit packet : 1; /* This track is in packet mode */
272 Ucbit fp : 1; /* This is a fixed packet track */
273 Ucbit data_mode : 4; /* Data mode of this track */
274 Ucbit res7_17 : 7; /* Reserved */
275 Ucbit nwa_valid : 1; /* Next writable addr valid */
276 Uchar track_start[4]; /* Track start address */
277 Uchar next_writable_addr[4]; /* Next writable address */
278 Uchar free_blocks[4]; /* Free usr blocks in this track*/
279 Uchar packet_size[4]; /* Packet size if in fixed mode */
280 Uchar track_size[4]; /* # of user data blocks in trk */
286 * XXX Check how we may merge Track_info & Rzone_info
288 #if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
291 Uchar data_len[2]; /* Data len without this info */
292 Uchar rzone_num_lsb; /* RZone number LSB */
293 Uchar border_num_lsb; /* Border number LSB */
294 Uchar res_4; /* Reserved */
295 Ucbit res5_04 : 5; /* Reserved */
296 Ucbit damage : 1; /* Damaged RZone */
297 Ucbit res5_67 : 2; /* Reserved */
298 Ucbit res6_04 : 5; /* Reserved */
299 Ucbit incremental : 1; /* RZone is to be written incremental */
300 Ucbit blank : 1; /* RZone is blank */
301 Ucbit rt : 1; /* RZone is reserved */
302 Ucbit nwa_v : 1; /* Next WR address is valid */
303 Ucbit lra_v : 1; /* Last rec address is valid */
304 Ucbit res7_27 : 6; /* Reserved */
305 Uchar rzone_start[4]; /* RZone start address */
306 Uchar next_recordable_addr[4]; /* Next recordable address */
307 Uchar free_blocks[4]; /* Free blocks in RZone */
308 Uchar block_factor[4]; /* # of sectors of disc acc unit */
309 Uchar rzone_size[4]; /* RZone size */
310 Uchar last_recorded_addr[4]; /* Last Recorded addr in RZone */
311 Uchar rzone_num_msb; /* RZone number MSB */
312 Uchar border_num_msb; /* Border number MSB */
313 Uchar res_34_35[2]; /* Reserved */
316 #else /* Motorola bitorder */
319 Uchar data_len[2]; /* Data len without this info */
320 Uchar rzone_num_lsb; /* RZone number LSB */
321 Uchar border_num_lsb; /* Border number LSB */
322 Uchar res_4; /* Reserved */
323 Ucbit res5_67 : 2; /* Reserved */
324 Ucbit damage : 1; /* Damaged RZone */
325 Ucbit res5_04 : 5; /* Reserved */
326 Ucbit rt : 1; /* RZone is reserved */
327 Ucbit blank : 1; /* RZone is blank */
328 Ucbit incremental : 1; /* RZone is to be written incremental */
329 Ucbit res6_04 : 5; /* Reserved */
330 Ucbit res7_27 : 6; /* Reserved */
331 Ucbit lra_v : 1; /* Last rec address is valid */
332 Ucbit nwa_v : 1; /* Next WR address is valid */
333 Uchar rzone_start[4]; /* RZone start address */
334 Uchar next_recordable_addr[4]; /* Next recordable address */
335 Uchar free_blocks[4]; /* Free blocks in RZone */
336 Uchar block_factor[4]; /* # of sectors of disc acc unit */
337 Uchar rzone_size[4]; /* RZone size */
338 Uchar last_recorded_addr[4]; /* Last Recorded addr in RZone */
339 Uchar rzone_num_msb; /* RZone number MSB */
340 Uchar border_num_msb; /* Border number MSB */
341 Uchar res_34_35[2]; /* Reserved */
346 #if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
348 struct dvd_structure_00 {
349 Uchar data_len[2]; /* Data len without this info */
350 Uchar res23[2]; /* Reserved */
351 Ucbit book_version : 4; /* DVD Book version */
352 Ucbit book_type : 4; /* DVD Book type */
353 Ucbit minimum_rate : 4; /* Minimum data rate (coded) */
354 Ucbit disc_size : 4; /* Disc size (coded) */
355 Ucbit layer_type : 4; /* Layer type */
356 Ucbit track_path : 1; /* 0 = parallel, 1 = opposit dir*/
357 Ucbit numlayers : 2; /* Number of Layers (0 == 1) */
358 Ucbit res2_7 : 1; /* Reserved */
359 Ucbit track_density : 4; /* Track density (coded) */
360 Ucbit linear_density : 4; /* Linear data density (coded) */
361 Uchar res8; /* Reserved */
362 Uchar phys_start[3]; /* Starting Physical sector # */
363 Uchar res12; /* Reserved */
364 Uchar phys_end[3]; /* End physical data sector # */
365 Uchar res16; /* Reserved */
366 Uchar end_layer0[3]; /* End sector # in layer */
367 Ucbit res20 : 7; /* Reserved */
368 Ucbit bca : 1; /* BCA flag bit */
371 #else /* Motorola bitorder */
373 struct dvd_structure_00 {
374 Uchar data_len[2]; /* Data len without this info */
375 Uchar res23[2]; /* Reserved */
376 Ucbit book_type : 4; /* DVD Book type */
377 Ucbit book_version : 4; /* DVD Book version */
378 Ucbit disc_size : 4; /* Disc size (coded) */
379 Ucbit minimum_rate : 4; /* Minimum data rate (coded) */
380 Ucbit res2_7 : 1; /* Reserved */
381 Ucbit numlayers : 2; /* Number of Layers (0 == 1) */
382 Ucbit track_path : 1; /* 0 = parallel, 1 = opposit dir*/
383 Ucbit layer_type : 4; /* Layer type */
384 Ucbit linear_density : 4; /* Linear data density (coded) */
385 Ucbit track_density : 4; /* Track density (coded) */
386 Uchar res8; /* Reserved */
387 Uchar phys_start[3]; /* Starting Physical sector # */
388 Uchar res12; /* Reserved */
389 Uchar phys_end[3]; /* End physical data sector # */
390 Uchar res16; /* Reserved */
391 Uchar end_layer0[3]; /* End sector # in layer */
392 Ucbit bca : 1; /* BCA flag bit */
393 Ucbit res20 : 7; /* Reserved */
398 struct dvd_structure_01 {
399 Uchar data_len[2]; /* Data len without this info */
400 Uchar res23[2]; /* Reserved */
401 Uchar copyr_prot_type; /* Copyright prot system type */
402 Uchar region_mgt_info; /* Region management info */
403 Uchar res67[2]; /* Reserved */
406 struct dvd_structure_02 {
407 Uchar data_len[2]; /* Data len without this info */
408 Uchar res23[2]; /* Reserved */
409 Uchar key_data[2048]; /* Disc Key data */
412 struct dvd_structure_03 {
413 Uchar data_len[2]; /* Data len without this info */
414 Uchar res23[2]; /* Reserved */
415 Uchar bca_info[1]; /* BCA information (12-188 bytes)*/
418 struct dvd_structure_04 {
419 Uchar data_len[2]; /* Data len without this info */
420 Uchar res23[2]; /* Reserved */
421 Uchar man_info[2048]; /* Disc manufacturing info */
424 #if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
426 struct dvd_structure_05 {
427 Uchar data_len[2]; /* Data len without this info */
428 Uchar res23[2]; /* Reserved */
429 Ucbit res4_03 : 4; /* Reserved */
430 Ucbit cgms : 2; /* CGMS (see below) */
431 Ucbit res4_6 : 1; /* Reserved */
432 Ucbit cpm : 1; /* This is copyrighted material */
433 Uchar res57[3]; /* Reserved */
436 #else /* Motorola bitorder */
438 struct dvd_structure_05 {
439 Uchar data_len[2]; /* Data len without this info */
440 Uchar res23[2]; /* Reserved */
441 Ucbit cpm : 1; /* This is copyrighted material */
442 Ucbit res4_6 : 1; /* Reserved */
443 Ucbit cgms : 2; /* CGMS (see below) */
444 Ucbit res4_03 : 4; /* Reserved */
445 Uchar res57[3]; /* Reserved */
450 #define CGMS_PERMITTED 0 /* Unlimited copy permitted */
451 #define CGMS_RES 1 /* Reserved */
452 #define CGMS_ONE_COPY 2 /* One copy permitted */
453 #define CGMS_NO_COPY 3 /* No copy permitted */
455 struct dvd_structure_0D {
456 Uchar data_len[2]; /* Data len without this info */
457 Uchar res23[2]; /* Reserved */
458 Uchar last_rma_sector[2]; /* Last recorded RMA sector # */
459 Uchar rmd_bytes[1]; /* Content of Record man area */
462 struct dvd_structure_0E {
463 Uchar data_len[2]; /* Data len without this info */
464 Uchar res23[2]; /* Reserved */
465 Uchar field_id; /* Field ID (1) */
466 Uchar application_code; /* Disc Application code */
467 Uchar phys_data; /* Disc Phisical Data */
468 Uchar last_recordable_addr[3]; /* Last addr of recordable area */
469 Uchar res_a[2]; /* Reserved */
470 Uchar field_id_2; /* Field ID (2) */
471 Uchar ind_wr_power; /* Recommended writing power */
472 Uchar ind_wavelength; /* Wavelength for ind_wr_power */
473 Uchar opt_wr_strategy[4]; /* Optimum write Strategy */
474 Uchar res_b[1]; /* Reserved */
475 Uchar field_id_3; /* Field ID (3) */
476 Uchar man_id[6]; /* Manufacturer ID */
477 Uchar res_m1; /* Reserved */
478 Uchar field_id_4; /* Field ID (4) */
479 Uchar man_id2[6]; /* Manufacturer ID */
480 Uchar res_m2; /* Reserved */
483 struct dvd_structure_0F {
484 Uchar data_len[2]; /* Data len without this info */
485 Uchar res23[2]; /* Reserved */
486 Uchar res45[2]; /* Reserved */
487 Uchar random[2]; /* Random number */
488 Uchar year[4]; /* Year (ascii) */
489 Uchar month[2]; /* Month (ascii) */
490 Uchar day[2]; /* Day (ascii) */
491 Uchar hour[2]; /* Hour (ascii) */
492 Uchar minute[2]; /* Minute (ascii) */
493 Uchar second[2]; /* Second (ascii) */
496 struct dvd_structure_0F_w {
497 Uchar data_len[2]; /* Data len without this info */
498 Uchar res23[2]; /* Reserved */
499 Uchar res45[2]; /* Reserved */
500 Uchar year[4]; /* Year (ascii) */
501 Uchar month[2]; /* Month (ascii) */
502 Uchar day[2]; /* Day (ascii) */
503 Uchar hour[2]; /* Hour (ascii) */
504 Uchar minute[2]; /* Minute (ascii) */
505 Uchar second[2]; /* Second (ascii) */
509 Uchar cs_ctladr; /* CTL/ADR for this track */
510 Uchar cs_tno; /* This track number */
511 Uchar cs_index; /* Index within this track */
512 Uchar cs_dataform; /* Data form */
513 Uchar cs_scms; /* Serial copy management */
514 Uchar cs_min; /* Absolute time minutes */
515 Uchar cs_sec; /* Absolute time seconds */
516 Uchar cs_frame; /* Absolute time frames */
519 struct mmc_performance_header {
520 Uchar p_datalen[4]; /* Performance Data length */
521 #if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
522 Ucbit p_exept :1; /* Nominal vs. Exept. conditions*/
523 Ucbit p_write :1; /* Write vs. Read performance */
524 Ucbit p_res_4 :6; /* Reserved bits... */
525 #else /* Motorola bitorder */
526 Ucbit p_res_4 :6; /* Reserved bits... */
527 Ucbit p_write :1; /* Write vs. Read performance */
528 Ucbit p_exept :1; /* Nominal vs. Exept. conditions*/
530 Uchar p_res[3]; /* Reserved bytes */
534 struct mmc_performance { /* Type == 00 (nominal) */
535 Uchar start_lba[4]; /* Starting LBA */
536 Uchar start_perf[4]; /* Start Performance */
537 Uchar end_lba[4]; /* Ending LBA */
538 Uchar end_perf[4]; /* Ending Performance */
541 struct mmc_exceptions { /* Type == 00 (execptions) */
542 Uchar lba[4]; /* LBA */
543 Uchar time[2]; /* Time */
546 struct mmc_write_speed { /* Type == 00 (write speed) */
547 #if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
548 Ucbit p_mrw :1; /* Suitable for mixed read/write*/
549 Ucbit p_exact :1; /* Speed count for whole media */
550 Ucbit p_rdd :1; /* Media rotational control */
551 Ucbit p_wrc :2; /* Write rotational control */
552 Ucbit p_res :3; /* Reserved bits... */
553 #else /* Motorola bitorder */
554 Ucbit p_res :3; /* Reserved bits... */
555 Ucbit p_wrc :2; /* Write rotational control */
556 Ucbit p_rdd :1; /* Media rotational control */
557 Ucbit p_exact :1; /* Speed count for whole media */
558 Ucbit p_mrw :1; /* Suitable for mixed read/write*/
560 Uchar res[3]; /* Reserved Bytes */
561 Uchar end_lba[4]; /* Ending LBA */
562 Uchar read_speed[4]; /* Read Speed */
563 Uchar write_speed[4]; /* Write Speed */
566 #define WRC_DEF_RC 0 /* Media default rotational control */
567 #define WRC_CAV 1 /* CAV */
570 struct mmc_streaming { /* Performance for set streaming*/
571 #if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */
572 Ucbit p_ra :1; /* Random Acess */
573 Ucbit p_exact :1; /* Set values exactly */
574 Ucbit p_rdd :1; /* Restore unit defaults */
575 Ucbit p_wrc :2; /* Write rotational control */
576 Ucbit p_res :3; /* Reserved bits... */
577 #else /* Motorola bitorder */
578 Ucbit p_res :3; /* Reserved bits... */
579 Ucbit p_wrc :2; /* Write rotational control */
580 Ucbit p_rdd :1; /* Restore unit defaults */
581 Ucbit p_exact :1; /* Set values exactly */
582 Ucbit p_ra :1; /* Random Acess */
584 Uchar res[3]; /* Reserved Bytes */
585 Uchar start_lba[4]; /* Starting LBA */
586 Uchar end_lba[4]; /* Ending LBA */
587 Uchar read_size[4]; /* Read Size */
588 Uchar read_time[4]; /* Read Time */
589 Uchar write_size[4]; /* Write Size */
590 Uchar write_time[4]; /* Write Time */
593 #endif /* _SCSIMMC_H */