diff options
Diffstat (limited to 'wodim/scsimmc.h')
-rw-r--r-- | wodim/scsimmc.h | 593 |
1 files changed, 593 insertions, 0 deletions
diff --git a/wodim/scsimmc.h b/wodim/scsimmc.h new file mode 100644 index 0000000..a0092fc --- /dev/null +++ b/wodim/scsimmc.h @@ -0,0 +1,593 @@ +/* + * This file has been modified for the cdrkit suite. + * + * The behaviour and appearence of the program code below can differ to a major + * extent from the version distributed by the original author(s). + * + * For details, see Changelog file distributed with the cdrkit package. If you + * received this file from another source then ask the distributing person for + * a log of modifications. + * + */ + +/* @(#)scsimmc.h 1.11 04/03/01 Copyright 1997-2004 J. Schilling */ +/* + * Definitions for SCSI/mmc compliant drives + * + * Copyright (c) 1997-2004 J. Schilling + */ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; see the file COPYING. If not, write to the Free Software + * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef _SCSIMMC_H +#define _SCSIMMC_H + +#include <utypes.h> +#include <btorder.h> + +typedef struct opc { + Uchar opc_speed[2]; + Uchar opc_val[6]; +} opc_t; + +#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */ + +struct disk_info { + Uchar data_len[2]; /* Data len without this info */ + Ucbit disk_status : 2; /* Status of the disk */ + Ucbit sess_status : 2; /* Status of last session */ + Ucbit erasable : 1; /* Disk is erasable */ + Ucbit res2 : 3; /* Reserved */ + Uchar first_track; /* # of first track on disk */ + Uchar numsess; /* # of sessions */ + Uchar first_track_ls; /* First track in last sessaion */ + Uchar last_track_ls; /* Last track in last sessaion */ + Ucbit bg_format_stat : 2; /* Background format status */ + Ucbit dbit : 1; /* Dirty Bit of defect table */ + Ucbit res7_34 : 2; /* Reserved */ + Ucbit uru : 1; /* This is an unrestricted disk */ + Ucbit dbc_v : 1; /* Disk bar code valid */ + Ucbit did_v : 1; /* Disk id valid */ + Uchar disk_type; /* Disk type */ + Uchar res9[3]; /* Reserved */ + Uchar disk_id[4]; /* Disk identification */ + Uchar last_lead_in[4]; /* Last session lead in time */ + Uchar last_lead_out[4]; /* Last session lead out time */ + Uchar disk_barcode[8]; /* Disk bar code */ + Uchar res32; /* Reserved */ + Uchar num_opc_entries; /* # of OPC table entries */ + opc_t opc_table[1]; /* OPC table */ +}; + +#else /* Motorola bitorder */ + +struct disk_info { + Uchar data_len[2]; /* Data len without this info */ + Ucbit res2 : 3; /* Reserved */ + Ucbit erasable : 1; /* Disk is erasable */ + Ucbit sess_status : 2; /* Status of last session */ + Ucbit disk_status : 2; /* Status of the disk */ + Uchar first_track; /* # of first track on disk */ + Uchar numsess; /* # of sessions */ + Uchar first_track_ls; /* First track in last sessaion */ + Uchar last_track_ls; /* Last track in last sessaion */ + Ucbit did_v : 1; /* Disk id valid */ + Ucbit dbc_v : 1; /* Disk bar code valid */ + Ucbit uru : 1; /* This is an unrestricted disk */ + Ucbit res7_34 : 2; /* Reserved */ + Ucbit dbit : 1; /* Dirty Bit of defect table */ + Ucbit bg_format_stat : 2; /* Background format status */ + Uchar disk_type; /* Disk type */ + Uchar res9[3]; /* Reserved */ + Uchar disk_id[4]; /* Disk identification */ + Uchar last_lead_in[4]; /* Last session lead in time */ + Uchar last_lead_out[4]; /* Last session lead out time */ + Uchar disk_barcode[8]; /* Disk bar code */ + Uchar res32; /* Reserved */ + Uchar num_opc_entries; /* # of OPC table entries */ + opc_t opc_table[1]; /* OPC table */ +}; + +#endif + +struct cd_mode_data { + struct scsi_mode_header header; + union cd_pagex { + struct cd_mode_page_05 page05; + struct cd_mode_page_2A page2A; + } pagex; +}; + +struct tocheader { + Uchar len[2]; + Uchar first; + Uchar last; +}; + +/* + * Full TOC entry + */ +struct ftrackdesc { + Uchar sess_number; + +#if defined(_BIT_FIELDS_LTOH) /* Intel byteorder */ + Ucbit control : 4; + Ucbit adr : 4; +#else /* Motorola byteorder */ + Ucbit adr : 4; + Ucbit control : 4; +#endif + + Uchar track; + Uchar point; + Uchar amin; + Uchar asec; + Uchar aframe; + Uchar res7; + Uchar pmin; + Uchar psec; + Uchar pframe; +}; + +struct fdiskinfo { + struct tocheader hd; + struct ftrackdesc desc[1]; +}; + + + +#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */ + +struct atipdesc { + Ucbit ref_speed : 3; /* Reference speed */ + Ucbit res4_3 : 1; /* Reserved */ + Ucbit ind_wr_power : 3; /* Indicative tgt writing power */ + Ucbit res4_7 : 1; /* Reserved (must be "1") */ + Ucbit res5_05 : 6; /* Reserved */ + Ucbit uru : 1; /* Disk is for unrestricted use */ + Ucbit res5_7 : 1; /* Reserved (must be "0") */ + Ucbit a3_v : 1; /* A 3 Values valid */ + Ucbit a2_v : 1; /* A 2 Values valid */ + Ucbit a1_v : 1; /* A 1 Values valid */ + Ucbit sub_type : 3; /* Disc sub type */ + Ucbit erasable : 1; /* Disk is erasable */ + Ucbit res6_7 : 1; /* Reserved (must be "1") */ + Uchar lead_in[4]; /* Lead in time */ + Uchar lead_out[4]; /* Lead out time */ + Uchar res15; /* Reserved */ + Ucbit clv_high : 4; /* Highes usable CLV recording speed */ + Ucbit clv_low : 3; /* Lowest usable CLV recording speed */ + Ucbit res16_7 : 1; /* Reserved (must be "0") */ + Ucbit res17_0 : 1; /* Reserved */ + Ucbit tgt_y_pow : 3; /* Tgt y val of the power mod fun */ + Ucbit power_mult : 3; /* Power multiplication factor */ + Ucbit res17_7 : 1; /* Reserved (must be "0") */ + Ucbit res_18_30 : 4; /* Reserved */ + Ucbit rerase_pwr_ratio: 3; /* Recommended erase/write power*/ + Ucbit res18_7 : 1; /* Reserved (must be "1") */ + Uchar res19; /* Reserved */ + Uchar a2[3]; /* A 2 Values */ + Uchar res23; /* Reserved */ + Uchar a3[3]; /* A 3 Vaules */ + Uchar res27; /* Reserved */ +}; + +#else /* Motorola bitorder */ + +struct atipdesc { + Ucbit res4_7 : 1; /* Reserved (must be "1") */ + Ucbit ind_wr_power : 3; /* Indicative tgt writing power */ + Ucbit res4_3 : 1; /* Reserved */ + Ucbit ref_speed : 3; /* Reference speed */ + Ucbit res5_7 : 1; /* Reserved (must be "0") */ + Ucbit uru : 1; /* Disk is for unrestricted use */ + Ucbit res5_05 : 6; /* Reserved */ + Ucbit res6_7 : 1; /* Reserved (must be "1") */ + Ucbit erasable : 1; /* Disk is erasable */ + Ucbit sub_type : 3; /* Disc sub type */ + Ucbit a1_v : 1; /* A 1 Values valid */ + Ucbit a2_v : 1; /* A 2 Values valid */ + Ucbit a3_v : 1; /* A 3 Values valid */ + Uchar lead_in[4]; /* Lead in time */ + Uchar lead_out[4]; /* Lead out time */ + Uchar res15; /* Reserved */ + Ucbit res16_7 : 1; /* Reserved (must be "0") */ + Ucbit clv_low : 3; /* Lowest usable CLV recording speed */ + Ucbit clv_high : 4; /* Highes usable CLV recording speed */ + Ucbit res17_7 : 1; /* Reserved (must be "0") */ + Ucbit power_mult : 3; /* Power multiplication factor */ + Ucbit tgt_y_pow : 3; /* Tgt y val of the power mod fun */ + Ucbit res17_0 : 1; /* Reserved */ + Ucbit res18_7 : 1; /* Reserved (must be "1") */ + Ucbit rerase_pwr_ratio: 3; /* Recommended erase/write power*/ + Ucbit res_18_30 : 4; /* Reserved */ + Uchar res19; /* Reserved */ + Uchar a2[3]; /* A 2 Values */ + Uchar res23; /* Reserved */ + Uchar a3[3]; /* A 3 Vaules */ + Uchar res27; /* Reserved */ +}; + +#endif + +struct atipinfo { + struct tocheader hd; + struct atipdesc desc; +}; + +/* + * XXX Check how we may merge Track_info & Rzone_info + */ +#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */ + +struct track_info { + Uchar data_len[2]; /* Data len without this info */ + Uchar track_number; /* Track number for this info */ + Uchar session_number; /* Session number for this info */ + Uchar res4; /* Reserved */ + Ucbit track_mode : 4; /* Track mode (Q-sub control) */ + Ucbit copy : 1; /* This track is a higher copy */ + Ucbit damage : 1; /* if 1 & nwa_valid 0: inc track*/ + Ucbit res5_67 : 2; /* Reserved */ + Ucbit data_mode : 4; /* Data mode of this track */ + Ucbit fp : 1; /* This is a fixed packet track */ + Ucbit packet : 1; /* This track is in packet mode */ + Ucbit blank : 1; /* This is an invisible track */ + Ucbit rt : 1; /* This is a reserved track */ + Ucbit nwa_valid : 1; /* Next writable addr valid */ + Ucbit res7_17 : 7; /* Reserved */ + Uchar track_start[4]; /* Track start address */ + Uchar next_writable_addr[4]; /* Next writable address */ + Uchar free_blocks[4]; /* Free usr blocks in this track*/ + Uchar packet_size[4]; /* Packet size if in fixed mode */ + Uchar track_size[4]; /* # of user data blocks in trk */ +}; + +#else /* Motorola bitorder */ + +struct track_info { + Uchar data_len[2]; /* Data len without this info */ + Uchar track_number; /* Track number for this info */ + Uchar session_number; /* Session number for this info */ + Uchar res4; /* Reserved */ + Ucbit res5_67 : 2; /* Reserved */ + Ucbit damage : 1; /* if 1 & nwa_valid 0: inc track*/ + Ucbit copy : 1; /* This track is a higher copy */ + Ucbit track_mode : 4; /* Track mode (Q-sub control) */ + Ucbit rt : 1; /* This is a reserved track */ + Ucbit blank : 1; /* This is an invisible track */ + Ucbit packet : 1; /* This track is in packet mode */ + Ucbit fp : 1; /* This is a fixed packet track */ + Ucbit data_mode : 4; /* Data mode of this track */ + Ucbit res7_17 : 7; /* Reserved */ + Ucbit nwa_valid : 1; /* Next writable addr valid */ + Uchar track_start[4]; /* Track start address */ + Uchar next_writable_addr[4]; /* Next writable address */ + Uchar free_blocks[4]; /* Free usr blocks in this track*/ + Uchar packet_size[4]; /* Packet size if in fixed mode */ + Uchar track_size[4]; /* # of user data blocks in trk */ +}; + +#endif + +/* + * XXX Check how we may merge Track_info & Rzone_info + */ +#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */ + +struct rzone_info { + Uchar data_len[2]; /* Data len without this info */ + Uchar rzone_num_lsb; /* RZone number LSB */ + Uchar border_num_lsb; /* Border number LSB */ + Uchar res_4; /* Reserved */ + Ucbit res5_04 : 5; /* Reserved */ + Ucbit damage : 1; /* Damaged RZone */ + Ucbit res5_67 : 2; /* Reserved */ + Ucbit res6_04 : 5; /* Reserved */ + Ucbit incremental : 1; /* RZone is to be written incremental */ + Ucbit blank : 1; /* RZone is blank */ + Ucbit rt : 1; /* RZone is reserved */ + Ucbit nwa_v : 1; /* Next WR address is valid */ + Ucbit lra_v : 1; /* Last rec address is valid */ + Ucbit res7_27 : 6; /* Reserved */ + Uchar rzone_start[4]; /* RZone start address */ + Uchar next_recordable_addr[4]; /* Next recordable address */ + Uchar free_blocks[4]; /* Free blocks in RZone */ + Uchar block_factor[4]; /* # of sectors of disc acc unit */ + Uchar rzone_size[4]; /* RZone size */ + Uchar last_recorded_addr[4]; /* Last Recorded addr in RZone */ + Uchar rzone_num_msb; /* RZone number MSB */ + Uchar border_num_msb; /* Border number MSB */ + Uchar res_34_35[2]; /* Reserved */ +}; + +#else /* Motorola bitorder */ + +struct rzone_info { + Uchar data_len[2]; /* Data len without this info */ + Uchar rzone_num_lsb; /* RZone number LSB */ + Uchar border_num_lsb; /* Border number LSB */ + Uchar res_4; /* Reserved */ + Ucbit res5_67 : 2; /* Reserved */ + Ucbit damage : 1; /* Damaged RZone */ + Ucbit res5_04 : 5; /* Reserved */ + Ucbit rt : 1; /* RZone is reserved */ + Ucbit blank : 1; /* RZone is blank */ + Ucbit incremental : 1; /* RZone is to be written incremental */ + Ucbit res6_04 : 5; /* Reserved */ + Ucbit res7_27 : 6; /* Reserved */ + Ucbit lra_v : 1; /* Last rec address is valid */ + Ucbit nwa_v : 1; /* Next WR address is valid */ + Uchar rzone_start[4]; /* RZone start address */ + Uchar next_recordable_addr[4]; /* Next recordable address */ + Uchar free_blocks[4]; /* Free blocks in RZone */ + Uchar block_factor[4]; /* # of sectors of disc acc unit */ + Uchar rzone_size[4]; /* RZone size */ + Uchar last_recorded_addr[4]; /* Last Recorded addr in RZone */ + Uchar rzone_num_msb; /* RZone number MSB */ + Uchar border_num_msb; /* Border number MSB */ + Uchar res_34_35[2]; /* Reserved */ +}; + +#endif + +#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */ + +struct dvd_structure_00 { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Ucbit book_version : 4; /* DVD Book version */ + Ucbit book_type : 4; /* DVD Book type */ + Ucbit minimum_rate : 4; /* Minimum data rate (coded) */ + Ucbit disc_size : 4; /* Disc size (coded) */ + Ucbit layer_type : 4; /* Layer type */ + Ucbit track_path : 1; /* 0 = parallel, 1 = opposit dir*/ + Ucbit numlayers : 2; /* Number of Layers (0 == 1) */ + Ucbit res2_7 : 1; /* Reserved */ + Ucbit track_density : 4; /* Track density (coded) */ + Ucbit linear_density : 4; /* Linear data density (coded) */ + Uchar res8; /* Reserved */ + Uchar phys_start[3]; /* Starting Physical sector # */ + Uchar res12; /* Reserved */ + Uchar phys_end[3]; /* End physical data sector # */ + Uchar res16; /* Reserved */ + Uchar end_layer0[3]; /* End sector # in layer */ + Ucbit res20 : 7; /* Reserved */ + Ucbit bca : 1; /* BCA flag bit */ +}; + +#else /* Motorola bitorder */ + +struct dvd_structure_00 { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Ucbit book_type : 4; /* DVD Book type */ + Ucbit book_version : 4; /* DVD Book version */ + Ucbit disc_size : 4; /* Disc size (coded) */ + Ucbit minimum_rate : 4; /* Minimum data rate (coded) */ + Ucbit res2_7 : 1; /* Reserved */ + Ucbit numlayers : 2; /* Number of Layers (0 == 1) */ + Ucbit track_path : 1; /* 0 = parallel, 1 = opposit dir*/ + Ucbit layer_type : 4; /* Layer type */ + Ucbit linear_density : 4; /* Linear data density (coded) */ + Ucbit track_density : 4; /* Track density (coded) */ + Uchar res8; /* Reserved */ + Uchar phys_start[3]; /* Starting Physical sector # */ + Uchar res12; /* Reserved */ + Uchar phys_end[3]; /* End physical data sector # */ + Uchar res16; /* Reserved */ + Uchar end_layer0[3]; /* End sector # in layer */ + Ucbit bca : 1; /* BCA flag bit */ + Ucbit res20 : 7; /* Reserved */ +}; + +#endif + +struct dvd_structure_01 { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Uchar copyr_prot_type; /* Copyright prot system type */ + Uchar region_mgt_info; /* Region management info */ + Uchar res67[2]; /* Reserved */ +}; + +struct dvd_structure_02 { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Uchar key_data[2048]; /* Disc Key data */ +}; + +struct dvd_structure_03 { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Uchar bca_info[1]; /* BCA information (12-188 bytes)*/ +}; + +struct dvd_structure_04 { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Uchar man_info[2048]; /* Disc manufacturing info */ +}; + +#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */ + +struct dvd_structure_05 { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Ucbit res4_03 : 4; /* Reserved */ + Ucbit cgms : 2; /* CGMS (see below) */ + Ucbit res4_6 : 1; /* Reserved */ + Ucbit cpm : 1; /* This is copyrighted material */ + Uchar res57[3]; /* Reserved */ +}; + +#else /* Motorola bitorder */ + +struct dvd_structure_05 { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Ucbit cpm : 1; /* This is copyrighted material */ + Ucbit res4_6 : 1; /* Reserved */ + Ucbit cgms : 2; /* CGMS (see below) */ + Ucbit res4_03 : 4; /* Reserved */ + Uchar res57[3]; /* Reserved */ +}; + +#endif + +#define CGMS_PERMITTED 0 /* Unlimited copy permitted */ +#define CGMS_RES 1 /* Reserved */ +#define CGMS_ONE_COPY 2 /* One copy permitted */ +#define CGMS_NO_COPY 3 /* No copy permitted */ + +struct dvd_structure_0D { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Uchar last_rma_sector[2]; /* Last recorded RMA sector # */ + Uchar rmd_bytes[1]; /* Content of Record man area */ +}; + +struct dvd_structure_0E { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Uchar field_id; /* Field ID (1) */ + Uchar application_code; /* Disc Application code */ + Uchar phys_data; /* Disc Phisical Data */ + Uchar last_recordable_addr[3]; /* Last addr of recordable area */ + Uchar res_a[2]; /* Reserved */ + Uchar field_id_2; /* Field ID (2) */ + Uchar ind_wr_power; /* Recommended writing power */ + Uchar ind_wavelength; /* Wavelength for ind_wr_power */ + Uchar opt_wr_strategy[4]; /* Optimum write Strategy */ + Uchar res_b[1]; /* Reserved */ + Uchar field_id_3; /* Field ID (3) */ + Uchar man_id[6]; /* Manufacturer ID */ + Uchar res_m1; /* Reserved */ + Uchar field_id_4; /* Field ID (4) */ + Uchar man_id2[6]; /* Manufacturer ID */ + Uchar res_m2; /* Reserved */ +}; + +struct dvd_structure_0F { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Uchar res45[2]; /* Reserved */ + Uchar random[2]; /* Random number */ + Uchar year[4]; /* Year (ascii) */ + Uchar month[2]; /* Month (ascii) */ + Uchar day[2]; /* Day (ascii) */ + Uchar hour[2]; /* Hour (ascii) */ + Uchar minute[2]; /* Minute (ascii) */ + Uchar second[2]; /* Second (ascii) */ +}; + +struct dvd_structure_0F_w { + Uchar data_len[2]; /* Data len without this info */ + Uchar res23[2]; /* Reserved */ + Uchar res45[2]; /* Reserved */ + Uchar year[4]; /* Year (ascii) */ + Uchar month[2]; /* Month (ascii) */ + Uchar day[2]; /* Day (ascii) */ + Uchar hour[2]; /* Hour (ascii) */ + Uchar minute[2]; /* Minute (ascii) */ + Uchar second[2]; /* Second (ascii) */ +}; + +struct mmc_cue { + Uchar cs_ctladr; /* CTL/ADR for this track */ + Uchar cs_tno; /* This track number */ + Uchar cs_index; /* Index within this track */ + Uchar cs_dataform; /* Data form */ + Uchar cs_scms; /* Serial copy management */ + Uchar cs_min; /* Absolute time minutes */ + Uchar cs_sec; /* Absolute time seconds */ + Uchar cs_frame; /* Absolute time frames */ +}; + +struct mmc_performance_header { + Uchar p_datalen[4]; /* Performance Data length */ +#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */ + Ucbit p_exept :1; /* Nominal vs. Exept. conditions*/ + Ucbit p_write :1; /* Write vs. Read performance */ + Ucbit p_res_4 :6; /* Reserved bits... */ +#else /* Motorola bitorder */ + Ucbit p_res_4 :6; /* Reserved bits... */ + Ucbit p_write :1; /* Write vs. Read performance */ + Ucbit p_exept :1; /* Nominal vs. Exept. conditions*/ +#endif + Uchar p_res[3]; /* Reserved bytes */ +}; + + +struct mmc_performance { /* Type == 00 (nominal) */ + Uchar start_lba[4]; /* Starting LBA */ + Uchar start_perf[4]; /* Start Performance */ + Uchar end_lba[4]; /* Ending LBA */ + Uchar end_perf[4]; /* Ending Performance */ +}; + +struct mmc_exceptions { /* Type == 00 (execptions) */ + Uchar lba[4]; /* LBA */ + Uchar time[2]; /* Time */ +}; + +struct mmc_write_speed { /* Type == 00 (write speed) */ +#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */ + Ucbit p_mrw :1; /* Suitable for mixed read/write*/ + Ucbit p_exact :1; /* Speed count for whole media */ + Ucbit p_rdd :1; /* Media rotational control */ + Ucbit p_wrc :2; /* Write rotational control */ + Ucbit p_res :3; /* Reserved bits... */ +#else /* Motorola bitorder */ + Ucbit p_res :3; /* Reserved bits... */ + Ucbit p_wrc :2; /* Write rotational control */ + Ucbit p_rdd :1; /* Media rotational control */ + Ucbit p_exact :1; /* Speed count for whole media */ + Ucbit p_mrw :1; /* Suitable for mixed read/write*/ +#endif + Uchar res[3]; /* Reserved Bytes */ + Uchar end_lba[4]; /* Ending LBA */ + Uchar read_speed[4]; /* Read Speed */ + Uchar write_speed[4]; /* Write Speed */ +}; + +#define WRC_DEF_RC 0 /* Media default rotational control */ +#define WRC_CAV 1 /* CAV */ + + +struct mmc_streaming { /* Performance for set streaming*/ +#if defined(_BIT_FIELDS_LTOH) /* Intel bitorder */ + Ucbit p_ra :1; /* Random Acess */ + Ucbit p_exact :1; /* Set values exactly */ + Ucbit p_rdd :1; /* Restore unit defaults */ + Ucbit p_wrc :2; /* Write rotational control */ + Ucbit p_res :3; /* Reserved bits... */ +#else /* Motorola bitorder */ + Ucbit p_res :3; /* Reserved bits... */ + Ucbit p_wrc :2; /* Write rotational control */ + Ucbit p_rdd :1; /* Restore unit defaults */ + Ucbit p_exact :1; /* Set values exactly */ + Ucbit p_ra :1; /* Random Acess */ +#endif + Uchar res[3]; /* Reserved Bytes */ + Uchar start_lba[4]; /* Starting LBA */ + Uchar end_lba[4]; /* Ending LBA */ + Uchar read_size[4]; /* Read Size */ + Uchar read_time[4]; /* Read Time */ + Uchar write_size[4]; /* Write Size */ + Uchar write_time[4]; /* Write Time */ +}; + +#endif /* _SCSIMMC_H */ |