diff options
| author | Søren Schmidt <sos@FreeBSD.org> | 1999-03-03 21:10:29 +0000 |
|---|---|---|
| committer | Søren Schmidt <sos@FreeBSD.org> | 1999-03-03 21:10:29 +0000 |
| commit | b9bb98b32b962e659f75b242819454440ab9b63c (patch) | |
| tree | c0c9adaa76136b8c46cc09f8adc27034e16281c0 /sys/dev/ata/atapi-cd.h | |
| parent | 90b4d77467aa5fd9eef584e01d29b51b547c28a4 (diff) | |
Notes
Diffstat (limited to 'sys/dev/ata/atapi-cd.h')
| -rw-r--r-- | sys/dev/ata/atapi-cd.h | 266 |
1 files changed, 127 insertions, 139 deletions
diff --git a/sys/dev/ata/atapi-cd.h b/sys/dev/ata/atapi-cd.h index f602e376a10bd..253198983b175 100644 --- a/sys/dev/ata/atapi-cd.h +++ b/sys/dev/ata/atapi-cd.h @@ -25,21 +25,17 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: atapi-cd.h,v 1.3 1999/03/01 21:03:15 sos Exp sos $ + * $Id: atapi-cd.h,v 1.1 1999/03/01 21:19:18 sos Exp $ */ -/* - * CDROM Table Of Contents - */ +/* CDROM Table Of Contents */ #define MAXTRK 99 struct toc { - struct ioc_toc_header hdr; - struct cd_toc_entry tab[MAXTRK + 1]; + struct ioc_toc_header hdr; + struct cd_toc_entry tab[MAXTRK + 1]; }; -/* - * CDROM Audio Control Parameters Page - */ +/* CDROM Audio Control Parameters Page */ struct audiopage { /* Mode Page data header */ u_int16_t data_length; @@ -63,22 +59,21 @@ struct audiopage { u_int8_t reserved5; u_int16_t lb_per_sec; struct port_control { - u_int8_t channels:4; + u_int8_t channels:4; #define CHANNEL_0 1 #define CHANNEL_1 2 #define CHANNEL_2 4 #define CHANNEL_3 8 - u_int8_t volume; + + u_int8_t volume; } port[4]; }; -/* - * CDROM Capabilities and Mechanical Status Page - */ +/* CDROM Capabilities and Mechanical Status Page */ struct cappage { /* Mode data header */ u_int16_t data_length; - u_int8_t medium_type; /* Present media type */ + u_int8_t medium_type; #define MST_TYPE_MASK_LOW 0x0f #define MST_FMT_NONE 0x00 #define MST_DATA_120 0x01 @@ -108,55 +103,55 @@ struct cappage { #define ATAPI_CDROM_CAP_PAGE 0x2a u_int8_t param_len; - u_int8_t read_cdr :1; /* Supports CD-R read */ - u_int8_t read_cdrw :1; /* Supports CD-RW read */ - u_int8_t method2 :1; /* Supports reading packet tracks */ - u_int8_t byte2_37 :5; - u_int8_t write_cdr :1; /* Supports CD-R write */ - u_int8_t write_cdrw :1; /* Supports CD-RW write */ - u_int8_t test_write :1; /* Supports test writing */ - u_int8_t byte3_37 :5; - u_int8_t audio_play :1; /* Audio play supported */ - u_int8_t composite :1; /* Composite audio/video supported */ - u_int8_t dport1 :1; /* Digital audio on port 1 */ - u_int8_t dport2 :1; /* Digital audio on port 2 */ - u_int8_t mode2_form1 :1; /* Mode 2 form 1 (XA) read */ - u_int8_t mode2_form2 :1; /* Mode 2 form 2 format */ - u_int8_t multisession :1; /* Multi-session photo-CD */ + u_int8_t read_cdr :1; /* supports CD-R read */ + u_int8_t read_cdrw :1; /* supports CD-RW read */ + u_int8_t method2 :1; /* supports reading packet tracks */ + u_int8_t reserved2_37 :5; + u_int8_t write_cdr :1; /* supports CD-R write */ + u_int8_t write_cdrw :1; /* supports CD-RW write */ + u_int8_t test_write :1; /* supports test writing */ + u_int8_t reserved3_37 :5; + u_int8_t audio_play :1; /* audio play supported */ + u_int8_t composite :1; /* composite audio/video supported */ + u_int8_t dport1 :1; /* digital audio on port 1 */ + u_int8_t dport2 :1; /* digital audio on port 2 */ + u_int8_t mode2_form1 :1; /* mode 2 form 1 (XA) read */ + u_int8_t mode2_form2 :1; /* mode 2 form 2 format */ + u_int8_t multisession :1; /* multi-session photo-CD */ u_int8_t :1; - u_int8_t cd_da :1; /* Audio-CD read supported */ + u_int8_t cd_da :1; /* audio-CD read supported */ u_int8_t cd_da_stream :1; /* CD-DA streaming */ - u_int8_t rw :1; /* Combined R-W subchannels */ + u_int8_t rw :1; /* combined R-W subchannels */ u_int8_t rw_corr :1; /* R-W subchannel data corrected */ u_int8_t c2 :1; /* C2 error pointers supported */ - u_int8_t isrc :1; /* Can return the ISRC info */ - u_int8_t upc :1; /* Can return the catalog number UPC */ + u_int8_t isrc :1; /* can return the ISRC info */ + u_int8_t upc :1; /* can return the catalog number UPC */ u_int8_t :1; - u_int8_t lock :1; /* Can be locked */ - u_int8_t locked :1; /* Current lock state */ - u_int8_t prevent :1; /* Prevent jumper installed */ - u_int8_t eject :1; /* Can eject */ + u_int8_t lock :1; /* can be locked */ + u_int8_t locked :1; /* current lock state */ + u_int8_t prevent :1; /* prevent jumper installed */ + u_int8_t eject :1; /* can eject */ u_int8_t :1; - u_int8_t mech :3; /* Loading mechanism type */ + u_int8_t mech :3; /* loading mechanism type */ #define MST_MECH_CADDY 0 #define MST_MECH_TRAY 1 #define MST_MECH_POPUP 2 #define MST_MECH_CHANGER 4 #define MST_MECH_CARTRIDGE 5 - u_int8_t sep_vol :1; /* Independent volume of channels */ - u_int8_t sep_mute :1; /* Independent mute of channels */ + u_int8_t sep_vol :1; /* independent volume of channels */ + u_int8_t sep_mute :1; /* independent mute of channels */ u_int8_t:6; - u_int16_t max_speed; /* Max raw data rate in bytes/1000 */ - u_int16_t max_vol_levels; /* Number of discrete volume levels */ - u_int16_t buf_size; /* Internal buffer size in bytes/1024 */ - u_int16_t cur_speed; /* Current data rate in bytes/1000 */ + u_int16_t max_speed; /* max raw data rate in bytes/1000 */ + u_int16_t max_vol_levels; /* number of discrete volume levels */ + u_int16_t buf_size; /* internal buffer size in bytes/1024 */ + u_int16_t cur_speed; /* current data rate in bytes/1000 */ u_int8_t reserved3; - u_int8_t bckf :1; /* Data valid on failing edge of BCK */ - u_int8_t rch :1; /* High LRCK indicates left channel */ - u_int8_t lsbf :1; /* Set if LSB first */ + u_int8_t bckf :1; /* data valid on failing edge of BCK */ + u_int8_t rch :1; /* high LRCK indicates left channel */ + u_int8_t lsbf :1; /* set if LSB first */ u_int8_t dlen :2; #define MST_DLEN_32 0 #define MST_DLEN_16 1 @@ -167,42 +162,38 @@ struct cappage { u_int8_t reserved4[2]; }; -/* - * CDROM Changer mechanism status structure - */ +/* CDROM Changer mechanism status structure */ struct changer { - u_int8_t current_slot :5; /* Active changer slot */ - u_int8_t mech_state :2; /* Current changer state */ + u_int8_t current_slot :5; /* active changer slot */ + u_int8_t mech_state :2; /* current changer state */ #define CH_READY 0 #define CH_LOADING 1 #define CH_UNLOADING 2 #define CH_INITIALIZING 3 - u_int8_t fault :1; /* Fault in last operation */ + u_int8_t fault :1; /* fault in last operation */ u_int8_t reserved0 :5; - u_int8_t cd_state :3; /* Current mechanism state */ + u_int8_t cd_state :3; /* current mechanism state */ #define CD_IDLE 0 #define CD_AUDIO_ACTIVE 1 #define CD_AUDIO_SCAN 2 #define CD_HOST_ACTIVE 3 #define CD_NO_STATE 7 - u_int8_t current_lba[3]; /* Current LBA */ - u_int8_t slots; /* Number of available slots */ - u_int16_t table_length; /* Slot table length */ + u_int8_t current_lba[3]; /* current LBA */ + u_int8_t slots; /* number of available slots */ + u_int16_t table_length; /* slot table length */ struct { - u_int8_t changed :1; /* Media has changed in this slot */ - u_int8_t unused :6; - u_int8_t present :1; /* Slot has a CD present */ - u_int8_t reserved0; - u_int8_t reserved1; - u_int8_t reserved2; + u_int8_t changed :1; /* media has changed in this slot */ + u_int8_t unused :6; + u_int8_t present :1; /* slot has a CD present */ + u_int8_t reserved0; + u_int8_t reserved1; + u_int8_t reserved2; } slot[32]; }; -/* - * CDROM Write Parameters Mode Page (Burners ONLY) - */ +/* CDROM Write Parameters Mode Page (Burners ONLY) */ struct write_param { /* Mode Page data header */ u_int16_t data_length; @@ -213,63 +204,63 @@ struct write_param { /* Write Parameters mode page */ u_int8_t page_code; -#define ATAPI_CDROM_WRITE_PARAMETERS_PAGE 0x0e +#define ATAPI_CDROM_WRITE_PARAMETERS_PAGE 0x05 u_int8_t page_length; /* 0x32 */ - u_int8_t write_type :4; /* Write stream type */ + u_int8_t write_type :4; /* write stream type */ #define CDR_WTYPE_PACKET 0x00 #define CDR_WTYPE_TRACK 0x01 #define CDR_WTYPE_SESSION 0x02 #define CDR_WTYPE_RAW 0x03 - u_int8_t test_write :1; /* Test write enable */ + u_int8_t test_write :1; /* test write enable */ u_int8_t reserved2_567 :3; - u_int8_t track_mode :4; /* Track mode */ + u_int8_t track_mode :4; /* track mode */ #define CDR_TMODE_AUDIO 0x01 #define CDR_TMODE_INCR_DATA 0x01 #define CDR_TMODE_ALLOW_COPY 0x02 #define CDR_TMODE_DATA 0x04 #define CDR_TMODE_QUAD_AUDIO 0x08 - u_int8_t copy :1; /* Generation stamp */ - u_int8_t fp :1; /* Fixed packet type */ - u_int8_t multi_session :2; /* Multi-session type */ + u_int8_t copy :1; /* generation stamp */ + u_int8_t fp :1; /* fixed packet type */ + u_int8_t multi_session :2; /* multi-session type */ #define CDR_MSES_NONE 0x00 #define CDR_MSES_FINAL 0x01 #define CDR_MSES_RESERVED 0x02 #define CDR_MSES_NULTI 0x03 - u_int8_t data_block_type :4; /* Data block type code */ + u_int8_t data_block_type :4; /* data block type code */ #define CDR_DB_RAW 0x0 /* 2352 bytes of raw data */ #define CDR_DB_RAW_PQ 0x1 /* 2368 bytes raw data + P/Q subchan */ #define CDR_DB_RAW_PW 0x2 /* 2448 bytes raw data + P-W subchan */ #define CDR_DB_RAW_PW_R 0x3 /* 2448 bytes raw data + P-W raw sub */ -#define CDR_DB_RES_4 0x4 /* Reserved */ -#define CDR_DB_RES_5 0x5 /* Reserved */ -#define CDR_DB_RES_6 0x6 /* Reserved */ -#define CDR_DB_VS_7 0x7 /* Vendor specific */ +#define CDR_DB_RES_4 0x4 /* reserved */ +#define CDR_DB_RES_5 0x5 /* reserved */ +#define CDR_DB_RES_6 0x6 /* reserved */ +#define CDR_DB_VS_7 0x7 /* vendor specific */ #define CDR_DB_ROM_MODE1 0x8 /* 2048 bytes Mode 1 (ISO/IEC 10149) */ #define CDR_DB_ROM_MODE2 0x9 /* 2336 bytes Mode 2 (ISO/IEC 10149) */ #define CDR_DB_XA_MODE1 0x10 /* 2048 bytes Mode 1 (CD-ROM XA 1) */ #define CDR_DB_XA_MODE2_F1 0x11 /* 2056 bytes Mode 2 (CD-ROM XA 1) */ #define CDR_DB_XA_MODE2_F2 0x12 /* 2324 bytes Mode 2 (CD-ROM XA 2) */ #define CDR_DB_XA_MODE2_MIX 0x13 /* 2332 bytes Mode 2 (CD-ROM XA 1/2) */ -#define CDR_DB_RES_14 0x14 /* Reserved */ -#define CDR_DB_VS_15 0x15 /* Vendor specific */ +#define CDR_DB_RES_14 0x14 /* reserved */ +#define CDR_DB_VS_15 0x15 /* vendor specific */ u_int8_t reserved4_4567 :4; u_int8_t reserved5; u_int8_t reserved6; - u_int8_t host_app_code :6; /* Host application code */ + u_int8_t host_app_code :6; /* host application code */ u_int8_t reserved7_67 :2; - u_int8_t session_format; /* Session format */ + u_int8_t session_format; /* session format */ #define CDR_SESS_CDROM 0x00 #define CDR_SESS_CDI 0x10 #define CDR_SESS_CDROM_XA 0x20 u_int8_t reserved9; - u_int32_t packet_size; /* Packet size in bytes */ - u_int16_t audio_pause_length; /* Audio pause length in secs */ + u_int32_t packet_size; /* packet size in bytes */ + u_int16_t audio_pause_length; /* audio pause length in secs */ u_int8_t media_catalog_number[16]; u_int8_t isr_code[16]; u_int8_t sub_hdr_byte0; @@ -284,75 +275,72 @@ struct write_param { */ } __attribute__((packed)); -/* - * CDROM Read Track Information structure - */ + +/* CDROM Read Track Information structure */ struct acd_track_info { u_int16_t data_length; - u_int8_t track_number; /* Current track number */ - u_int8_t session_number; /* Current session number */ + u_int8_t track_number; /* current track number */ + u_int8_t session_number; /* current session number */ u_int8_t reserved4; - u_int8_t track_mode :4; /* Mode of this track */ - u_int8_t copy :1; /* Generation stamp */ - u_int8_t damage :1; /* Damaged track */ + u_int8_t track_mode :4; /* mode of this track */ + u_int8_t copy :1; /* generation stamp */ + u_int8_t damage :1; /* damaged track */ u_int8_t reserved5_67 :2; - u_int8_t data_mode :4; /* Data mode of this disc */ - u_int8_t fp :1; /* Fixed packet */ - u_int8_t packet :1; /* Packet track */ - u_int8_t blank :1; /* Blank (empty) track */ - u_int8_t rt :1; /* Reserved track */ + u_int8_t data_mode :4; /* data mode of this disc */ + u_int8_t fp :1; /* fixed packet */ + u_int8_t packet :1; /* packet track */ + u_int8_t blank :1; /* blank (empty) track */ + u_int8_t rt :1; /* reserved track */ u_int8_t nwa_valid :1; /* next_writeable_addr field valid */ u_int8_t reserved7_17 :7; - u_int track_start_addr; /* Start of this track */ - u_int next_writeable_addr; /* Next writeable addr on this disc */ - u_int free_blocks; /* Free block on this disc */ - u_int fixed_packet_size; /* Size of packets on this track */ - u_int track_length; /* Length of this track */ + u_int track_start_addr; /* start of this track */ + u_int next_writeable_addr; /* next writeable addr on this disc */ + u_int free_blocks; /* free block on this disc */ + u_int fixed_packet_size; /* size of packets on this track */ + u_int track_length; /* length of this track */ }; -/* - * Structure describing an ATAPI CDROM device - */ +/* Structure describing an ATAPI CDROM device */ struct acd_softc { - struct atapi_softc *atp; /* Controller structure */ - int32_t lun; /* Logical device unit */ - int32_t flags; /* Device state flags */ - int32_t refcnt; /* The number of raw opens */ + struct atapi_softc *atp; /* controller structure */ + int32_t lun; /* logical device unit */ + int32_t flags; /* device state flags */ + int32_t refcnt; /* the number of raw opens */ struct buf_queue_head buf_queue; /* Queue of i/o requests */ - struct toc toc; /* Table of disc contents */ + struct toc toc; /* table of disc contents */ struct { - u_int32_t volsize; /* Volume size in blocks */ - u_int32_t blksize; /* Block size in bytes */ - } info; - struct audiopage au; /* Audio page info */ - struct cappage cap; /* Capabilities page info */ - struct audiopage aumask; /* Audio page mask */ - struct { /* Subchannel info */ - u_int8_t void0; - u_int8_t audio_status; - u_int16_t data_length; - u_int8_t data_format; - u_int8_t control; - u_int8_t track; - u_int8_t indx; - u_int32_t abslba; - u_int32_t rellba; + u_int32_t volsize; /* volume size in blocks */ + u_int32_t blksize; /* block size in bytes */ + } info; + struct audiopage au; /* audio page info */ + struct cappage cap; /* capabilities page info */ + struct audiopage aumask; /* audio page mask */ + struct { /* subchannel info */ + u_int8_t void0; + u_int8_t audio_status; + u_int16_t data_length; + u_int8_t data_format; + u_int8_t control; + u_int8_t track; + u_int8_t indx; + u_int32_t abslba; + u_int32_t rellba; } subchan; - struct changer *changer_info; /* Changer info */ - int32_t slot; /* This lun's slot number */ - u_int32_t block_size; /* Blocksize currently used */ - u_int8_t dummy; /* Use dummy writes */ - u_int8_t speed; /* Select drive speed */ - u_int32_t next_writeable_lba; /* Next writable position */ - struct wormio_prepare_track preptrack; /* Scratch region */ + struct changer *changer_info; /* changer info */ + int32_t slot; /* this lun's slot number */ + u_int32_t block_size; /* blocksize currently used */ + u_int8_t dummy; /* use dummy writes */ + u_int8_t speed; /* select drive speed */ + u_int32_t next_writeable_lba; /* next writable position */ + struct wormio_prepare_track preptrack; /* scratch region */ struct devstat *stats; /* devstat entry */ #ifdef DEVFS - void *ra_devfs_token; - void *rc_devfs_token; - void *a_devfs_token; - void *c_devfs_token; + void *a_cdevfs_token; + void *c_cdevfs_token; + void *a_bdevfs_token; + void *c_bdevfs_token; #endif }; -#define CDRIOCBLANK _IO('c',100) /* Blank a CDRW disc */ +#define CDRIOCBLANK _IO('c',100) /* blank a CDRW disc */ #define CDRIOCNEXTWRITEABLEADDR _IOR('c',101,int) |
