?? scsimmc.h
字號:
/* @(#)scsimmc.h 1.3 98/05/25 Copyright 1997 J. Schilling *//* * Definitions for SCSI/mmc compliant drives * * Copyright (c) 1997 J. Schilling *//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * 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, 675 Mass Ave, Cambridge, MA 02139, 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 res7_04 : 5; /* 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_04 : 5; /* Reserved */ 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 */};#endifstruct 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 { char len[2]; char first; char last;};#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 */};#endifstruct atipinfo { struct tocheader hd; struct atipdesc desc;};#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 */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -