diff options
Diffstat (limited to 'sys/scsi/scsi_cd.h')
-rw-r--r-- | sys/scsi/scsi_cd.h | 151 |
1 files changed, 49 insertions, 102 deletions
diff --git a/sys/scsi/scsi_cd.h b/sys/scsi/scsi_cd.h index 6606889..b5758c8 100644 --- a/sys/scsi/scsi_cd.h +++ b/sys/scsi/scsi_cd.h @@ -12,6 +12,13 @@ * on the understanding that TFS is not responsible for the correct * functioning of this software in any circumstances. * + * + * PATCHES MAGIC LEVEL PATCH THAT GOT US HERE + * -------------------- ----- ---------------------- + * CURRENT PATCH LEVEL: 1 00098 + * -------------------- ----- ---------------------- + * + * 16 Feb 93 Julian Elischer ADDED for SCSI system */ @@ -19,6 +26,11 @@ /* * Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992 */ +/* + * Define two bits always in the same place in byte 2 (flag byte) + */ +#define CD_RELADDR 0x01 +#define CD_MSF 0x02 /* * SCSI command format @@ -27,29 +39,22 @@ struct scsi_read_capacity_cd { u_char op_code; - u_char :5; - u_char lun:3; + u_char byte2; u_char addr_3; /* Most Significant */ u_char addr_2; u_char addr_1; u_char addr_0; /* Least Significant */ u_char unused[3]; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; struct scsi_pause { u_char op_code; - u_char :5; - u_char lun:3; + u_char byte2; u_char unused[6]; - u_char resume:1; - u_char :7; - u_char link:1; - u_char flag:1; - u_char :6; + u_char resume; + u_char control; }; #define PA_PAUSE 1 #define PA_RESUME 0 @@ -57,8 +62,7 @@ struct scsi_pause struct scsi_play_msf { u_char op_code; - u_char :5; - u_char lun:3; + u_char byte2; u_char unused; u_char start_m; u_char start_s; @@ -66,132 +70,96 @@ struct scsi_play_msf u_char end_m; u_char end_s; u_char end_f; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; struct scsi_play_track { u_char op_code; - u_char :5; - u_char lun:3; + u_char byte2; u_char unused[2]; u_char start_track; u_char start_index; u_char unused1; u_char end_track; u_char end_index; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; struct scsi_play { u_char op_code; - u_char reladdr:1; - u_char :4; - u_char lun:3; + u_char byte2; u_char blk_addr[4]; u_char unused; u_char xfer_len[2]; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; struct scsi_play_big { u_char op_code; - u_char reladdr:1; - u_char :4; - u_char lun:3; + u_char byte2; /* same as above */ u_char blk_addr[4]; u_char xfer_len[4]; u_char unused; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; struct scsi_play_rel_big { u_char op_code; - u_char reladdr:1; - u_char :4; - u_char lun:3; + u_char byte2; /* same as above */ u_char blk_addr[4]; u_char xfer_len[4]; u_char track; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; struct scsi_read_header { u_char op_code; - u_char :1; - u_char msf:1; - u_char :3; - u_char lun:3; + u_char byte2; u_char blk_addr[4]; u_char unused; u_char data_len[2]; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; struct scsi_read_subchannel { u_char op_code; - u_char :1; - u_char msf:1; - u_char :3; - u_char lun:3; - u_char :6; - u_char subQ:1; - u_char :1; + u_char byte2; + u_char byte3; +#define SRS_SUBQ 0x40 u_char subchan_format; u_char unused[2]; u_char track; u_char data_len[2]; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; struct scsi_read_toc { u_char op_code; - u_char :1; - u_char msf:1; - u_char :3; - u_char lun:3; + u_char byte2; u_char unused[4]; u_char from_track; u_char data_len[2]; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; ; struct scsi_read_cd_capacity { u_char op_code; - u_char :5; - u_char lun:3; + u_char byte2; u_char addr_3; /* Most Significant */ u_char addr_2; u_char addr_1; u_char addr_0; /* Least Significant */ u_char unused[3]; - u_char link:1; - u_char flag:1; - u_char :6; + u_char control; }; /* @@ -211,26 +179,6 @@ struct scsi_read_cd_capacity #define PLAY_TRACK_REL_BIG 0xa9 /* cdrom play track/index mode */ -struct cd_inquiry_data /* in case there is some special info */ -{ - u_char device_type:5; - u_char device_qualifier:3; - u_char dev_qual2:7; - u_char removable:1; - u_char ansii_version:3; - u_char :5; - u_char response_format; - u_char additional_length; - u_char unused[2]; - u_char :3; - u_char can_link:1; - u_char can_sync:1; - u_char :3; - char vendor[8]; - char product[16]; - char revision[4]; - u_char extra[8]; -}; struct scsi_read_cd_cap_data { @@ -246,32 +194,31 @@ struct scsi_read_cd_cap_data union cd_pages { -#define AUDIO_PAGE 0x0e struct audio_page { - u_char page_code:6; - u_char :1; - u_char ps:1; + u_char page_code; +#define CD_PAGE_CODE 0x3F +#define AUDIO_PAGE 0x0e +#define CD_PAGE_PS 0x80 u_char param_len; - u_char :1; - u_char sotc:1; - u_char immed:1; - u_char :5; + u_char flags; +#define CD_PA_SOTC 0x02 +#define CD_PA_IMMED 0x04 u_char unused[2]; - u_char format_lba:4; - u_char :3; - u_char apr_valid:1; + u_char format_lba; +#define CD_PA_FORMAT_LBA 0x0F +#define CD_PA_APR_VALID 0x80 u_char lb_per_sec[2]; struct port_control { - u_char channels:4; + u_char channels; +#define CHANNEL 0x0F #define CHANNEL_0 1 #define CHANNEL_1 2 #define CHANNEL_2 4 #define CHANNEL_3 8 #define LEFT_CHANNEL CHANNEL_0 #define RIGHT_CHANNEL CHANNEL_1 - u_char :4; u_char volume; } port[4]; #define LEFT_PORT 0 |